Owfs daemons lack control scripts. This patch adds init.d scripts for owfs, 
owserver, owhttpd and owftpd packages.
Most daemon options (both common libow and program-specific parameters)
are reflected as uci config variables.


Signed-off-by: Marcin Jurkowski <[email protected]>
---
Index: utils/owfs/Makefile
===================================================================
--- utils/owfs/Makefile (revision 35892)
+++ utils/owfs/Makefile (working copy)
@@ -196,8 +196,17 @@
 define Package/owfs/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owfs $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owfs.conf $(1)/etc/config/owfs
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owfs.init $(1)/etc/init.d/owfs
+       mkdir -p $(1)/mnt/owfs
 endef
 
+define Package/owfs/conffiles
+/etc/config/owfs
+endef
+
 define Package/owshell/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owget $(1)/usr/bin/
@@ -211,18 +220,41 @@
 define Package/owserver/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owserver $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owserver.conf $(1)/etc/config/owserver
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owserver.init $(1)/etc/init.d/owserver
 endef
 
+define Package/owserver/conffiles
+/etc/config/owserver
+endef
+
 define Package/owhttpd/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owhttpd $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owhttpd.conf $(1)/etc/config/owhttpd
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owhttpd.init $(1)/etc/init.d/owhttpd
 endef
 
+define Package/owhttpd/conffiles
+/etc/config/owhttpd
+endef
+
 define Package/owftpd/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/owftpd $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/owftpd.conf $(1)/etc/config/owftpd
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/owftpd.init $(1)/etc/init.d/owftpd
 endef
 
+define Package/owftpd/conffiles
+/etc/config/owftpd
+endef
 
 define Package/libow/install
        $(INSTALL_DIR) $(1)/usr/lib
