|
|
- #!/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 "."
- }
|