Application Windows
claimward-vpn-app-windows
v0.3.0 est une application de bureau avec une icône dans la zone de notification. Tout est
en Go avec CGO_ENABLED=0 : la fenêtre et la zone de notification sont dessinées par
go-widgets (pas de webview, pas de serveur HTTP dans
l’application), et le tunnel est wireguard-go sur un
adaptateur Wintun, configuré via l’API IP Helper.
Sa logique et son helper sont les composants partagés
pkg/appcore et pkg/helper.
Conception
claimward-app.exe (the person, unprivileged)
├─ internal/ui/view.go widgets, bound by go-widgets/mvvmtk to …
├─ internal/ui/viewmodel.go … the ViewModel: all state, observables and commands
├─ internal/ui/tray_binding the tray menu, bound to the same ViewModel
└─ appcore sign-in, session, tenant, helper client
│ AF_UNIX socket, one JSON request each: C:\ProgramData\Claimward\helper.sock
▼
claimward-helper.exe — the ClaimwardHelper service (LocalSystem)
pkg/helper enrolls with a server helper.json names, owns the tunnel
pkg/wgtun wireguard-go on the Wintun adapter "Claimward"; address, routes, DNS, MTULa fenêtre affiche la connexion, l’adresse et l’interface, la personne connectée,
le locataire et si le helper répond ; l’invite du device flow avec un
bouton qui ouvre la page dans le navigateur par défaut (seule une page https est
jamais transmise au shell) ; Connect / Disconnect / Sign out ; Choose
tenant ; les paramètres, enregistrés dans %AppData%\Claimward\config.json ; et le
journal de connexion. L’état est interrogé toutes les 2 secondes. Le menu de la zone de notification propose
l’état, Connect, Disconnect, Open et Quit. Fermer la fenêtre quitte
l’application ; le tunnel appartient au service et reste actif jusqu’à Disconnect.
L’icône de la zone de notification apparaît à partir de la v0.3.0. Auparavant, la bibliothèque de la zone de notification n’avait pas d’implémentation Windows de l’appel effectué par l’application, et l’application ignorait l’erreur : les v0.1.0 et v0.2.0 n’affichaient donc aucune icône dans la zone de notification. La v0.3.0 est compilée avec la bibliothèque de la zone de notification qui l’implémente (go-widgets/tray v0.14.0). Cela est vérifié par la compilation et par les tests propres à la bibliothèque, pas encore sur un bureau Windows. Deux lacunes connues : une icône qui ne peut pas être ajoutée est signalée sur stderr, qu’une compilation fenêtrée n’affiche pas (#6), et quitter peut laisser une icône fantôme jusqu’à ce que le pointeur passe dessus (go-widgets/tray#37).
Installation
Depuis un dossier de version (scripts/package.sh les construit, avec Wintun), dans un
PowerShell élevé :
Set-ExecutionPolicy -Scope Process Bypass
.\install.ps1 -Server https://vpn.example.org
# optionally, the app's settings for the current user as well:
.\install.ps1 -Server https://vpn.example.org -Provider github -GitHubClientId Iv1.0123456789abcdefIl copie les programmes et wintun.dll dans C:\Program Files\Claimward,
crée le groupe local Claimward Users et vous y ajoute, écrit
C:\ProgramData\Claimward\helper.json, enregistre et démarre le
service ClaimwardHelper, et ajoute un raccourci Claimward VPN au menu Démarrer.
L’appartenance prend effet à votre prochaine connexion à Windows ; d’ici là, le
socket vous refuse. Ajoutez d’autres personnes avec
Add-LocalGroupMember -Group 'Claimward Users' -Member <name>.
.\uninstall.ps1 supprime le service, le raccourci et les programmes ;
-RemoveData supprime aussi C:\ProgramData\Claimward et le groupe. Il n’y a
pas encore de MSI.
package.sh télécharge wintun-0.14.1.zip depuis wintun.net et le refuse
si son SHA-256 ne correspond pas à celui épinglé dans le script ; la DLL est signée par
WireGuard LLC et ne se trouve pas dans le dépôt.
Configuration
L’application lit %AppData%\Claimward\config.json, puis les variables CLAIMWARD_*
(voir la bibliothèque client).
La session est %AppData%\claimward\session.json.
Le helper lit C:\ProgramData\Claimward\helper.json :
{
"servers": ["https://vpn.example.org"],
"group": "Claimward Users",
"socket": "C:\\ProgramData\\Claimward\\helper.sock"
}Le service journalise dans C:\ProgramData\Claimward\helper.log ; depuis une
console élevée, claimward-helper run l’exécute au premier plan. Les ACL que le helper
définit et vérifie sont décrites sous
Helper privilégié.
Créée le par tannevaled
Modifiée le par tannevaled