#!/bin/sh /etc/rc.common
|
|
|
|
START=90
|
|
USE_PROCD=1
|
|
PROG=/usr/bin/device-observatory
|
|
OPTS=""
|
|
|
|
|
|
boot() {
|
|
local dev="$(uci get -q device-observatory.@setup[0].dev | cut -d ' ' -f 1)"
|
|
|
|
# Wait for interface to be up
|
|
ubus -t 15 wait_for network.interface network.${dev:-localhost} 2>/dev/null
|
|
rc_procd start_service
|
|
}
|
|
|
|
xappend() {
|
|
local name="$2" value="$1"
|
|
OPTS="$OPTS --${name//_/-} ${value//'/\\'}"
|
|
}
|
|
|
|
append_opts() {
|
|
local name value cfg="$1"; shift
|
|
for name in $*; do
|
|
config_get value "$cfg" "$name"
|
|
[ -n "$value" ] && xappend "$value" "$name"
|
|
done
|
|
}
|
|
|
|
append_opts_list() {
|
|
local name cfg="$1"; shift
|
|
for name in $*; do
|
|
config_list_foreach "$cfg" "$name" xappend "$name"
|
|
done
|
|
}
|
|
|
|
create_monitor_interface() {
|
|
local ifce="$1" n=$(echo -n "$1" | tail -c 1)
|
|
|
|
if [ ! -d "/sys/class/net/$ifce/" ]; then
|
|
iw phy "phy$n" interface add "$ifce" type monitor
|
|
ip link set dev "$ifce" up
|
|
fi
|
|
}
|
|
|
|
start_instance() {
|
|
local cfg="$1"
|
|
|
|
OPTS=""
|
|
|
|
config_list_foreach "$cfg" "create_monitor" create_monitor_interface "create_monitor"
|
|
|
|
append_opts_list "$cfg" dev mdev
|
|
append_opts "$cfg" mac_db port_db json_output device_timeout webserver_port webserver_path track_localhost
|
|
|
|
procd_open_instance
|
|
procd_set_param command $PROG $OPTS
|
|
procd_set_param stderr 1
|
|
procd_set_param stdout 0
|
|
procd_close_instance
|
|
}
|
|
|
|
start_service() {
|
|
config_load 'device-observatory'
|
|
config_foreach start_instance 'setup'
|
|
}
|