Известувањето се појави дваесет минути по поврзувањето. Бројачот под него работеше од претходното утро, или од последната автентикација на сметката, и ништо во предупредувањето не кажа кое. Тоа е симптомот: потсетување врзано за нешто друго, а не за врската пред вас.

Решението не е подобро предупредување. Тоа е одлука кој часовник го мисли барањето, а потоа врзување на тајмерот за објект што постои во тој часовник.

Што се активираше и што броеше

Три веројатни извори даваат иста порака. Календарското правило работи во фиксно локално време и не знае ништо за тунели. Бројачот во клиентот се собира додека е активна било која врска и ги преживува повторните поврзувања. Политиката на портата ја истекува сесијата на страната на серверот и прво испраќа предупредување.

Само последните две се за сесија, а ни тие не се согласуваат. Бројачот на клиентот мери што забележал локалниот процес; портата мери што автентицирала и пресметала. Спиењето, промената на мрежата или рестартирањето на набљудувачот можат да ги разделат со часови, и затоа предупредувањето и присилното истекување се разидуваат.

Три часовници зад едно барање

Започнете со запишување на реченицата што навистина ја сакате. Предупредување пред портата да ја заврши оваа врска не е исто барање како потсетување по ден поврзано време. Не е исто ни како известување дека оваа сесија работи 23 часа. Секоја верзија именува различен настан, и различен компонент треба да одговори на него.

Потоа проверете дали податоците постојат. Локална почетна временска ознака ви ја дава староста на сесијата без зависност од серверот. Политиката на портата ви го дава преостанатиот животен век, но само ако портата го изложува. Извештајот за користење ви го дава траењето откако ќе се случи, а тоа не може да управува со однапред известување.

Прикачете го тајмерот на сесијата, а не на сметката

Прво изберете го објектот. Сметката може да држи неколку уреди и неколку истовремени сесии, па потсетување врзано за корисничкото име не може да каже која врска ја достигна староста. Врзете го за профилот и тоа активирање, и откажете го известувањето што чека кога активирањето ќе заврши.

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

Таа табела е договор за вашиот сопствен известувач, а не опис на API за повратен повик на кој било клиент. Што и да документира инсталираниот производ за состојбата на врската, тоа е изворот за кој треба да се врзете; каде што изложува само настани за автентикација, кажете го тоа гласно и прифатете го погрубото однесување наместо да заклучувате сесија.

Тестирајте го со краток праг

Никогаш не отстранувајте грешки во дневен тајмер со дневно чекање. Додадете конфигуриран праг, поставете го на триесет секунди и изведете четири премини по ред: поврзи, чекај, исклучи, поврзи повторно. Секој премин треба да даде точно една промена на состојбата, а повторното поврзување треба да закаже нов рок наместо да го наследи стариот.

# 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

Гледајте ги временските ознаки, а не формулацијата. Известување што пристигнува со почетното време на претходната сесија врзало погрешен објект, а известување што пристигнува двапати за еден рок значи дека знамето за испратено никогаш не било зачувано.

Спиење, повторно поврзување и пропуштена достава

Спиењето ги крши двата наивни дизајни. Монотоното одбројување запира додека машината спие, рокот по ѕидниот часовник продолжува да се движи, а тајмерот што се активира за време на спиење се доставува доцна или воопшто не. Одлучете какво однесување бара вашето барање, потоа заспијте ја машината преку прагот и потврдете.

Доставата заслужува исто внимание. Ако известувањето не може да се прикаже, ставете го во ред и повторно проверете дали целната сесија сè уште постои пред конечно да го прикажете; инаку корисникот е предупреден за врска што веќе завршила. Присилното исклучување и обновувањето на акредитивите остануваат надвор од овој пат, бидејќи потсетување што тивко ја менува судбината на врската е политичка одлука облечена како известување.

Поврзани статии