You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.6 KiB
Bash
166 lines
4.6 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
START=98
|
|
|
|
USE_PROCD=1
|
|
NAME=fwuagent
|
|
PROG=/usr/bin/fwuagent
|
|
PROPERTIES=/tmp/fwuagent_prop.json
|
|
disabled=0
|
|
|
|
if [ -f /lib/ar71xx.sh ]; then
|
|
PLATFORM=ar71xx
|
|
. /lib/ar71xx.sh
|
|
elif [ -f /lib/ipq806x.sh ]; then
|
|
PLATFORM=ipq806x
|
|
. /lib/ipq806x.sh
|
|
fi
|
|
board=$(${PLATFORM}_board_name)
|
|
|
|
. /lib/delos-functions.sh
|
|
|
|
check_guest_wifi() {
|
|
local radio="$2"
|
|
|
|
if [ "$(config_get "$1" dvl_guest)" = 1 -a "$(config_get "$1" device)" = "$radio" ]; then
|
|
if [ "$(config_get "$1" disabled)" = "0" ]; then
|
|
echo "1"
|
|
else
|
|
echo "0"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
is_guest_wifi_enabled() {
|
|
local radio="$1"
|
|
|
|
config_load wireless
|
|
config_foreach check_guest_wifi wifi-iface "$radio"
|
|
}
|
|
|
|
is_radio_enabled() {
|
|
local radio="$1"
|
|
|
|
if [ "$(uci get -q wireless.$radio.cfg_disabled)" = "0" ]; then
|
|
echo "1"
|
|
else
|
|
echo "0"
|
|
fi
|
|
}
|
|
|
|
create_feature_bits() {
|
|
local pc="$(uci get -q parental_control.@global[0].enabled)"
|
|
local sq="$(uci get -q station_quota.global.enabled)"
|
|
local ws="$(uci get -q wifi_schedule.@global[0].enabled)"
|
|
local son="$(uci get -q wireless.son.enabled)"
|
|
local ieee80211r="$(uci get -q wireless.son.ieee80211r)"
|
|
local radio24="$(is_radio_enabled wifi0)"
|
|
local radio5="$(is_radio_enabled wifi1)"
|
|
local cs="$(uci get -q configsync.global.enabled)"
|
|
local guest_switch_off="$(uci get -q wireless.guest_wifi.auto_switch_off)"
|
|
local guest24="$(is_guest_wifi_enabled wifi0)"
|
|
local guest5="$(is_guest_wifi_enabled wifi1)"
|
|
|
|
local dhcp="0"
|
|
[ ! "$(uci get -q network.lan.proto)" = "dhcp" ] || dhcp="1"
|
|
|
|
local location="0"
|
|
[ -z "$(uci get -q system.@system[0].location)" ] || location="1"
|
|
|
|
json_add_string feature_bits "$pc,$sq,$ws,$son,$ieee80211r,$radio24,$radio5,$cs,$guest_switch_off,$guest24,$guest5,$dhcp,$location"
|
|
}
|
|
|
|
create_properties() {
|
|
. /usr/share/libubox/jshn.sh
|
|
. /etc/delos-version
|
|
. /etc/delos-image
|
|
|
|
config_load delos
|
|
config_get oem_variant baptization OemVariant
|
|
config_get baptized_device_type baptization DeviceType
|
|
config_get baptized_mt baptization MT
|
|
if [ "$baptized_device_type" != "" ]; then
|
|
DEVICE_TYPE="$baptized_device_type"
|
|
fi
|
|
|
|
json_init
|
|
json_add_string device_type "$DEVICE_TYPE"
|
|
json_add_string firmware_date "$FIRMWARE_DATE"
|
|
json_add_string firmware_distribution "$(uci get fwuagent.device.firmware_distribution)"
|
|
json_add_string firmware_os "$(uname)"
|
|
json_add_string firmware_version "$FIRMWARE_VERSION"
|
|
json_add_string oem_variant "$oem_variant"
|
|
json_add_string device_mt "$baptized_mt"
|
|
json_add_string automatic_update "$(uci get fwuagent.service.automatic_update)"
|
|
json_add_string agent_version "$(opkg info fwuagent | grep Version | cut -d' ' -f2)"
|
|
create_feature_bits
|
|
json_close_object
|
|
echo "$(json_dump)" > "$PROPERTIES"
|
|
}
|
|
|
|
start_service() {
|
|
config_load delos
|
|
config_get serial baptization SerialNumber
|
|
config_load fwuagent
|
|
config_get_bool disabled service disabled
|
|
config_get log_level service log_level
|
|
config_get_bool ghn_agents service ghn_agents
|
|
|
|
case "$board" in
|
|
dlan2-2400-ac|\
|
|
ew7479cap|\
|
|
ap-dk01.1-c1)
|
|
bootloader_mtd="mtd6"
|
|
;;
|
|
*)
|
|
bootloader_mtd="mtd0"
|
|
;;
|
|
esac
|
|
|
|
config_get hawkbit_server hawkbit server
|
|
# use the dev server if we are not running a production firmware
|
|
dvl_is_internal_firmware && config_get hawkbit_server hawkbit dev_server "hawkbit-dev.devolo.net"
|
|
|
|
# set default log level if none is set
|
|
if [ -z "$log_level" ]; then
|
|
log_level="INFO"
|
|
uci_set fwuagent service log_level "$log_level"
|
|
uci_commit fwuagent
|
|
fi
|
|
|
|
# the parameter must be omitted when the option is not enabled
|
|
ghn_agents_opt=""
|
|
if [ "$ghn_agents" = "1" ]; then
|
|
ghn_agents_opt="--ghn-agents"
|
|
fi
|
|
|
|
# create the properties that are reported to hawkBit
|
|
create_properties
|
|
|
|
procd_open_instance
|
|
procd_set_param command "$PROG" \
|
|
--client-certificate /etc/keys/delos-client-cert.pem \
|
|
--client-certificate-key /etc/keys/delos-client-key.pem \
|
|
--dormant "$disabled" \
|
|
--log-level "$log_level" \
|
|
--bootloader-mtd "$bootloader_mtd" \
|
|
--device-id "$serial" \
|
|
--hawkbit-server "$hawkbit_server" \
|
|
--installed-flash-type "nor" \
|
|
--properties-file "$PROPERTIES" \
|
|
$ghn_agents_opt
|
|
procd_set_param respawn 60 10 0
|
|
procd_set_param stdout 1
|
|
procd_set_param stderr 1
|
|
procd_close_instance
|
|
}
|
|
|
|
service_triggers() {
|
|
procd_add_reload_trigger "fwuagent"
|
|
}
|
|
|
|
reload_service() {
|
|
stop
|
|
start
|
|
}
|