рдорд┐рдХрд░реЛрдЯрд┐рдХ рд░рд╛рдЙрдЯрд░ рдУрдПрд╕, рдЧрддрд┐рд╢реАрд▓ рдЧрддрд┐ рд╡рд┐рднрд╛рдЬрди рдХреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕рдВрд╕реНрдХрд░рдг 2)

рдорд┐рдХрд░реЛрдЯрд┐рдХ рд░рд╛рдЙрдЯрд░ рдУрдПрд╕, рдЧрддрд┐рд╢реАрд▓ рдЧрддрд┐ рд╡рд┐рднрд╛рдЬрди рдХреА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕рдВрд╕реНрдХрд░рдг 2)





рдпрд╣ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдкрд╣рд▓рд╛ рдпрд╣рд╛рдБ рд╣реИ: рдпрд╣рд╛рдБред



рджреВрд╕рд░реЗ рджрд┐рди, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ: рдЧрддрд┐ рдХреЛ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рдХрд┐ рдЧрддрд┐ рдЙрди рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рди рдХреА рдЬрд╛рдП рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рднреА рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рдПрдХ рд╕рдВрдХреАрд░реНрдг рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде, рдХреБрдЫ "рдмрдлрд░рд┐рдВрдЧ" рд╣реЛред рдЪреИрдирд▓ред



рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрддреАрдд рдХреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЧрдИ рдереА рдФрд░ рд╡рд░реНрддрдорд╛рди рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред



рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреИрд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред



рддреЛ рдЪрд▓рд┐рдП рдЬрд╛рдиреЗ ...



рддреАрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдгред


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрддреЗ 192.168.5.100-192.168.5.102



рд╣рдо рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рддреАрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рд╡реЗ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреВрд░реА рд░реЗрдВрдЬ рд╕реНрдХреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред



/ip firewall address-list add list="users" address=192.168.5.100

/ip firewall address-list add list="users" address=192.168.5.101

/ip firewall address-list add list="users" address=192.168.5.102









рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЪрдХреНрд░ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╣реА рд░рди рд╡рд╣реА рдХрд░реЗрдЧрд╛ рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рдХрд┐рдпрд╛ рдерд╛ред



#Settings

######################################################

:local start ("100");

:local stop ("102");

:local net ("192.168.5.");

######################################################



######################################################

:global count ($start);

:for count from=$start to=$stop step=1 do={

/ip firewall address-list add list="users" address=( $net . $count);};

######################################################



######################################################

# (C) Inlarion icq 429-587 mikrotik.axiom-pro.ru Copyright!

######################################################









рджреВрд╕рд░рд╛ рдЪрд░рдг рд╣реИ, рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ / рдХрддрд╛рд░ рдФрд░ / ip рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдореИрдиреНрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛, рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рджрд┐рдирдЪрд░реНрдпрд╛ рд╕реЗ рдореБрдХреНрдд рдХрд░рдирд╛, рдЬреЛ рддрдм рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ рдорд╛рдирд╡ рдХрд╛рд░рдХ рд╕реЛ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рд░ рдмрд╛рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ / ip рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдПрдбреНрд░реЗрд╕-рд▓рд┐рд╕реНрдЯ рд╕реВрдЪреА = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ" рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдирдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдХрдЪрд░рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╣рдЯрд╛рдирд╛ рднреВрд▓ рдЧрдпрд╛ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦрддреНрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХреА рдЬрд╛рдПрдЧреАред



#Settings

######################################################

:local DownloadParent ("Download");

:local UploadParent ("Upload");

######################################################



#Internal Var

######################################################

:local i;

:local z;

:local userX;

:local enum (" ");

:local mark;

:local qrd;

:local qru;

:local mrd;

:local mru;

:local qrdadd;

:local qruadd;

:local mrdadd;

:local mruadd;

:set qrd (0);

:set qru (0);

:set mrd (0);

:set mru (0);

:set qrdadd (0);

:set qruadd (0);

