Имам рутер които има и шеирър искам да мога да коригирам всичко това през уеб ас го имам уеба обаче как да наварща нещата кои е този скрипт които щте ми барка в рутера това е шеиръра #!/usr/bin/perl
use CGI; use strict; use warnings;
my $dev_ext = "eth0"; # External interface using for upload my $dev_int = "eth1"; # Internal interface using for download my $rate_limit = "100Mbit";
#########################################
Adding basic rules in traffic control #
######################################### my $delroot_dev0 = "/sbin/tc qdisc del dev $dev_ext root"; my $addroot_dev0 = "/sbin/tc qdisc add dev $dev_ext root handle 1 htb default 30 r2q 100"; my $addclass_dev0 = "/sbin/tc class add dev $dev_ext parent 1: classid 1:1 htb rate $rate_limit burst 15k";
my $delroot_dev1 = "/sbin/tc qdisc del dev $dev_int root"; my $addroot_dev1 = "/sbin/tc qdisc add dev $dev_int root handle 1 htb default 30 r2q 100"; my $addclass_dev1 = "/sbin/tc class add dev $dev_int parent 1: classid 1:2 htb rate $rate_limit burst 15k";
`$delroot_dev0`; `$addroot_dev0`; `$addclass_dev0`;
`$delroot_dev1`; `$addroot_dev1`; `$addclass_dev1`;
#########################################
my @sport_range = ("20","21","22","25","80","110" ;,"143","443","3389");
my $basicclass_sport = "/sbin/tc class add dev $dev_ext parent 1:1 classid 1:10 htb rate $rate_limit burst 15k"; my $basicqdisc_sport = "/sbin/tc qdisc add dev $dev_ext parent 1:10 handle 10 sfq perturb 10";
`$basicclass_sport`;
`$basicqdisc_sport`;
foreach my $sport (@sport_range){ my $basicfilter_sport = "/sbin/tc filter add dev $dev_ext parent 1:0 protocol ip prio 100 u32 match ip sport $sport 0xffff classid 1:10";
`$basicfilter_sport`;
}
my @dport_range = ("20","21","22","25","80","110" ;,"143","443","3389");
my $basicclass_dport = "/sbin/tc class add dev $dev_int parent 1:2 classid 1:20 htb rate $rate_limit burst 15k"; my $basicqdisc_dport = "/sbin/tc qdisc add dev $dev_int parent 1:20 handle 20 sfq perturb 10";
`$basicclass_dport`;
`$basicqdisc_dport`;
foreach my $dport (@dport_range){
my $basicfilter_dport = "/sbin/tc filter add dev $dev_int parent 1:0 protocol ip prio 100 u32 match ip dport $dport 0xffff classid 1:20";
`$basicfilter_dport`;
}
my $class_default = "/sbin/tc class add dev $dev_int parent 1:2 classid 1:30 htb rate 50Kbit ceil 2500Kbit burst 25k"; my $qdisc_default = "/sbin/tc qdisc add dev $dev_int parent 1:30 handle 30 sfq perturb 10";
`$class_default`; `$qdisc_default`;
&users_shapers();
sub users_shapers(){
my ($ip, $id, $bgmin, $bgmax, $intmin, $intmax);
my $rates_limit = "2500";
$bgmin = $rates_limit; $bgmax = $rates_limit; $intmin = $rates_limit; $intmax = $rates_limit;
for ($ip=1;$ip<254;$ip++){ my $ips = ($ip^32-24); $id = sprintf("%X", $ips + 0x200); my $class_bg_ul = "tc class add dev $dev_int parent 1:2 classid 1:0".$id." htb rate ".$bgmin."Kbit ceil ".$bgmax."Kbit prio 5"; my $qdisc_bg_ul = "tc qdisc add dev $dev_int parent 1:0".$id." handle 0".$id." sfq perturb 10 "; my $addr_bg_ul = "/sbin/tc filter add dev $dev_int parent 1:0 protocol ip prio 100 u32 match ip src 10.10.77.2".$ip." classid 1:0".$id."";
$id = sprintf("%X", $ips + 0x800); my $class_bg_dl = "tc class add dev $dev_ext parent 1:1 classid 1:0".$id." htb rate ".$bgmin."Kbit ceil ".$bgmax."Kbit prio 5"; my $qdisc_bg_dl = "tc qdisc add dev $dev_ext parent 1:0".$id." handle ".$id." sfq perturb 10 "; my $addr_bg_dl = "/sbin/tc filter add dev $dev_int parent 1:0 protocol ip prio 100 u32 match ip dst 10.10.77.2".$ip." classid 1:0".$id."";
$id = sprintf("%X", $ips + 0x400); my $class_int_ul = "tc class add dev $dev_int parent 1:25 classid 1:0".$id." htb rate ".$intmin."Kbit ceil ".$intmax."Kbit prio 4"; my $qdisc_int_ul = "tc qdisc add dev $dev_int parent 1:0".$id." handle ".$id." sfq perturb 10 "; my $addr_int_ul = "/sbin/tc filter add dev $dev_int parent 1:0 protocol ip prio 100 u32 match ip src 10.10.77.2".$ip." classid 1:0".$id."";
$id = sprintf("%X", $ips + 0x300); my $class_int_dl = "tc class add dev $dev_ext parent 1:20 classid 1:0".$id." htb rate ".$intmin."Kbit ceil ".$intmax."Kbit prio 4"; my $qdisc_int_dl = "tc qdisc add dev $dev_ext parent 1:0".$id." handle ".$id." sfq perturb 10 "; my $addr_int_dl = "/sbin/tc filter add dev $dev_int parent 1:0 protocol ip prio 100 u32 match ip dst 10.10.77.2".$ip." classid 1:0".$id.""; `$class_bg_ul`; `$qdisc_bg_ul`; `$addr_bg_ul`;
`$class_int_ul`; `$qdisc_int_ul`; `$addr_int_ul`;
`$class_bg_dl`; `$qdisc_bg_dl`; `$addr_bg_dl`;
`$class_int_dl`; `$qdisc_int_dl`; `$addr_int_dl`; } } Обаче искам да го създавам през уев като ип и на оприделени места да пипа заштото тука имаме ип и скоруст нали те трябва дасе коригират на даено ир ако знае н,кои нека каже и блогодаря
|