]> git.stg.codes - stg.git/blob - projects/stargazer/scripts/shaper_vpn_radius/stargazer/OnConnect
Another `stgTime` case.
[stg.git] / projects / stargazer / scripts / shaper_vpn_radius / stargazer / OnConnect
1 #!/bin/bash
2
3 #Этот скрипт вызывается в момент, когда пользователь
4 #успешно прошел авторизацию на сервере. Задача скрипта - перестроить 
5 #файрвол так, что бы пользователь получил доступ в интернет
6
7 # Login
8 LOGIN=$1
9
10 #user IP
11 IP=$2
12
13 #cash
14 CASH=$3
15
16 #user ID
17 ID=$4
18
19 #Selected dirs to connect
20 DIRS=$5
21
22 iptables -A INPUT -s $IP -j QUEUE
23 iptables -A OUTPUT -d $IP -j QUEUE
24 iptables -A FORWARD -s $IP -j QUEUE
25 iptables -A FORWARD -d $IP -j QUEUE
26
27 # shaper
28
29 default_speed=32
30
31 speedR=$(grep -i "^Userdata0=" /var/stargazer/users/$LOGIN/conf | cut -f 2 -d"=")
32 #echo "speedR=$speedR" >> /var/stargazer/users/$LOGIN/connect.log
33 speed=$(echo $speedR | grep "^[0-9]*[0-9]$")
34
35 if [ -z "$speed" ] 
36 then
37     speed=$default_speed
38 fi
39
40 speedkbit=$speed"kbit"
41
42 #echo "speed=$speedkbit" >> /var/stargazer/users/$LOGIN/connect.log
43 declare -i mark=$ID+1
44
45 iptables -t mangle -A FORWARD -d $IP -j MARK --set-mark $mark
46
47 sleep 1
48
49 if [ -f "/var/stargazer/ifaces/$IP" ]
50 then
51     #echo "1" >> /var/stargazer/users/$LOGIN/connect.log
52     ppp_iface=$(cat /var/stargazer/ifaces/$IP)
53 else
54     #echo "2" >> /var/stargazer/users/$LOGIN/connect.log
55     exit 0
56 fi
57
58 tc qdisc add dev $ppp_iface root handle 1: htb
59 tc class add dev $ppp_iface parent 1: classid 1:1 htb rate 100mbit ceil 100mbit burst 200k
60 tc class add dev $ppp_iface parent 1:1 classid 1:10 htb rate $speedkbit burst 20k
61 tc filter add dev $ppp_iface parent 1: protocol ip prio 3 handle $mark fw classid 1:10
62
63 #echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH $ID $mark $speed $ppp_iface" >> /var/stargazer/users/$LOGIN/connect.log
64