:set mrdadd (0);

:set mruadd (0);

######################################################



######################################################

:log warning ("Rules Manager Started!");



:if ([/queue type find name="dshaper_down"] = "") do={ /queue type add name="dshaper_down" kind="pcq" pcq-classifier=dst-address pcq-rate=0 pcq-limit=50 pcq-total-limit=2000;};



:if ([/queue type find name="dshaper_up"] = "") do={ /queue type add name="dshaper_up" kind="pcq" pcq-classifier=src-address pcq-rate=0 pcq-limit=50 pcq-total-limit=2000;};



:if ([/queue tree find name=$DownloadParent] = "") do={ /queue tree add name=$DownloadParent parent="global-out" queue="dshaper_down" priority=8;};

:if ([/queue tree find name=$UploadParent] = "") do={ /queue tree add name=$UploadParent parent="global-out" queue="dshaper_up" priority=8;};



:foreach i in=[/ip firewall address-list find list="users"] do={ :set userX [/ip firewall address-list get $i address];



:if ([/queue tree find name=($userX . "_down")] = "") do={ /queue tree add name=($userX . "_down") parent=$DownloadParent queue="dshaper_down" packet-mark=($userX . "_down") priority=8; :set qrdadd ($qrdadd+1); };

:if ([/queue tree find name=($userX . "_up")] = "") do={ /queue tree add name=($userX . "_up") parent=$UploadParent queue="dshaper_up" packet-mark=($userX . "_up") priority=8; :set qruadd ($qruadd+1);};



:set enum (" ");

:set enum ([/ip firewall mangle find comment=($userX . "_up")]);

:if ($enum = "") do={ /ip firewall mangle add chain=forward src-address=$userX dst-address=0.0.0.0/0 action=mark-packet new-packet-mark=($userX . "_up") comment=($userX . "_up") disabled=no passthrough=yes; :set mruadd ($mruadd+1);

};



:set enum (" ");

:set enum ([/ip firewall mangle find comment=($userX . "_down")]);

:if ($enum = "") do={ /ip firewall mangle add chain=forward src-address=0.0.0.0/0 dst-address=$userX action=mark-packet new-packet-mark=($userX . "_down") comment=($userX . "_down") disabled=no passthrough=yes; :set mrdadd ($mrdadd+1);

};



};



:foreach z in=[/queue tree find parent=$DownloadParent] do={

:set mark [/queue tree get $z name];

:if ($mark !="") do={

:set mark ([:tostr $mark]);

:set mark ([:pick $mark 0 ([:len $mark]-5)]);

:if ([/ip firewall address-list find address=$mark] = "") do={/queue tree remove [/queue tree find name=($mark . "_down")]; :set qrd ($qrd+1); };};};



:foreach z in=[/queue tree find parent=$UploadParent] do={

:set mark [/queue tree get $z name];

:if ($mark !="") do={

:set mark ([:tostr $mark]);

:set mark ([:pick $mark 0 ([:len $mark]-3)]);

:if ([/ip firewall address-list find address=$mark] = "") do={/queue tree remove [/queue tree find name=($mark . "_up")]; :set qru ($qru+1); };};};



:foreach z in=[/ip firewall mangle find src-address="0.0.0.0/0" action="mark-packet" chain="forward"] do={

:set mark [/ ip firewall mangle get $z comment];

:if ($mark !="") do={

:set mark ([:tostr $mark]);

:set mark ([:pick $mark 0 ([:len $mark]-5)]);

:if ([/ip firewall address-list find address=$mark] = "") do={

:if ([/ip firewall mangle find comment=($mark . "_down")] != "") do={/ip firewall mangle remove [/ip firewall mangle find comment=($mark . "_down")]; :set mrd ($mrd+1); }}}}



