rtty: update to 7.0.1
[feed/packages.git] / utils / rtty / files / rtty.init
index 175e124246b39587d55549e81257f2d19ff34d7f..297f393c2a3b623e84f2582e33035fa2dbe7dc53 100644 (file)
@@ -5,55 +5,63 @@ START=99
 
 BIN=/usr/sbin/rtty
 
+validate_rtty_section() {
+       uci_load_validate rtty rtty "$1" "$2" \
+               'interface:uci("network", "@interface"):lan' \
+               'id:maxlength(63)' \
+               'description:maxlength(126)' \
+               'host:host' \
+               'port:port' \
+               'ssl:bool:0' \
+               'token:maxlength(32)'
+}
+
 start_rtty() {
-    . /lib/functions/network.sh
-
-    local cfg="$1"
-    local interface ifname id description host port ssl
-
-    uci_validate_section rtty rtty "${1}" \
-        'interface:uci("network", "@interface"):lan' \
-        'id:maxlength(63)' \
-        'description:maxlength(126)' \
-        'host:host' \
-        'port:port' \
-        'ssl:bool:0' \
-        'keepalive:uinteger:5'
-    
-    [ $? -ne 0 ] && {
-        echo "validation failed" >&2
-        return 1
-    }
-
-    [ -n "$interface" ] && network_get_device ifname "$interface"
-
-    [ -z "$ifname" -a -z "$id" ] && {
-        echo "You must specify an interface or ID" >&2
-        return 1
-    }
-
-    [ -z "$host" ] && {
-        echo "host required" >&2
-        return 1
-    }
-    
-    [ -z "$port" ] && {
-        echo "port required" >&2
-        return 1
-    }
-
-    procd_open_instance
-    procd_set_param command $BIN -h $host -p $port -a -k $keepalive
-    [ -n "$ifname" ] && procd_append_param command -i "$ifname"
-    [ -n "$id" ] && procd_append_param command -I "$id"
-    [ -n "$description" ] && procd_append_param command -d "$description"
-    [ "$ssl" = "1" ] && procd_append_param command -s
-    procd_set_param respawn
-    procd_close_instance
+       . /lib/functions/network.sh
+
+       local ifname
+
+       [ "$2" = 0 ] || {
+               echo "validation failed" >&2
+               return 1
+       }
+
+       [ -n "$interface" ] && network_get_device ifname "$interface"
+
+       [ -z "$ifname" -a -z "$id" ] && {
+               echo "You must specify an interface or ID" >&2
+               return 1
+       }
+
+       [ -z "$host" ] && {
+               echo "host required" >&2
+               return 1
+       }
+
+       [ -z "$port" ] && {
+               echo "port required" >&2
+               return 1
+       }
+
+       [ -z "$id" ] && {
+               id=$(cat /sys/class/net/$ifname/address | sed 's/://g' | tr 'a-z' 'A-Z')
+       }
+
+       procd_open_instance
+       procd_set_param command $BIN -h $host -p $port -I "$id" -a
+       [ -n "$description" ] && procd_append_param command -d "$description"
+       [ "$ssl" = "1" ] && procd_append_param command -s
+       [ -n "$token" ] && procd_append_param command -t "$token"
+       procd_set_param respawn
+       procd_close_instance
 }
 
 start_service() {
-    config_load rtty
-    config_foreach start_rtty rtty
+       config_load rtty
+       config_foreach validate_rtty_section rtty start_rtty
 }
 
+service_triggers() {
+       procd_add_reload_trigger "rtty"
+       procd_add_validation validate_rtty_section
+}