lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

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 }