Ticket #21341: etc_init.d_sockd

File etc_init.d_sockd, 2.2 KB (added by bjonas, 2 years ago)

/etc/init.d/sockd

Line 
1#!/bin/sh /etc/rc.common
2
3START=90
4
5USE_PROCD=1
6PROG=/usr/sbin/sockd
7
8CONFIGFILE="/var/etc/sockd.conf"
9
10xappend() {
11        local value="$1"
12
13        echo "${value#--}" >> $CONFIGFILE
14}
15
16append_parm() {
17        local section="$1"
18        local option="$2"
19        local switch="$3"
20        local defval="$4"
21        local _loctmp
22        config_get _loctmp "$section" "$option"
23        if [ -z "$_loctmp" ]; then
24                [ -z "$defval" ] && return 0
25                xappend "$switch:$defval"
26        else
27                xappend "$switch:$_loctmp"
28        fi
29}
30
31sockd(){
32        local cfg="$1"
33
34        append_parm "$cfg" "clientmethod" "--clientmethod"
35        append_parm "$cfg" "method" "--method"
36        append_parm "$cfg" "user_privileged" "--user.privileged" "root"
37        append_parm "$cfg" "user_notprivileged" "--user.notprivileged" "nobody"
38        append_parm "$cfg" "logoutput" "--logoutput" "syslog"
39
40        local _extif _intif _extip _intip
41        config_get _extif "sockd" "external"
42        [ -z "$_extif" ] && _extif="wan"
43        config_get _intif "sockd" "internal"
44        [ -z "$_intif" ] && _intif="lan"
45
46        network_flush_cache
47        network_get_ipaddr _extip $_extif
48        xappend "--external:$_extip"
49        network_get_ipaddr _intip $_intif
50        xappend "--internal:$_intip"
51
52        echo >> $CONFIGFILE
53}
54
55service_triggers() {
56        procd_add_reload_trigger "sockd"
57#       procd_add_network_trigger "wan"|"pppoe-wan"
58}
59
60boot() {
61        # Will be launched through hotplug
62        return 0
63}
64
65start_service() {
66        include /lib/functions
67
68        config_load sockd
69
70        procd_open_instance
71        procd_set_param command $PROG -f $CONFIGFILE
72        procd_set_param file $CONFIGFILE
73        procd_set_param netdev wan
74        procd_set_param respawn
75        procd_close_instance
76
77        echo "# auto-generated config file from /etc/config/sockd" > $CONFIGFILE
78        [ -f /etc/sockd.conf ] && {
79                cat /etc/sockd.conf >> $CONFIGFILE
80        }
81
82        config_foreach sockd sockd
83}
84
85reload_service() {
86        return 0
87}
88
89stop_service() {
90        return 0
91}