Kial 23-hora VPN-rememorigo ekas por la malĝusta sesio
23-hora sciigo devus sekvi unu sesion, ne la konton. Ligidu la tempigilon al la konekto, kiu komenciĝis, kaj traktu dormon kaj rekonekton kiel apartajn kazojn.
La sciigo aperis dudek minutojn post la konekto. La nombrilo sub ĝi funkciis ekde la antaŭa mateno, aŭ ekde kiam la konto laste aŭtentikiĝis, kaj nenio en la averto diris kiun. Tio estas la simptomo: rememorigo ligita al io alia ol la konekto antaŭ vi.
La solvo ne estas pli bona averto. Ĝi estas decidi, kiun horloĝon la postulo celas, kaj poste ligi la tempigilon al objekto, kiu ekzistas en tiu horloĝo.
Kio ekis, kaj kion ĝi nombris
Tri verŝajnaj fontoj produktas la saman mesaĝon. Kalendara regulo funkcias je fiksa loka tempo kaj scias nenion pri tuneloj. Nombrilo en la kliento akumuliĝas dum iu ajn konekto staras kaj postvivas rekonektojn. Pordega politiko finigas la sesion ĉe la servila flanko kaj unue sendas averton.
Nur la lastaj du temas pri sesio, kaj eĉ ili ne interkonsentas. La klienta nombrilo mezuras tion, kion observis la loka procezo; la pordego mezuras tion, kion ĝi aŭtentikigis kaj kalkulis. Dormo, reta ŝanĝo aŭ restartigo de la observanto povas apartigi ilin per horoj, kaj tial la averto kaj la devigita finiĝo malproksimiĝas.
Tri horloĝoj malantaŭ unu postulo
Komencu skribante la frazon, kiun vi vere volas. Averto antaŭ ol la pordego finigos ĉi tiun konekton ne estas la sama postulo kiel rememorigo post unu tago da konektita tempo. Ĝi ankaŭ ne samas kiel raporti, ke ĉi tiu sesio staras jam 23 horojn. Ĉiu versio nomas alian eventon, kaj alia komponanto devas respondi al ĝi.
Poste kontrolu, ĉu la datumoj ekzistas. Loka komenca tempstampo donas al vi la aĝon de la sesio sen dependeco de la servilo. Pordega politiko donas al vi la restantan vivdaŭron, sed nur se la pordego malkaŝas ĝin. Uzada raporto donas al vi la daŭron post la fakto, kaj tio ne povas peli antaŭan sciigon.
Ligu la tempigilon al la sesio, ne al la konto
Unue elektu la objekton. Konto povas teni plurajn aparatojn kaj plurajn samtempajn sesiojn, do rememorigo ŝlosita al la uzantnomo ne povas diri, kiu konekto atingis la aĝon. Ŝlosu ĝin al la profilo plus tiu aktivigo, kaj nuligu la atendan sciigon kiam la aktivigo finiĝas.
| 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 |
Tiu tabelo estas kontrakto por via propra sciigilo, ne priskribo de la retrovoka API de iu ajn kliento. Kion ajn la instalita produkto dokumentas pri konekta stato, tio estas la fonto al kiu ligu vin; kie ĝi malkaŝas nur aŭtentikigajn eventojn, diru tion laŭte kaj akceptu la pli malglatan konduton anstataŭ konkludi sesion.
Testu ĝin per mallonga sojlo
Neniam sencimigu tutagan tempigilon per tutaga atendo. Aldonu agordeblan sojlon, agordu ĝin al tridek sekundoj, kaj rulu kvar transirojn laŭvice: konekti, atendi, malkonekti, rekonekti. Ĉiu transiro devus produkti precize unu ŝtatŝanĝon, kaj la rekonekto devus plani novan limdaton anstataŭ heredi la malnovan.
# 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
Rigardu la tempstampojn, ne la vortigon. Sciigo, kiu alvenas kun la komenca tempo de la antaŭa sesio, ligis la malĝustan objekton, kaj sciigo, kiu alvenas dufoje por unu limdato, signifas, ke la sendita flago neniam estis konservita.
Dormo, rekonekto kaj maltrafita livero
Dormo rompas ambaŭ naivajn dezajnojn. Monotona retrokalkulo haltas dum la maŝino dormas, limdato laŭ murhorloĝo daŭre moviĝas, kaj tempigilo, kiu ekas dum dormo, liveriĝas malfrue aŭ tute ne. Decidu, kiun konduton via postulo bezonas, poste dormigu la maŝinon trans la sojlo kaj konfirmu.
Livero meritas la saman zorgon. Se la sciigo ne povas esti montrita, metu ĝin en vicon, kaj rekontrolu, ĉu la cela sesio ankoraŭ ekzistas antaŭ ol fine montri ĝin; alie la uzanto estas avertita pri konekto, kiu jam finiĝis. Devigita malkonekto kaj renovigo de akreditaĵoj restas ekster ĉi tiu vojo, ĉar rememorigo, kiu silente ŝanĝas la sorton de la konekto, estas politika decido vestita kiel sciigo.