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 treba da obavi pregovaranje i saobraćaj tunela; vaš program treba da izrazi korisnikov zahtjev i iskreno objasni rezultat. Na Linuxu interfejs NetworkManager D-Bus daje tom kontroleru konkretan model koji može slijediti.
Četiri provjere sprječavaju kontroler da pobrka sačuvani 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 menadžera kada vam treba putanja objekta. Prikazno ime mogu dijeliti dva profila, a putanja sabirnice u vrijeme izvršavanja nije razumna korisnička postavka za čuvanje. Zapišite izbor u vlastitu konfiguraciju, a ne u komentar o tome koji je unos bio drugi na listi.
Provjerite šta menadžer vraća prije nego to nazovete poklapanjem. UUID koji više ne postoji daje grešku pretrage, što je druga putanja koda od profila koji postoji i odbija aktivaciju.
Druga provjera: šta vraća poziv za aktivaciju
Dokumentovani poziv za aktivaciju prima putanju objekta postojeće veze, putanju uređaja i konkretan objekat. Vraća putanju aktivne veze, a taj odgovor je 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 objekat bira aktivnu osnovnu vezu. Prosljeđivanje korijenske putanje prepušta izbor uređaja NetworkManageru, koji bira onaj koji je trenutno 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. Dokumentovani 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 dugme za povezivanje ne pruža. Tretirajte uvoz kao administrativnu radnju s vlastitim redom 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 da li je veza na čekanju, uspostavljena ili nestala, i sačuvajte niz razloga za slučaj neuspjeha.
Povežite asinhrone 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 ignorisati ili tretirati kao otkazivanje i ponovni pokušaj s vidljivom politikom.
Četvrta provjera: šta se dešava nakon restarta
Kada se menadžer restartuje ili se vaš kontroler ponovo poveže sa sabirnicom, ponovo izgradite posmatrano stanje od vlasnika. Ne nastavljajte prikazivati keširanu sesiju kao aktivnu zato što je stara putanja objekta još u memoriji. Signali promjene stanja postoje upravo zato da se kontroler može resinhronizovati umjesto nagađanja.
Odaberite šta znači zatvaranje kontrolera. Ostavljanje postojeće veze kojom upravlja mašina uključenom može biti ispravno, a rušenje namjerno kratkotrajne sesije također može biti ispravno. Ostavljanje postojeće veze kojom upravlja mašina 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 interfejs, umjesto da pretpostavljate da izlazak procesa obavlja mrežnu radnju. Korisnici ne treba da nagađaju hoće li zatvaranje prozora prekinuti njihov tunel. Stavite odgovor u tekst interfejsa, ne samo u komentar koda.
Zadržite ovlaštenja i tajne kod njihovih vlasnika
Dozvole se vraćaju kao da, auth ili ne, a interfejs 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 konfigurisanu 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štavajte 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 tačno kaže koji je sloj podbacio korisniji je od onoga koji kaže da je VPN pao.