small-package/luci-app-iperf3-server/root/etc/init.d/iperf3-server

58 lines
1.5 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
START=99
USE_PROCD=1
LOGGER="logger -t [iPerf3-Server]"
start_service() {
stop_service
local basic_list="main_enable"
local server_list="port delay extra_options enable_server"
for i in $(echo $basic_list)
do
local eval $i="$(uci_get_by_type iperf3-server 0 $i)"
done ; unset i
if [ "$main_enable" == 1 ]
then
server_number=$(uci show iperf3-server 2> /dev/null | egrep '@servers\[[0-9]\]+=servers' | wc -l)
# server_number=$(uci show iperf3-server 2> /dev/null | egrep -o '@servers\[[0-9]\]+=servers' | awk 'END {print}' | egrep -o "[0-9]")
for u in $(seq 0 $((${server_number} - 1)))
do
{
for i in $server_list
do
eval ${i}=$(uci_get_by_type servers $u $i)
done ; unset i
if [ "$enable_server" == 1 ]
then
sleep $delay
$LOGGER "Starting iPerf3 Server [$u] with Port [$port] ..."
# $(command -v iperf3) -s -D -p $port $extra_options
procd_open_instance
procd_set_param command sleep $delay ; $(command -v iperf3) -s -D -p $port $extra_options
procd_set_param respawn 3000 3 10
procd_close_instance
fi
unset enable_server delay
} &
done ; unset u
else
$LOGGER "iPerf3 Server is disabled ..."
stop_service
fi
}
stop_service() {
$LOGGER "Stopping iPerf3 Server ..."
ps -efww | grep 'iperf3 -s -D' | grep -v 'grep' | awk '{print $1}' | xargs kill -9
}
service_triggers() {
procd_add_reload_trigger "iperf3-server"
}
uci_get_by_type() {
local ret=$(uci get iperf3-server.@$1[$2].$3 2>/dev/null)
echo ${ret:=$4}
}