- #!/bin/sh /etc/rc.common
- # Copyright (C) 2015 OpenWrt.org
-
- START=60
- STOP=40
- USE_PROCD=1
-
- PROG=/usr/bin/nbd-server
- CONFIGFILE="/var/etc/nbd-server.conf"
-
-
- append_plain() {
- echo "$1" >> $CONFIGFILE
- }
-
- append_val_str() {
- local resultname="$1"
- local cfg="$2"
- local uciname="${3:-$1}"
- local value=
-
- config_get value "$cfg" "$uciname"
-
- if [ -z "$value" ]; then
- return
- fi
- append_plain "$resultname = $value"
- }
-
- append_val_bool() {
- local resultname="$1"
- local cfg="$2"
- local uciname="${3:-$1}"
- local value=
-
- config_get_bool value "$cfg" "$uciname"
- if [ -z "$value" ]; then
- return
- fi
-
- [ $value == 1 ] && value="true" || value="false"
- append_plain "$resultname = $value"
- }
-
- config_handle_generic() {
- local cfg="$1"
-
- append_plain "[generic]"
- append_val_str user "$cfg"
- append_val_str group "$cfg"
- append_val_str port "$cfg"
- append_val_str listenaddr "$cfg"
- append_val_bool allowlist "$cfg"
- append_val_str includedir "$cfg"
- append_val_bool oldstyle "$cfg"
-
- config_get_bool SERVICE_ENABLED "$cfg" enabled 0
- }
-
- config_handle_share() {
- local cfg="$1"
-
- append_plain
- append_plain "[$cfg]"
- append_val_str exportname "$cfg" filename
- append_val_str timeout "$cfg"
- append_val_str maxconnections "$cfg"
- append_val_str authfile "$cfg"
- append_val_str filesize "$cfg"
- append_val_str readonly "$cfg"
- append_val_str multifile "$cfg"
- append_val_str copyonwrite "$cfg"
- append_val_bool sparse_cow "$cfg"
- append_val_bool flush "$cfg"
- append_val_bool fua "$cfg"
- append_val_bool rotational "$cfg"
- append_val_bool sync "$cfg"
- append_val_bool discard "$cfg"
- append_val_str prerun "$cfg"
- append_val_str postrun "$cfg"
- append_val_str virtstyle "$cfg"
- append_val_str port "$cfg" oldstyle_port
- append_val_str listenaddr "$cfg" oldstyle_listenaddr
- }
-
- start_instance() {
- local cfg="$1"
- local enabled
-
- config_get_bool enabled "$cfg" 'enabled' '0'
- [ "$enabled" = 0 ] && return 1
-
- procd_open_instance
- procd_set_param command $PROG --config-file=$CONFIGFILE
- procd_set_param file $CONFIGFILE
- procd_close_instance
- }
-
- start_service() {
- config_load nbd-server
-
- mkdir -p $(dirname $CONFIGFILE)
- echo "# auto-generated config file from /etc/config/nbd-server" > $CONFIGFILE
- config_foreach config_handle_generic nbd-server
- config_foreach config_handle_share share
-
- config_foreach start_instance nbd-server
- }
-
- service_triggers() {
- procd_add_reload_trigger "nbd-server"
- }
|