Maza kontroliera pievienošana NetworkManager VPN
Aktivizēšana atgriež rokturi, nevis gatavu sesiju. Turiet profilu, pieprasījumu un aktīvo savienojumu atsevišķi un pēc restartēšanas atjaunojiet stāvokli.
Mazai programmai, kas pievieno esošu VPN, vajag kontrolieri, nevis jaunu VPN ieviešanu. Atbalstītajam dzinim jāveic sarunas un tuneļa trafiks; jūsu programmai jāizsaka lietotāja pieprasījums un godīgi jāpaskaidro rezultāts. Linux vidē NetworkManager D-Bus saskarne dod šim kontrolierim konkrētu modeli, kam sekot.
Četras pārbaudes neļauj kontrolierim sajaukt saglabātu profilu, aktivizēšanas pieprasījumu un strādājošu sesiju.
Pirmā pārbaude: kura identitāte tiek izvēlēta
Turiet profila UUID kā pastāvīgu identitāti un atrisiniet to caur pārvaldnieku, kad vajag objekta ceļu. Parādāmo nosaukumu var kopīgot divi profili, un izpildlaika kopnes ceļš nav saprātīga lietotāja izvēle, ko saglabāt. Ierakstiet izvēli savā konfigurācijā, nevis komentārā par to, kurš ieraksts bija otrais sarakstā.
Pārbaudiet, ko pārvaldnieks atgriež, pirms to saukt par atbilstību. UUID, kas vairs neeksistē, rada meklēšanas kļūdu, un tas ir cits koda ceļš nekā pastāvošs profils, kas atsakās aktivizēties.
Otrā pārbaude: ko atgriež aktivizēšanas izsaukums
Dokumentētais aktivizēšanas izsaukums saņem esoša savienojuma objekta ceļu, ierīces ceļu un konkrētu objektu. Tas atgriež aktīva savienojuma ceļu, un šī atbilde ir rokturis, nevis gatavības rezultāts. Neiestatiet programmas gatavības karodziņu no atgrieztās vērtības; tā vietā abonējiet aktīvā savienojuma stāvokli un iemeslu.
VPN gadījumā konkrētais objekts izvēlas aktīvo pamata savienojumu. Nododot saknes ceļu, ierīces izvēle tiek atstāta NetworkManager, kas izvēlas to, kas pašlaik ir noklusējuma. Tas ir maršrutēšanas konteksta lēmums, nevis paroles lauks, un tas maina, uz kuras ierīces tunelis tiek uzlikts.
Neņemiet vispārīgu pievienošanas-un-aktivizēšanas piemēru un negaidiet, ka tas izveidos VPN profilu. Dokumentētais palīgs izslēdz VPN savienojumus, tāpēc profila sagatavošana vai imports ir atsevišķs, pārskatīts solis. Tas ir svarīgi, jo sagatavošanai vajag autorizāciju un pārskatīšanu, ko savienošanas poga nesniedz. Uztveriet importu kā administratīvu darbību ar savu žurnāla rindu un savu apstiprinātāju.
Trešā pārbaude: kā tiek attēlots stāvoklis
Aktīvs savienojums iet caur aktivizēšanu, aktīvu, deaktivizēšanu un deaktivizētu, un iemesla lauks pasaka, kāpēc. Visa tā saspiešana Būla vērtībā ar nosaukumu loggedIn zaudē informāciju, kas vajadzīga lietotājam un ko prasīs atbalsts. Rādiet vismaz to, vai savienojums gaida, ir izveidots vai pazudis, un saglabājiet iemesla virkni kļūmes gadījumam.
Saistiet asinhronās atbildes ar pieprasījumu, kas tās radīja. Vecāka mēģinājuma novēlota pabeigšana nedrīkst pārrakstīt jaunāku lietotāja darbību, un dubults Connect nospiedums ir vai nu jāignorē, vai jāuztver kā atcelšana un atkārtots mēģinājums ar redzamu politiku.
Ceturtā pārbaude: kas notiek pēc restartēšanas
Kad pārvaldnieks restartējas vai jūsu kontrolieris atkal pievienojas kopnei, atjaunojiet novēroto stāvokli no īpašnieka. Nepārtrauciet rādīt kešoto sesiju kā aktīvu tāpēc, ka vecais objekta ceļš vēl ir atmiņā. Stāvokļa maiņas signāli pastāv tieši tāpēc, lai kontrolieris varētu resinhronizēties, nevis minēt.
Izvēlieties, ko nozīmē aizvērt kontrolieri. Atstāt esošu mašīnas īpašumā esošu savienojumu ieslēgtu var būt pareizi, un apzināti īslaicīgas sesijas nojaukšana arī var būt pareiza. Atstāt esošu mašīnas īpašumā esošu savienojumu ieslēgtu var būt pareizi; apzināti īslaicīgas sesijas nojaukšana arī var būt pareiza. Ierakstiet šo īpašumtiesību līgumu saskarnē, nevis pieņemiet, ka procesa iziešana veic tīkla darbību. Lietotājiem nevajadzētu minēt, vai loga aizvēršana pārtrauks viņu tuneli. Ielieciet atbildi saskarnes tekstā, ne tikai koda komentārā.
Turiet varu un noslēpumus pie to īpašniekiem
Atļaujas atgriežas kā jā, auth vai nē, un saskarnei jāatspoguļo atšķirība starp atļauts, atļauts pēc autentifikācijas un liegts. Kontroliera palaišana kā root neievieš atļauju politiku; tā noņem jautājumu.
Akreditācijas dati pieder atbalstītajam noslēpumu aģentam vai klienta integrācijai konfigurētajai autentifikācijas metodei. Parole pirmkodā, argumentā vai žurnālā ir atradums, un vietēja administratīvā autorizācija nav tas pats notikums kā autentifikācija pie vārtejas.
Visbeidzot, ziņojiet par savienojuma stāvokli atsevišķi no uzdevuma, ko lietotājs vēlas veikt. Tunelis var būt aktīvs, kamēr privāts nosaukums vai programma paliek nepieejama, un šī otrā kļūme ir pelnījusi savu ziņojumu un savu statusu. Kontrolieris, kas precīzi pasaka, kurš slānis cieta neveiksmi, ir noderīgāks par to, kas saka, ka VPN ir izslēgts.