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.
121 lines
4.4 KiB
Bash
121 lines
4.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (C) 2018 devolo AG
|
|
#
|
|
|
|
# read baptization config and store it in uci state
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/system.sh
|
|
. /lib/delos-functions.sh
|
|
|
|
clear_delos_baptization() {
|
|
uci_toggle_state delos baptization "" baptization
|
|
}
|
|
|
|
# create/clear section
|
|
clear_delos_baptization
|
|
# transfer all baptization data to uci config file (linux-host legacy devices)
|
|
baptization.config 2>/dev/null | while IFS== read key val; do
|
|
if [ "$key" = "DlanMacAddress" -o \
|
|
"$key" = "MacAddress0" -o \
|
|
"$key" = "MacAddress1" ]; then
|
|
val=$(macaddr_canonicalize "$val")
|
|
fi
|
|
uci_toggle_state delos baptization "$key" "$val"
|
|
done
|
|
# compatibility -> baptization.config to devolo WiFi pro 1xxxy devices
|
|
bpt_copy() {
|
|
uci_toggle_state delos baptization $2 $(uci_get_state delos baptization $1)
|
|
}
|
|
bpt_copy_default() {
|
|
[ -n "$(uci_get_state delos baptization $2)" ] || bpt_copy $1 $2
|
|
}
|
|
bpt_copy_if_exist() {
|
|
[ -n "$(uci_get_state delos baptization $1)" ] && bpt_copy $1 $2
|
|
}
|
|
# keep compatibility with devolo WiFi pro 1xxxy and linux-host updated devices
|
|
# delos WiFi pro 1xxxy has 'ssh' baptized and linux-host devices have 'Telnetd' baptized
|
|
# first copy 'Telnetd' to 'Ssh' then copy 'ssh' only if it exist otherwise 'Ssh' would be deleted
|
|
bpt_copy Telnetd Ssh
|
|
bpt_copy_if_exist ssh Ssh
|
|
bpt_copy shell Shell
|
|
bpt_copy DlanDevicePassword SecurityId
|
|
|
|
# We don't want to copy intermediate linux host baptization from production
|
|
if [ "no" == "$(uci_get_state delos baptization ProductionCompleted)" -o "cal_image" == "$(uci_get_state delos baptization OemVariant)" ]; then
|
|
clear_delos_baptization
|
|
fi
|
|
|
|
# override with boot env when existing
|
|
( . "./30_uboot-envtools" ) 2>/dev/null
|
|
# transfer all baptization data from uboot config to uci config file
|
|
# only access delos baptization, ignore other keys
|
|
baptization="SecurityId Shell Ssh MT OemVariant SerialNumber
|
|
DeviceType ProductionDate ProductionPTSVersion WiFiMacAddress0
|
|
WiFiMacAddress1 MacAddress0 MacAddress1 DlanMacAddress
|
|
DlanSecurityID DlanFactoryNPW ProductionCompleted FwBootSource
|
|
PwdFwknopd PwdGhnConfig PwdGhnUnlockSector0
|
|
CalibrationMode PS WiFiCountryCode Tr069 ConfigSyncDomain "
|
|
for key in $baptization
|
|
do
|
|
val=$(fw_printenv -n $key 2>&1)
|
|
case $? in
|
|
0)
|
|
uci_toggle_state delos baptization "$key" "$val"
|
|
;;
|
|
*)
|
|
#ignore
|
|
;;
|
|
esac
|
|
done
|
|
# compatibility -> old to new settings of delos-5
|
|
bpt_copy_default SecurityId DlanSecurityID
|
|
# backward compatibility, new boot environment overrides all!
|
|
bpt_copy DlanSecurityID SecurityId
|
|
bpt_copy DlanSecurityID DlanDevicePassword
|
|
# leave out ssh,shell, was never used by delos
|
|
# derived values:
|
|
DlanSecurityID=$(uci_get_state delos baptization DlanSecurityID)
|
|
hpavkey 2>/dev/null && uci_toggle_state delos baptization DlanDAK $(hpavkey -D $DlanSecurityID)
|
|
|
|
# move security ids not to be accessible by ubus to separate config state file
|
|
uci_toggle_state delos-private baptization "" baptization
|
|
keys="DlanSecurityID SecurityId DlanDevicePassword DlanFactoryNPW DlanDAK
|
|
PwdGhnConfig PwdGhnUnlockSector0 PwdFwknopd"
|
|
for key in $keys; do
|
|
uci_toggle_state delos-private baptization $key "$(uci_get_state delos baptization $key)"
|
|
uci_revert_state delos baptization $key
|
|
done
|
|
|
|
|
|
# create /etc/delos-image when not supplied by rootfs image (ipq806x target)
|
|
devicetype=$(uci_get_state delos baptization DeviceType)
|
|
if [ -n "$devicetype" ] && [ ! -e /etc/delos-image ] && [ ! -e /rom/etc/delos-image ]; then
|
|
echo "DEVICE_TYPE=$devicetype" >/etc/delos-image
|
|
fi
|
|
|
|
uci_get delos delos device_type >/dev/null || (
|
|
. /etc/delos-image 2>/dev/null && [ -n "$DEVICE_TYPE" ] && uci_set delos delos device_type "$DEVICE_TYPE"
|
|
uci_commit delos
|
|
)
|
|
|
|
if [ "$(uci_get_state delos baptization Shell)" = "1" ] || dvl_is_internal_firmware || dvl_is_pts_firmware; then
|
|
# console login shell is /tmp/bin/ash... see /etc/inittab
|
|
mkdir -p /tmp/bin
|
|
ln -s /bin/ash /tmp/bin/ash
|
|
fi
|
|
|
|
value="normal"
|
|
case "$(uci_get delos delos device_type)" in
|
|
1200wifiac|zuse|turing|hamilton|hamming|valencia)
|
|
bogomips=$(cat /proc/cpuinfo | grep BogoMIPS | sed -e 's/^.*: //' | sed -e 's/\..*$//')
|
|
[ -n "$bogomips" ] && [ "$bogomips" -lt 100 ] && value="slow"
|
|
;;
|
|
esac
|
|
uci_toggle_state delos bootloader "" bootloader
|
|
uci_toggle_state delos bootloader type "$value"
|
|
|
|
# keep this file for the next boot
|
|
exit 1
|