:foreach z in=[/ip firewall mangle find dst-address="0.0.0.0/0" action="mark-packet" chain="forward"] do={

:set mark [/ ip firewall mangle get $z comment];

:if ($mark !="") do={

:set mark ([:tostr $mark]);

:set mark ([:pick $mark 0 ([:len $mark]-3)]);

:if ([/ip firewall address-list find address=$mark] = "") do={

:if ([/ip firewall mangle find comment=($mark . "_up")] != "") do={/ip firewall mangle remove [/ ip firewall mangle find comment=($mark . "_up")]; :set mru ($mru+1); }}}}

######################################################



######################################################

:log info ("------------------------------------------");

:log warning ("Rules Manager:");

:log info ("Queue Tree Download Records Added: " . $qrdadd);

:log info ("Queue Tree Upload Records Added: " . $qruadd);

:log info ("Mangle Download Records Added: " . $mrdadd);

:log info ("Mangle Upload Records Added: " . $mruadd);

:log info ("Queue Tree Download Records Deleted: " . $qrd);

:log info ("Queue Tree Upload Records Deleted: " . $qru);

:log info ("Mangle Download Records Deleted: " . $mrd);

:log info ("Mangle Upload Records Deleted: " . $mru);

:log info ("------------------------------------------");

######################################################



######################################################

# (C) Inlarion icq 429-587 mikrotik.axiom-pro.ru Copyright!

######################################################









рдЕрдм рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдФрд░ рдХрд╛рд░реНрдпрдХрд╛рд░реА рднрд╛рдЧреЛрдВ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ




рд▓рд┐рдкрд┐ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрддред




рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд░рд╛рдд рдХрд╛ рд╕рдордп рд╕рдорд░реНрдерди рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд╕рдордп рд╕реАрдорд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪреИрдирд▓ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдкрддреА рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╡рд╣ ActiveThresholddown рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдЗрд╕реЗ рд░рд┐рд╕реЗрдкреНрд╢рди рдкрд░ рдПрдХ рд╕рдХреНрд░рд┐рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕рдХреНрд░рд┐рдп рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рднреА рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ ActiveThresholdup рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕ рдЪрд┐рд╣реНрди рдХреЛ рдкрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рд░рд┐рдЯрд░реНрди рдкрд░ рд╕рдХреНрд░рд┐рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╛рдкрд╕реА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдкрд░ рд╕рдХреНрд░рд┐рдп рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред



рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ:

MaxRateDownload рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

MaxRateUpload рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдКрдкрд░ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрдпреВ рдЯреНрд░реА рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдлрд┐рд░ рдпрд╣ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдореЗрдВ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓реЙрдЧ рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред



рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЪрд░:




MaxRateDownload - рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рд╕реНрд╡рд╛рдЧрдд) рдмрд┐рдЯ / рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рдХреА рдЪреМрдбрд╝рд╛рдИред

MaxRateUpload - рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ (рд╡рд╛рдкрд╕реА) рдмрд┐рдЯ / рд╕реЗрдХрдВрдбред

MaxRateDownloadNight - рд░рд╛рдд (рд░рд┐рд╕реЗрдкреНрд╢рди) рдмрд┐рдЯ / рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рдХреА рдЪреМрдбрд╝рд╛рдИред

MaxRateUploadNight - рд░рд╛рдд (рд╡рд╛рдкрд╕реА) рдмрд┐рдЯ / рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рдХреА рдЪреМрдбрд╝рд╛рдИред



ActiveThresholddown - рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ (рд░рд┐рд╕реЗрдкреНрд╢рди) Bit / sред

ActiveThresholdup - рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдереНрд░реЗрд╢реЛрд▓реНрдб, рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп (рд╡рд╛рдкрд╕реА) рдмрд┐рдЯ / рд╕реЗрдХрдВрдб рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред



usenighttime - "рд╣рд╛рдБ" рдФрд░ "рдирд╣реАрдВ" рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЪреИрдирд▓ рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд░рд╛рддреНрд░рд┐ рджрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред

