| #!/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" |
| } |