X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/4271ab433cd55bbd2612292bcf39e4dc3d7274f1..0907aa4037b12b6b88ee24495d4577a064d4f8db:/projects/stargazer/scripts/shaper/OnConnect diff --git a/projects/stargazer/scripts/shaper/OnConnect b/projects/stargazer/scripts/shaper/OnConnect new file mode 100755 index 00000000..67bf32bf --- /dev/null +++ b/projects/stargazer/scripts/shaper/OnConnect @@ -0,0 +1,54 @@ +#!/bin/bash + +int_iface=eth1 + +# Login +LOGIN=$1 + +#user IP +IP=$2 + +#cash +CASH=$3 + +#user ID +ID=$4 + +#Selected dirs to connect +DIRS=$5 + +default_speed=32kbit + +# =========== shaping by tariff =========== +#tariff=$(grep -i "^tariff=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") +#echo "tariff=$tariff" > /var/stargazer/users/$LOGIN/connect.log +#case $tariff in +# minimum) speedkb=128kbit;; # 128 kbit +# middle) speedkb=256kbit;; # 256 kbi +# maximum) speedkb=512kbit;; # 512 kbit +# *) speedkb=$default_speed;; # default speed +#esac +# ========= shaping by tariff end ========= + +# ========= shaping by userdata0 ========== +speedR=$(grep -i "^Userdata0=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=") +speed=$(echo $speedR | grep "^[0-9]*[0-9]$") + +if [ -z "$speed" ] +then + speedkb=$default_speed +else + speedkb="$speed"kbit +fi +# ======= shaping by userdata0 end ======== + +declare -i mark=$ID+10 + +echo "$mark" > /var/stargazer/users/$LOGIN/shaper_mark +echo "$speedkb" > /var/stargazer/users/$LOGIN/shaper_rate + +iptables -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark + +tc class add dev $int_iface parent 1:1 classid 1:$mark htb rate $speedkb burst 40k +tc filter add dev $int_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark +