aboutsummaryrefslogtreecommitdiff
path: root/net/sslh/files/sslh.init
diff options
context:
space:
mode:
Diffstat (limited to 'net/sslh/files/sslh.init')
-rw-r--r--net/sslh/files/sslh.init74
1 files changed, 74 insertions, 0 deletions
diff --git a/net/sslh/files/sslh.init b/net/sslh/files/sslh.init
new file mode 100644
index 0000000..bf5136d
--- /dev/null
+++ b/net/sslh/files/sslh.init
@@ -0,0 +1,74 @@
+#!/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"
+
+ mkdir -p "/var/tmp/sslh"
+
+ # 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"
+ append args "-C /var/tmp/sslh"
+
+ # 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
+}