Breathnóir staid OpenVPN i C#: féach ar an seisiún, ní ar an gcárta líonra
Ní heachtra VPN é NetworkAvailabilityChanged. Léigh sruth staid an chliaint ar leis an tollán é, cosain ar fhiosrúcháin atá as dáta agus foilsigh ullmhacht in aghaidh an naisc.
Leanann d'aip ag obair fad a fhaigheann an tollán bás. Tá Wi-Fi fós suas, tá an t-idirlíon fós ag freagairt, agus tá an API príobháideach a mbíonn an aip ag brath air tar éis éirí gan rochtain. An eachtra .NET a dtéann daoine chuici anseo de ghnáth, NetworkAvailabilityChanged, ní chuireann sí síos ar an gcás sin ar chor ar bith. Tuairiscíonn sí athrú ar riocht iomlánach an mheaisín, agus féadfaidh an riocht sin a bheith fíor trí dhícheangal agus athnascadh VPN. Caithfidh breathnóir féachaint ar an gcliant ar leis an tollán é, ní ar achoimre an chruach líonra.
Is iomlánach í an infhaighteacht, ní do thollán
NetworkAvailabilityChanged spreagtar nuair a athraíonn freagra iomlánach infhaighteachta an mheaisín, agus áirítear san fhreagra sin aon chomhéadan atá suas seachas loopback nó tollán.
Ní athraíonn titim VPN fad a bhíonn Wi-Fi suas aon rud a thomhaiseann sí, agus is ar an gcúis sin a fhéadann an eachtra fanacht ina tost le linn na teipe sin a bhfuil imní ort faoi.
Baineann sruth an staid leis an gcliant ar leis an tollán é
Aithin cé acu comhpháirt ar leis an nasc é: GUI nó seirbhís OpenVPN, OpenVPN Connect, nó próiseas a chuir do chuid aipe ar bun agus a rialaíonn sí. Úinéirí difriúla iad le comhéadain thacaíochta dhifriúla, agus caithfidh an breathnóir an ceann a fhreagraíonn don imscaradh a úsáid. I gcás próisis OpenVPN a bhfuil údarás agat comhtháthú leis, tuairiscíonn an comhéadan bainistíochta an staid reatha, stair agus fógraí fíor-ama. Déan anailís ar na teachtaireachtaí struchtúrtha doiciméadaithe in ionad cuardach a dhéanamh ar an bhfocal connected i bhfotheideal GUI logánaithe.
Is dromchla rialaithe phribhléideach é an cainéal bainistíochta, mar sin ná hoscail éisteoir nua agus ná troid leis an GUI faoi chainéal atá aici cheana.
Stopann gardaí glúine torthaí atá as dáta
Baineann gach breathnóireacht le hiarracht naisc ar leith. Méadaigh áiritheoir glúine nuair a thosaíonn iarracht nua, nuair a chailleann an cainéal agus nuair a thuairiscíonn an cliant scor.
Smaoinigh ar fhiosrúchán a cuireadh tús leis le linn naisc A. Titeann an tollán, tosaíonn nasc B, agus ansin tagann rath HTTP mall A isteach ina dhiaidh sin. Gan garda, iompaíonn an seantoradh sin an taispeáint glas fad a bhíonn B fós ag fíordheimhniú. Laghdaíonn cealú obair amú, agus is é an seiceáil ghlúine a choisceann críochnú atá as dáta ar dhul chun bheith ina staid reatha:
var generation = _generation;
var reachable = await ProbeAsync(token);
if (generation != _generation) return;
Publish(reachable);
Cuir an riail chéanna i bhfeidhm timpeall sheoladh an UI, mar is féidir leis an nuashonrú marasláilte teacht tar éis don ghlúin dul ar aghaidh.
Is aon saolré amháin iad túsú agus athnascadh
Caith le chéile an chéad nasc, athnascadh agus cailliúint cainéil mar aon saolré le haon sraith rialacha:
- Léigh an staid reatha agus liostáil le fógraí in aon chéim san áit a gceadaíonn an comhéadan é.
- Clibigh gach breathnóireacht le féiniúlacht an naisc agus leis an nglúin.
- Déan neamhbhailí an ullmhacht ar athnascadh, scor nó cainéal breathnóireachta caillte.
- Déan fiosrú ar an acmhainn phríobháideach ach amháin tar éis don úinéir a thuairisciú go bhfuil túsú críochnaithe.
- Ná foilsigh ach torthaí a bhaineann fós leis an nglúin reatha.
Ciallaíonn cainéal caillte anaithnid, ní dícheangailte. Is ionraice anaithnid a thuairisciú ná dícheangal a thuairisciú nach féidir leat a chruthú, agus cuireann sé cosc ar loighic an athiarracht gníomhú ar bhuille faoi thuairim.
Tuairiscigh fianaise, ní luach Boole
Fill an staid seisiúin ainmnithe agus ullmhacht na hacmhainne mar luachanna ar leith, agus aois ag gabháil le gach ceann. Is féidir le tomhaltóir a chaithfidh rud éigin a shocrú ansin a fheiceáil go bhfuil an fiosrúchán rathúil deireanach daichead soicind d'aois, ar faisnéis dhifriúil í sin ó cheann úr.
Ní fianaise é cuardach IP poiblí go n-úsáidfeadh API príobháideach an bealach riachtanach, mar sin ná cuir i láthair é mar a bheadh.
Coinnigh forghníomhú lasmuigh den bhreathnóir
Ritheann aisghlao tar éis na heachtra. Ní féidir leis a ráthú nár fhág aon phaicéad an meaisín idir an eachtra agus an láimhseálaí. Má éilíonn an dearadh bacadh, caithfidh an polasaí líonraithe é a sholáthar, agus is é tasc an bhreathnóra an fhianaise a mhíniú dá ghlaoiteoir. Má mheasctar an dá rud, cruthaítear cód a chreideann gur balla dóiteáin é toisc go bhfuil luach Boole aige. Coinnigh an tsraith fhorghníomhaithe leadránach agus in-tástála, agus lig don bhreathnóir fanacht ina léitheoir.
Ansin éiríonn ceist an UI simplí: taispeáin a bhfuil ar eolas, lena aois, agus abair anaithnid nuair a bhíonn.