рдирд╛рдЗрдЯрдЯреАрдорд╕реНрдЯрд╛рд░реНрдЯ-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░рд╛рдд рдХреЗ рдЯреИрд░рд┐рдл рдХреА рд╢реБрд░реБрдЖрдд рдХреА рд╕реВрдЪрдирд╛ рджреЗрддрд╛ рд╣реИред

рдирд╛рдЗрдЯрдЯреАрдорд╕реНрдЯреЙрдк-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░рд╛рдд рдХреЗ рдЯреИрд░рд┐рдл рдХреЗ рдЕрдВрдд рдХреА рд╕реВрдЪрдирд╛ рджреЗрддрд╛ рд╣реИред



#Settings

######################################################

:local MaxRateDownload ("15000000");

:local MaxRateUpload ("15000000");

:local MaxRateDownloadNight ("20000000");

:local MaxRateUploadNight ("20000000");



:local ActiveThresholddown ("15000");

:local ActiveThresholdup ("15000");



:local usenighttime ("yes");

:local nighttimestart ("02:00");

:local nighttimestop ("08:00");

######################################################



#Internal Var

######################################################

:local z;

:local i;

:local ii;

:local userX;

:local timedelay (0);

:local startmin;

:local startsec;

:local stopmin;

:local stopsec;

:local scripttimedelay (0);

:local scriptstartmin;

:local scriptstartsec;

:local scriptstopmin;

:local scriptstopsec;

:local userscount ("0");

:local userstmp ("");

:local firstdowntmp ("");

:local firstuptmp ("");

:local twodowntmp ("");

:local twouptmp ("");

:local activedownuserstmp ("");

:local activeupuserstmp ("");

:local activedowncount ("0");

:local activeupcount ("0");

######################################################



######################################################

:set scriptstartmin ([: pick [/system clock get time] 3 5]);

:set scriptstartsec ([: pick [/system clock get time] 6 8]);



:if ($usenighttime = "yes") do={

:set nighttimestart ([: pick $nighttimestart 0 2] . [: pick $nighttimestart 3 5]);

:set nighttimestop ([: pick $nighttimestop 0 2] . [: pick $nighttimestop 3 5]);

:local currenthours ([: pick [/system clock get time] 0 2]);

:local currenttime ([: pick [/system clock get time] 0 2] . [: pick [/system clock get time] 3 5] );

:local acttime ("day");

:local starttime ("day");

:if ($currenthours < 10) do={ :set acttime ("night"); };

:if ( [: pick $nighttimestart 0 2] < 10) do={ :set starttime ("night"); };

:local night ("no");



:if ($starttime = "night") do={

:if ( $currenttime > $nighttimestart && $currenttime < $nighttimestop) do={ :set night ("yes"); };

};

:if ($starttime = "day") do={

:if ( $acttime = "day") do={

:if ( $currenttime >= $nighttimestart) do={ :set night ("yes"); };

};

:if ( $acttime = "night") do={

:if ( $currenttime < $nighttimestop ) do={ :set night ("yes"); };

};};



:if ($night = "yes") do={

:set MaxRateDownload ($MaxRateDownloadNight);

:set MaxRateUpload ($MaxRateUploadNight);

};

};



:set ActiveThresholddown ($ActiveThresholddown / 8);

:set ActiveThresholdup ($ActiveThresholdup / 8);



:foreach i in=[/ip firewall address-list find list="users"] do={ :set userX [/ip firewall address-list get $i address];

:set userscount ($userscount+1);

:set userstmp ($userstmp . $userX . ",");

};



:local users [:toarray $userstmp];



:set startmin ([: pick [/system clock get time] 3 5]);

:set startsec ([: pick [/system clock get time] 6 8]);



:global dcount ("1");

:for dcount from=1 to=$userscount step=1 do={

:set firstdowntmp ($firstdowntmp . [/ip firewall mangle get [/ip firewall mangle find comment=[:pick $users ($dcount-1)] . "_down"] bytes] . ",");

:set firstuptmp ($firstuptmp . [/ip firewall mangle get [/ip firewall mangle find comment=[:pick $users ($dcount-1)] . "_up"] bytes] . ",");

};



