:local date [/system clock get date] :local tt [/system clock get time] :local month [:toarray "0,jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec"] :local mm [:find $month [:pick $date 0 3]] :local cli :foreach i in=[/log find topics~"(pptp|l2tp|ipsec)"] do={ :local content [/log get $i message] :local conform no :local dd [:pick $date 4 6] :local t [/log get $i time] :set conform ([:pick $t 0]~"[012]" && $t>=$tt-0:1:0) :if ([:pick $tt 0 5]="00:00" && [:pick $t 7 12]="23:59") do={ :local m [:find $month [:pick $t 0 3]] :local d [:pick $t 4 6] :set conform ($mm=$m && ($dd-$d)=1) :if ($dd="01" && (($mm-$m)=-1 || ($mm-$m)=-11)) do={ :set conform ($conform || ($d=30 && [:find 4,6,9,11 $m]>=0)) :set conform ($conform || ($d=31 && [:find 1,3,5,7,8,10,12 $m]>=0)) :set conform ($conform || ($m=2 && [:find 28,29 $d]>=0)) } } :if ($conform) do={ :if ($content~"from") do={ :set cli [:pick $content ([:find $content "from"]+5) [:len $content]] } :if ($content~"ike2") do={ :local ed 0 ; :local count 0 :do { :if ([:pick $content $ed]="[") do={:set count ($count+1)} :set ed ($ed+1) } while=($count<2) :set cli [:pick $content ([:find $content "-"]+1) ($ed-1)] } :set cli [:toarray "$t,$cli"] } :if ($content~"( connected|acquired)" && [:pick $cli 0]=$t) do={ :do {/ip firewall address-list add list=VpnClient address=[:pick $cli 1] timeout=1d} on-error={} } } |