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

#!/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"
}