Povezava majhnega krmilnika z VPN v NetworkManagerju
Aktivacija vrne ročaj, ne pripravljene seje. Profil, zahtevo in aktivno povezavo hranite ločeno, po ponovnem zagonu pa stanje znova zgradite.
Majhen program, ki povezuje obstoječi VPN, potrebuje krmilnik, ne nove izvedbe VPN. Podprti pogon naj bi obvladoval pogajanja in promet predora; vaš program naj bi izrazil zahtevo uporabnika in pošteno razložil rezultat. V Linuxu vmesnik NetworkManager D-Bus temu krmilniku daje konkreten model, ki mu je mogoče slediti.
Štiri preverjanja preprečijo, da bi krmilnik zamešal shranjen profil, zahtevo za aktivacijo in delujočo sejo.
Prvo preverjanje: katera identiteta je izbrana
UUID profila hranite kot trajno identiteto in ga razrešite prek upravitelja, ko potrebujete pot objekta. Prikazno ime si lahko delita dva profila, pot vodila med izvajanjem pa ni smiselna uporabniška nastavitev za shranjevanje. Izbiro zapišite v svojo konfiguracijo, ne v komentar o tem, kateri vnos je bil drugi na seznamu.
Preverite, kaj vrne upravitelj, preden to imenujete ujemanje. UUID, ki ne obstaja več, povzroči napako iskanja, to pa je druga kodna pot kot profil, ki obstaja in zavrača aktivacijo.
Drugo preverjanje: kaj vrne klic aktivacije
Dokumentirani klic aktivacije sprejme pot objekta obstoječe povezave, pot naprave in določen objekt. Vrne pot aktivne povezave in ta odgovor je ročaj, ne rezultat pripravljenosti. Zastavice pripravljenosti aplikacije ne nastavljajte iz vrnjene vrednosti; naročite se namesto tega na stanje in razlog aktivne povezave.
Pri VPN določen objekt izbere aktivno osnovno povezavo. Če posredujete korensko pot, izbiro naprave prepustite NetworkManagerju, ki izbere tisto, ki je trenutno privzeto. To je odločitev o kontekstu usmerjanja in ne polje za geslo, in spremeni, na katero napravo je položen predor.
Ne vzemite splošnega primera dodajanja in aktivacije ter ne pričakujte, da bo ustvaril profil VPN. Dokumentirani pomočnik izključuje povezave VPN, zato je priprava ali uvoz profila ločen, pregledan korak. To je pomembno, ker priprava zahteva avtorizacijo in pregled, ki ju gumb za povezavo ne ponuja. Uvoz obravnavajte kot upravno dejanje z lastno vrstico dnevnika in lastnim odobriteljem.
Tretje preverjanje: kako je stanje predstavljeno
Aktivna povezava prehaja skozi aktivacijo, aktivno, deaktivacijo in deaktivirano, polje razloga pa pove, zakaj. Če vse to stisnete v logično vrednost z imenom loggedIn, izgubite informacije, ki jih uporabnik potrebuje in ki jih bo podpora zahtevala. Prikažite vsaj, ali povezava čaka, je vzpostavljena ali je ni več, in ohranite niz razloga za primer napake.
Asinhrone odgovore povežite z zahtevo, ki jih je ustvarila. Pozna dokončanost starejšega poskusa ne sme prepisati novejšega uporabnikovega dejanja, dvojni pritisk na Connect pa je treba bodisi prezreti bodisi obravnavati kot preklic in ponoven poskus z vidno politiko.
Četrto preverjanje: kaj se zgodi po ponovnem zagonu
Ko se upravitelj znova zažene ali se vaš krmilnik znova poveže z vodilom, stanje, ki ga opazujete, znova zgradite od lastnika. Ne nadaljujte s prikazovanjem predpomnjene seje kot aktivne zato, ker je stara pot objekta še v pomnilniku. Signali spremembe stanja obstajajo prav zato, da se krmilnik lahko znova sinhronizira, namesto da ugiba.
Izberite, kaj pomeni zapreti krmilnik. Pustiti obstoječo povezavo v lasti stroja odprto je lahko pravilno, razstaviti namerno kratkotrajno sejo pa je lahko tudi pravilno. Pustiti obstoječo povezavo v lasti stroja odprto je lahko pravilno; razstaviti namerno kratkotrajno sejo pa je lahko tudi pravilno. To lastninsko pogodbo zapišite v vmesnik, namesto da predpostavljate, da izhod procesa izvede omrežno dejanje. Uporabnikom ne bi bilo treba ugibati, ali bo zaprtje okna prekinilo njihov predor. Odgovor postavite v besedilo vmesnika, ne le v komentar kode.
Ohranite pooblastila in skrivnosti pri njihovih lastnikih
Dovoljenja se vrnejo kot da, auth ali ne, vmesnik pa naj odraža razliko med dovoljeno, dovoljeno po overitvi in zavrnjeno. Zagon krmilnika kot root ne uvaja politike dovoljenj; odpravi vprašanje.
Poverilnice pripadajo podprtemu agentu za skrivnosti ali odjemalski integraciji za konfigurirano metodo overjanja. Geslo v izvorni kodi, v argumentu ali v dnevniku je ugotovitev, lokalna upravna avtorizacija pa ni isti dogodek kot overjanje na prehodu.
Nazadnje poročajte o stanju povezave ločeno od opravila, ki ga uporabnik želi izvesti. Predor je lahko aktiven, medtem ko zasebno ime ali aplikacija ostajata nedosegljiva, in ta druga napaka si zasluži svoje sporočilo in svoj status. Krmilnik, ki natančno pove, katera plast je odpovedala, je uporabnejši od tistega, ki pravi, da VPN ne deluje.