All pastes #627678 Raw Edit

lubek

public text v1 · immutable
·published 2007-07-20 13:30 UTC
rendered paste body
config/matrixtunnel
-------------------
config matrixtunnel my1sttunnel
	option enable	'0'
	option cacert	''
	option privkey	''
	option listen_host	''
	option listen_port	''
	option remote_host	''
	option remote_port	''
	option syslog_enable	0
	option syslog_loglevel	0

config matrixtunnel 2ndtunnel
	option enable	'0'
	option cacert	''
	option privkey	''
	option listen_host	''
	option listen_port	''
	option remote_host	''
	option remote_port	''
	option syslog_enable	0
	option syslog_loglevel	0

init.d/matrixtunnel
-------------------
#!/bin/sh /etc/rc.common
# Copyright (C) 2007 X-Wrt.org 

START=48
EXTRA_COMMANDS="list status"
EXTRA_HELP="	list	Lists available configurations
	status	Print status of the service

The actions start, stop, restart, status accept also another parameter
to process only the particular configuration.
"

matrixtunnel_start() {
	local cfg="$1"
	[ -z "$cfg" ] && return 1
	local startcfg="$2"
	[ -n "$startcfg" -a "$startcfg" != "$cfg" ] && return 0
	local enable cacert privkey listenip listenport remoteip remoteport syslogenable sysloglevel
	local OPTIONS pidfile
	[ -n "$(echo "$cfg" | grep "^cfg[[:digit:]]*$")" ] && {
		echo "The confugration section is missing the name!"
		return 1
	}
	config_get_bool enable "$cfg" enable 0
	[ 1 -eq "$enable" ] && return 0
	config_get cacert "$cfg" cacert 0
	config_get privkey "$cfg" privkey 0
	[ "$cacert" == "" -o "$privkey" == "" ] && {
		echo "The ssl certificates are missing in the $cfg configuration!"
		return 1
	}
	OPTIONS="-A $cacert -p $privkey -d "
	config_get listenip "$cfg" listen_host 0
	[ -n "$listenip" ] && OPTIONS="$OPTIONS$listenip:"
	config_get listenport "$cfg" listen_port 0
	[ "$listenport" -lt 1 -o "$listenport" -gt 65535 ] 2>/dev/null && {
		echo "The listen_port is invalid in the $cfg configuration!"
		return 1
	}
	OPTIONS="$OPTIONS$listenport -r "
	config_get remoteip "$cfg" remote_host 0
	[ -n "$remoteip" ] && OPTIONS="$OPTIONS$remoteip:"
	config_get remoteport "$cfg" remote_port 0
	[ "$remoteport" -lt 1 -o "$remoteport" -gt 65535 ] 2>/dev/null && {
		echo "The remote_port is invalid in the $cfg configuration!"
		return 1
	}
	OPTIONS="$OPTIONS$remoteport"
	config_get_bool syslogenable "$cfg" enable 0
	[ 1 -eq "$syslogenable" ] && {
		config_get sysloglevel "$cfg" syslog_loglevel 0
		sysloglevel="${sysloglevel:-0}"
		[ "$sysloglevel" -lt 0 -a "$sysloglevel" -gt 8 ] 2>/dev/null && sysloglevel=0
		OPTIONS="$OPTIONS -D $sysloglevel"
	}
	pidfile="/var/run/matrixtunnel-${cfg}.pid"
	$MT_BIN $OPTIONS -P $pidfile
}

matrixtunnel_stop() {
	local cfg="$1"
	[ -z "$cfg" ] && return 1
	local stopcfg="$2"
	[ -n "$stopcfg" -a "$stopcfg" != "$cfg" ] && return 1
	local pid
	pidfile="/var/run/matrixtunnel-${cfg}.pid"
	[ -f "$pidfile" ] && {
		pid=$(cat "$pidfile")
		[ -n "$pid" -a -d "/proc/$pid" ] && {
			echo -n "Stopping the matrixtunnel $cfg configuration (pid $pid)..."
			kill -TERM "$pid"
			[ "$?" -eq 0 ] && echo "OK" || {
				echo "Failed!"
				echo -n "Killing the matrixtunnel $cfg configuration (pid $pid)..."
				kill -KILL "$pid"
				[ "$?" -eq 0 ] && echo "OK" || echo "Failed!"
			}
		}
		rm -f "$pidfile" 2>/dev/null
	}
}

matrixtunnel_status() {
	local cfg="$1"
	[ -z "$cfg" ] && return 1
	local statuscfg="$2"
	[ -n "$statuscfg" -a "$statuscfg" != "$cfg" ] && return 0
	local pid
	pidfile="/var/run/matrixtunnel-${cfg}.pid"
	[ -f "$pidfile" ] && {
		pid=$(cat "$pidfile")
		[ -n "$pid" -a -d "/proc/$pid" ] && {
			echo "The matrixtunnel $cfg configuration (pid $pid) is running..."
		} || echo "The matrixtunnel $cfg configuration (pid $pid) is not running!"
	} || echo "The matrixtunnel $cfg configuration is not running!"
}

matrixtunnel_list() {
	local cfg="$1"
	echo "	$cfg"
}

start() {
	local mtconfig="$1"
	MT_BIN=$(which matrixtunnel 2>/dev/null)
	[ -z "$MT_BIN" -o ! -x "$MT_BIN" ] && {
		echo "The matrixtunnel binary is missing or is not executable!"
		return 1
	}
	config_load matrixtunnel
	config_foreach matrixtunnel_start matrixtunnel "$mtconfig"
}

stop() {
	local mtconfig="$1"
	config_load matrixtunnel
	config_foreach matrixtunnel_stop matrixtunnel "$mtconfig"
}

restart() {
	local mtconfig="$1"
	stop "$mtconfig"
	start "$mtconfig"
}

status() {
	local mtconfig="$1"
	config_load matrixtunnel
	config_foreach matrixtunnel_status matrixtunnel "$mtconfig"
}

list() {
	echo "Available matrixtunnel configurations:"
	config_load matrixtunnel
	config_foreach matrixtunnel_list matrixtunnel
}