nbd-server.init (2386B)
1 #!/bin/sh /etc/rc.common 2 # Copyright (C) 2015 OpenWrt.org 3 4 START=60 5 STOP=40 6 USE_PROCD=1 7 8 PROG=/usr/bin/nbd-server 9 CONFIGFILE="/var/etc/nbd-server.conf" 10 11 12 append_plain() { 13 echo "$1" >> $CONFIGFILE 14 } 15 16 append_val_str() { 17 local resultname="$1" 18 local cfg="$2" 19 local uciname="${3:-$1}" 20 local value= 21 22 config_get value "$cfg" "$uciname" 23 24 if [ -z "$value" ]; then 25 return 26 fi 27 append_plain "$resultname = $value" 28 } 29 30 append_val_bool() { 31 local resultname="$1" 32 local cfg="$2" 33 local uciname="${3:-$1}" 34 local value= 35 36 config_get_bool value "$cfg" "$uciname" 37 if [ -z "$value" ]; then 38 return 39 fi 40 41 [ $value == 1 ] && value="true" || value="false" 42 append_plain "$resultname = $value" 43 } 44 45 config_handle_generic() { 46 local cfg="$1" 47 48 append_plain "[generic]" 49 append_val_str user "$cfg" 50 append_val_str group "$cfg" 51 append_val_str port "$cfg" 52 append_val_str listenaddr "$cfg" 53 append_val_bool allowlist "$cfg" 54 append_val_str includedir "$cfg" 55 append_val_bool oldstyle "$cfg" 56 57 config_get_bool SERVICE_ENABLED "$cfg" enabled 0 58 } 59 60 config_handle_share() { 61 local cfg="$1" 62 63 append_plain 64 append_plain "[$cfg]" 65 append_val_str exportname "$cfg" filename 66 append_val_str timeout "$cfg" 67 append_val_str maxconnections "$cfg" 68 append_val_str authfile "$cfg" 69 append_val_str filesize "$cfg" 70 append_val_str readonly "$cfg" 71 append_val_str multifile "$cfg" 72 append_val_str copyonwrite "$cfg" 73 append_val_bool sparse_cow "$cfg" 74 append_val_bool flush "$cfg" 75 append_val_bool fua "$cfg" 76 append_val_bool rotational "$cfg" 77 append_val_bool sync "$cfg" 78 append_val_bool discard "$cfg" 79 append_val_str prerun "$cfg" 80 append_val_str postrun "$cfg" 81 append_val_str virtstyle "$cfg" 82 append_val_str port "$cfg" oldstyle_port 83 append_val_str listenaddr "$cfg" oldstyle_listenaddr 84 } 85 86 start_instance() { 87 local cfg="$1" 88 local enabled 89 90 config_get_bool enabled "$cfg" 'enabled' '0' 91 [ "$enabled" = 0 ] && return 1 92 93 procd_open_instance 94 procd_set_param command $PROG --config-file=$CONFIGFILE 95 procd_set_param file $CONFIGFILE 96 procd_close_instance 97 } 98 99 start_service() { 100 config_load nbd-server 101 102 mkdir -p $(dirname $CONFIGFILE) 103 echo "# auto-generated config file from /etc/config/nbd-server" > $CONFIGFILE 104 config_foreach config_handle_generic nbd-server 105 config_foreach config_handle_share share 106 107 config_foreach start_instance nbd-server 108 } 109 110 service_triggers() { 111 procd_add_reload_trigger "nbd-server" 112 }