#!/bin/sh

PID_FILE="/var/run/sshtunnel.pid"

. /lib/config/uci.sh

start() {
    enabled=$(uci_get sshtunnel.general.enabled)
    if [ "${enabled}" != "true" ] && [ "${enabled}" != "1" ] && [ "${enabled}" != "on" ]; then
        echo "ssh tunnel disabled"
        exit 1
    fi

    server=$(uci_get sshtunnel.general.server)
    port=$(uci_get sshtunnel.general.port)
    user=$(uci_get sshtunnel.general.user)
    key_path=$(uci_get sshtunnel.general.key_path)
    forward_list=""
    for ports in $(uci_get sshtunnel.general.forward_ports); do
        forward_list+="-R $(echo $ports | cut -d- -f2):localhost:$(echo $ports | cut -d- -f1) "
    done

    if [ -z "${server}" ] || [ -z "${port}" ] || [ -z "${user}" ] || [ -z "${forward_list}" ]; then
        echo "a parameter is missing"
        exit 1
    fi

    if [ -z "${key_path}" ]; then
        key_path=/etc/sshtunnel/id_worm_external.pem
    fi

    /etc/init.d/dropbear start
    barix-wd --start --pid-file="${PID_FILE}" --background -- ssh -T -K 10 -I 60 -y -N -i ${key_path} \
        ${forward_list} ${user}@${server} -p ${port}
}

stop() {
    barix-wd --stop --wait --pid-file="${PID_FILE}"
}

# See how we were called.
case "$1" in
    start)
        start
        ;;

    stop)
        stop
        ;;

    restart)
        stop
        start
        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

exit $?
