- C++ 55.3%
- Python 21.9%
- Shell 21.6%
- CMake 1.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src | ||
| tools | ||
| .gitignore | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| com.trusttunnel.client.plist | ||
| com.trusttunnel.tray.plist | ||
| Info.plist | ||
| install.sh | ||
| make-dist.sh | ||
| PKGBUILD | ||
| README.md | ||
| screenshot-mac.png | ||
| screenshot.jpg | ||
| trusttunnel-tray.desktop | ||
| trusttunnel.rules | ||
| trusttunnel.service | ||
Agent de barre d’état TrustTunnel
Agent de barre d’état multiplateforme pour gérer le client VPN TrustTunnel. Construit avec C++17 et Qt6. Prend en charge Arch Linux.
Fonctionnalités
- Icône de barre d’état avec couleur d’état : vert (connecté), rouge (déconnecté), jaune (en transition), gris (aucun profil configuré)
- Activer/Désactiver/Redémarrer le client VPN
- Changement de profil — conservez plusieurs configurations (
profiles/<nom>.toml) et basculez entre elles depuis la barre d’état (reconnexion pour appliquer) - Nouveau profil à partir du profil actuel ; modifier le profil actif dans votre éditeur par défaut
- Afficher les journaux en direct
- Interrogation d’état toutes les 3 secondes
- Fonctionnement sans mot de passe sur Linux — une règle polkit permet aux utilisateurs actifs du groupe
wheelde démarrer/arrêter/redémarrer le service sans invite de mot de passe
Linux (Arch)
- Contrôle du service via D-Bus (
org.freedesktop.systemd1.Manager) - État :
systemctl is-active+/sys/class/net/tun0 - Contrôle du service sans mot de passe via une règle polkit ciblant
trusttunnel.service(bascule vers l’invite polkit normale si absente) - Journaux via
journalctldans konsole/gnome-terminal/xterm - Démarrage automatique via une entrée de bureau
/etc/xdg/autostart/(PKGBUILD) ou~/.config/autostart/(manuel)
Dépendances
- Qt6 (Widgets, SvgWidgets ; + DBus sur Linux)
- CMake >= 3.16
polkit(Linux) — pour la règle de contrôle de service sans mot de passe
Arch Linux
sudo pacman -S qt6-base qt6-svg cmake polkit
Compilation
Linux
cmake -B build
cmake --build build
Installation
Arch Linux (recommandé)
makepkg -si
Cela construit et installe le paquet trusttunnel-tray avec les chemins Arch appropriés :
- Binaire :
/usr/bin/trusttunnel-tray - Service systemd :
/usr/lib/systemd/system/trusttunnel.service - Démarrage automatique :
/etc/xdg/autostart/trusttunnel-tray.desktop - Règle polkit :
/etc/polkit-1/rules.d/49-trusttunnel.rules
Après l’installation, activer et démarrer le service VPN :
sudo systemctl enable --now trusttunnel
La gestion du service utilise la politique polkit intégrée de systemd (org.freedesktop.systemd1.manage-units). Le fichier trusttunnel.rules installé retourne YES pour manage-units ciblant trusttunnel.service pour les utilisateurs locaux actifs du groupe wheel, afin que la barre d’état puisse Activer/Désactiver/Redémarrer et changer de profil sans mot de passe. Si la règle est absente, l’invite de mot de passe polkit normale est utilisée.
Profils
Les profils VPN sont des fichiers complets trusttunnel_client.toml stockés dans /opt/trusttunnel_client/profiles/<nom>.toml. La configuration active /opt/trusttunnel_client/trusttunnel_client.toml est un lien symbolique relatif vers le profil actif, afin que le daemon lise son chemin sans changement. Au premier lancement, la barre d’état migre toute configuration plate existante vers profiles/default.toml et redirige le chemin vers un lien symbolique.
Utilisez le sous-menu Profil de la barre d’état pour :
- Basculer le profil actif (redirige le lien symbolique et redémarre le service — sans mot de passe)
- Créer un nouveau profil initialisé à partir du profil actuel
- Modifier le profil actif dans votre éditeur de texte par défaut (redémarrer pour appliquer)
Désinstallation
Arch Linux
pacman -R trusttunnel-tray
Linux (installation manuelle)
sudo systemctl disable --now trusttunnel.service
sudo rm /etc/systemd/system/trusttunnel.service
sudo rm /etc/polkit-1/rules.d/49-trusttunnel.rules
sudo systemctl daemon-reload
sudo rm /opt/trusttunnel_client/trusttunnel-tray
rm ~/.config/autostart/trusttunnel-tray.desktop
Structure du projet
CMakeLists.txt - Configuration de construction (multiplateforme)
PKGBUILD - Script de construction du paquet Arch Linux
Info.plist - Configuration du bundle d’application macOS (LSUIElement)
src/main.cpp - Point d’entrée
src/TrayAgent.h - Déclaration de la classe TrayAgent
src/TrayAgent.cpp - Implémentation de TrayAgent (#ifdef par plateforme)
install.sh - Script d’installation depuis les sources multiplateforme
make-dist.sh - Générateur d’archive tar macOS autonome (récupère Qt 6.5.3 LTS)
trusttunnel.service - Service systemd Linux (VPN au démarrage)
trusttunnel-tray.desktop - Entrée de bureau de démarrage automatique Linux
trusttunnel.rules - Règle polkit Linux (contrôle de service sans mot de passe)
com.trusttunnel.client.plist - LaunchDaemon macOS (VPN au démarrage)
com.trusttunnel.tray.plist - LaunchAgent macOS (barre d’état à la connexion)