1 #!/bin/sh /etc/rc.common
10 CONFIG_FILE=$CONFIG_DIR/$BIN.conf
12 tcpproxy_write_config() {
15 config_get_bool value "$cfg" disabled 0
16 [ "$value" -ne 0 ] && return
22 local remote_resolv=""
26 config_get local_addr "$cfg" local_addr
27 config_get local_port "$cfg" local_port
28 config_get resolv "$cfg" resolv
29 config_get remote_addr "$cfg" remote_addr
30 config_get remote_port "$cfg" remote_port
31 config_get remote_resolv "$cfg" remote_resolv
32 config_get source_addr "$cfg" source_addr
34 if [ -z "$local_addr" ]; then
38 echo "listen $local_addr $local_port" >> $CONFIG_FILE
39 echo "{" >> $CONFIG_FILE
40 if [ -n "$resolv" ]; then
41 echo " resolv: $resolv;" >> $CONFIG_FILE
43 echo " remote: $remote_addr $remote_port;" >> $CONFIG_FILE
44 if [ -n "$remote_resolv" ]; then
45 echo " remote-resolv: $remote_resolv;" >> $CONFIG_FILE
47 if [ -n "$source_addr" ]; then
48 echo " source: $source_addr;" >> $CONFIG_FILE
50 echo "};" >> $CONFIG_FILE
51 echo "" >> $CONFIG_FILE
54 tcpproxy_generate_args() {
59 for option in username groupname chroot log
61 config_get value "$cfg" "$option"
62 option=`echo $option | tr '_' '-'`
63 if [ -n "$value" ]; then
64 DAEMON_ARGS="$DAEMON_ARGS --$option $value"
69 tcpproxy_rebuild_config() {
74 config_foreach tcpproxy_write_config listen
78 echo -n "Starting $DESC "
79 tcpproxy_rebuild_config
80 config_foreach tcpproxy_generate_args $BIN
81 $DAEMON $DAEMON_ARGS --config $CONFIG_FILE --write-pid "$RUN_D/$BIN.pid"
86 echo -n "Reloading $DESC "
87 tcpproxy_rebuild_config
88 kill -SIGHUP `cat "$RUN_D/$BIN.pid"`
93 echo -n "Stopping $DESC "
94 kill `cat $RUN_D/$BIN.pid` > /dev/null 2>&1