:set stopmin ([: pick [/system clock get time] 3 5]);

:set stopsec ([: pick [/system clock get time] 6 8]);



:global dcount ("1");

:for dcount from=1 to=$userscount step=1 do={

:set twodowntmp ($twodowntmp . [/ip firewall mangle get [/ip firewall mangle find comment=[:pick $users ($dcount-1)] . "_down"] bytes] . ",");

:set twouptmp ($twouptmp . [/ip firewall mangle get [/ip firewall mangle find comment=[:pick $users ($dcount-1)] . "_up"] bytes] . ",");

};



:if ( $stopmin > $startmin) do={

:set timedelay (($stopmin-$startmin) * 60);

};

:set timedelay (($timedelay+$stopsec)-$startsec);



:local firstdown [:toarray $firstdowntmp];

:local firstup [:toarray $firstuptmp];

:local twodown [:toarray $twodowntmp];

:local twoup [:toarray $twouptmp];



:global dcount ("1");

:for dcount from=1 to=$userscount step=1 do={



:if ( ($ActiveThresholddown * $timedelay) < ([:pick $twodown ($dcount-1)] - [:pick $firstdown ($dcount-1)]) ) do={

:set activedownuserstmp ($activedownuserstmp . [:pick $users ($dcount-1)] . ",");

:set activedowncount ($activedowncount+1);

};



:if ( ($ActiveThresholdup * $timedelay) < ([:pick $twoup ($dcount-1)] - [:pick $firstup ($dcount-1)]) ) do={

:set activeupuserstmp ($activeupuserstmp . [:pick $users ($dcount-1)] . ",");

:set activeupcount ($activeupcount+1);

};



};



:local activedownusers [:toarray $activedownuserstmp];

:local activeupusers [:toarray $activeupuserstmp];



:local maxlimitdown ("0");

:local maxlimitup ("0");



:if ( $activedowncount > 0 ) do={

:set maxlimitdown ($MaxRateDownload/$activedowncount);

:global dcount ("1");

:for dcount from=1 to=$activedowncount step=1 do={

:if ([/queue tree get [find name=[:pick $activedownusers ($dcount-1)] . "_down"] max-limit] != $maxlimitdown) do={

/queue tree set [/queue tree find name=[:pick $activedownusers ($dcount-1)] . "_down"] max-limit=$maxlimitdown; };

};

};



:if ( $activeupcount > 0 ) do={

:set maxlimitup ($MaxRateUpload/$activeupcount);

:global dcount ("1");

:for dcount from=1 to=$activeupcount step=1 do={

:if ([/queue tree get [find name=[:pick $activeupusers ($dcount-1)] . "_up"] max-limit] != $maxlimitup) do={

/queue tree set [/queue tree find name=[:pick $activeupusers ($dcount-1)] . "_up"] max-limit=$maxlimitup; };

};

};



:local kbsmaxdown ($MaxRateDownload/1000);

:local kbsmaxup ($MaxRateUpload /1000);



:if ( $maxlimitdown = 0 ) do={ :set maxlimitdown ($MaxRateDownload); };

:if ( $maxlimitup = 0 ) do={ :set maxlimitup ($MaxRateUpload); };

:local kbsmaxlimitdown ($maxlimitdown/1024);

:local kbsmaxlimitup ($maxlimitup/1024);



:set scriptstopmin ([: pick [/system clock get time] 3 5]);

:set scriptstopsec ([: pick [/system clock get time] 6 8]);



:if ( $scriptstopmin > $scriptstartmin) do={

:set scripttimedelay (($scriptstopmin-$scriptstartmin) * 60);

};

:set scripttimedelay (($scripttimedelay+$scriptstopsec)-$scriptstartsec);

######################################################



######################################################

:log info ("------------------------------------------");

:log warning ("Shaper:");

