First Commit
[librecmc/package-feed.git] / net / tcpproxy / files / tcpproxy.init
1 #!/bin/sh /etc/rc.common
2 START=50
3
4 BIN=tcpproxy
5 DAEMON=/usr/bin/$BIN
6 DAEMON_ARGS=""
7 DESC=$BIN
8 RUN_D=/var/run
9 CONFIG_DIR=/var/etc
10 CONFIG_FILE=$CONFIG_DIR/$BIN.conf
11
12 tcpproxy_write_config() {
13   local cfg="$1"
14
15   config_get_bool value "$cfg" disabled 0
16   [ "$value" -ne 0 ] && return
17
18   local local_addr=""
19   local resolv=""
20   local local_port=""
21   local remote_addr=""
22   local remote_resolv=""
23   local remote_port=""
24   local source_addr=""
25
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
33
34   if [ -z "$local_addr" ]; then
35     local_addr="*"
36   fi
37
38   echo "listen $local_addr $local_port" >> $CONFIG_FILE
39   echo "{" >> $CONFIG_FILE
40   if [ -n "$resolv" ]; then
41     echo "  resolv: $resolv;" >> $CONFIG_FILE
42   fi
43   echo "  remote: $remote_addr $remote_port;" >> $CONFIG_FILE
44   if [ -n "$remote_resolv" ]; then
45     echo "  remote-resolv: $remote_resolv;" >> $CONFIG_FILE
46   fi
47   if [ -n "$source_addr" ]; then
48     echo "  source: $source_addr;" >> $CONFIG_FILE
49   fi
50   echo "};" >> $CONFIG_FILE
51   echo "" >> $CONFIG_FILE
52 }
53
54 tcpproxy_generate_args() {
55   local cfg="$1"
56   local option
57   local value
58
59   for option in username groupname chroot log
60   do
61     config_get value "$cfg" "$option"
62     option=`echo $option | tr '_' '-'`
63     if [ -n "$value" ]; then
64       DAEMON_ARGS="$DAEMON_ARGS --$option $value"
65     fi
66   done
67 }
68
69 tcpproxy_rebuild_config() {
70   mkdir -p $CONFIG_DIR
71   rm -f $CONFIG_FILE
72   touch $CONFIG_FILE
73   config_load $BIN
74   config_foreach tcpproxy_write_config listen
75 }
76
77 start() {
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"
82   echo "."
83 }
84
85 reload() {
86   echo -n "Reloading $DESC "
87   tcpproxy_rebuild_config
88   kill -SIGHUP `cat "$RUN_D/$BIN.pid"`
89   echo "."
90 }
91
92 stop() {
93   echo -n "Stopping $DESC "
94   kill `cat $RUN_D/$BIN.pid` > /dev/null 2>&1
95   echo "."
96 }