#!/bin/bash
# shape_p2p
MODUL="/sbin/modprobe"
TC="/sbin/tc"
i="/usr/sbin/iptables"
case "$1" in
start)
echo ""
echo " Kolejkowanie P2P ----ON---- "
echo ""
ul=0
dl=0 #zerowanie
godz=`date +%H%M`
# restart skryptu w cronie o 1,2,6,9,23
# 8kb = 1KB
#---------------------------------------------------
if [ $godz -ge "0100" -a $godz -lt "0200" ];then
ul=16 # 2KB
dl=200 # 25KB
pora=noc1
fi
#---------------------------------------------------
if [ $godz -ge "0200" -a $godz -lt "0600" ];then
ul=120 # 15KB
dl=800 # 100KB
pora=noc2
fi
#---------------------------------------------------
if [ $godz -ge "0600" -a $godz -lt "0900" ];then
ul=16 # 2KB
dl=200 # 25KB
pora=ranek
fi
#---------------------------------------------------
if [ $godz -ge "0900" -a $godz -lt "2300" ];then
ul=16 # 2KB
dl=200 # 25KB
pora=dzien
fi
#---------------------------------------------------
if [ $godz -ge "2300" -o $godz -lt "0100" ];then
ul=16 # 2KB
dl=200 # 25KB
pora=wieczor
fi
#---------------------------------------------------
echo " "
echo "---------------------------------------"
echo " "$pora" UL-"$((ul/8))""KB/s" DL-"$((dl/8))"KB/s"
echo " "$ul"kbit "$dl"kbit"
echo "---------------------------------------"
# markowanie okreslonych pakietow
$i -t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark
$i -t mangle -A PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT
$i -t mangle -A PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 0x999
#----- ta linia z ipp2p 0.8.0 jest zbedna w poprzednich musi byc
#$i -t mangle -A PREROUTING -m ipp2p --ipp2p-data -j MARK --set-mark 0x999
$i -t mangle -A PREROUTING -p tcp -m mark --mark 0x999 -j CONNMARK --save-mark
# kierowanie markowanych pakietow do imq
$i -t mangle -A POSTROUTING -o eth0 -m mark --mark 0x999 -j IMQ --todev 2
$i -t mangle -A POSTROUTING -o eth1 -m mark --mark 0x999 -j IMQ --todev 3
###########################################################################
# ul
#$TC qdisc add dev imq2 root handle 4:0 htb default 103 r2q 1
$TC qdisc add dev imq2 root handle 4:0 htb r2q 1
$TC class add dev imq2 parent 4:0 classid 4:1 htb rate ${ul}kbit ceil ${ul}kbit burst 6k cburst 3k
$TC class add dev imq2 parent 4:1 classid 4:101 htb rate ${ul}kbit ceil ${ul}kbit quantum 1500 burst 0k cburst 0k prio 7
$TC filter add dev imq2 parent 4:0 protocol ip prio 7 handle 0x999 fw classid 4:101
$TC qdisc add dev imq2 parent 4:101 esfq perturb 10 quantum 1500
# dl
#$TC qdisc add dev imq3 root handle 5:0 htb default 103 r2q 1
$TC qdisc add dev imq3 root handle 5:0 htb r2q 1
$TC class add dev imq3 parent 5:0 classid 5:1 htb rate ${dl}kbit ceil ${dl}kbit burst 6k cburst 3k
$TC class add dev imq3 parent 5:1 classid 5:101 htb rate ${dl}kbit ceil ${dl}kbit quantum 1500 burst 0k cburst 0k prio 7
$TC filter add dev imq3 parent 5:0 protocol ip prio 7 handle 0x999 fw classid 5:101
$TC qdisc add dev imq3 parent 5:101 esfq perturb 10 quantum 1500
################################## ---p2p-- rozwala upload niceshapera - restartuj----
sleep 2
/usr/bin/niceshaper stop
sleep 2
/usr/bin/niceshaper start
################################## -------------- restart niceshapera! ---------------
#
;;
stop)
#
echo ""
echo " Kolejkowanie P2P ----OFF---- "
echo ""
#
$i -t mangle -D PREROUTING -p tcp -j CONNMARK --restore-mark
$i -t mangle -D PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT
$i -t mangle -D PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 0x999
#----- ta linia z ipp2p 0.8.0 jest zbedna w poprzednich musi byc
#$i -t mangle -D PREROUTING -m ipp2p --ipp2p-data -j MARK --set-mark 0x999
$i -t mangle -D PREROUTING -p tcp -m mark --mark 0x999 -j CONNMARK --save-mark
$i -t mangle -D POSTROUTING -o eth0 -m mark --mark 0x999 -j IMQ --todev 2
$i -t mangle -D POSTROUTING -o eth1 -m mark --mark 0x999 -j IMQ --todev 3
# usowa stare bałwan jestem
$TC qdisc del dev imq2 root
$TC qdisc del dev imq3 root
#
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo ""
echo " U¿ycie kolejkowanie P2P [ start | stop | restart ] "
echo ""
exit
;;
esac