Merge pull request #1150 from sofia-riese/patch-1

refactor(load_ddns): replace recursion with while loop
This commit is contained in:
juewuy
2026-01-18 10:41:38 +08:00
committed by GitHub

View File

@@ -135,44 +135,45 @@ rev_ddns_service() {
sleep 1 sleep 1
fi fi
} }
load_ddns() { load_ddns() {
ddns_dir=/etc/config/ddns while true; do
tmp_dir="$TMPDIR"/ddns ddns_dir=/etc/config/ddns
[ ! -f "$ddns_dir" ] && { tmp_dir="$TMPDIR"/ddns
echo -e "\033[31m本脚本依赖OpenWrt内置的DDNS服务,当前设备无法运行,已退出!\033[0m" [ ! -f "$ddns_dir" ] && {
sleep 1 echo -e "\033[31m本脚本依赖OpenWrt内置的DDNS服务,当前设备无法运行,已退出!\033[0m"
return 1 sleep 1
} return 1
nr=0 }
cat "$ddns_dir" | grep 'config service' | awk '{print $3}' | sed "s/'//g" | sed 's/"//g' >"$tmp_dir" nr=0
echo ----------------------------------------------- cat "$ddns_dir" | grep 'config service' | awk '{print $3}' | sed "s/'//g" | sed 's/"//g' >"$tmp_dir"
echo -e "列表 域名 启用 IP地址" echo "-----------------------------------------------"
echo ----------------------------------------------- echo -e "列表 域名 启用 IP地址"
[ -s "$tmp_dir" ] && for service in $(cat "$tmp_dir"); do echo "-----------------------------------------------"
#echo $service >>$tmp_dir [ -s "$tmp_dir" ] && for service in $(cat "$tmp_dir"); do
nr=$((nr + 1)) # echo $service >>$tmp_dir
enabled=$(uci get ddns."$service".enabled 2>/dev/null) nr=$((nr + 1))
domain=$(uci get ddns."$service".domain 2>/dev/null) enabled=$(uci get ddns."$service".enabled 2>/dev/null)
local_ip=$(sed '1!G;h;$!d' /var/log/ddns/$service.log 2>/dev/null | grep -E 'Registered IP' | tail -1 | awk -F "'" '{print $2}' | tr -d "'\"") domain=$(uci get ddns."$service".domain 2>/dev/null)
echo -e " $nr $domain $enabled $local_ip" local_ip=$(sed '1!G;h;$!d' /var/log/ddns/"$service".log 2>/dev/null | grep -E 'Registered IP' | tail -1 | awk -F "'" '{print $2}' | tr -d "'\"")
done echo -e " $nr $domain $enabled $local_ip"
echo -e " $((nr + 1)) 添加DDNS服务" done
echo -e " 0 退出" echo -e " $((nr + 1)) 添加DDNS服务"
echo ----------------------------------------------- echo -e " 0 退出"
read -p "请输入对应序号 > " num echo "-----------------------------------------------"
if [ -z "$num" -o "$num" = 0 ]; then read -r -p "请输入对应序号 > " num
i= if [ -z "$num" ] || [ "$num" = 0 ]; then
elif [ "$num" -gt $nr ]; then i=
set_ddns_type rm -rf "$tmp_dir"
load_ddns break
elif [ "$num" -gt 0 -a "$num" -le $nr ]; then elif [ "$num" -gt $nr ]; then
service=$(cat $tmp_dir | sed -n "$num"p) set_ddns_type
rev_ddns_service elif [ "$num" -gt 0 ] && [ "$num" -le $nr ]; then
load_ddns service=$(cat "$tmp_dir" | sed -n "$num"p)
else rev_ddns_service
echo "请输入正确数字!" && load_ddns else
fi echo "请输入正确数字!"
rm -rf "$tmp_dir" sleep 1
fi
done
} }