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