#! /bin/sh
#
# Startup script for SBRSH
# Author: Walter Guerra

CONFIG_FILE="/etc/default/sbrshd"
ALLOWED_IPS_FILE="/etc/sbrshd.conf"
EXEC_SCRIPT="/etc/init.d/sbrshd"
DAEMON="/usr/sbin/sbrshd"

is_sbrshd_running() {
    ret=`pidof sbrshd`
    if [ $ret ]
    then
        return 1
    else
        return 0
    fi
}

is_sbrshd_installed() {
    if [ -e "$EXEC_SCRIPT" ]
    then
        if [ -e "$DAEMON" ]
        then
            return 1
        else
            return 0
        fi
    else
        return 0
    fi
}

start_sbrshd() {
    $EXEC_SCRIPT start
}

stop_sbrshd() {
    $EXEC_SCRIPT stop
}

configure_sbrshd() {
    echo "Changing the sbrshd config file"
    
    # save a backup copy
    BASE_NAME=`basename $CONFIG_FILE`
    if [ ! -f ~/.pc-connectivity/${BASE_NAME} ]
    then
        cp $CONFIG_FILE ~/.pc-connectivity/${BASE_NAME}.orig
    fi
    
    # Fist parameter
    if [ $1 -eq 1 ]
    then
        NO_SANDBOX="NO_SANDBOX=true"
    else
        NO_SANDBOX="NO_SANDBOX=false"
    fi
    
    # Second parameter
    if [ $2 -eq 1 ]
    then
        ALLOW_ROOT="ALLOW_ROOT=true"
    else
        ALLOW_ROOT="ALLOW_ROOT=false"
    fi
    
    # Third parameter
    if [ $3 -eq 1 ]
    then
        DEBUG="DEBUG=true"
    else
        DEBUG="DEBUG=false"
    fi
    
    # Fourth parameter
    PORT="PORT=$4"
    
    cp ${CONFIG_FILE} ${CONFIG_FILE}.tmp
    
    sed -e "/NO_SANDBOX=/c $NO_SANDBOX " \
        -e "/ALLOW_ROOT=/c $ALLOW_ROOT " \
        -e "/DEBUG=/c $DEBUG " \
        -e "/PORT=/c $PORT" \
        ${CONFIG_FILE}.tmp > ${CONFIG_FILE}

    rm ${CONFIG_FILE}.tmp
    
}

set_allowed_ips() {

    # save a backup copy
    BASE_NAME=`basename $ALLOWED_IPS_FILE`
    if [ ! -f ~/.pc-connectivity/${BASE_NAME} ]
    then
        cp $ALLOWED_IPS_FILE ~/.pc-connectivity/${BASE_NAME}.orig
    fi

    echo "# Automatically generated by pc-connectivity manager" > $ALLOWED_IPS_FILE
    echo "# List of authorized IPv4 addresses for incoming sbrsh connections." >> $ALLOWED_IPS_FILE
    echo "# WARNING: No other authentication is performed!" >> $ALLOWED_IPS_FILE
    echo "# " >> $ALLOWED_IPS_FILE
    echo "# Trivial example:" >> $ALLOWED_IPS_FILE
    echo "# 192.168.1.1" >> $ALLOWED_IPS_FILE
    echo "# 192.168.1.2" >> $ALLOWED_IPS_FILE
    echo "#" >> $ALLOWED_IPS_FILE
    echo "# Wildcard example:" >> $ALLOWED_IPS_FILE
    echo "# 192.168.1.*" >> $ALLOWED_IPS_FILE
    echo "# 10.0.*" >> $ALLOWED_IPS_FILE
    echo "#" >> $ALLOWED_IPS_FILE
    
    while [ "$1" != "" ]; do
        echo $1 >> $ALLOWED_IPS_FILE
        
        shift
    done
}

case $1 in
isrunning)
    is_sbrshd_running
    exit $?
    ;;
isinstalled)
    is_sbrshd_installed
    exit $?
    ;;
start)
    start_sbrshd
    ;;
stop)
    stop_sbrshd
    ;;
config)
    configure_sbrshd $2 $3 $4 $5
    ;;
allowed_ips)
    shift
    set_allowed_ips $@
    ;;
esac

