From a240aa95791893bf623dcb5279074b4cf16506ce Mon Sep 17 00:00:00 2001 From: Marcin Jurkowski Date: Wed, 2 Sep 2015 23:58:13 +0200 Subject: [PATCH] owfs: convert init scripts to procd style Convert init.d scripts to use procd and take advantage of respawn feature. Signed-off-by: Marcin Jurkowski --- utils/owfs/files/owfs.conf | 7 +-- utils/owfs/files/owfs.init | 107 ++++++++++++++++++--------------- utils/owfs/files/owftpd.conf | 7 +-- utils/owfs/files/owftpd.init | 103 ++++++++++++++++--------------- utils/owfs/files/owhttpd.conf | 7 +-- utils/owfs/files/owhttpd.init | 102 +++++++++++++++++-------------- utils/owfs/files/owserver.conf | 7 +-- utils/owfs/files/owserver.init | 101 +++++++++++++++++-------------- 8 files changed, 237 insertions(+), 204 deletions(-) diff --git a/utils/owfs/files/owfs.conf b/utils/owfs/files/owfs.conf index 3bb30a542..b4859897a 100644 --- a/utils/owfs/files/owfs.conf +++ b/utils/owfs/files/owfs.conf @@ -1,11 +1,10 @@ config owfs 'owfs' option enabled 0 - option uid 0 - option gid 0 + option user root option readonly 0 option mountpoint '/mnt/owfs' option fuse_allow_other 0 option fuse_open_opt '' option error_level 0 - option options '' - list devices '-s localhost:4304' + list devices '-s' + list devices 'localhost:4304' diff --git a/utils/owfs/files/owfs.init b/utils/owfs/files/owfs.init index e70820fee..83c8913a0 100644 --- a/utils/owfs/files/owfs.init +++ b/utils/owfs/files/owfs.init @@ -1,75 +1,82 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2009-2012 OpenWrt.org +# Copyright (C) 2009-2015 OpenWrt.org -START=99 +START=95 +USE_PROCD=1 -SERVICE_WRITE_PID=1 -SERVICE_DAEMONIZE=1 +PROG=/usr/bin/owfs -# Workaround insufficient /dev/fuse permissions and the lack of /etc/fuse.conf -DEFAULT_SERVICE_UID=0 -DEFAULT_SERVICE_GID=0 +append_arg() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -append_device() { - append devices "$1" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" } +append_bool() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -start_owfs_daemon() { - local program="$1" - local config="$1" - local args="--foreground --error_print=1 $2" - - - local enabled - config_get_bool enabled "$config" enabled 0 - [ "${enabled}" -eq 0 ] && return 1 + config_get_bool val "$cfg" "$var" "$def" + [ "$val" = 1 ] && procd_append_param command "$opt" +} - local readonly - config_get_bool readonly "$config" readonly 0 - [ "${readonly}" -eq 1 ] && append args "--readonly" +append_plain() { + procd_append_param command "$1" +} - local error_level - config_get error_level "$config" error_level - [ -n "${error_level}" ] && append args "--error_level=${error_level}" +append_param() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val - local options - config_get options "$config" options + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" +} - devices="" - config_list_foreach "$config" devices append_device +start_instance() { + local cfg="$1" + local enabled - config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID" - config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID" + config_get_bool enabled "$cfg" 'enabled' '0' + [ "$enabled" = 0 ] && return 1 - service_start "/usr/bin/$program" $args $options $devices -} + procd_open_instance -start_owfs() { - local config="owfs" - local args="" + procd_set_param command "$PROG" --foreground --error_print=1 - config_load "$config" + # common parameters + append_bool "$cfg" readonly "--readonly" + append_arg "$cfg" error_level "--error_level" + config_list_foreach "$cfg" options append_plain + config_list_foreach "$cfg" devices append_plain + append_param "$cfg" user user - local mountpoint - config_get mountpoint "$config" mountpoint /mnt/owfs - append args "--mountpoint=${mountpoint}" + # owfs-specific + append_arg "$cfg" mountpoint "--mountpoint" /mnt/owfs + append_bool "$cfg" fuse_allow_other "--allow_other" + append_arg "$cfg" fuse_open_opt "--fuse_open_opt" - local fuse_allow_other - config_get_bool fuse_allow_other "$config" fuse_allow_other 0 - [ "${fuse_allow_other}" -eq 1 ] && append args "--allow_other" + # don't respawn fuse - local fuse_open_opt - config_get fuse_open_opt "$config" fuse_open_opt - [ -n "${fuse_open_opt}" ] && append args "--fuse_open_opt=\"${fuse_open_opt}\"" + procd_close_instance - start_owfs_daemon "$config" "$args" } -start() { - start_owfs +service_triggers() { + procd_add_reload_trigger owfs } -stop() { - service_stop /usr/bin/owfs +start_service() { + config_load owfs + config_foreach start_instance owfs } diff --git a/utils/owfs/files/owftpd.conf b/utils/owfs/files/owftpd.conf index 88322c941..100162e2a 100644 --- a/utils/owfs/files/owftpd.conf +++ b/utils/owfs/files/owftpd.conf @@ -1,9 +1,8 @@ config owftpd 'owftpd' option enabled 0 - option uid 0 - option gid 0 + option user root option readonly 0 option port 21 option error_level 0 - option options '' - list devices '-s localhost:4304' + list devices '-s' + list devices 'localhost:4304' diff --git a/utils/owfs/files/owftpd.init b/utils/owfs/files/owftpd.init index 010b2b939..a7e17c938 100644 --- a/utils/owfs/files/owftpd.init +++ b/utils/owfs/files/owftpd.init @@ -1,72 +1,81 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2009-2012 OpenWrt.org +# Copyright (C) 2009-2015 OpenWrt.org -START=99 +START=95 +USE_PROCD=1 -SERVICE_WRITE_PID=1 -SERVICE_DAEMONIZE=1 +PROG=/usr/bin/owftpd -# Needed for restricted TCP port 21 -DEFAULT_SERVICE_UID=0 -DEFAULT_SERVICE_GID=0 +append_arg() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -append_device() { - append devices "$1" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" } +append_bool() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -start_owfs_daemon() { - local program="$1" - local config="$1" - local args="--foreground --error_print=1 $2" - + config_get_bool val "$cfg" "$var" "$def" + [ "$val" = 1 ] && procd_append_param command "$opt" +} - local enabled - config_get_bool enabled "$config" enabled 0 - [ "${enabled}" -eq 0 ] && return 1 +append_plain() { + procd_append_param command "$1" +} - local readonly - config_get_bool readonly "$config" readonly 0 - [ "${readonly}" -eq 1 ] && append args "--readonly" +append_param() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val - local error_level - config_get error_level "$config" error_level - [ -n "${error_level}" ] && append args "--error_level=${error_level}" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" +} - local options - config_get options "$config" options +start_instance() { + local cfg="$1" + local enabled - devices="" - config_list_foreach "$config" devices append_device + config_get_bool enabled "$cfg" 'enabled' '0' + [ "$enabled" = 0 ] && return 1 - config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID" - config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID" + procd_open_instance - service_start "/usr/bin/$program" $args $options $devices -} + procd_set_param command "$PROG" --foreground --error_print=1 -start_owftpd() { - local config="owftpd" - local args="" + # common parameters + append_bool "$cfg" readonly "--readonly" + append_arg "$cfg" error_level "--error_level" + config_list_foreach "$cfg" options append_plain + config_list_foreach "$cfg" devices append_plain + append_param "$cfg" user user - config_load "$config" + # owftpd-specific + append_arg "$cfg" port "--port" + append_arg "$cfg" max_connections "--max_connections" - local port - config_get port "$config" port - [ -n "${port}" ] && append args "--port=${port}" + procd_set_param respawn - local max_connections - config_get max_connections "$config" max_connections - [ -n "${max_connections}" ] && append args "--max_connections=${max_connections}" + procd_close_instance - start_owfs_daemon "$config" "$args" } - -start() { - start_owftpd +service_triggers() { + procd_add_reload_trigger owftpd } -stop() { - service_stop /usr/bin/owftpd +start_service() { + config_load owftpd + config_foreach start_instance owftpd } diff --git a/utils/owfs/files/owhttpd.conf b/utils/owfs/files/owhttpd.conf index e49e4ceb3..a314cd1ea 100644 --- a/utils/owfs/files/owhttpd.conf +++ b/utils/owfs/files/owhttpd.conf @@ -1,9 +1,8 @@ config owhttpd 'owhttpd' option enabled 0 - option uid 65534 - option gid 65534 + option user root option readonly 0 option port 3001 option error_level 0 - option options '' - list devices '-s localhost:4304' + list devices '-s' + list devices 'localhost:4304' diff --git a/utils/owfs/files/owhttpd.init b/utils/owfs/files/owhttpd.init index fdabdbc26..868c9b419 100644 --- a/utils/owfs/files/owhttpd.init +++ b/utils/owfs/files/owhttpd.init @@ -1,71 +1,81 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2009-2012 OpenWrt.org +# Copyright (C) 2009-2015 OpenWrt.org -START=99 +START=95 +USE_PROCD=1 -SERVICE_WRITE_PID=1 -SERVICE_DAEMONIZE=1 +PROG=/usr/bin/owhttpd -DEFAULT_SERVICE_UID=65534 -DEFAULT_SERVICE_GID=65534 +append_arg() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -append_device() { - append devices "$1" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" } +append_bool() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -start_owfs_daemon() { - local program="$1" - local config="$1" - local args="--foreground --error_print=1 $2" - + config_get_bool val "$cfg" "$var" "$def" + [ "$val" = 1 ] && procd_append_param command "$opt" +} - local enabled - config_get_bool enabled "$config" enabled 0 - [ "${enabled}" -eq 0 ] && return 1 +append_plain() { + procd_append_param command "$1" +} - local readonly - config_get_bool readonly "$config" readonly 0 - [ "${readonly}" -eq 1 ] && append args "--readonly" +append_param() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val - local error_level - config_get error_level "$config" error_level - [ -n "${error_level}" ] && append args "--error_level=${error_level}" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" +} - local options - config_get options "$config" options +start_instance() { + local cfg="$1" + local enabled - devices="" - config_list_foreach "$config" devices append_device + config_get_bool enabled "$cfg" 'enabled' '0' + [ "$enabled" = 0 ] && return 1 - config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID" - config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID" + procd_open_instance - service_start "/usr/bin/$program" $args $options $devices -} + procd_set_param command "$PROG" --foreground --error_print=1 -start_owhttpd() { - local config="owhttpd" - local args="" + # common parameters + append_bool "$cfg" readonly "--readonly" + append_arg "$cfg" error_level "--error_level" + config_list_foreach "$cfg" options append_plain + config_list_foreach "$cfg" devices append_plain + append_param "$cfg" user user - config_load "$config" + # owhttpd-specific + append_arg "$cfg" port "--port" + append_arg "$cfg" max_connections "--max_connections" - local port - config_get port "$config" port - [ -n "${port}" ] && append args "--port=${port}" + procd_set_param respawn - local max_connections - config_get max_connections "$config" max_connections - [ -n "${max_connections}" ] && append args "--max_connections=${max_connections}" + procd_close_instance - start_owfs_daemon "$config" "$args" } - -start() { - start_owhttpd +service_triggers() { + procd_add_reload_trigger owhttpd } -stop() { - service_stop /usr/bin/owhttpd +start_service() { + config_load owhttpd + config_foreach start_instance owhttpd } diff --git a/utils/owfs/files/owserver.conf b/utils/owfs/files/owserver.conf index e00089462..ceb8a61e6 100644 --- a/utils/owfs/files/owserver.conf +++ b/utils/owfs/files/owserver.conf @@ -1,9 +1,8 @@ config owserver 'owserver' option enabled 0 - option uid 65534 - option gid 65534 + option user root option readonly 0 option port 4304 option error_level 0 - option options '' - list devices '-d /dev/ttyUSB0' + list devices '-d' + list devices '/dev/ttyUSB0' diff --git a/utils/owfs/files/owserver.init b/utils/owfs/files/owserver.init index bbf870d04..7f91aeec0 100644 --- a/utils/owfs/files/owserver.init +++ b/utils/owfs/files/owserver.init @@ -1,70 +1,81 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2009-2012 OpenWrt.org +# Copyright (C) 2009-2015 OpenWrt.org -START=98 +START=90 +USE_PROCD=1 -SERVICE_WRITE_PID=1 -SERVICE_DAEMONIZE=1 +PROG=/usr/bin/owserver -DEFAULT_SERVICE_UID=65534 -DEFAULT_SERVICE_GID=65534 +append_arg() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -append_device() { - append devices "$1" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}" } +append_bool() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val -start_owfs_daemon() { - local program="$1" - local config="$1" - local args="--foreground --error_print=1 $2" - + config_get_bool val "$cfg" "$var" "$def" + [ "$val" = 1 ] && procd_append_param command "$opt" +} - local enabled - config_get_bool enabled "$config" enabled 0 - [ "${enabled}" -eq 0 ] && return 1 +append_plain() { + procd_append_param command "$1" +} - local readonly - config_get_bool readonly "$config" readonly 0 - [ "${readonly}" -eq 1 ] && append args "--readonly" +append_param() { + local cfg="$1" + local var="$2" + local opt="$3" + local def="$4" + local val - local error_level - config_get error_level "$config" error_level - [ -n "${error_level}" ] && append args "--error_level=${error_level}" + config_get val "$cfg" "$var" + [ -n "$val" -o -n "$def" ] && procd_append_param "$opt" "${val:-$def}" +} - local options - config_get options "$config" options +start_instance() { + local cfg="$1" + local enabled - devices="" - config_list_foreach "$config" devices append_device + config_get_bool enabled "$cfg" 'enabled' '0' + [ "$enabled" = 0 ] && return 1 - config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID" - config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID" + procd_open_instance - service_start "/usr/bin/$program" $args $options $devices -} + procd_set_param command "$PROG" --foreground --error_print=1 -start_owserver() { - local config="owserver" - local args="" + # common parameters + append_bool "$cfg" readonly "--readonly" + append_arg "$cfg" error_level "--error_level" + config_list_foreach "$cfg" options append_plain + config_list_foreach "$cfg" devices append_plain + append_param "$cfg" user user - config_load "$config" + # owserver-specific + append_arg "$cfg" port "--port" + append_arg "$cfg" max_connections "--max_connections" - local port - config_get port "$config" port - [ -n "${port}" ] && append args "--port=${port}" + procd_set_param respawn - local max_connections - config_get max_connections "$config" max_connections - [ -n "${max_connections}" ] && append args "--max_connections=${max_connections}" + procd_close_instance - start_owfs_daemon "$config" "$args" } -start() { - start_owserver +service_triggers() { + procd_add_reload_trigger owserver } -stop() { - service_stop /usr/bin/owserver +start_service() { + config_load owserver + config_foreach start_instance owserver }