Application Linux
claimward-vpn-app-linux
v0.2.1 est une fenêtre et une icône dans la zone de notification dessinées en pur Go avec
go-widgets : pas de webview, pas de GTK, pas de cgo
(CGO_ENABLED=0). Un helper privilégié exécuté par systemd détient le tunnel
WireGuard. La logique est celle de l’application macOS : toutes deux utilisent
pkg/appcore et pkg/helper.
Conception
claimward-app (your session)
├─ internal/view go-widgets/toolkit widgets, bound with go-widgets/mvvmtk
├─ internal/trayview tray icon + menu (StatusNotifierItem over D-Bus)
├─ internal/viewmodel all state as go-widgets/mvvm observables and commands
└─ appcore sign-in, tenant, session; drives the helper
│ X11 / Wayland │ unix socket, JSON, 0660 root:claimward
▼ ▼
the window, the tray claimward-helper (root, systemd)
enrolls with a configured server,
wireguard-go TUN + ip(8), route pushesL’application s’exécute sous votre identité et ne touche jamais à la configuration réseau ni au serveur lui-même : tout passe par le helper. Le modèle de vue détient chaque élément d’état et n’importe aucun widget ; la CI impose MVVM avec mvvmlint et « aucune interface dessinée à la main » avec bricolint.
Ce qu’elle fait
- État : qui est connecté, connecté au VPN ou non, l’adresse et l’interface, le locataire de la session, si le helper répond, le serveur. Il est interrogé toutes les 2 secondes.
- Connexion : pour un device flow, la fenêtre affiche le code et un bouton Open sign-in
page (
xdg-open) ; la connexion peut être annulée. - Locataire : lorsque le serveur refuse une connexion parce que la personne appartient à plusieurs locataires, la fenêtre le signale et propose une liste déroulante ; Choose tenant demande la liste à l’avance. Le locataire ne peut pas être changé pendant la connexion.
- Connect / Disconnect / Sign out, Settings (URL du serveur, fournisseur, ID client GitHub, émetteur et ID client OIDC), et le journal de connexion.
- Zone de notification : une ligne d’état, Connect, Disconnect, Open window, Quit ; l’icône est en couleur pendant la connexion. Fermer la fenêtre laisse l’application dans la zone de notification ; Quit laisse le tunnel tel quel.
La zone de notification nécessite un hôte StatusNotifierItem (KDE Plasma, GNOME avec l’extension AppIndicator and KStatusNotifierItem Support, waybar…). Sans hôte, ou si l’élément de la zone de notification ne peut pas être placé sur le bus de session, l’application le signale au démarrage et fermer la fenêtre la quitte.
Installation
Compilez sous votre identité (Go 1.27.1 ou ultérieur), puis installez en tant que root :
CGO_ENABLED=0 go build -trimpath -o bin/ ./cmd/...
sudo ./scripts/install.sh --server https://vpn.example.cominstall.sh :
- crée le groupe
claimwardet vous y ajoute ($SUDO_USER, ou--user) : déconnectez-vous puis reconnectez-vous pour que cela s’applique ; - installe
claimward-appdans/usr/local/binetclaimward-helperdans/usr/local/sbin(--prefixpour changer) ; - écrit
/etc/claimward/helper.json,root:root, mode0644, avec le serveur indiqué (un fichier existant est conservé) ; - installe et démarre
claimward-helper.service, et attend son socket ; - installe l’entrée de bureau et l’icône.
Lancez Claimward VPN depuis le menu du bureau ; claimward-app -hidden
démarre dans la zone de notification (pour une entrée de démarrage automatique). sudo ./scripts/uninstall.sh
supprime le tout et arrête le helper, ce qui ferme le tunnel ; --purge
supprime aussi /etc/claimward et le groupe.
Configuration
L’application : ~/.config/Claimward/config.json, écrit par le formulaire des paramètres,
mode 0600, surchargé par les variables CLAIMWARD_* (voir la
bibliothèque client).
La session est ~/.config/claimward/session.json, mode 0600.
Le helper : /etc/claimward/helper.json (voir
Helper privilégié) ; après l’avoir modifié,
sudo systemctl restart claimward-helper.
L’unité durcie
claimward-helper.service ne conserve que CAP_NET_ADMIN, CAP_NET_RAW et
CAP_CHOWN, avec NoNewPrivileges, ProtectSystem=strict et seul /run
accessible en écriture, ProtectHome, /dev/net/tun seul depuis /dev, des familles d’adresses
limitées à unix, inet, inet6 et netlink, et les appels système
@system-service. systemd-analyze security claimward-helper lui attribue 2.5 (OK). Appartenir
au groupe claimward signifie être autorisé à activer et désactiver le VPN.
Créée le par tannevaled
Modifiée le par tannevaled