Eit lite program som koplar til ein eksisterande VPN treng ein kontrollør, ikkje ein ny VPN-implementasjon. Den støtta motoren bør handsame forhandlinga og tunneltrafikken; programmet ditt bør uttrykkje førespurnaden til brukaren og forklare resultatet ærleg. På Linux gjev NetworkManager D-Bus-grensesnittet den kontrolløren ein konkret modell å følgje.

Fire kontrollar hindrar kontrolløren i å blande saman ein lagra profil, ein aktiveringsførespurnad og ein fungerande sesjon.

Kontroll éin: kva identitet som blir vald

Hald UUID-en til profilen som den varige identiteten, og løys han opp gjennom behandlaren når du treng objektbanen. Eit visingsnamn kan delast av to profilar, og ein bussti ved køyring er ikkje ei fornuftig brukarinnstilling å lagre. Skriv valet ned i di eiga konfigurasjon, ikkje i ein kommentar om kva oppføring som var nummer to i lista.

Stadfest kva behandlaren returnerer før du kallar det eit treff. Ein UUID som ikkje finst lenger gjev ein oppslagsfeil, og det er ein annan kodesti enn ein profil som finst og nektar å aktivere.

Kontroll to: kva aktiveringskallet returnerer

Det dokumenterte aktiveringskallet tek ein objektbane for ei eksisterande tilkopling, ein einingsbane og eit spesifikt objekt. Det returnerer ein bane for ei aktiv tilkopling, og det svaret er eit handtak, ikkje eit resultat om beredskap. Ikkje set beredskapsflagget i programmet ditt frå returverdien; abonner i staden på tilstanden og årsaka til den aktive tilkoplinga.

For ein VPN vel det spesifikke objektet den aktive basistilkoplinga. Sendar du rotbanen, blir einingsvalet overlate til NetworkManager, som vel den som er standard akkurat no. Det er ei avgjerd om rutingskontekst og ikkje eit passordfelt, og det endrar kva eining tunnelen blir lagd på.

Ikkje kopier eit generelt legg-til-og-aktiver-døme og vent at det lagar ein VPN-profil. Den dokumenterte hjelparen utelèt VPN-tilkoplingar, så klargjering eller import av profilen er eit eige, gjennomgått steg. Det er viktig fordi klargjering krev autorisasjon og gjennomgang som ein tilkoplingsknapp ikkje gjev. Handsame import som ei administrativ handling med si eiga logglinje og sin eigen godkjenner.

Kontroll tre: korleis tilstanden blir framstilt

Ei aktiv tilkopling går gjennom aktivering, aktiv, deaktivering og deaktivert, og årsaksfeltet seier kvifor. Å presse alt dette inn i ein boolsk verdi kalla loggedIn mistar informasjonen brukaren treng og den støtta vil spørje om. Vis minst om tilkoplinga ventar, er etablert eller er borte, og hald årsaksstrengen for feiltilfellet.

Knyt asynkrone svar til førespurnaden som skapte dei. Ei sein fullføring frå eit eldre forsøk må ikkje skrive over ei nyare brukarhandling, og eit dobbelt trykk på Connect bør anten ignorerast eller handsamast som avbryt-og-prøv-igjen med ein synleg policy.

Kontroll fire: kva som skjer etter ein omstart

Når behandlaren startar på nytt eller kontrolløren din koplar seg til bussen igjen, bygg den observerte tilstanden på nytt frå eigaren. Ikkje hald fram med å vise ein bufra sesjon som aktiv fordi ein gammal objektbane framleis ligg i minnet. Tilstandsendringssignala finst nettopp for at ein kontrollør skal kunne resynkronisere i staden for å gisse.

Vel kva det betyr å lukke kontrolløren. Å la ei eksisterande maskineigd tilkopling stå oppe kan vere rett, og å rive ned ein medvite kortvarig sesjon kan òg vere rett. Å la ei eksisterande maskineigd tilkopling stå oppe kan vere rett; å rive ned ein medvite kortvarig sesjon kan òg vere rett. Skriv den eigarkontrakten inn i grensesnittet i staden for å gå ut frå at prosessavslutning utfører nettverkshandlinga. Brukarar bør ikkje måtte gisse om lukking av vindauget vil droppe tunnelen deira. Set svaret i grensesnittteksten, ikkje berre i ein kodekommentar.

Hald myndigheit og løyndomar hjå eigarane

Løyve kjem tilbake som ja, auth eller nei, og grensesnittet bør spegle skilnaden mellom tillate, tillate etter autentisering og avslått. Å køyre kontrolløren som root implementerer ikkje ein løyvepolicy; det fjernar spørsmålet.

Legitimasjon høyrer til den støtta løyndomsagenten eller klientintegreringa for den konfigurerte autentiseringsmetoden. Eit passord i kjeldekode, i eit argument eller i ein logg er eit funn, og lokal administrativ autorisasjon er ikkje same hendinga som autentisering ved gatewayen.

Til slutt, rapporter tilkoplingstilstanden skilt frå oppgåva brukaren vil utføre. Ein tunnel kan vere aktiv medan eit privat namn eller eit program framleis er utilgjengeleg, og den andre feilen fortener si eiga melding og sin eigen status. Ein kontrollør som seier nøyaktig kva lag som feila er meir nyttig enn ein som seier at VPN-en er nede.

Relaterte artiklar