| #!/bin/sh /etc/rc.common |
| # Copyright (C) 2009-2017 OpenWrt.org |
| |
| START=95 |
| |
| # XXX: pid-files are useless because sslh forks after creating them |
| SERVICE_USE_PID= |
| |
| start_instance() { |
| local section="$1" |
| |
| # check if section is enabled (default) |
| local enable |
| config_get_bool enable "${section}" 'enable' '0' |
| [ ${enable} -gt 0 ] || return 1 |
| |
| local args="" |
| local val |
| # A) listen parameter |
| config_get vals "${section}" listen |
| [ -n "${vals}" ] && for val in $vals; do append args "-p${val}"; done |
| # B) ssh parameter |
| config_get val "${section}" ssh |
| [ -n "${val}" ] && append args "--ssh ${val}" |
| # C) tls parameter |
| config_get val "${section}" tls |
| [ -n "${val}" ] && append args "--tls ${val}" |
| # D) openvpn parameter |
| config_get val "${section}" openvpn |
| [ -n "${val}" ] && append args "--openvpn ${val}" |
| # E) tinc parameter |
| config_get val "${section}" tinc |
| [ -n "${val}" ] && append args "--tinc ${val}" |
| # F) xmpp parameter |
| config_get val "${section}" xmpp |
| [ -n "${val}" ] && append args "--xmpp ${val}" |
| # G) timeout (before a connection is considered to be SSH) |
| config_get val "${section}" timeout |
| [ -n "${val}" ] && append args "-t ${val}" |
| # H) verbose parameter |
| local verbosed |
| config_get_bool verbosed "${section}" verbose 0 |
| [ "${verbosed}" -ne 0 ] && append args "-v" |
| # I) sslh config file (cmd line args override file settings) |
| config_get val "${section}" configfile |
| [ -n "${val}" ] && append args "-F${val}" |
| # J) http parameter |
| config_get val "${section}" http |
| [ -n "${val}" ] && append args "--http ${val}" |
| # K) transparent parameter |
| config_get_bool val "${section}" transparent 0 |
| [ "${val}" -ne 0 ] && append args "--transparent" |
| |
| # Defaults were removed for --user and --pidfile options |
| # in sslh 1.11; Define them here instead. |
| append args "--user nobody" |
| append args "--pidfile /var/run/sslh.pid" |
| |
| # XXX: allow more that one instance to run simultaneously |
| SERVICE_MATCH_NAME=1 SERVICE_NAME="sslh-dummy-$$" \ |
| service_start /usr/sbin/sslh ${args} |
| } |
| |
| start() { |
| config_load 'sslh' |
| config_foreach start_instance 'sslh' |
| } |
| |
| stop() { |
| service_stop /usr/sbin/sslh |
| } |