Resetator FUP::local time;
:local sumrq
:local trafrq
:local trafuprq
:local flowrq
:local flowuprq
:local priorrq
:local prioruprq
:local trafstatrq
:local trafupstatrq
# kontrola ci bezi router aspon jeden den
/system resource {
:set time [get uptime]
:if ($time>1d) do={
# zapise, ze sa pustil FUP_reset
:log warning ("FUP reset spusteny!")
# tu nastavit pocet userov siete
:set sumrq 150
/queue tree{
:for j from=1 to=$sumrq do={
:set trafrq [get [find name=("net-" . "$j" . "/p2p")] bytes]
:set priorrq [get [find name=("net-" . "$j" . "/p2p")] priority]
:set flowrq [get [find name=("net-" . "$j" . "/p2p")] packet-mark]
:set trafuprq [get [find name=("$j" . "-net/p2p")] bytes]
:set prioruprq [get [find name=("$j" . "-net/p2p")] priority]
:set flowuprq [get [find name=("$j" . "-net/p2p")] packet-mark]
# prepocet na MB
:set trafstatrq ($trafrq/1024/1024)
:set trafupstatrq ($trafuprq/1024/1024)
# tu nastavit limit kedy bude obnovena priorita download
:if (($trafrq<268435456) && ($priorrq>3)) do={
/queue tree set ("net-" . "$j" . "/p2p") limit-at=64000 max-limit=602000 queue=odkoho_smeruje_pcq priority=3
:log warning ("Uzivatel " . "$flowrq" . " ma nastavenu prioritu 3 pre download! Pretoze stiahol len " . "$trafstatrq" . " MB.")
}
# tu nastavit limit kedy bude obnovena priorita upload
:if (($trafuprq<134217728) && ($prioruprq>3)) do={
/queue tree set ("$j" . "-net/p2p") limit-at=64000 max-limit=128000 queue=komu_smeruje_pcq priority=3
:log warning ("Uzivatel " . "$flowuprq" . " ma nastavenu prioritu 3 pre upload! Pretoze stiahol len " . "$trafupstatrq" . " MB.")
}
}
}
:delay 60
/queue tree reset-counters
}
}
Samotny FUP:# specialny FUP pre GbelyNET tvorba skrebon pre scheduler na 30min
# lokalne skrebonkove premenne
:local traf
:local trafup
:local trafstat
:local trafupstat
:local traftemp
:local trafuptemp
:local traftemptt
:local trafuptemptt
:local downlimit
:local downlimitt
:local uplimit
:local uplimitt
:local prior
:local priorup
:local flow
:local flowup
:local mail
:local tempmail
# tu napis "yes" pokial chces aby bol email odoslany inak "no"
:local sendemail
:set sendemail "no"
# tu nastavit pocet userov siete
:local sum
:set sum 150
# tu nastavit download a upload stiahnutych dat v bytoch kedy zacne obmedzovat prioritne traffic 268435456 134217728
:set downlimit 268435456
:set uplimit 134217728
# nastavene 1/2 z povodneho limitu v pripade resetu a ponechanie aspon casti priorit
:set downlimitt ($downlimit/2)
:set uplimitt ($uplimit/2)
/queue tree {
:for i from=1 to=$sum do={
# tu treba nastavit svoje triedy
:set traf [get [find name=("net-" . "$i" . "/p2p")] bytes]
:set prior [get [find name=("net-" . "$i" . "/p2p")] priority]
:set flow [get [find name=("net-" . "$i" . "/p2p")] packet-mark]
:set trafup [get [find name=("$i" . "-net/p2p")] bytes]
:set priorup [get [find name=("$i" . "-net/p2p")] priority]
:set flowup [get [find name=("$i" . "-net/p2p")] packet-mark]
:set traftemp ($traf/$downlimit)
:set trafuptemp ($trafup/$uplimit)
:set traftemptt ($traf/$downlimitt)
:set trafuptemptt ($trafup/$uplimitt)
# prepocet na MB
:set trafstat ($traf/1024/1024)
:set trafupstat ($trafup/1024/1024)
:if (($traftemp=1) && ($prior<4)) do={
:log warning ("Uzivatel " . "$flow" . " prekrocil limit 256MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 4 pre download.")
:set mail ("Uzivatel " . "$flow" . " prekrocil limit 256MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 4 pre download.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("net-" . "$i" . "/p2p") priority=4 limit-at=48000
}
:if (($traftemp>1) && ($prior<5)) do={
:log warning ("Uzivatel " . "$flow" . " prekrocil limit 512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 5 pre download.")
:set mail ("Uzivatel " . "$flow" . " prekrocil limit 512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 5 pre download.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("net-" . "$i" . "/p2p") priority=5 limit-at=48000
}
:if (($traftemptt=1) && ($prior=4) && ($traftemp<1)) do={
:log warning ("Uzivatel " . "$flow" . " prekrocil dlhodobejsi limit 256-512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 5 pre download.")
:set mail ("Uzivatel " . "$flow" . " prekrocil dlhodobejsi limit 256-512MB pre download! Stiahol " . "$trafstat" . " MB. Priorita z " . "$prior" . " nastavena na 5 pre download.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("net-" . "$i" . "/p2p") priority=5 limit-at=48000
}
:if (($trafuptemp=1) && ($priorup<4)) do={
:log warning ("Uzivatel " . "$flowup" . " prekrocil limit 128MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 4 pre upload.")
:set mail ("Uzivatel " . "$flowup" . " prekrocil limit 128MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 4 pre upload.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("$i" . "-net/p2p") priority=4 limit-at=48000
}
:if (($trafuptemp>1) && ($priorup<5)) do={
:log warning ("Uzivatel " . "$flowup" . " prekrocil limit 256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 5 pre upload.")
:set mail ("Uzivatel " . "$flowup" . " prekrocil limit 256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 5 pre upload.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("$i" . "-net/p2p") priority=5 limit-at=48000
}
:if (($trafuptemptt=1) && ($priorup=4) && ($trafuptemp<1)) do={
:log warning ("Uzivatel " . "$flowup" . " prekrocil dlhodobejsi limit 128-256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 5 pre upload.")
:set mail ("Uzivatel " . "$flowup" . " prekrocil dlhodobejsi limit 128-256MB pre upload! Stiahol " . "$trafupstat" . " MB. Priorita z " . "$priorup" . " nastavena na 5 pre upload.")
:set tempmail ($tempmail . $mail . "
")
/queue tree set ("$i" . "-net/p2p") priority=5 limit-at=48000
}
}
}
:if ($tempmail="") do={
:set sendemail "no"
}
:if ($sendemail) do {
/tool e-mail send to=example@example.net subject=("Zoznam obmedzenych prioritou") \
body=("Datum : " . [/system clock get date] . "
Čas : " . [/system clock get time] . "
zaciatok dat --------------------
" . $tempmail . "
-------------------- koniec dat")
}
Upravene na MT2,9x, ak to niekomu nechodilo. Par zmien asi uz tam je, ale neviem ake(je to davno)