092a918ab0f2bab6dfe796f8162af572c3aa4153
[feed/packages.git] / net / p910nd / files / p910nd.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2007 OpenWrt.org
3 START=99
4 USE_PROCD=1
5 DAEMON_NAME="p910nd"
6 CONFIG="p910nd"
7
8 append_bool() {
9 local section="$1"
10 local option="$2"
11 local value="$3"
12 local _val
13 config_get_bool _val "$section" "$option" '0'
14 [ "$_val" -gt 0 ] && append args "$3"
15 }
16
17 append_string() {
18 local section="$1"
19 local option="$2"
20 local value="$3"
21 local _val
22 config_get _val "$section" "$option"
23 [ -n "$_val" ] && append args "$3$_val"
24 }
25
26 start_service() {
27 config_load $CONFIG
28 config_foreach start_p910nd $CONFIG
29 }
30
31
32 start_p910nd() {
33 local section="$1" runas_root
34 config_get_bool "enabled" "$section" "enabled" '0'
35 if [ "$enabled" -gt 0 ]; then
36 args="-d "
37 config_get port "$section" port
38 append_bool "$section" bidirectional "-b"
39 append_string "$section" device "-f "
40 append_string "$section" bind "-i "
41 append_string "$section" port ""
42 procd_open_instance $DAEMON_NAME
43 procd_set_param command /usr/sbin/$DAEMON_NAME $args
44 procd_set_param respawn
45
46 config_get_bool runas_root "$section" runas_root 0
47 [ "$runas_root" -ne 1 ] && procd_set_param user $DAEMON_NAME
48
49 config_get_bool "mdns" "$section" "mdns" '0'
50 if [ "$mdns" -gt 0 ]; then
51 config_get mdns_note "$section" mdns_note
52 config_get mdns_ty "$section" mdns_ty
53 config_get mdns_product "$section" mdns_product
54 config_get mdns_mfg "$section" mdns_mfg
55 config_get mdns_mdl "$section" mdns_mdl
56 config_get mdns_cmd "$section" mdns_cmd
57 # Optional parameters
58 config_get mdns_cid "$section" mdns_cid
59 config_get mdns_cls "$section" mdns_cls
60 config_get mdns_cmt "$section" mdns_cmt
61 config_get mdns_des "$section" mdns_des
62 config_get mdns_drv "$section" mdns_drv
63 config_get mdns_sn "$section" mdns_sn
64 config_get mdns_ver "$section" mdns_ver
65
66 # Set initial arguments
67 set -- "pdl-datastream" "tcp" "$((port+9100))"
68 set -- "$@" "txtvers=1"
69 # bonjourprinting-1.2.1.pdf spec mandates (at least) MFG, MDL, CMD for Socket type
70 [ -n "$mdns_note" ] && set -- "$@" "note=$mdns_note"
71 [ -n "$mdns_ty" ] && set -- "$@" "ty=$mdns_ty"
72 [ -n "$mdns_product" ] && set -- "$@" "product=$mdns_product"
73 [ -n "$mdns_mfg" ] && set -- "$@" "usb_MFG=$mdns_mfg"
74 [ -n "$mdns_mdl" ] && set -- "$@" "usb_MDL=$mdns_mdl"
75 [ -n "$mdns_cmd" ] && set -- "$@" "usb_CMD=$mdns_cmd"
76 # Optional parameters
77 [ -n "$mdns_cid" ] && set -- "$@" "usb_CID=$mdns_cid"
78 [ -n "$mdns_cls" ] && set -- "$@" "usb_CLS=$mdns_cls"
79 [ -n "$mdns_cmt" ] && set -- "$@" "usb_CMT=$mdns_cmt"
80 [ -n "$mdns_des" ] && set -- "$@" "usb_DES=$mdns_des"
81 [ -n "$mdns_drv" ] && set -- "$@" "usb_DRV=$mdns_drv"
82 [ -n "$mdns_sn" ] && set -- "$@" "usb_SN=$mdns_sn"
83 [ -n "$mdns_ver" ] && set -- "$@" "usb_VER=$mdns_ver"
84
85 # Call procd_add_mdns with the positional parameters
86 MDNS_INSTANCE_NAME="$mdns_ty" procd_add_mdns "$@"
87 fi
88 procd_close_instance
89 fi
90 }
91
92 service_triggers()
93 {
94 procd_open_trigger
95 procd_add_config_trigger "config.change" $DAEMON_NAME /etc/init.d/$DAEMON_NAME reload
96 procd_close_trigger
97 }