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.
143 lines
3.8 KiB
Bash
143 lines
3.8 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (C) 2018 devolo AG
|
|
#
|
|
|
|
[ -f /etc/delos-version ] && . /etc/delos-version
|
|
|
|
[ -f /usr/share/libubox/jshn.sh ] && . /usr/share/libubox/jshn.sh
|
|
|
|
dvl_is_developer_firmware() {
|
|
echo "$FIRMWARE_VERSION" | grep -q '\.D'
|
|
}
|
|
|
|
dvl_is_internal_firmware() {
|
|
echo "$FIRMWARE_VERSION" | grep -q '\.[ND]'
|
|
}
|
|
|
|
dvl_is_pts_firmware() {
|
|
[ -e /etc/delos-pts-image-marker ]
|
|
}
|
|
|
|
dvl_check_and_set_wifi_cfg_disabled() {
|
|
if [ -n "$(uci_get wireless wifi0)" ] ; then
|
|
# function only matters if two radios are available
|
|
if [ -n "$(uci_get wireless wifi1)" ] ; then
|
|
# both cfg_disabled options must be set from WebUI or App or TR69
|
|
# if both are unset -> switch both radios on
|
|
# if both radios are configured the same -> switch both on
|
|
# if the radios are configured different -> leave the options as they are
|
|
if [ "$(uci_get wireless wifi0 cfg_disabled 0)" = "$(uci_get wireless wifi1 cfg_disabled 0)" ] ; then
|
|
uci_set wireless wifi0 cfg_disabled 0
|
|
uci_set wireless wifi1 cfg_disabled 0
|
|
fi
|
|
fi
|
|
fi
|
|
}
|
|
|
|
dvl_time_to_mseconds() {
|
|
local time="$1"
|
|
# use "$(expr $x + 0)" to remove leading 0, because shell would "08" or "09" interpret as illegal octal number
|
|
local hours=$(expr ${time%%:*} + 0)
|
|
local minutes=$(expr ${time##*:} + 0)
|
|
|
|
local mseconds=$(( ( $hours * 3600 + $minutes * 60 ) * 1000 ))
|
|
|
|
echo "$mseconds"
|
|
}
|
|
|
|
dvl_make_default_ssid() {
|
|
local vap="$1"
|
|
|
|
local format="${_DVL_SSID_FORMAT:-sn-3}"
|
|
local src="${format%-*}"
|
|
local num="${format##*-}"
|
|
|
|
local prefix
|
|
case "$vap" in
|
|
main)
|
|
prefix="${_DVL_SSID_MAIN_PREFIX:-devolo-}"
|
|
;;
|
|
guest)
|
|
prefix="${_DVL_SSID_GUEST_PREFIX:-devolo-guest-}"
|
|
;;
|
|
*)
|
|
prefix=""
|
|
;;
|
|
esac
|
|
|
|
local base
|
|
case "$src" in
|
|
sn)
|
|
base="$(uci_get_state delos baptization SerialNumber)"
|
|
;;
|
|
wifimac)
|
|
base="$(uci_get_state delos baptization WiFiMacAddress)"
|
|
[ -z "$base" ] && base="$(uci_get_state delos baptization WiFiMacAddress0)"
|
|
base=$(echo "${base//:/}" | tr 'A-Z' 'a-z')
|
|
;;
|
|
*)
|
|
base=""
|
|
;;
|
|
esac
|
|
|
|
echo "${prefix}${base:$((-$num))}"
|
|
}
|
|
|
|
dvl_check_oemvariant() {
|
|
(
|
|
local trailer="$1"
|
|
|
|
local result=1
|
|
local bap="$(uci_get_state delos baptization OemVariant)"
|
|
local t keys k v
|
|
|
|
json_load "$trailer"
|
|
json_get_type t "oem_variants"
|
|
|
|
if [ "$t" = "array" ]; then
|
|
json_select "oem_variants"
|
|
|
|
json_get_keys keys
|
|
for k in $keys; do
|
|
json_get_var v "$k"
|
|
[ "$bap" = "$v" ] && result=0
|
|
done
|
|
|
|
json_select ..
|
|
else
|
|
[ -z "$bap" ] && result=0
|
|
fi
|
|
|
|
exit $result
|
|
)
|
|
}
|
|
|
|
dvl_insert_customization_info_file() {
|
|
local filename="$1"
|
|
|
|
local variant="$(uci_get customization config active_variant)"
|
|
local vendor_name="$(uci_get customization info vendor_name)"
|
|
local vendor_url="$(uci_get customization info vendor_url)"
|
|
local product_name="$(uci_get customization info product_name)"
|
|
|
|
sed -i \
|
|
-e "s~___ACTIVE_VARIANT___~$variant~" \
|
|
-e "s~___VENDOR_NAME___~$vendor_name~" \
|
|
-e "s~___VENDOR_URL___~$vendor_url~" \
|
|
-e "s~___PRODUCT_NAME___~$product_name~" \
|
|
"$filename"
|
|
}
|
|
|
|
dvl_insert_customization_info() {
|
|
local srcdir="$1"
|
|
local srcfile="$2"
|
|
local dstdir="${3:-${srcdir}}"
|
|
|
|
local tmpfile=$(mktemp /tmp/customization.XXXXXX)
|
|
|
|
cp -f "$srcdir"/"$srcfile" "$tmpfile"
|
|
dvl_insert_customization_info_file "$tmpfile"
|
|
mv -f "$tmpfile" "$dstdir"/"$srcfile"
|
|
}
|