{/ip accounting snapshot{ #ovde su definisane promenljive koje se menjaju u zavisnosti od vasih potreba :global kor marko,pera,djura,ana,smilja; :global Hprofil visoki; :global Lprofil niski; :global limit 7000000; :global duzh 400; :global duzl 200; :global tres 1000; :global vrh 10; :global vrl 3; :global kas 6; #sledece promenljive sluze za izvrsavanje skripte i netreba ih menjati :global dow 10,10; :global adow 10,10; :global pretero ovajonaj; :global prekom [:len $apreterali]; #kad se skripta prekine i ponovo pokrene korisnici koji su bili prebaceni na Lprofil se vracaju na Hprofil #ali se sada ne diskonektuju tj ne dobijaju novu ip iz Hprofila sve dok se sami ne rekonektuju :if ($prekom > 2) do={:for s from=0 to=($prekom - 3) do={/ppp secret set [find name [:pick $apreterali ($s + 2)]] profile=$Hprofil};}; :global apreterali neko,neko; :global brkor [:len $kor]; :for g from=0 to=($brkor - 1) do={:set dow ($dow . 0)}; /ip accounting set threshold $tres; take; #ovaj deo skripte se izvrsava beskonacno put sve dok je ne prekinete :while (true) do=\ { #provera duzine snapshot niza i na osnovu duzine menja delay vreme do sledeceg snapshot :set kom [:len [find;]]; :if (($kom > $duzh)||($kom < $duzl)) do=\ { :if ($kom < $duzl)\ do={:set kas ($kas + 1); :if ($kas > $vrh) do={:set kas $vrh};}\ else={:set kas ($kas - 1); :if ($kas < $vrl) do={:set kas $vrl}; }; }; take; :delay ($kas . s); :set adow 10,10; #sabira sav download korisnika iz niza kor :for i from=0 to=($brkor - 1) do=\ { :set tdow [:pick $dow ($i + 2)]; :foreach j in=[find dst-user [:pick $kor $i]] do=\ { :set tdow ($tdow + [get $j bytes]); }; :set adow ($adow . $tdow); #proverava da li ne neko premasio dozvoljeni limit :if ($tdow > $limit) do=\ { /ppp secret { :set pretero [find name [:pick $kor $i]]; #proverava da li je taj na visem profilu Hprofil ako jeste onda ga prebacuje na Lprofil i diskonektuje :if ([get $pretero profile] = $Hprofil) do=\ { set $pretero profile=($Lprofil); :set apreterali ($apreterali . [:pick $kor $i]); /ppp active { :if ([find name [:pick $kor $i]] = [find name saasdrttio])\ do={:nothing}\ else={remove [find name [:pick $kor $i]]}; }; }; }; }; }; :set dow $adow; }; }}