Zašto se 23-satni podsjetnik VPN-a aktivira za pogrešnu sesiju
Obavijest od 23 sata treba slijediti jednu sesiju, a ne račun. Vežite tajmer za vezu koja je počela i tretirajte spavanje i ponovno povezivanje kao odvojene slučajeve.
Obavijest se pojavila dvadeset minuta nakon povezivanja. Brojač ispod nje radio je od prethodnog jutra, ili od posljednje autentifikacije računa, i ništa u upozorenju nije reklo koji je od toga. To je simptom: podsjetnik vezan za nešto drugo, a ne za vezu koja je pred vama.
Rješenje nije bolje upozorenje. Rješenje je odlučiti koji sat zahtjev podrazumijeva, a zatim vezati tajmer za objekat koji postoji na tom satu.
Šta se aktiviralo i šta je brojalo
Tri vjerovatna izvora daju istu poruku. Kalendarsko pravilo radi u fiksnom lokalnom vremenu i ne zna ništa o tunelima. Brojač u klijentu se akumulira dok je bilo koja veza aktivna i preživljava ponovna povezivanja. Politika pristupnika ističe sesiju na strani servera i prvo šalje upozorenje.
Samo se posljednja dva odnose na sesiju, a i ona se ne slažu. Brojač klijenta mjeri šta je lokalni proces primijetio; pristupnik mjeri šta je autentifikovao i obračunao. Spavanje, promjena mreže ili ponovno pokretanje posmatrača mogu ih razvesti na sate, i zato se upozorenje i prisilni istek razilaze.
Tri sata iza jednog zahtjeva
Počnite tako što ćete zapisati rečenicu koju zaista želite. Upozorenje prije nego što pristupnik prekine ovu vezu nije isti zahtjev kao podsjećanje nakon dana povezanog vremena. Nije isto ni kao izvještaj da je ova sesija aktivna 23 sata. Svaka verzija imenuje drugi događaj, a druga komponenta mora odgovoriti na njega.
Zatim provjerite postoje li podaci. Lokalna početna vremenska oznaka daje vam starost sesije bez zavisnosti od servera. Politika pristupnika daje vam preostali vijek, ali samo ako ga pristupnik izlaže. Izvještaj o korištenju daje vam trajanje nakon činjenice, a to ne može pokrenuti unaprijed obavijest.
Vežite tajmer za sesiju, a ne za račun
Prvo odaberite objekat. Račun može držati nekoliko uređaja i nekoliko istovremenih sesija, pa podsjetnik vezan za korisničko ime ne može reći koja je veza dostigla starost. Vežite ga za profil plus to aktiviranje, i otkažite obavijest na čekanju kada aktiviranje završi.
| Evidence you can read | What it establishes | Where it misleads |
|---|---|---|
| Connection state changes to active | A session started now | Does not carry the gateway's own session identifier |
| Duration reported at disconnect | Total service time for that session | Arrives too late for any advance notice |
| Interim usage update | Time accounted up to that update | Staleness equals the update interval |
| Local timestamp taken at activation | Age of your observation | Resets whenever the observer restarts |
Ta tabela je ugovor za vaš vlastiti obavještavač, a ne opis API-ja za povratne pozive bilo kojeg klijenta. Šta god instalirani proizvod dokumentuje o stanju veze, to je izvor za koji se treba vezati; gdje izlaže samo događaje autentifikacije, recite to naglas i prihvatite grublje ponašanje umjesto da izvodite sesiju.
Testirajte ga kratkim pragom
Nikada ne tražite grešku u cjelodnevnom tajmeru cjelodnevnim čekanjem. Dodajte konfigurabilni prag, postavite ga na trideset sekundi i izvedite četiri prelaza po redu: poveži, čekaj, prekini, ponovo poveži. Svaki prelaz treba proizvesti tačno jednu promjenu stanja, a ponovno povezivanje treba zakazati novi rok umjesto da naslijedi stari.
# 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
Gledajte vremenske oznake, a ne formulaciju. Obavijest koja stigne s vremenom početka prethodne sesije vezala je pogrešan objekat, a obavijest koja stigne dvaput za jedan rok znači da zastavica slanja nikada nije sačuvana.
Spavanje, ponovno povezivanje i propuštena dostava
Spavanje razbija oba naivna dizajna. Monotono odbrojavanje staje dok mašina spava, rok po zidnom satu nastavlja se kretati, a tajmer koji se aktivira tokom spavanja dostavlja se kasno ili nikako. Odlučite koje ponašanje vaš zahtjev traži, zatim uspavajte mašinu preko praga i potvrdite.
Dostava zaslužuje istu pažnju. Ako se obavijest ne može prikazati, stavite je u red čekanja i ponovo provjerite postoji li ciljna sesija prije nego što je konačno prikažete; inače je korisnik upozoren na vezu koja je već završila. Prisilno prekidanje i obnavljanje akreditiva ostaju izvan ovog puta, jer podsjetnik koji tiho mijenja sudbinu veze je politička odluka odjevena u obavijest.