openfortivpn-gui

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2026 License: GPL-3.0

README

openfortivpn-gui

GitHub go.mod Go version GitHub release codecov Go Report Card GitHub license

openfortivpn-gui screenshot

A modern GTK4/libadwaita GUI client for Fortinet SSL VPN on Linux, wrapping the openfortivpn CLI tool.

Features

  • Multiple VPN Profiles - Create, edit, and manage multiple VPN connection profiles
  • Multiple Authentication Methods:
    • Username/Password
    • One-Time Password (OTP)
    • Client Certificate
    • SAML/SSO (browser-based authentication)
  • System Tray Integration - Minimize to tray, quick connect/disconnect
  • Desktop Notifications - Connection status notifications
  • Secure Credential Storage - Passwords stored in system keyring (GNOME Keyring/libsecret)
  • Auto-Connect - Optionally connect to last used profile on startup
  • Configurable Routing Options:
    • DNS configuration (set-dns)
    • Route management (set-routes)
    • Half-internet routes (split tunneling with /1 routes)

Requirements

  • Linux with GTK4 and libadwaita
  • openfortivpn installed
  • polkit (for privilege escalation via pkexec)
  • libsecret/GNOME Keyring (for secure credential storage)

Installation

Building from Source

Prerequisites:

  • Go (see go.mod for version)
  • GTK4 development libraries
  • libadwaita development libraries
  • pkg-config

Using Nix (recommended):

# Enter development shell with all dependencies
nix develop

# Build
task build

# Run
task run

Manual build:

# Install dependencies (Debian/Ubuntu)
sudo apt install golang libgtk-4-dev libadwaita-1-dev pkg-config

# Build
go build -o openfortivpn-gui .

# Run
./openfortivpn-gui

Usage

  1. Launch the application - Run openfortivpn-gui
  2. Create a profile - Click the "+" button to add a new VPN profile
  3. Configure the profile:
    • Enter VPN server hostname and port
    • Select authentication method
    • Configure routing options as needed
  4. Connect - Select a profile and click "Connect"
  5. Authenticate - Enter password when prompted (or complete SAML flow in browser)

Environment Variables

Variable Description
OPENFORTIVPN_GUI_DEBUG Set to 1 to enable debug logging

Security

  • Passwords are never stored in plaintext - All credentials are stored in the system keyring
  • Passwords are passed via stdin - Never exposed in command-line arguments or process listings
  • Profile validation - Strict input validation prevents command injection

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

GPL-3.0 - see LICENSE for details.

Acknowledgments

Directories

Path Synopsis
cmd
openfortivpn-gui command
Package main provides the entry point for openfortivpn-gui application.
Package main provides the entry point for openfortivpn-gui application.
openfortivpn-gui-helper command
Package main provides the entry point for the openfortivpn-gui-helper daemon.
Package main provides the entry point for the openfortivpn-gui-helper daemon.
internal
client
Package client provides the client for communicating with the helper daemon.
Package client provides the client for communicating with the helper daemon.
config
Package config manages application-level configuration.
Package config manages application-level configuration.
helper/manager
Package manager provides the VPN connection manager for the helper daemon.
Package manager provides the VPN connection manager for the helper daemon.
helper/protocol
Package protocol defines the message types for communication between the openfortivpn-gui application and the privileged helper daemon.
Package protocol defines the message types for communication between the openfortivpn-gui application and the privileged helper daemon.
helper/server
Package server provides the UNIX socket server for the helper daemon.
Package server provides the UNIX socket server for the helper daemon.
keyring
Package keyring provides secure credential storage using the system keyring.
Package keyring provides secure credential storage using the system keyring.
logging
Package logging provides structured logging setup using log/slog.
Package logging provides structured logging setup using log/slog.
profile
Package profile provides VPN profile management functionality.
Package profile provides VPN profile management functionality.
ui
Package ui provides the GTK4/libadwaita user interface for openfortivpn-gui.
Package ui provides the GTK4/libadwaita user interface for openfortivpn-gui.
vpn
Package vpn provides VPN connection management for openfortivpn.
Package vpn provides VPN connection management for openfortivpn.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL