Teade ilmus kakskümmend minutit pärast ühendamist. Selle all olev loendur oli töötanud eelmisest hommikust või konto viimasest autentimisest saati ja miski hoiatuses ei öelnud, millest. See ongi sümptom: meeldetuletus, mis on seotud millegi muu kui sinu ees oleva ühendusega.

Parandus ei ole parem hoiatus. See on otsus, millist kella nõue silmas peab, ja seejärel taimeri sidumine objektiga, mis selles kellas eksisteerib.

Mis käivitus ja mida see luges

Kolm tõenäolist allikat annavad sama teate. Kalendrireegel töötab kindlal kohalikul ajal ega tea tunnelitest midagi. Kliendi loendur koguneb seni, kuni mis tahes ühendus püsti on, ja elab üle taasühendused. Gateway-poliitika lõpetab sessiooni serveri poolel ja saadab enne hoiatuse.

Ainult kaks viimast puudutavad sessiooni, ja isegi need ei ole ühel meelel. Kliendi loendur mõõdab, mida kohalik protsess nägi; gateway mõõdab, mida ta autentis ja arvestas. Uni, võrguvahetus või vaatleja taaskäivitamine võivad need tundide kaupa lahku viia, ja seetõttu triivivad hoiatus ja sunnitud aegumine teineteisest eemale.

Kolm kella ühe nõude taga

Alusta selle lause kirjutamisest, mida sa tegelikult tahad. Hoiatada enne, kui gateway selle ühenduse lõpetab, ei ole sama nõue kui meelde tuletada pärast ühte päeva ühendatud aega. See ei ole sama ka selle teatamisega, et see sessioon on püsti olnud 23 tundi. Iga versioon nimetab erinevat sündmust ja erinev komponent peab sellele vastama.

Seejärel kontrolli, kas andmed on olemas. Kohalik algusaeg annab sessiooni vanuse ilma serverist sõltumata. Gateway-poliitika annab allesjäänud eluea, kuid ainult siis, kui gateway selle avaldab. Kasutusaruanne annab kestuse tagantjärele ja see ei saa käivitada eelhoiatust.

Siduge taimer sessiooni, mitte konto külge

Vali esmalt objekt. Konto võib hoida mitut seadet ja mitut samaaegset sessiooni, nii et kasutajanimele seatud meeldetuletus ei saa öelda, milline ühendus vanuse saavutas. Seo see profiili ja selle aktiveerimisega ning tühista ootel teade, kui aktiveerimine lõpeb.

Evidence you can readWhat it establishesWhere it misleads
Connection state changes to activeA session started nowDoes not carry the gateway's own session identifier
Duration reported at disconnectTotal service time for that sessionArrives too late for any advance notice
Interim usage updateTime accounted up to that updateStaleness equals the update interval
Local timestamp taken at activationAge of your observationResets whenever the observer restarts

See tabel on leping sinu enda teavitaja jaoks, mitte ühegi kliendi callback-API kirjeldus. Mida iganes paigaldatud toode ühenduse oleku kohta dokumenteerib, on allikas, mille külge kinnituda; kui see avaldab ainult autentimissündmusi, ütle seda valjusti ja lepi jämedama käitumisega, selle asemel et sessiooni oletada.

Katsetage lühikese lävega

Ära kunagi silu ööpäevast taimerit ööpäevase ootamisega. Lisa konfigureeritav lävi, sea see kolmekümnele sekundile ja käivita neli üleminekut järjekorras: ühenda, oota, katkesta, ühenda uuesti. Iga üleminek peaks andma täpselt ühe olekumuutuse ja taasühendus peaks planeerima uue tähtaja, mitte pärima vana.

# current connection state and profile identity
nmcli -f GENERAL.STATE,GENERAL.CONNECTION connection show work

# the notifier unit you wrote: does it restart the deadline or resume it?
journalctl --user -u vpn-timer.service --since "-5 min" -o cat

Vaata ajatempleid, mitte sõnastust. Teade, mis saabub eelmise sessiooni algusajaga, sidus vale objekti, ja teade, mis saabub ühe tähtaja kohta kaks korda, tähendab, et saadetud lippu ei salvestatud kunagi.

Uni, taasühendus ja kaotsiläinud kohaletoimetamine

Uni murrab mõlemad naiivsed lahendused. Monotoonne loendus peatub, kui masin magab, seinakella tähtaeg liigub edasi ja une ajal käivituv taimer toimetatakse hilja või üldse mitte. Otsusta, millist käitumist sinu nõue vajab, seejärel lase masinal üle läve magada ja kinnita see.

Toimetamine väärib sama hoolt. Kui teadet ei saa näidata, pane see järjekorda ja kontrolli enne lõplikku näitamist uuesti, kas sihtsessioon on veel olemas; muidu hoiatatakse kasutajat ühenduse eest, mis on juba lõppenud. Sunnitud katkestamine ja volituste uuendamine jäävad sellelt teelt välja, sest meeldetuletus, mis vaikselt muudab ühenduse saatust, on poliitikaotsus teate kuues.

Seotud artiklid