Povezivanje malog kontrolera s VPN-om u NetworkManageru
Aktivacija vraća ručku, a ne spremnu sesiju. Držite profil, zahtjev i aktivnu vezu odvojeno i ponovno izgradite stanje nakon restarta.
Mali program koji povezuje postojeći VPN treba kontroler, a ne novu implementaciju VPN-a. Podržani motor trebao bi obaviti pregovaranje i promet tunela; vaš program trebao bi izraziti korisnikov zahtjev i iskreno objasniti rezultat. Na Linuxu sučelje NetworkManager D-Bus daje tom kontroleru konkretan model koji može slijediti.
Četiri provjere sprječavaju kontroler da pobrka spremljeni profil, zahtjev za aktivaciju i radnu sesiju.
Prva provjera: koji se identitet bira
Držite UUID profila kao trajni identitet i razriješite ga preko upravitelja kada vam treba putanja objekta. Prikazno ime mogu dijeliti dva profila, a putanja sabirnice u vrijeme izvršavanja nije razumna korisnička postavka za spremanje. Zapišite odabir u vlastitu konfiguraciju, a ne u komentar o tome koji je unos bio drugi na popisu.
Provjerite što upravitelj vraća prije nego to nazovete podudaranjem. UUID koji više ne postoji daje pogrešku pretraživanja, što je druga putanja koda od profila koji postoji i odbija aktivaciju.
Druga provjera: što vraća poziv za aktivaciju
Dokumentirani poziv za aktivaciju prima putanju objekta postojeće veze, putanju uređaja i konkretan objekt. Vraća putanju aktivne veze, a taj je odgovor ručka, a ne rezultat spremnosti. Ne postavljajte zastavicu spremnosti aplikacije iz vraćene vrijednosti; umjesto toga pretplatite se na stanje i razlog aktivne veze.
Za VPN konkretan objekt bira aktivnu osnovnu vezu. Prosljeđivanje korijenske putanje prepušta odabir uređaja NetworkManageru, koji bira onaj koji je trenutačno zadani. To je odluka o kontekstu usmjeravanja, a ne polje za lozinku, i mijenja na koji je uređaj tunel naslonjen.
Ne preuzimajte generički primjer dodavanja i aktivacije i ne očekujte da će stvoriti VPN profil. Dokumentirani pomoćnik isključuje VPN veze, pa je priprema ili uvoz profila odvojen, pregledan korak. To je važno jer priprema traži ovlaštenje i pregled koje gumb za povezivanje ne pruža. Tretirajte uvoz kao administrativnu radnju s vlastitim retkom u zapisniku i vlastitim odobravateljem.
Treća provjera: kako je stanje predstavljeno
Aktivna veza prolazi kroz aktiviranje, aktivno, deaktiviranje i deaktivirano, a polje razloga kaže zašto. Sabijanje svega toga u logičku vrijednost zvanu loggedIn gubi informacije koje korisnik treba i koje će podrška tražiti. Prikažite barem je li veza na čekanju, uspostavljena ili nestala, i sačuvajte niz razloga za slučaj neuspjeha.
Povežite asinkrone odgovore sa zahtjevom koji ih je proizveo. Kasno dovršavanje starijeg pokušaja ne smije prepisati noviju korisničku radnju, a ponovni pritisak na Connect treba ili ignorirati ili tretirati kao otkazivanje i ponovni pokušaj s vidljivom politikom.
Četvrta provjera: što se događa nakon restarta
Kada se upravitelj restartira ili se vaš kontroler ponovno poveže sa sabirnicom, ponovno izgradite promatrano stanje od vlasnika. Ne nastavljajte prikazivati predmemoriranu sesiju kao aktivnu zato što je stara putanja objekta još u memoriji. Signali promjene stanja postoje upravo zato da se kontroler može resinkronizirati umjesto nagađanja.
Odaberite što znači zatvaranje kontrolera. Ostavljanje postojeće veze kojom upravlja stroj uključenom može biti ispravno, a rušenje namjerno kratkotrajne sesije također može biti ispravno. Ostavljanje postojeće veze kojom upravlja stroj uključenom može biti ispravno; rušenje namjerno kratkotrajne sesije također može biti ispravno. Zapišite taj ugovor o vlasništvu u sučelje, umjesto da pretpostavljate da izlazak procesa obavlja mrežnu radnju. Korisnici ne bi trebali nagađati hoće li zatvaranje prozora prekinuti njihov tunel. Stavite odgovor u tekst sučelja, ne samo u komentar koda.
Zadržite ovlasti i tajne kod njihovih vlasnika
Dozvole se vraćaju kao da, auth ili ne, a sučelje treba odraziti razliku između dopušteno, dopušteno nakon autentikacije i odbijeno. Pokretanje kontrolera kao root ne provodi politiku dozvola; ono uklanja pitanje.
Vjerodajnice pripadaju podržanom agentu za tajne ili klijentskoj integraciji za konfiguriranu metodu autentikacije. Lozinka u izvornom kodu, u argumentu ili u zapisniku je nalaz, a lokalno administrativno ovlaštenje nije isti događaj kao autentikacija na mrežnom prolazu.
Konačno, izvješćujte o stanju veze odvojeno od zadatka koji korisnik želi obaviti. Tunel može biti aktivan dok privatno ime ili aplikacija ostaje nedostupna, a taj drugi neuspjeh zaslužuje vlastitu poruku i vlastiti status. Kontroler koji točno kaže koji je sloj zakazao korisniji je od onoga koji kaže da je VPN pao.