blob: 4587a1c7b120ca36b30f5710eaad9d66dc2deb85 (
plain)
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
|
#!/bin/sh /etc/rc.common
START=50
BIN=tcpproxy
DAEMON=/usr/bin/$BIN
DAEMON_ARGS=""
DESC=$BIN
RUN_D=/var/run
CONFIG_DIR=/var/etc
CONFIG_FILE=$CONFIG_DIR/$BIN.conf
tcpproxy_write_config() {
local cfg="$1"
config_get_bool value "$cfg" disabled 0
[ "$value" -ne 0 ] && return
local local_addr=""
local resolv=""
local local_port=""
local remote_addr=""
local remote_resolv=""
local remote_port=""
local source_addr=""
config_get local_addr "$cfg" local_addr
config_get local_port "$cfg" local_port
config_get resolv "$cfg" resolv
config_get remote_addr "$cfg" remote_addr
config_get remote_port "$cfg" remote_port
config_get remote_resolv "$cfg" remote_resolv
config_get source_addr "$cfg" source_addr
if [ -z "$local_addr" ]; then
local_addr="*"
fi
echo "listen $local_addr $local_port" >> $CONFIG_FILE
echo "{" >> $CONFIG_FILE
if [ -n "$resolv" ]; then
echo " resolv: $resolv;" >> $CONFIG_FILE
fi
echo " remote: $remote_addr $remote_port;" >> $CONFIG_FILE
if [ -n "$remote_resolv" ]; then
echo " remote-resolv: $remote_resolv;" >> $CONFIG_FILE
fi
if [ -n "$source_addr" ]; then
echo " source: $source_addr;" >> $CONFIG_FILE
fi
echo "};" >> $CONFIG_FILE
echo "" >> $CONFIG_FILE
}
tcpproxy_generate_args() {
local cfg="$1"
local option
local value
for option in username groupname chroot log
do
config_get value "$cfg" "$option"
option=`echo $option | tr '_' '-'`
if [ -n "$value" ]; then
DAEMON_ARGS="$DAEMON_ARGS --$option $value"
fi
done
}
tcpproxy_rebuild_config() {
mkdir -p $CONFIG_DIR
rm -f $CONFIG_FILE
touch $CONFIG_FILE
config_load $BIN
config_foreach tcpproxy_write_config listen
}
start() {
echo -n "Starting $DESC "
tcpproxy_rebuild_config
config_foreach tcpproxy_generate_args $BIN
$DAEMON $DAEMON_ARGS --config $CONFIG_FILE --write-pid "$RUN_D/$BIN.pid"
echo "."
}
reload() {
echo -n "Reloading $DESC "
tcpproxy_rebuild_config
kill -SIGHUP `cat "$RUN_D/$BIN.pid"`
echo "."
}
stop() {
echo -n "Stopping $DESC "
kill `cat $RUN_D/$BIN.pid` > /dev/null 2>&1
echo "."
}
|