BEQLEUNXP1NB103 - Cygwin - Files

From miki
Revision as of 21:05, 4 October 2009 by Mip (talk | contribs)
Jump to navigation Jump to search

sshproxy

Download [{{#filelink: sshproxy}} this file].

{{#fileanchor: sshproxy}}

#! /bin/sh
#
# sshproxy            Setup ssh port forwarding (imap) and SOCKS 5 proxy
#					  ssh connection is made persistent thanks to autossh
#
# Author:             Michaël Peeters
#
# Prerequisite:		  ssh-agent must be running in background (autossh won't ask for password)
#
# chkconfig:          235 70 40
# description:        sshproxy startup script.

SUBSYS=sshproxy
TARGET=/usr/bin/autossh

# Source function library.
. /etc/rc.d/init.d/functions

# Some macros to make the below more readable
PID_FILE=/var/run/$SUBSYS.pid
LOCK_FILE=/var/lock/subsys/$SUBSYS

start()
{
	echo -n $"Starting $SUBSYS:"

	if [ -f $LOCK_FILE ]; then
		RETVAL=1
	else
		export AUTOSSH_PIDFILE=$PID_FILE
		export AUTOSSH_POLL=300
		/usr/bin/autossh -M 0 -f -N -n -q -L 9025:smtp.priorweb.be:25 -L 9143:mail.priorweb.be:143 -L 9026:mail.altranweb.be:25 -L 9144:mail.altranweb.be:143 -D 1080 noekeon
		RETVAL=$?
	fi

	if [ $RETVAL -eq 0 ]; then
		touch $LOCK_FILE
		echo_success
	else
		echo_failure
	fi
	echo
}

stop()
{
	# don't delete lock file while pid file not deleted
	# don't delete pidfile while process is running

	echo -n $"Stopping $SUBSYS:"

	status
	case "$RETVAL" in
	0)
		( kill -TERM $pid || kill -KILL $pid ) >/dev/null
		RETVAL=$?
		;;
	1) RETVAL=0;;
	2) RETVAL=0;;
	*) ;;
	esac

	if [ $RETVAL -eq 0 ]; then
		rm -f $LOCK_FILE
		rm -f $PID_FILE
		echo_success
	else
		echo_failure
	fi
	echo
}

status()
{
	# no lockfile                            --> (3) Not started.
	# lockfile present, no pidfile           --> (2) Started, but terminated
	# lockfile & pidfile present, no process --> (1) Started, but killed
	# lockfile, pidfile & process present    --> (0) Started.
	# -- note this is opposite order compared to status function, but support multiple autossh running concurrently

	unset pid
	read pid 2>/dev/null < $PID_FILE

	if [ ! -f /var/lock/subsys/$SUBSYS ]; then
		# /var/lock/subsys/$SUBSYS doesn't exist
		RETVAL=3
	elif [ "$pid" = "" ] ; then
		# lock file exists, but file "/var/run/*.pid" doesn't exist
		RETVAL=2
	elif ( ! ps -p $pid | grep -q $pid ) ; then
		# Both files exist but process is not running anymore...
		RETVAL=1
	else
		# Everything is fine
		RETVAL=0
	fi
}

reload()
{
	read pid 2>/dev/null < $PID_FILE
	kill -HUP $pid
	RETVAL=$?
}

# See how we were called.
case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	status)
		status
		case "$RETVAL" in
			0)
				echo -n $"$SUBSYS (pid $pid) is running"
				if ( ps -af | grep -q " $pid .*/ssh" ) ; then echo $" and connection is alive..."; else echo $" but connection is dead..."; fi
				;;
			1)
				echo $"$SUBSYS dead but pid file exists"
				;;
			2)
				echo $"$SUBSYS dead but subsys locked..."
				;;
			3)
				echo $"$SUBSYS is stopped"
				;;
		esac
		;;
	reload)
		reload
		;;
	restart)
		stop
		start
		;;
	*)
		echo "Usage: $0 {start|stop|status|reload|restart}"
		RETVAL=1
esac

exit $RETVAL