File tinyproxy.init.lsb of Package TinyProxy

#!/bin/sh
### BEGIN INIT INFO
# Provides:          tinyproxy
# Required-Start:    $local_fs $network $remote_fs $syslog  
# Should-Start:      $ALL SuSefirewall2_setup 
# Should-Stop:       SuSEfirewall2_setup SuSEfirewall2_init
# Required-Stop:     $local_fs $network $remote_fs $syslog
# Default-Start:     3 5
# Default-Stop:      
# Short-Description: Start, stop script
# Description:       initialize script for NetpoliceTiny
### END INIT INFO
#
# NetpoliceTiny init.d script
# Author: CAIR <tinyproxy@support.cair.ru>

############## Required-Start:    $remote_fs $network $syslog 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
CONFIG=/etc/tinyproxy.conf     # Configure file
DAEMON=/usr/sbin/tinyproxy # Introduce the server's location here
DESC=tinyproxy             # Introduce a short description here
NAME=tinyproxy             # Introduce the short server's name here
FLAGS="-f /etc/tinyproxy.filter.conf"
IPT=                           # Path to iptables

# include function
. /etc/rc.status
#clear state
rc_reset

test -f $DAEMON || exit 0
set -e

# assert pidfile directory and permissions
PIDFILE=$(grep -i '^PidFile[[:space:]]' "$CONFIG" | awk '{print $2}' |\
          sed -e 's/"//g')
[ -z "$PIDFILE" ] && PIDFILE=/var/run/"$NAME/$NAME".pid
PIDDIR=`dirname "$PIDFILE"`

if [ "$1" != "stop" ]; then
    if [ -f "$CONFIG" ]; then
        USER=$(grep    -i '^User[[:space:]]'    "$CONFIG" | awk '{print $2}')
        GROUP=$(grep   -i '^Group[[:space:]]'   "$CONFIG" | awk '{print $2}')
        PORT=$(grep    -i '^Port[[:space:]]'    "$CONFIG" | awk '{print $2}')
        LOGFILE=$(grep -i '^LogFile[[:space:]]' "$CONFIG" | awk '{print $2}' |\
          sed -e 's/"//g')

        if [ -n "$PIDDIR" -a "$PIDDIR" != "/var/run" ]; then
	    if [ ! -d "$PIDDIR" ]; then
                mkdir "$PIDDIR"
            fi
            if [ "$USER" ]; then
                chown "$USER" "$PIDDIR"
            fi
            if [ "$GROUP" ]; then
                chgrp "$GROUP" "$PIDDIR"
            fi
        fi
    fi
fi

setup_rules() {
    echo -n "Add IPtables rules..."
    $IPT -t nat -N in
    $IPT -t nat -N out
    $IPT -t nat -A PREROUTING -p tcp -m tcp --sport 1024:65535 --dport 80 -j in
    $IPT -t nat -A OUTPUT -p tcp -m tcp --sport 32768:61000 --dport 80 -j out
    $IPT -t nat -A in -p tcp -j REDIRECT --to-ports $PORT
    $IPT -t nat -A out -m owner --uid-owner $USER -j RETURN
    $IPT -t nat -A out -d 127.0.0.1/32 -j RETURN
    $IPT -t nat -A out -p tcp -j REDIRECT --to-ports $PORT
#    echo  "Done"
    rc_status -v
}

unsetup_rules() {
    echo -n "Remove IPtables rules..."
    $IPT -t nat -F in 
    $IPT -t nat -F out
    $IPT -t nat -D PREROUTING -p tcp -m tcp --sport 1024:65535 --dport 80 -j in
    $IPT -t nat -D OUTPUT -p tcp -m tcp --sport 32768:61000 --dport 80 -j out
    $IPT -t nat -X in
    $IPT -t nat -X out
#    echo "Done"
    rc_status -v
}

case "$1" in
    start)
	setup_rules
	echo -n "Starting $NAME:"
	startproc -f $DAEMON $FLAGS -c $CONFIG
	rc_status -v
        ;;
    stop)
	unsetup_rules
	echo -n "Stopping $NAME:"
	#kill -s TERM `cat $PIDFILE`
	killproc -p $PIDFILE -TERM $DAEMON
	rc_status -v
    	;;
    reload|force-reload)
    	echo "Reloading $NAME configuration files."
	killproc -p $PIDFILE -HUP $DAEMON
	rc_status -v
    	;;
    restart)
	$0 stop
	$0 start
	rc_status
    	;;
    *)
    	echo "Usage: $0 {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
esac

rc_exit
openSUSE Build Service is sponsored by