tcpproxy.init (2138B)
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 }