-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathUDPspeeder_init
executable file
·145 lines (125 loc) · 3.15 KB
/
UDPspeeder_init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/usr/bin/env bash
# chkconfig: 2345 90 10
# description: A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction,for All Traffics(TCP/UDP/ICMP)
### BEGIN INIT INFO
# Provides: UDPspeeder
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start or stop the UDPspeeder server
### END INIT INFO
if [ -f /usr/local/bin/speederv2 ]; then
DAEMON=/usr/local/bin/speederv2
elif [ -f /usr/bin/speederv2 ]; then
DAEMON=/usr/bin/speederv2
fi
NAME=speederv2
CONF=/etc/UDPspeeder/speederv2_config.sh
PID_DIR=/var/run
PID_FILE=$PID_DIR/speederv2.pid
RET_VAL=0
[ -x $DAEMON ] || exit 0
if [ ! -d $PID_DIR ]; then
mkdir -p $PID_DIR
if [ $? -ne 0 ]; then
echo "Creating PID directory $PID_DIR failed"
exit 1
fi
fi
if [ ! -f $CONF ]; then
echo "$NAME config file $CONF not found"
exit 1
fi
fun_load_config() {
if [ ! -r ${CONF} ]; then
echo "config file ${CONFIGFILE} not found"
exit 1
else
. ${CONF}
fi
}
check_running() {
if [ -r $PID_FILE ]; then
read PID < $PID_FILE
if [ -d "/proc/$PID" ]; then
return 0
else
rm -f $PID_FILE
return 1
fi
else
return 2
fi
}
do_status() {
check_running
case $? in
0)
echo "$NAME (pid $PID) is running..."
;;
1|2)
echo "$NAME is stopped"
RET_VAL=1
;;
esac
}
do_start() {
if check_running; then
echo "$NAME (pid $PID) is already running..."
return 0
fi
fun_load_config
if [[ -z ${SERVER_LISTEN_IP} ]]; then
echo "SERVER_LISTEN_IP not found"
exit 1
fi
if [[ -z ${REMOTE_LISTEN_IP} ]]; then
echo "REMOTE_LISTEN_IP not found"
exit 1
fi
[ -z ${LOG_FILE} ] && LOG_FILE="/var/log/UDPspeeder/speederv2.log"
LOG_DIR="$(dirname "$LOG_FILE")"
if [ ! -d $LOG_DIR ]; then
mkdir -p $LOG_DIR
fi
[ -z ${KEY} ] && KEY=""
[ -z ${FEC_MODE} ] && FEC_MODE="0"
[ -z ${FEC_MTU} ] && FEC_MTU="1250"
[ -z ${FEC_QUEUE_LEN} ] && FEC_QUEUE_LEN="200"
[ -z ${FEC} ] && FEC="20:10"
[ -z ${LOG_LEVEL} ] && LOG_LEVEL="4"
[ -z ${OTHER_OPTIONS} ] && OTHER_OPTIONS=""
$DAEMON -s -l ${SERVER_LISTEN_IP} -r ${REMOTE_LISTEN_IP} -k ${KEY} --mode ${FEC_MODE} --mtu ${FEC_MTU} -q ${FEC_QUEUE_LEN} --fec ${FEC} --log-level ${LOG_LEVEL} ${OTHER_OPTIONS} > ${LOG_FILE} 2>&1 & echo $! > $PID_FILE
# PID=$(ps -ef | grep -v grep | grep -i ${DAEMON} | awk '{print $2}')
if check_running; then
echo "Starting $NAME success"
else
echo "Starting $NAME failed"
RET_VAL=1
fi
}
do_stop() {
if check_running; then
kill -9 $PID
rm -f $PID_FILE
echo "Stopping $NAME success"
else
echo "$NAME is stopped"
RET_VAL=1
fi
}
do_restart() {
do_stop
do_start
}
case "$1" in
start|stop|restart|status)
do_$1
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
RET_VAL=1
;;
esac
exit $RET_VAL