Malý program, který připojuje existující VPN, potřebuje řadič, ne novou implementaci VPN. Podporovaný engine má zvládat vyjednávání a provoz tunelu; váš program má vyjádřit požadavek uživatele a poctivě vysvětlit výsledek. V Linuxu dává rozhraní NetworkManager D-Bus tomuto řadiči konkrétní model, kterého se lze držet.

Čtyři kontroly brání tomu, aby si řadič pletl uložený profil, požadavek na aktivaci a běžící relaci.

První kontrola: která identita se vybírá

Držte UUID profilu jako trvalou identitu a rozlišujte ho přes správce, když potřebujete cestu k objektu. Zobrazované jméno mohou sdílet dva profily a cesta sběrnice za běhu není rozumné uživatelské nastavení k uložení. Zapište volbu do vlastní konfigurace, ne do komentáře o tom, který záznam byl v seznamu druhý.

Ověřte, co správce vrací, než to nazvete shodou. UUID, které už neexistuje, vede k chybě hledání, což je jiná cesta kódu než profil, který existuje a odmítá se aktivovat.

Druhá kontrola: co vrací volání aktivace

Dokumentované volání aktivace přijímá cestu k objektu existujícího připojení, cestu k zařízení a konkrétní objekt. Vrací cestu k aktivnímu připojení a tato odpověď je úchyt, nikoli výsledek připravenosti. Nestavte příznak připravenosti aplikace z vrácené hodnoty; přihlaste se místo toho k odběru stavu a důvodu aktivního připojení.

U VPN konkrétní objekt vybírá aktivní základní připojení. Předání kořenové cesty přenechává volbu zařízení NetworkManageru, který vybere to, které je právě výchozí. To je rozhodnutí o kontextu směrování, ne pole pro heslo, a mění, na které zařízení je tunel vrstven.

Neberte obecný příklad přidání a aktivace a nečekejte, že vytvoří profil VPN. Dokumentovaný pomocník vylučuje připojení VPN, takže zřízení nebo import profilu je samostatný, revidovaný krok. To je důležité, protože zřízení vyžaduje oprávnění a revizi, které tlačítko připojení nenabízí. Berte import jako administrativní akci s vlastním řádkem protokolu a vlastním schvalovatelem.

Třetí kontrola: jak je stav reprezentován

Aktivní připojení prochází aktivací, aktivním stavem, deaktivací a deaktivovaným stavem a pole důvodu říká proč. Sloučení toho všeho do booleovské hodnoty zvané loggedIn ztrácí informace, které uživatel potřebuje a které bude podpora chtít. Ukazujte alespoň, zda je připojení čekající, navázané, nebo pryč, a uchovejte řetězec důvodu pro případ selhání.

Přidružte asynchronní odpovědi k požadavku, který je vyvolal. Pozdní dokončení staršího pokusu nesmí přepsat novější akci uživatele a opakovaný stisk Connect má být buď ignorován, nebo pojat jako zrušení a nový pokus s viditelnou politikou.

Čtvrtá kontrola: co se stane po restartu

Když se správce restartuje nebo se váš řadič znovu připojí ke sběrnici, sestavte pozorovaný stav znovu od vlastníka. Nepokračujte v zobrazování uložené relace jako aktivní jen proto, že stará cesta k objektu je stále v paměti. Signály změny stavu existují právě proto, aby se řadič mohl resynchronizovat místo hádání.

Zvolte, co znamená zavřít řadič. Ponechat existující připojení vlastněné strojem zapnuté může být správné a rozebrat záměrně krátkodobou relaci také může být správné. Ponechat existující připojení vlastněné strojem zapnuté může být správné; rozebrat záměrně krátkodobou relaci také může být správné. Zapište tuto smlouvu o vlastnictví do rozhraní, místo abyste předpokládali, že ukončení procesu provede síťovou akci. Uživatelé nemají hádat, zda zavřením okna přijdou o tunel. Dejte odpověď do textu rozhraní, ne jen do komentáře v kódu.

Ponechte pravomoci a tajemství u jejich vlastníků

Oprávnění se vracejí jako ano, auth nebo ne, a rozhraní má odrážet rozdíl mezi povoleno, povoleno po autentizaci a zamítnuto. Spouštění řadiče jako root nezavádí politiku oprávnění; odstraňuje otázku.

Přihlašovací údaje patří podporovanému agentovi tajemství nebo klientské integraci pro nakonfigurovanou metodu autentizace. Heslo ve zdrojovém kódu, v argumentu nebo v protokolu je nález a místní administrativní autorizace není stejná událost jako autentizace vůči bráně.

Nakonec hlaste stav připojení odděleně od úlohy, kterou chce uživatel provést. Tunel může být aktivní, zatímco soukromé jméno nebo aplikace zůstávají nedostupné, a toto druhé selhání si zaslouží vlastní zprávu a vlastní stav. Řadič, který přesně řekne, která vrstva selhala, je užitečnější než ten, který řekne, že VPN je mimo provoz.

Související články