Author: blues                        Date: Wed Feb  4 17:14:36 2009 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- rel.1.9 - introduced daemon script with multiple tunnel support. Not
  working, yet.

---- Files affected:
SOURCES:
   socat.init (NONE -> 1.1)  (NEW), socat.sysconfig (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/socat.init
diff -u /dev/null SOURCES/socat.init:1.1
--- /dev/null   Wed Feb  4 18:14:37 2009
+++ SOURCES/socat.init  Wed Feb  4 18:14:30 2009
@@ -0,0 +1,137 @@
+#!/bin/sh                                                                      
                       
+#
+# socat                Start/stop the socat channell.
+#
+# chkconfig:    2345 11 89
+#
+# description:  Multipurpose relay
+#
+
+# Get service config
+[ -f /etc/sysconfig/socat ] && . /etc/sysconfig/socat
+
+[ -n "$2" ] && TUNNELS="$2"
+
+# no tunnels. exit silently
+if [ -z "$TUNNELS" ]; then
+       case "$1" in
+               start|stop|restart|reload|force-reload)
+               exit 0
+               ;;
+       esac
+fi
+
+# Source function library
+. /etc/rc.d/init.d/functions
+
+# check if the tunnel $1 is up
+tunlup() {
+       local tun="$1"
+       local pidfile=/var/run/socat/$tun.pid
+       local pid=$(cat $pidfile 2>/dev/null)
+       kill -0 $pid 2>/dev/null
+       return $?
+}
+
+# check if all the configured tunnels are up
+tunlsup() {
+       ret=0
+       for tun in $TUNNELS; do
+               tunlup $tun && continue
+               ret=1
+       done
+       return $ret
+}
+
+start() {
+       # Check if the service is already running?
+       if ! tunlsup; then
+               msg_starting "socat"; started
+               for tun in $TUNNELS; do
+                       # Clear vars:
+                       unset OPTIONS
+                       unset BIADDRESS1
+                       unset BIADDRESS2
+                       config="/etc/socat/$tun.conf"
+                       if [ ! -f "$config" ]; then
+                               nls "Invalid tunnel \`%s': missing config: %s" 
$tun "$config"
+                               fail
+                               RET=1
+                       else
+                               show "Starting socat tunnel %s" "$tun"
+                               if tunlup $tun; then
+                                       started
+                                       continue
+                               fi
+                               
+                               # include configuration:
+                               . $config
+                               # FIXME: check if variables are set
+                               daemon --fork --pidfile /var/run/socat/$tun.pid 
\
+                                       /usr/bin/socat ${SOCAT_OPT} ${OPTIONS} \
+                                       ${BIADDRESS1} ${BIADDRESS2}
+                                RET=$?
+                        fi
+                        [ $RETVAL -eq 0 ] && RETVAL=$RET
+                done
+                [ $RETVAL -eq 0 ] && touch /var/lock/subsys/socat
+        else
+                msg_already_running "socat"
+        fi
+}
+
+stop() {
+       if tunlsup; then
+               # Stop daemons.
+               msg_stopping "socat"; started
+                for tun in $TUNNELS; do
+                       pidfile=/var/run/socat/$tun.pid
+                       [ -f "$pidfile" ] || continue
+                       pid=`cat "$pidfile"`
+                       show "Stopping socat tunnel %s" "$tun"; busy
+                       killproc --pidfile socat/$tun.pid || err=1
+               done
+               rm -f /var/lock/subsys/socat >/dev/null 2>&1
+       else
+               msg_not_running "socat"
+       fi
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       stop
+       sleep 1
+       start
+       exit $?
+       ;;
+  status)
+       nls "Configured tunnels:"
+       echo " $TUNNELS"
+       nls "Currently active tunnels:"
+       for pidfile in /var/run/socat/*.pid; do
+               [ -f "$pidfile" ] || continue
+               tun=${pidfile#/var/run/socat/}
+               tun=${tun%.pid}
+               tunlup $tun && echo -n " $tun($(cat $pidfile))"
+       done
+       echo ""
+       tunlsup
+       exit $?
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|status}"
+       exit 3
+       ;;
+esac
+
+exit $RETVAL  
+
+

================================================================
Index: SOURCES/socat.sysconfig
diff -u /dev/null SOURCES/socat.sysconfig:1.1
--- /dev/null   Wed Feb  4 18:14:37 2009
+++ SOURCES/socat.sysconfig     Wed Feb  4 18:14:30 2009
@@ -0,0 +1,11 @@
+# Customized settings for socat                                                
                     
+
+# Nice level for sysconf
+SERVICE_RUN_NICE_LEVEL="+0"
+
+# Options for all tunnels
+#SOCAT_OPT="-ly"
+
+# Tunnels to set up. For each tunnel name, there should be config file in 
/etc/socat
+TUNNELS="mysql"
+#TUNNELS=""
================================================================
_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to