#!/bin/bash
exec stunnel <(
    (while getopts 'cTWfD:O:o:C:p:v:a:A:t:N:u:n:E:R:B:I:d:s:g:P:r:L:l:' OPTKEY; do
        case $OPTKEY in
            (c) echo "client = yes";;
            (T) echo "transparent = yes";;
            (W) echo "RNDoverwrite = yes";;
            (f) echo "foreground = yes";;
            (D) echo "debug = $OPTARG";;
            (O) echo "socket = $OPTARG";;
            (o) echo "output = $OPTARG";;
            (C) echo "ciphers = $OPTARG";;
            (p) echo "cert = $OPTARG";;
            (v) echo "verify = $OPTARG";;
            (a) echo "CApath = $OPTARG";;
            (A) echo "CAfile = $OPTARG";;
            (t) echo "session = $OPTARG";;
            (N) echo "service = $OPTARG";;
            (u) echo "ident = $OPTARG";;
            (n) echo "protocol = $OPTARG";;
            (E) echo "EGD = $OPTARG";;
            (R) echo "RNDfile = $OPTARG";;
            (B) echo "RNDbytes = $OPTARG";;
            (I) echo "local = $OPTARG";;

            (d)
                echo "accept = $OPTARG"
                stunnel3=
            ;;

            (s) echo "setuid = $OPTARG";;
            (g) echo "setgid = $OPTARG";;
            (P) echo "pid = $OPTARG";;
            (r) echo "connect = $OPTARG";;

            (L)
                echo "pty = yes"
                echo "exec = $OPTARG"
            ;;

            (l)
                echo "exec = $OPTARG"
            ;;
        esac
    done

    if [[ ${stunnel3+@} ]]; then
        echo "[stunnel3]"
    fi

    shift $((OPTIND - 1))
    if [[ $# -ne 0 ]]; then
        echo "execargs = $@"
    fi) | tee >(cat>&2)
)
