Repository navigation
Releases: maliyilmaz0/vpntoris
Release list
VPNToris 2.1.5
VPNToris 2.1.5 — Linux GTK3 GUI, Arch Linux support, and security hardening.
Changes since 2.1.4
- New native Linux GUI (
vpntoris-gui): a GTK3 window with macOS-parity
design — dark mode, profile cards, real-time traffic rates, inline 2FA/OTP
on cards, instant search, a multi-protocol profile editor (FortiGate SSL,
FortiGate IPsec, OpenConnect/GlobalProtect, OpenVPN) and a log viewer.
Launched from the tray via "Open VPNToris" (merged from PR #3, thanks
@onurkayaes). - Tray rework: on Linux the profile menu is a flat single-click
connect/disconnect toggle (fixes phantom submenu clicks on KDE Plasma
Wayland); clicking a profile that awaits 2FA opens the OTP prompt. macOS
and Windows keep the full per-profile submenus (Connect / OTP / Edit /
Delete / Logs). The status item is back, and the tray auto-starts the
user controller when it is offline. - Arch Linux packaging:
scripts/linux/install-arch.shand a
PKGBUILD(with a.installscriptlet) that stages distro VPN engines
via the sharedscripts/linux/stage-engines.shand records the desktop
user in/etc/vpntoris/helper-users.conf. - FortiGate SSL OTP from the tray: FortiGate profiles with 2FA now enter
the waiting-otp state on the native path, so the tray/GUI OTP prompt works
for them too. - Helper IPC hardening (fixes #7, #4): every connection to the root
helper socket is authorized via kernel peer credentials — LOCAL_PEERCRED
on macOS (previously never checked), SO_PEERCRED on Linux. macOS allows
root, the install-time uid and the current console owner, so multi-user
machines and uid changes no longer strand the install; Linux now fails
closed when the allowlist is missing. The macOS installer aborts loudly
when the console uid cannot be determined instead of silently using 501. - Accept loop hardening (fixes #5): both helpers log accept failures,
back off exponentially, and shut down cleanly on a closed listener. - configs.json hardening (fixes #6): the macOS app writes it with 0600
permissions, repairs wider permissions at startup, and the legacy
credential migration verifies each Keychain write before stripping
secrets from the file — failures are logged and shown in the UI.
Packages
| Platform | Package |
|---|---|
| macOS (universal, signed + notarized) | VPNToris-2.1.5-universal-complete.pkg |
| Linux amd64 | vpntoris_2.1.5_amd64.deb / vpntoris-2.1.5-1.el9.x86_64.rpm |
| Linux arm64 | vpntoris_2.1.5_arm64.deb / vpntoris-2.1.5-1.el9.aarch64.rpm |
| Arch Linux x86_64 | vpntoris-2.1.5-1-x86_64.pkg.tar.zst (or build from scripts/linux/packaging/arch/PKGBUILD, or run scripts/linux/install-arch.sh) |
SHA-256 checksums ship next to each artifact.
VPNToris 2.1.4
VPNToris 2.1.4 — OpenConnect certificate auto-accept.
Changes since 2.1.3
- GlobalProtect / OpenConnect gateways with untrusted certificates now
connect without interaction: the helper watches the session log for
"Enter 'yes' to accept" certificate prompts and answers them on stdin
automatically. The--passwd-on-stdinpassword is still consumed by
openconnect at startup (before any TLS handshake), so certificate prompts
can never swallow the password line. Covers the portal hop and later
gateway redirects. Verified against a live gateway with a self-signed
certificate.
Packages
| Platform | Package |
|---|---|
| macOS (universal, signed + notarized) | VPNToris-2.1.4-universal-complete.pkg |
| Linux amd64 | vpntoris_2.1.4_amd64.deb / vpntoris-2.1.4-1.el9.x86_64.rpm |
| Linux arm64 | vpntoris_2.1.4_arm64.deb / vpntoris-2.1.4-1.el9.aarch64.rpm |
SHA-256 checksums ship next to each artifact.
VPNToris 2.1.3
VPNToris 2.1.3 — native-only release.
Changes since 2.1.2
- Legacy Docker runtime removed: the controller no longer probes,
bootstraps or falls back to Docker. Native engines are the only connect
path; profiles fail with a clear "native engine unavailable" error when
the helper is not running. Docker UI leftovers (banner, settings toggle)
removed. - Fresh-install fix: the helper runtime directory was created 0700,
blocking the user-session controller from reaching the helper socket on
new machines (existing installs kept 0755 from older builds). Now created
and enforced as 0755; socket-level access control is unchanged. - Installer fix:
launchctl bootstrapafterbootoutis retried in the
macOS postinstall — the async bootout race could leave the helper
unloaded (launchd EIO) until manual intervention. - Diagnostics report the real build version instead of "next"/"dev".
Packages
| Platform | Package |
|---|---|
| macOS (universal, signed + notarized) | VPNToris-2.1.3-universal-complete.pkg |
| Linux amd64 | vpntoris_2.1.3_amd64.deb / vpntoris-2.1.3-1.el9.x86_64.rpm |
| Linux arm64 | vpntoris_2.1.3_arm64.deb / vpntoris-2.1.3-1.el9.aarch64.rpm |
SHA-256 checksums ship next to each artifact.
VPNToris 2.1.2
VPNToris 2.1.2 — bugfix release.
Fixed
- Concurrent FortiGate SSL sessions: when two gateways assign the same
client IP, the "Interface pppN is UP" log line could name the other
session's interface, so the second profile's routes and DNS host route
were installed on the first tunnel and its networks were unreachable.
Interface detection now uses pppd's authoritative "Using interface pppN"
line. Regression test included.
Packages
| Platform | Package |
|---|---|
| macOS (universal, signed + notarized) | VPNToris-2.1.2-universal-complete.pkg |
| Linux amd64 | vpntoris_2.1.2_amd64.deb / vpntoris-2.1.2-1.el9.x86_64.rpm |
| Linux arm64 | vpntoris_2.1.2_arm64.deb / vpntoris-2.1.2-1.el9.aarch64.rpm |
SHA-256 checksums ship next to each artifact.
VPNToris 2.1.1
VPNToris 2.1.1 — bugfix release.
Fixed
- OpenConnect / GlobalProtect tunnel setup on macOS: OpenConnect runs the
--scripthelper through/bin/sh -cwithout quoting, so the engine path
under/Library/Application Supportaborted witherror 127after the ESP
tunnel came up — the interface was never configured and profiles were stuck
at "adding routes". Engine side-binaries (vpntoris-vpnc-script,
vpntoris-browser-open) are now exposed through a symlink in the
space-free runtime directory. Verified against a GlobalProtect 6.2.x
portal: ESP tunnel, interface configuration and profile routes all apply.
Packages
| Platform | Package |
|---|---|
| macOS (universal, signed + notarized) | VPNToris-2.1.1-universal-complete.pkg |
| Linux amd64 | vpntoris_2.1.1_amd64.deb / vpntoris-2.1.1-1.el9.x86_64.rpm |
| Linux arm64 | vpntoris_2.1.1_arm64.deb / vpntoris-2.1.1-1.el9.aarch64.rpm |
SHA-256 checksums ship next to each artifact. See the 2.1.0 notes for the
full feature set (Linux tray, libsecret credential store, bundled
AppIndicator extension, helper socket allowlist).
VPNToris 2.1.0
VPNToris 2.1.0 — native multi-platform release (macOS + Linux).
Highlights
- Linux tray app: profile add/edit/delete, connect/disconnect, OTP, logs and reset — via native zenity/kdialog dialogs, with autostart and a systemd user controller
- Linux credential store: Secret Service (gnome-keyring / KWallet via libsecret
secret-tool) with an atomic 0600 file fallback - Self-contained packages: the AppIndicator GNOME Shell extension is bundled (private UUID, enabled by default on next login) — install scriptlets no longer run
dnf/apt;pppresolves via package dependencies - Hardening: root helper socket now enforces a per-connection
SO_PEERCREDallowlist (/etc/vpntoris/helper-users.conf); controller mutation endpoints reject browser-originated requests; profile store writes are atomic - Fixes: reconnect busy-flag leak on profile delete, tray menu data race, hung dialog processes stalling the tray, split-DNS handling for native engines
Packages
| Platform | Package |
|---|---|
| macOS (universal, signed + notarized) | VPNToris-2.1.0-universal-complete.pkg |
| Linux amd64 | vpntoris_2.1.0_amd64.deb / vpntoris-2.1.0-1.el9.x86_64.rpm |
| Linux arm64 | vpntoris_2.1.0_arm64.deb / vpntoris-2.1.0-1.el9.aarch64.rpm |
SHA-256 checksums ship next to each artifact.
Test status
- macOS: tray, FortiGate SSL, IPsec (XAuth OTP), OpenConnect, OpenVPN — tested
- Linux (AlmaLinux 9.7): tray + FortiGate SSL — tested; IPsec / OpenConnect / OpenVPN not yet tested
- Windows: not tested in this release
VPNToris 2.0.0-alpha
VPNToris 2.0.0-alpha
Pre-release of the native multi-platform engine (Docker runtime removed for the v2 path).
What’s in this alpha
- Native privileged helper + engine packaging for macOS, Linux, and Windows
- Complete installers only (engines are a required product layer)
- macOS: signed/notarized complete PKG
- Linux: DEB/RPM with bundled engines
- Windows: MSI with OpenVPN + Wintun engines (other Windows protocols still limited)
Install
Download platform packages from this release (or build locally with ./build.sh 2.0.0-alpha <platform> on the maintainer host).
Notes
- Alpha quality — APIs and packaging may change before stable 2.0.0
- Local signing secrets and private docs are not in the public tree
- Public documentation:
README.mdonly
Branch: v2/native-engine
Tag: v2.0.0-alpha
VPNToris 1.1.0
VPNToris 1.1.0 adds simultaneous isolated VPN routing with automatic macOS route-helper installation.
Highlights:
- Signed and notarized PKG installer that configures the privileged route helper, LaunchDaemon and vpntorisctl automatically
- FortiGate SSL VPN and FortiClient-compatible IPsec, including DH Group 20 (ECP-384)
- OpenVPN and GlobalProtect/OpenConnect support (not yet production-tested)
- Drag-and-drop profile import and installed FortiClient/OpenVPN profile discovery
- Multiple concurrent VPNs with per-profile CIDR routing and dynamically allocated macOS utun devices
- OTP/2FA, automatic reconnect, gateway failover, traffic analytics, per-process flows, active routes and diagnostics
Installation:
Download the PKG for the recommended automatic setup. The DMG is available for manual installation.
Supported systems: macOS 13 or later, Universal Apple Silicon and Intel build.
VPNToris 1.0.0
VPNToris 1.0.0 initial release.
This release contains an unsigned Apple Silicon macOS application. The application and bundled executables intentionally have no Apple Developer ID signature or notarization. Sign the binaries and app bundle with your own certificate before distribution or use.
Supported in this release: macOS 13+ on Apple Silicon.
Upcoming: Intel-based macOS, Linux and Windows.