:log info ("MaxRate Download : " . $MaxRateDownload . " bps /" . $kbsmaxdown . " kbs / Upload : " . $MaxRateUpload . " bps /" . $kbsmaxup . " kbs");

:log info ("Active Users : Download : " . $activedowncount . " / Upload : " . $activeupcount );

:log info ("User Speed Download : " . $maxlimitdown . " bps /" . $kbsmaxlimitdown . " kbs / Upload : " . $maxlimitdown . " bps /" . $kbsmaxlimitup . " kbs" );

:log warning ("Performance Time: " . $scripttimedelay . " seconds.");

:log info ("------------------------------------------");

######################################################



######################################################

# (C) Inlarion icq 429-587 mikrotik.axiom-pro.ru Copyright!

######################################################









рдирд╡реАрдирддрдо рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ




рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдЯрд╛рдЗрдо рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд▓рд╛рдЗрди рдЖрдкрдХреЛ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдВрддрд░рд╛рд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред "рдкреНрд░рджрд░реНрд╢рди рд╕рдордп" рд╕реЗрдХрдВрдб рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп + -1 рд╕реЗрдХрдВрдб рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп рдХреЗ рд╕рд╛рде / ip рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдПрдбреНрд░реЗрд╕-рд▓рд┐рд╕реНрдЯ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ = "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛", рдЖрдкрдХреЗ рдорд╛рдЗрдХреНрд░реЛрдЯрд┐рдХ рдкрд░ рд▓реЛрдб рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдВрддрд░рд╛рд▓ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд▓рдЧрд╛рддрд╛рд░ рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред



рд╕реВрддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдВрддрд░рд╛рд▓ рд╕реЗрдЯ рдХрд░реЗрдВ: рдкреНрд░рджрд░реНрд╢рди рд╕рдордп + 10-15 рд╕реЗрдХрдВрдбред рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд░рд╛рд▓ рдХреЛ 1-2 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдЙрд╕ рд╕рдордп рдпрдерд╛рд╕рдВрднрд╡ рд╡реНрдпрд╕реНрдд рд╣реИред



рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреИрд░рд╛рдореАрдЯрд░:


:local MaxRateDownload ("15000000");

:local MaxRateUpload ("15000000");

:local MaxRateDownloadNight ("20000000");

:local MaxRateUploadNight ("20000000");







рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЪреИрдирд▓ рдХреА рдЪреМрдбрд╝рд╛рдИ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдмреНрд░реЗрдХ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдХреЛрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рдкрд╣рд▓реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╕рдХреНрд░рд┐рдп рд╣реЛред



:local ActiveThresholddown ("15000");

:local ActiveThresholdup ("15000");









рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЧрдгрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░: рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрдбрд╛рдЙрди рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ = рдореИрдХреНрд╕рд░реЗрдбрдбрд╛рдЙрдирд▓реЛрдб рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣реЗрдВрдЧреЗ! рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ * ActiveThresholdup = MaxRateUpload рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдорд╛рд░реНрдЬрд┐рди рдЫреЛрдбрд╝ рджреЗрдВред



рд╕рдм рдХреБрдЫ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 5.x рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдкрдпреБрдХреНрддрддрд╛ рдХрд╛ рд╕рд╡рд╛рд▓ рдмрдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕реНрдХрд░рдг 5.0rc7 рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдорд┐рдХрд░реЛрдЯрд┐рдХ рдореЗрдВ рдХрддрд╛рд░ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг 5.x рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдмрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд░рд╕реА 3 рдореЗрдВ, рдкрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдирд╛рдбрд╝реА рд╣реИ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрд░рд╕реА 7 рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд░рд╛рдЙрдЯрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдЖрд░рд╕реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рддрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЪрд┐рдВрддрд╛рдЬрдирдХ рд╣реИред



рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ рдореБрдЦреНрдп рднрд╛рдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк / рдХрддрд╛рд░ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдмрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ / рдирд┐рдХрд╛рд▓рддреЗ рд╕рдордп рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЪреАрдЬред



All Articles