Commit Graph
24 Commits
Author SHA1 Message Date
Alexandr Stelnykovych ee8cde31f6 feat: Add Split Tunnel feature (Windows PoC)
Implement initial proof-of-concept for split tunnel functionality on Windows,
allowing applications to route traffic through a designated network interface
while bypassing default system routing.

Features:
- Split tunnel module with TCP/UDP proxy infrastructure
- Firewall integration with split tunnel verdict handling
- SplitTunneling context attached to connections
- Configuration options: enable toggle, interface selection, and policy rules
- UI display of split tunnel connection details in connection info panel
- Subsystem configuration for user-level access

Windows-specific implementation:
- Uses proxy-based interface routing on Windows
- Automatic or manual interface detection and binding
- Support for IPv4 and IPv6 traffic

Note: Linux implementation is under development. SPN takes precedence over
split tunnel when both are enabled, ensuring SPN connections bypass this feature.
2026-04-24 18:04:01 +03:00
Alexandr Stelnykovych 933323d5f9 feat: add VerdictRerouteToSplitTun verdict type
Add a new verdict (value 8) for routing connections through the split
tunnel. This prepares the infrastructure for the upcoming split-tunneling
feature without implementing the full feature yet.

Changes:
- Define VerdictRerouteToSplitTun in network/status.go with String() and Verb()
- Add RerouteToSplitTun() to the Packet interface and InfoPacket stub
- Implement RerouteToSplitTun() for windowskext (v1) and windowskext2 (v2) packets
- Map VerdictRerouteToSplitTun to KextVerdict 11 in kextinterface and kext2
- Handle the verdict in packet_handler.go dispatch, connection.go, api.go,
  metrics.go and nameserver.go
- Add VerdictRerouteToSplitTun = 8 to Angular Verdict enum and update
  stats counting, filter queries and verdict CSS class

(WIP) Note: Linux (nfq) implementation not updated yet. Therefore Linux build will fail.
2026-04-17 20:48:48 +03:00
Alexandr Stelnykovych c063bda700 feat(WIP): add pause and resume functionality for Portmaster/SPN
https://github.com/safing/portmaster/issues/2050
2025-10-24 18:15:27 +03:00
Alexandr Stelnykovych f7dd9825be (UI): Add endpoint check to TauriHttpInterceptor for non-API requests 2025-06-19 17:26:52 +03:00
Alexandr Stelnykovych 93f87f4dc4 refactor(UI; tauri-websocket): Simplify Tauri WebSocket connection by removing NgZone dependency and adding inactivity timeout handling 2025-06-09 10:17:45 +03:00
Alexandr Stelnykovych 795d99cc12 (UI; tauri-http): Improve body handling in send_tauri_http_request for various types 2025-06-06 18:46:05 +03:00
Alexandr Stelnykovych bd12a784c2 (UI; tauri-websocket): Enhance error handling and connection management in WebSocket implementation 2025-06-06 18:45:13 +03:00
Alexandr Stelnykovych 5c46ef0d85 (UI; tauri-websocket): Enhance WebSocket connection handling 2025-06-05 14:55:51 +03:00
Alexandr Stelnykovych cb39e11b32 fix(UI; tauri-websocket): Enhance WebSocket connection handling with observers and improved error management 2025-06-03 14:24:29 +03:00
Alexandr Stelnykovych 58ca3150e7 Log a warning in the UI when falling back to default connection parameters 2025-05-20 12:56:24 +03:00
Alexandr Stelnykovych 5bc1e779b2 fix: force UI to use IPv4 (127.0.0.1) for API endpoints
Previously, the API endpoint was defined using `localhost`, which could resolve to the IPv6 address `::1`.
This caused issues because the Portmaster core service is listening on `127.0.0.1:817` and only fast-tracking connections to that specific IPv4 address.
2025-05-16 10:56:30 +03:00
Alexandr Stelnykovych ab3981ba60 [desktop] UI fix: integrate NgZone into Tauri WebSocket connection for better change detection 2025-05-05 18:11:36 +03:00
Alexandr Stelnykovych 5053ef1a23 [desktop] Use custom Tauri command for HTTP requests instead of http-client plugin
Replaced the http-client plugin, as it does not support keep-alive connections.
Each request opened a new TCP connection to the service, which was inefficient.

The new custom `send_tauri_http_request` command, exposed to the UI, uses an application-wide `reqwest::Client`, which supports idle (persistent) connections.
2025-04-24 14:00:15 +03:00
Alexandr Stelnykovych a42f0a6084 [desktop] Tauri HTTP interceptor: respect request data type 2025-04-23 16:26:16 +03:00
Alexandr Stelnykovych bd20714db6 [desktop] Tauri WebSocket connection 2025-04-18 12:13:10 +03:00
Alexandr Stelnykovych 73174cdca8 [desktop] Force to use custom HttpClient from portmaster-api 2025-04-17 17:06:06 +03:00
Alexandr Stelnykovych 1e7baff6bd [desktop] Tauri HTTP interceptor: content-type support 2025-04-17 16:58:44 +03:00
Alexandr Stelnykovych 4ef04c72ca [desktop] Tauri HTTP interceptor 2025-04-12 23:34:07 +03:00
Vladimir Stoilov 9ff7ec96d1 [desktop] Tauri update v2.2.5 2025-02-24 10:44:13 +02:00
Vladimir Stoilov 22a288c66b [desktop] disable annimation from the service dialog 2024-07-24 11:16:34 +03:00
Daniel e2652d0934 Add new ready api endpoint 2024-04-23 10:26:08 +02:00
Daniel e957b90b13 Ignore default Windows icons in UI better 2024-04-18 13:50:47 +02:00
Patrick Pacher 3d88b3fd3b Fix focus in sfng-select component 2024-03-29 09:36:41 +01:00
Patrick Pacher 4b77945517 Migrate Angular UI from portmaster-ui to desktop/angular. Update Earthfile to build libs, UI and tauri-builtin 2024-03-20 10:43:29 +01:00