[packages_10.03.2] sslh: merge r27624, r27625, r28331, r28338, r29091, r29428, r29429
[10.03/packages.git] / net / sslh / files / sslh.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2009-2011 OpenWrt.org
3
4 START=95
5
6 # XXX: pid-files are useless because sslh forks after creating them
7 SERVICE_USE_PID=
8
9 start_instance() {
10         local section="$1"
11
12         # check if section is enabled (default)
13         local enabled
14         config_get_bool enabled "${section}" 'enabled' '0'
15         [ ${enabled} -gt 0 ] || return 1
16
17         local args=""
18         local val
19         # A) listen parameter
20         config_get vals "${section}" listen
21         [ -n "${vals}" ] && for val in $vals; do append args "-p ${val}"; done
22         # B) ssh parameter
23         config_get val "${section}" ssh
24         [ -n "${val}" ] && append args "--ssh ${val}"
25         # C) ssl parameter
26         config_get val "${section}" ssl
27         [ -n "${val}" ] && append args "--ssl ${val}"
28         # D) openvpn parameter
29         config_get val "${section}" openvpn
30         [ -n "${val}" ] && append args "--openvpn ${val}"
31         # E) tinc parameter
32         config_get val "${section}" tinc
33         [ -n "${val}" ] && append args "--tinc ${val}"
34         # F) xmpp parameter
35         config_get val "${section}" xmpp
36         [ -n "${val}" ] && append args "--xmpp ${val}"
37         # G) timeout (before a connection is considered to be SSH)
38         config_get val "${section}" timeout
39         [ -n "${val}" ] && append args "-t ${val}"
40         # H) verbose parameter
41         local verbosed
42         config_get_bool verbosed "${section}" verbose 0
43         [ "${verbosed}" -ne 0 ] && append args "-v"
44
45         # XXX: allow more that one instance to run simultaneously
46         SERVICE_MATCH_NAME=1 SERVICE_NAME="sslh-dummy-$$" \
47         service_start /usr/sbin/sslh ${args}
48 }
49
50 start() {
51         config_load 'sslh'
52         config_foreach start_instance 'sslh'
53 }
54
55 stop() {
56         service_stop /usr/sbin/sslh
57 }