Index: utils/owfs/files/owfs.conf
===================================================================
--- utils/owfs/files/owfs.conf  (revision 0)
+++ utils/owfs/files/owfs.conf  (working copy)
@@ -0,0 +1,11 @@
+config owfs 'owfs'
+       option enabled 0
+       option uid 0
+       option gid 0
+       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'
Index: utils/owfs/files/owfs.init
===================================================================
--- utils/owfs/files/owfs.init  (revision 0)
+++ utils/owfs/files/owfs.init  (working copy)
@@ -0,0 +1,75 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2012 OpenWrt.org
+
+START=99
+
+SERVICE_WRITE_PID=1
+SERVICE_DAEMONIZE=1
+
+# Workaround insufficient /dev/fuse permissions and the lack of /etc/fuse.conf
+DEFAULT_SERVICE_UID=0
+DEFAULT_SERVICE_GID=0
+
+append_device() {
+       append devices "$1"
+}
+
+
+start_owfs_daemon() {
+       local program="$1"
+       local config="$1"
+       local args="--foreground --error_print=1 $2"
+
+
+       config_get_bool enabled "$config" enabled 0
+       local enabled
+       [ "${enabled}" -eq 0 ] && return 1
+
+       local readonly
+       config_get_bool readonly "$config" readonly 0
+       [ "${readonly}" -eq 1 ] && append args "--readonly"
+
+       local error_level
+       config_get error_level "$config" error_level
+       [ -n "${error_level}" ] && append args "--error_level=${error_level}"
+
+       local options
+       config_get options "$config" options
+
+       devices=""
+       config_list_foreach "$config" devices append_device
+
+       config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID"
+       config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID"
+
+       service_start "/usr/bin/$program" $args $options $devices
+}
+
+start_owfs() {
+       local config="owfs"
+       local args=""
+
+       config_load "$config"
+
+       local mountpoint
+       config_get mountpoint "$config" mountpoint /mnt/owfs
+       append args "--mountpoint=${mountpoint}"
+
+       local fuse_allow_other
+       config_get_bool fuse_allow_other "$config" fuse_allow_other 0
+       [ "${fuse_allow_other}" -eq 1 ] && append args "--allow_other"
+
+       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}\""
+
+       start_owfs_daemon "$config" "$args"
+}
+
+start() {
+       start_owfs
+}
+
+stop() {
+       service_stop /usr/bin/owfs
+}
Index: utils/owfs/files/owftpd.conf
===================================================================
--- utils/owfs/files/owftpd.conf        (revision 0)
+++ utils/owfs/files/owftpd.conf        (working copy)
@@ -0,0 +1,9 @@
+config owftpd 'owftpd'
+       option enabled 0
+       option uid 0
+       option gid 0
+       option readonly 0
+       option port 21
+       option error_level 0
+       option options ''
+       list devices '-s localhost:4304'
Index: utils/owfs/files/owftpd.init
===================================================================
--- utils/owfs/files/owftpd.init        (revision 0)
+++ utils/owfs/files/owftpd.init        (working copy)
@@ -0,0 +1,72 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2012 OpenWrt.org
+
+START=99
+
+SERVICE_WRITE_PID=1
+SERVICE_DAEMONIZE=1
+
+# Needed for restricted TCP port 21
+DEFAULT_SERVICE_UID=0
+DEFAULT_SERVICE_GID=0
+
+append_device() {
+       append devices "$1"
+}
+
+
+start_owfs_daemon() {
+       local program="$1"
+       local config="$1"
+       local args="--foreground --error_print=1 $2"
+
+
+       config_get_bool enabled "$config" enabled 0
+       local enabled
+       [ "${enabled}" -eq 0 ] && return 1
+
+       local readonly
+       config_get_bool readonly "$config" readonly 0
+       [ "${readonly}" -eq 1 ] && append args "--readonly"
+
+       local error_level
+       config_get error_level "$config" error_level
+       [ -n "${error_level}" ] && append args "--error_level=${error_level}"
+
+       local options
+       config_get options "$config" options
+
+       devices=""
+       config_list_foreach "$config" devices append_device
+
+       config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID"
+       config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID"
+
+       service_start "/usr/bin/$program" $args $options $devices
+}
+
+start_owftpd() {
+       local config="owftpd"
+       local args=""
+
+       config_load "$config"
+
+       local port
+       config_get port "$config" port
+       [ -n "${port}" ] && append args "--port=${port}"
+
+       local max_connections
+       config_get max_connections "$config" max_connections
+       [ -n "${max_connections}" ] && append args 
"--max_connections=${max_connections}"
+
+       start_owfs_daemon "$config" "$args"
+}
+
+
+start() {
+       start_owftpd
+}
+
+stop() {
+       service_stop /usr/bin/owftpd
+}
Index: utils/owfs/files/owhttpd.conf
===================================================================
--- utils/owfs/files/owhttpd.conf       (revision 0)
+++ utils/owfs/files/owhttpd.conf       (working copy)
@@ -0,0 +1,9 @@
+config owhttpd 'owhttpd'
+       option enabled 0
+       option uid 65534
+       option gid 65534
+       option readonly 0
+       option port 3001
+       option error_level 0
+       option options ''
+       list devices '-s localhost:4304'
Index: utils/owfs/files/owhttpd.init
===================================================================
--- utils/owfs/files/owhttpd.init       (revision 0)
+++ utils/owfs/files/owhttpd.init       (working copy)
@@ -0,0 +1,71 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2012 OpenWrt.org
+
+START=99
+
+SERVICE_WRITE_PID=1
+SERVICE_DAEMONIZE=1
+
+DEFAULT_SERVICE_UID=65534
+DEFAULT_SERVICE_GID=65534
+
+append_device() {
+       append devices "$1"
+}
+
+
+start_owfs_daemon() {
+       local program="$1"
+       local config="$1"
+       local args="--foreground --error_print=1 $2"
+
+
+       config_get_bool enabled "$config" enabled 0
+       local enabled
+       [ "${enabled}" -eq 0 ] && return 1
+
+       local readonly
+       config_get_bool readonly "$config" readonly 0
+       [ "${readonly}" -eq 1 ] && append args "--readonly"
+
+       local error_level
+       config_get error_level "$config" error_level
+       [ -n "${error_level}" ] && append args "--error_level=${error_level}"
+
+       local options
+       config_get options "$config" options
+
+       devices=""
+       config_list_foreach "$config" devices append_device
+
+       config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID"
+       config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID"
+
+       service_start "/usr/bin/$program" $args $options $devices
+}
+
+start_owhttpd() {
+       local config="owhttpd"
+       local args=""
+
+       config_load "$config"
+
+       local port
+       config_get port "$config" port
+       [ -n "${port}" ] && append args "--port=${port}"
+
+       local max_connections
+       config_get max_connections "$config" max_connections
+       [ -n "${max_connections}" ] && append args 
"--max_connections=${max_connections}"
+
+       start_owfs_daemon "$config" "$args"
+}
+
+
+start() {
+       start_owhttpd
+}
+
+stop() {
+       service_stop /usr/bin/owhttpd
+}
Index: utils/owfs/files/owserver.conf
===================================================================
--- utils/owfs/files/owserver.conf      (revision 0)
+++ utils/owfs/files/owserver.conf      (working copy)
@@ -0,0 +1,9 @@
+config owserver 'owserver'
+       option enabled 0
+       option uid 65534
+       option gid 65534
+       option readonly 0
+       option port 4304
+       option error_level 0
+       option options ''
+       list devices '-d /dev/ttyUSB0'
Index: utils/owfs/files/owserver.init
===================================================================
--- utils/owfs/files/owserver.init      (revision 0)
+++ utils/owfs/files/owserver.init      (working copy)
@@ -0,0 +1,70 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2009-2012 OpenWrt.org
+
+START=98
+
+SERVICE_WRITE_PID=1
+SERVICE_DAEMONIZE=1
+
+DEFAULT_SERVICE_UID=65534
+DEFAULT_SERVICE_GID=65534
+
+append_device() {
+       append devices "$1"
+}
+
+
+start_owfs_daemon() {
+       local program="$1"
+       local config="$1"
+       local args="--foreground --error_print=1 $2"
+
+
+       config_get_bool enabled "$config" enabled 0
+       local enabled
+       [ "${enabled}" -eq 0 ] && return 1
+
+       local readonly
+       config_get_bool readonly "$config" readonly 0
+       [ "${readonly}" -eq 1 ] && append args "--readonly"
+
+       local error_level
+       config_get error_level "$config" error_level
+       [ -n "${error_level}" ] && append args "--error_level=${error_level}"
+
+       local options
+       config_get options "$config" options
+
+       devices=""
+       config_list_foreach "$config" devices append_device
+
+       config_get SERVICE_UID "$config" uid "$DEFAULT_SERVICE_UID"
+       config_get SERVICE_GID "$config" gid "$DEFAULT_SERVICE_GID"
+
+       service_start "/usr/bin/$program" $args $options $devices
+}
+
+start_owserver() {
+       local config="owserver"
+       local args=""
+
+       config_load "$config"
+
+       local port
+       config_get port "$config" port
+       [ -n "${port}" ] && append args "--port=${port}"
+
+       local max_connections
+       config_get max_connections "$config" max_connections
+       [ -n "${max_connections}" ] && append args 
"--max_connections=${max_connections}"
+
+       start_owfs_daemon "$config" "$args"
+}
+
+start() {
+       start_owserver
+}
+
+stop() {
+       service_stop /usr/bin/owserver
+}
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to