Skip to content

Wissem-Grassi/openvpn-fortigate-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenVPN FortiGate Client

A cross-platform desktop VPN client for OpenVPN and FortiGate SSL-VPN, built with Tauri, Rust, and React.

License: GPL-3.0 CI Platform: macOS | Linux | Windows

A unified desktop VPN manager that lets you connect to OpenVPN and FortiGate SSL-VPN servers from a single application. No more juggling between different VPN clients — import your .ovpn configurations, store credentials securely in your OS keychain, and manage all your VPN profiles in one place.

Features

  • Dual VPN Protocol Support — Connect to both OpenVPN and FortiGate SSL-VPN servers from one app
  • Cross-Platform — Native desktop application for macOS, Linux, and Windows
  • Secure Credential Storage — Passwords stored in your OS native keychain (macOS Keychain, GNOME Keyring / KWallet, Windows Credential Manager)
  • Encrypted Vault — Optional AES-256-GCM encrypted vault as an alternative credential store
  • Profile Import/Export — Import .ovpn configuration files; export encrypted profile bundles for machine migration
  • Multi-Factor Authentication — Full MFA/OTP support for FortiGate SSL-VPN connections
  • Bulk Migration — Export all profiles as an encrypted .vpnbundle and import on a new machine
  • System Tray Integration — Quick connect/disconnect from the system tray without opening the full window
  • Real-Time Status — Live connection status with bandwidth monitoring, elapsed time, and assigned IP
  • Accessible UI — WCAG 2.1 AA compliant with full keyboard navigation and screen reader support

Screenshots

Screenshots will be added after the first stable release.

Installation

Download Pre-Built Binaries

Download the latest release for your platform from the Releases page:

Platform Format
macOS .dmg
Linux .deb, .AppImage
Windows .msi, .exe (NSIS)

VPN Backend Requirements

This application is a GUI that orchestrates existing VPN backends. You need to install them separately:

# macOS
brew install openvpn openfortivpn

# Debian/Ubuntu
sudo apt install -y openvpn openfortivpn

# Windows (OpenVPN only — FortiGate SSL-VPN is not supported on Windows)
# Download from https://openvpn.net/community-downloads/

The application will detect which backends are installed and show their availability status on launch.

Quick Start

  1. Launch the application
  2. Import your .ovpn configuration file using the Import button
  3. Connect by clicking the Connect button next to your profile
  4. Enter credentials if prompted (username/password or MFA token)
  5. Monitor your connection status in real-time
  6. Disconnect when done with a single click

Supported Platforms

Feature macOS Linux Windows
OpenVPN connections Yes Yes Yes
FortiGate SSL-VPN Yes Yes No*
OS keychain storage Yes Yes Yes
Encrypted vault Yes Yes Yes
System tray Yes Yes Yes
Profile export/import Yes Yes Yes

* FortiGate SSL-VPN is not available on Windows because the openfortivpn backend has no Windows build.

Building from Source

Prerequisites

Build

git clone https://github.com/Wissem-Grassi/openvpn-fortigate-client.git
cd openvpn-fortigate-client

# Install frontend dependencies
npm install

# Development mode (with hot reload)
cargo tauri dev

# Production build
cargo tauri build

Build output locations:

  • macOS: src-tauri/target/release/bundle/dmg/
  • Linux: src-tauri/target/release/bundle/deb/ and appimage/
  • Windows: src-tauri/target/release/bundle/msi/ and nsis/

Project Structure

openvpn-fortigate-client/
├── src/                    # React/TypeScript frontend
│   ├── components/         # UI components
│   ├── stores/             # Zustand state management
│   ├── hooks/              # Custom React hooks
│   └── lib/                # Shared utilities
├── src-tauri/              # Rust backend (Tauri)
│   └── src/
│       ├── commands/       # Tauri IPC command handlers
│       ├── vpn/            # VPN backend orchestration
│       ├── crypto/         # AES-256-GCM encryption
│       ├── credentials/    # OS keychain integration
│       ├── config/         # Profile storage & .ovpn parsing
│       └── models/         # Shared data structures
├── src-tauri-helper/       # Privileged helper daemon
├── tests/e2e/              # Playwright end-to-end tests
└── specs/                  # SpecKit feature specifications

Contributing

Contributions are welcome! Please read our Contributing Guide for details on:

  • Development environment setup
  • Spec-driven development workflow with SpecKit
  • Branch naming and commit message conventions
  • Pull request process and code review expectations

License

This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.

GPL-3.0 was chosen for compatibility with OpenVPN (GPL-2.0) and openfortivpn (GPL-3.0).

Acknowledgments

  • OpenVPN — Open-source VPN protocol and software
  • openfortivpn — Open-source FortiGate SSL-VPN client
  • Tauri — Framework for building lightweight desktop applications
  • React — UI component library
  • Tailwind CSS — Utility-first CSS framework

About

Cross-platform desktop VPN client for OpenVPN and FortiGate SSL-VPN. Built with Tauri, Rust, and React.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors