From 253865d22f748fd949a7ada4199d9673cf2f521b Mon Sep 17 00:00:00 2001 From: Jakob Olsson Date: Wed, 9 Jan 2019 14:43:47 +0100 Subject: [PATCH] netmode: save wet config when entering repeater mode #16601 --- .../scripts/post/apply_wet_cfg.sh | 37 +++++++++++++++++++ .../scripts/pre/save_wet_cfg.sh | 37 +++++++++++++++++++ netmode/files/lib/functions/netmode.sh | 4 ++ 3 files changed, 78 insertions(+) create mode 100755 netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/post/apply_wet_cfg.sh create mode 100755 netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/pre/save_wet_cfg.sh diff --git a/netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/post/apply_wet_cfg.sh b/netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/post/apply_wet_cfg.sh new file mode 100755 index 000000000..cacc06c10 --- /dev/null +++ b/netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/post/apply_wet_cfg.sh @@ -0,0 +1,37 @@ +#if wet in wireless config and SSID nad KEY was saved for it, apply to config +#!/bin/sh + +. /usr/share/libubox/jshn.sh +. /lib/functions.sh + +parse_wet_json() +{ + local interface=$1 + local mode key encryption ssid connect_bssid + + config_get mode $interface mode + [ "$mode" = "wet" ] || return + + json_load "$(cat /tmp/netmodecfg)" 2> /dev/null + json_get_var ssid ssid + json_get_var key key + json_get_var encryption encryption + json_get_var connect_bssid connect_bssid + + uci -q set wireless.$1.key="$key" + uci -q set wireless.$1.encryption="$encryption" + uci -q set wireless.$1.ssid="$ssid" + uci -q set wireless.$1.connect_bssid="$connect_bssid" + uci commit wireless +} + +apply_wet_cfg() +{ + [ -f /tmp/netmodecfg ] || return + + config_load wireless + config_foreach parse_wet_json "wifi-iface" + + rm /tmp/netmodecfg 2> /dev/null +} + diff --git a/netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/pre/save_wet_cfg.sh b/netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/pre/save_wet_cfg.sh new file mode 100755 index 000000000..8bec1c425 --- /dev/null +++ b/netmode/files/etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/pre/save_wet_cfg.sh @@ -0,0 +1,37 @@ +#if mode wet in wireless config has SSID Key, save them +#!/bin/sh + +. /usr/share/libubox/jshn.sh +. /lib/functions.sh + +parse_wet_cfg() +{ + local interface=$1 + local mode key encryption ssid connect_bssid + + config_get mode $interface mode + [ "$mode" = "wet" ] || return + + config_get ssid $interface ssid + config_get key $interface key + config_get encryption $interface encryption + config_get connect_bssid $interface connect_bssid + + [ -n "$key" ] || return + [ -n "$encryption" ] || return + + json_init + json_add_string "ssid" "$ssid" + json_add_string "key" "$key" + json_add_string "encryption" "$encryption" + json_add_string "connect_bssid" "$connect_bssid" + + echo "`json_dump`" > /tmp/netmodecfg +} + +save_wet_cfg() +{ + config_load wireless + config_foreach parse_wet_cfg "wifi-iface" +} + diff --git a/netmode/files/lib/functions/netmode.sh b/netmode/files/lib/functions/netmode.sh index c99f4c1d9..8d229fd63 100644 --- a/netmode/files/lib/functions/netmode.sh +++ b/netmode/files/lib/functions/netmode.sh @@ -1,5 +1,7 @@ #!/bin/sh +. /etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/pre/save_wet_cfg.sh +. /etc/netmodes/repeater_mtk_5g_up_dual_down/scripts/post/apply_wet_cfg.sh . /lib/functions.sh . /usr/share/libubox/jshn.sh @@ -180,6 +182,7 @@ switch_netmode() { run_netmode_scripts $curmode "pre" logger -s -p user.info -t $0 "[netmode] Copying /etc/netmodes/$curmode in /etc/config" >/dev/console + save_wet_cfg for file in $(ls /etc/netmodes/$curmode/); do case "$file" in DETAILS|scripts) continue ;; @@ -187,6 +190,7 @@ switch_netmode() { cp /etc/netmodes/$curmode/$file /etc/config/ done sync + apply_wet_cfg local reboot=$(uci -q get netmode.$curmode.reboot)