From 522cad4e36c52c3158dc3130e8cb115e04debaa9 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Wed, 15 Jan 2020 01:25:30 +0800 Subject: [PATCH] luci-app-adguardhome: sync with upstream source --- package/ctcgfw/luci-app-adguardhome/Makefile | 4 +- .../luasrc/controller/AdGuardHome.lua | 8 +- .../luasrc/model/cbi/AdGuardHome/base.lua | 33 +++-- .../luasrc/model/cbi/AdGuardHome/log.lua | 2 +- .../luasrc/model/cbi/AdGuardHome/manual.lua | 2 +- .../luasrc/view/AdGuardHome/log.htm | 14 +- .../po/zh-cn/AdGuardHome.po | 28 +++- .../root/etc/init.d/AdGuardHome | 120 +++++++++++------- .../root/usr/share/AdGuardHome/firewall.start | 0 .../root/usr/share/AdGuardHome/update_core.sh | 28 ++-- .../root/usr/share/AdGuardHome/waitnet.sh | 10 +- 11 files changed, 160 insertions(+), 89 deletions(-) mode change 100644 => 100755 package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/firewall.start diff --git a/package/ctcgfw/luci-app-adguardhome/Makefile b/package/ctcgfw/luci-app-adguardhome/Makefile index deef25966e..f3b3c35589 100644 --- a/package/ctcgfw/luci-app-adguardhome/Makefile +++ b/package/ctcgfw/luci-app-adguardhome/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-adguardhome PKG_VERSION:=1.8 -PKG_RELEASE:=9 +PKG_RELEASE:=11 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) @@ -20,7 +20,7 @@ define Package/luci-app-adguardhome TITLE:=LuCI app for adguardhome PKG_MAINTAINER:= PKGARCH:=all - DEPENDS:=+wget + DEPENDS:=+!wget&&!curl:wget endef define Package/luci-app-adguardhome/description diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua index 5d41bd6437..96da08a953 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/controller/AdGuardHome.lua @@ -89,7 +89,13 @@ function get_log() return end http.prepare_content("text/plain; charset=utf-8") - local fdp=tonumber(fs.readfile("/var/run/lucilogpos")) or 0 + local fdp + if fs.access("/var/run/lucilogreload") then + fdp=0 + fs.remove("/var/run/lucilogreload") + else + fdp=tonumber(fs.readfile("/var/run/lucilogpos")) or 0 + end local f=io.open(logfile, "r+") f:seek("set",fdp) local a=f:read(2048000) or "" diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua index 45c57e5ca6..9e53163fb3 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/base.lua @@ -43,7 +43,6 @@ else uci:set("AdGuardHome","AdGuardHome","version",version) uci:set("AdGuardHome","AdGuardHome","binmtime",testtime) uci:save("AdGuardHome") - uci:commit("AdGuardHome") end e=version..e end @@ -192,12 +191,20 @@ o.default = "" o.datatype = "string" o.template = "AdGuardHome/AdGuardHome_chpass" o.optional = true ----- database protect -o = s:option(Flag, "keepdb", translate("Keep database when system upgrade")) -o.default = 0 -o.optional = true +---- upgrade protect +o = s:option(MultiValue, "upprotect", translate("Keep files when system upgrade")) +o:value("$binpath",translate("core bin")) +o:value("$configpath",translate("config file")) +o:value("$logfile",translate("log file")) +o:value("$workdir/data/sessions.db",translate("sessions.db")) +o:value("$workdir/data/stats.db",translate("stats.db")) +o:value("$workdir/data/querylog.json",translate("querylog.json")) +o:value("$workdir/data/filters",translate("filters")) +o.widget = "checkbox" +o.default = nil +o.optional=true ---- wait net on boot -o = s:option(Flag, "waitonboot", translate("Boot delay until network ok")) +o = s:option(Flag, "waitonboot", translate("On boot when network ok restart")) o.default = 1 o.optional = true ---- backup workdir on shutdown @@ -208,13 +215,15 @@ local name o:value("filters","filters") o:value("stats.db","stats.db") o:value("querylog.json","querylog.json") +o:value("sessions.db","sessions.db") o1:depends ("backupfile", "filters") o1:depends ("backupfile", "stats.db") o1:depends ("backupfile", "querylog.json") +o1:depends ("backupfile", "sessions.db") for name in fs.glob(workdir.."/data/*") do name=fs.basename (name) - if name~="filters" and name~="stats.db" and name~="querylog.json" then + if name~="filters" and name~="stats.db" and name~="querylog.json" and name~="sessions.db" then o:value(name,name) o1:depends ("backupfile", name) end @@ -260,7 +269,6 @@ o = s:option(TextValue, "downloadlinks",translate("Download links for update")) o.optional = false o.rows = 4 o.wrap = "soft" -o.size=111 o.cfgvalue = function(self, section) return fs.readfile("/usr/share/AdGuardHome/links.txt") end @@ -269,17 +277,21 @@ o.write = function(self, section, value) end fs.writefile("/var/run/lucilogpos","0") function m.on_commit(map) + if (fs.access("/var/run/AdGserverdis")) then + io.popen("/etc/init.d/AdGuardHome reload &") + return + end local ucitracktest=uci:get("AdGuardHome","AdGuardHome","ucitracktest") if ucitracktest=="1" then return elseif ucitracktest=="0" then io.popen("/etc/init.d/AdGuardHome reload &") else - if (fs.access("/var/run/AdGucitest")) then + if (fs.access("/var/run/AdGlucitest")) then uci:set("AdGuardHome","AdGuardHome","ucitracktest","0") io.popen("/etc/init.d/AdGuardHome reload &") else - fs.writefile("/var/run/AdGucitest","") + fs.writefile("/var/run/AdGlucitest","") if (ucitracktest=="2") then uci:set("AdGuardHome","AdGuardHome","ucitracktest","1") else @@ -287,7 +299,6 @@ function m.on_commit(map) end end uci:save("AdGuardHome") - uci:commit("AdGuardHome") end end return m \ No newline at end of file diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/log.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/log.lua index aa7f94a66b..5d18a88db4 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/log.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/log.lua @@ -12,5 +12,5 @@ t.readonly="readonly" local logfile=uci:get("AdGuardHome","AdGuardHome","logfile") or "" t.timereplace=(logfile~="syslog" and logfile~="" ) t.pollcheck=logfile~="" -fs.writefile("/var/run/lucilogpos","0") +fs.writefile("/var/run/lucilogreload","") return f diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua index 06927624e0..72a2ebffde 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/model/cbi/AdGuardHome/manual.lua @@ -91,7 +91,7 @@ function m.on_commit(map) elseif ucitracktest=="0" then io.popen("/etc/init.d/AdGuardHome reload &") else - fs.writefile("/var/run/AdGucitest","") + fs.writefile("/var/run/AdGlucitest","") end end return m \ No newline at end of file diff --git a/package/ctcgfw/luci-app-adguardhome/luasrc/view/AdGuardHome/log.htm b/package/ctcgfw/luci-app-adguardhome/luasrc/view/AdGuardHome/log.htm index 0ff58534cc..44b3da0b1f 100644 --- a/package/ctcgfw/luci-app-adguardhome/luasrc/view/AdGuardHome/log.htm +++ b/package/ctcgfw/luci-app-adguardhome/luasrc/view/AdGuardHome/log.htm @@ -59,19 +59,21 @@ function p(s) { function line_tolocal(str){ var strt=new Array(); str.trim().split('\n').forEach(function(v, i) { -if (v==""){strt[i]="";return;} var dt = new Date(v.substring(0,19)+" UTC"); - strt[i]=dt.getFullYear()+"/"+p(dt.getMonth()+1)+"/"+p(dt.getDate())+" "+p(dt.getHours())+":"+p(dt.getMinutes())+":"+p(dt.getSeconds())+v.substring(19) -}) +if (dt != "Invalid Date"){ + strt[i]=dt.getFullYear()+"/"+p(dt.getMonth()+1)+"/"+p(dt.getDate())+" "+p(dt.getHours())+":"+p(dt.getMinutes())+":"+p(dt.getSeconds())+v.substring(19); +}else{ + strt[i]=v;}}) return strt } function line_toUTC(str){ var strt=new Array(); str.trim().split('\n').forEach(function(v, i) { -if (v==""){strt[i]="";return;} var dt = new Date(v.substring(0,19)) - strt[i]=dt.getUTCFullYear()+"/"+p(dt.getUTCMonth()+1)+"/"+p(dt.getUTCDate())+" "+p(dt.getUTCHours())+":"+p(dt.getUTCMinutes())+":"+p(dt.getUTCSeconds())+v.substring(19) -}) +if (dt != "Invalid Date"){ + strt[i]=dt.getUTCFullYear()+"/"+p(dt.getUTCMonth()+1)+"/"+p(dt.getUTCDate())+" "+p(dt.getUTCHours())+":"+p(dt.getUTCMinutes())+":"+p(dt.getUTCSeconds())+v.substring(19); +}else{ + strt[i]=v;}}) return strt } function poll_check(){ diff --git a/package/ctcgfw/luci-app-adguardhome/po/zh-cn/AdGuardHome.po b/package/ctcgfw/luci-app-adguardhome/po/zh-cn/AdGuardHome.po index 09764f49ea..b0abca72a2 100644 --- a/package/ctcgfw/luci-app-adguardhome/po/zh-cn/AdGuardHome.po +++ b/package/ctcgfw/luci-app-adguardhome/po/zh-cn/AdGuardHome.po @@ -170,11 +170,23 @@ msgstr "为空" msgid "Press load culculate model and culculate finally save/apply" msgstr "按载入计算模块 然后计算 最后保存/提交" # -msgid "Keep database when system upgrade" -msgstr "系统升级时保留数据" +msgid "Keep files when system upgrade" +msgstr "系统升级时保留文件" +#checkbox +msgid "core bin" +msgstr "核心执行文件" -msgid "Boot delay until network ok" -msgstr "开机时直到网络准备好再启动" +msgid "config file" +msgstr "配置文件" + +msgid "log file" +msgstr "日志文件" + +msgid "querylog.json" +msgstr "审计日志.json" +# +msgid "On boot when network ok restart" +msgstr "开机后网络准备好时重启" msgid "Backup workdir files when shutdown" msgstr "在关机时备份工作目录文件" @@ -232,6 +244,8 @@ msgstr "使用模板" msgid "Reload Config" msgstr "重新载入配置" +msgid "WARNING!!! no bin found apply config will not be test" +msgstr "警告!!!未找到执行文件,提交配置将不会进行校验" #unused msgid "Change browser management username" msgstr "改变网页登录用户名" @@ -244,3 +258,9 @@ msgstr "检查配置" msgid "unknown" msgstr "未知" + +msgid "Keep database when system upgrade" +msgstr "系统升级时保留数据" + +msgid "Boot delay until network ok" +msgstr "开机时直到网络准备好再启动" \ No newline at end of file diff --git a/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome b/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome index 33fa6ffb81..5018a85d74 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome +++ b/package/ctcgfw/luci-app-adguardhome/root/etc/init.d/AdGuardHome @@ -7,10 +7,12 @@ STOP=01 CONFIGURATION=AdGuardHome CRON_FILE=/etc/crontabs/root -EXTRA_COMMANDS="do_redirect testbackup test_crontab" +EXTRA_COMMANDS="do_redirect testbackup test_crontab force_reload isrunning" EXTRA_HELP=" do_redirect 0 or 1\ testbackup backup or restore\ - test_crontab" + test_crontab + force_reload + isrunning" set_forward_dnsmasq() { local PORT="$1" @@ -120,10 +122,26 @@ EOF } service_triggers() { - procd_add_reload_trigger firewall procd_add_reload_trigger "$CONFIGURATION" + [ "$(uci get AdGuardHome.AdGuardHome.redirect)" == "redirect" ] && procd_add_reload_trigger firewall +} +isrunning(){ +config_load "${CONFIGURATION}" +_isrunning +local r=$? +([ "$r" == "0" ] && echo "running") || ([ "$r" == "1" ] && echo "not run" ) || echo "no bin" +return $r +} +_isrunning(){ + config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" + [ ! -f "$binpath" ] && return 2 + pgrep $binpath 2>&1 >/dev/null && return 0 + return 1 +} +force_reload(){ + config_load "${CONFIGURATION}" + _isrunning && procd_send_signal "$CONFIGURATION" || start } - get_tz() { SET_TZ="" @@ -187,10 +205,13 @@ use_port53() uci commit dhcp /etc/init.d/dnsmasq reload } - do_redirect() { config_load "${CONFIGURATION}" + _do_redirect $1 +} +_do_redirect() +{ local section="$CONFIGURATION" args="" ipv6_server=1 @@ -314,21 +335,20 @@ config_editor() } boot_service() { + rm /var/run/AdGserverdis >/dev/null 2>&1 config_load "${CONFIGURATION}" config_get waitonboot $CONFIGURATION waitonboot "0" config_get_bool enabled $CONFIGURATION enabled 0 - if [ "$enabled" == "1" ]; then - if [ "$waitonboot" == "1" ]; then - do_redirect 0 - procd_open_instance "waitnet" - procd_set_param command "/usr/share/AdGuardHome/waitnet.sh" - procd_close_instance - echo "no net start pinging" - else - start_service - fi + config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" + [ -f "$binpath" ] && start_service + if [ "$enabled" == "1" ] && [ "$waitonboot" == "1" ]; then + procd_open_instance "waitnet" + procd_set_param command "/usr/share/AdGuardHome/waitnet.sh" + procd_close_instance + echo "no net start pinging" fi } + testbackup(){ config_load "${CONFIGURATION}" if [ "$1" == "backup" ]; then @@ -372,9 +392,11 @@ backup() { } start_service() { # Reading config + rm /var/run/AdGserverdis >/dev/null 2>&1 config_load "${CONFIGURATION}" # update password config_get hashpass $CONFIGURATION hashpass "" + config_get configpath $CONFIGURATION configpath "/etc/AdGuardHome.yaml" if [ -n "$hashpass" ]; then config_editor "users.password" "$hashpass" "$configpath" uci set $CONFIGURATION.$CONFIGURATION.hashpass="" @@ -384,8 +406,7 @@ start_service() { # update crontab do_crontab if [ "$enabled" == "0" ]; then - procd_kill $CONFIGURATION - do_redirect 0 + _do_redirect 0 return fi #what need to do before reload @@ -414,29 +435,26 @@ start_service() { fi fi local ADDITIONAL_ARGS="" - config_get configpath $CONFIGURATION configpath "/etc/AdGuardHome.yaml" config_get binpath $CONFIGURATION binpath "/usr/bin/AdGuardHome/AdGuardHome" - echo -e "$configpath\n$binpath">/lib/upgrade/keep.d/luci-app-adguardhome mkdir -p ${binpath%/*} ADDITIONAL_ARGS="$ADDITIONAL_ARGS -c $configpath" ADDITIONAL_ARGS="$ADDITIONAL_ARGS -w $workdir" config_get httpport $CONFIGURATION httpport 3000 ADDITIONAL_ARGS="$ADDITIONAL_ARGS -p $httpport" - echo -e "$configpath\n$binpath">/lib/upgrade/keep.d/luci-app-adguardhome # hack to save config file when upgrade system - config_get keepdb $CONFIGURATION keepdb 0 - if [ "$keepdb" -eq 1 ]; then - echo -e "$workdir/data/sessions.db\n$workdir/data/stats.db\n$workdir/data/querylog.json">>/lib/upgrade/keep.d/luci-app-adguardhome - fi + config_get upprotect $CONFIGURATION upprotect "" + eval upprotect=${upprotect// /\\\\n} + echo -e "$upprotect">/lib/upgrade/keep.d/luci-app-adguardhome + config_get logfile $CONFIGURATION logfile "" if [ -n "$logfile" ]; then ADDITIONAL_ARGS="$ADDITIONAL_ARGS -l $logfile" fi if [ ! -f "$binpath" ]; then - do_redirect 0 + _do_redirect 0 /usr/share/AdGuardHome/update_core.sh 2>&1 >/tmp/AdGuardHome_update.log & exit 0 fi @@ -452,15 +470,15 @@ start_service() { procd_set_param env TZ="$SET_TZ" fi procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} - procd_set_param limits core="unlimited" nofile="unlimited" + procd_set_param limits core="unlimited" nofile="65535 65535" procd_set_param stderr 1 procd_set_param command $binpath $ADDITIONAL_ARGS procd_set_param file "$configpath" "/etc/hosts" "/etc/config/AdGuardHome" procd_close_instance if [ -f "$configpath" ]; then - do_redirect 1 + _do_redirect 1 else - do_redirect 0 + _do_redirect 0 config_get "redirect" "AdGuardHome" "redirect" "none" if [ "$redirect" != "none" ]; then procd_open_instance "waitconfig" @@ -469,12 +487,13 @@ start_service() { echo "no config start watching" fi fi - echo "AdGuardHome turn on" - (sleep 10 && [ -z "$(pgrep $binpath)" ] && logger "AdGuardHome" "no process in 10s cancel redirect" && do_redirect 0 )& + echo "AdGuardHome service enabled" + echo "luci enable switch=$enabled" + (sleep 10 && [ -z "$(pgrep $binpath)" ] && logger "AdGuardHome" "no process in 10s cancel redirect" && _do_redirect 0 )& } reload_service() { - rm /var/run/AdGucitest >/dev/null 2>&1 + rm /var/run/AdGlucitest >/dev/null 2>&1 echo "AdGuardHome reloading" start } @@ -499,14 +518,16 @@ fi stop_service() { config_load "${CONFIGURATION}" - do_redirect 0 + _do_redirect 0 do_crontab - config_get backupfile $CONFIGURATION backupfile "0" - if [ -n "$backupfile" ]; then - backup + if [ "$1" != "nobackup" ]; then + config_get backupfile $CONFIGURATION backupfile "0" + if [ -n "$backupfile" ]; then + backup + fi fi - echo "AdGuardHome turn off" - echo "enabled=$enabled" + echo "AdGuardHome service disabled" + touch /var/run/AdGserverdis } boot() { rc_procd boot_service "$@" @@ -531,21 +552,21 @@ do_crontab(){ config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome" config_get lastworkdir $CONFIGURATION lastworkdir "/usr/bin/AdGuardHome" - findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $workdir/data/querylog.json" - [ -n "$lastworkdir" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}" - default="0 * * * * /usr/share/AdGuardHome/tailto.sh 2000 $workdir/data/querylog.json" + findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* \$(uci get AdGuardHome.AdGuardHome.workdir)/data/querylog.json" + #[ -n "$lastworkdir" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}" + default="0 * * * * /usr/share/AdGuardHome/tailto.sh 2000 \$(uci get AdGuardHome.AdGuardHome.workdir)/data/querylog.json" [ "$enabled" == "0" ] || [ "${crontab//cutquerylog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor - [ "$lastworkdir" != "$workdir" ] && uci set AdGuardHome.AdGuardHome.lastworkdir="$workdir" && commit=1 + #[ "$lastworkdir" != "$workdir" ] && uci set AdGuardHome.AdGuardHome.lastworkdir="$workdir" && commit=1 config_get logfile $CONFIGURATION logfile "" config_get lastlogfile $CONFIGURATION lastlogfile "" - findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $logfile" - default="30 3 * * * /usr/share/AdGuardHome/tailto.sh 2000 $logfile" - [ -n "$lastlogfile" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastlogfile" && [ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && replace="${lastlogfile//\//\\/}/${logfile//\//\\/}" + findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* \$(uci get AdGuardHome.AdGuardHome.logfile)" + default="30 3 * * * /usr/share/AdGuardHome/tailto.sh 2000 \$(uci get AdGuardHome.AdGuardHome.logfile)" + #[ -n "$lastlogfile" ] && findstr="/usr/share/AdGuardHome/tailto.sh [0-9]* $lastlogfile" && [ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && replace="${lastlogfile//\//\\/}/${logfile//\//\\/}" [ "$logfile" == "syslog" ] || [ "$logfile" == "" ] || [ "$enabled" == "0" ] || [ "${crontab//cutruntimelog/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor - [ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && uci set AdGuardHome.AdGuardHome.lastlogfile="$logfile" && commit=1 + #[ -n "$logfile" ] && [ "$lastlogfile" != "$logfile" ] && uci set AdGuardHome.AdGuardHome.lastlogfile="$logfile" && commit=1 findstr="/usr/share/AdGuardHome/addhost.sh" default="0 * * * * /usr/share/AdGuardHome/addhost.sh" @@ -558,10 +579,15 @@ do_crontab(){ [ "$enabled" == "0" ] || [ "${crontab//autogfw/}" == "$crontab" ] && cronenable=0 || cronenable=1 crontab_editor [ "$cronreload" -gt 0 ] && /etc/init.d/cron restart - [ "$commit" -gt 0 ] && uci commit AdGuardHome + #[ "$commit" -gt 0 ] && uci commit AdGuardHome } crontab_editor(){ - # + #usage input: + #findstr= + #default= + #cronenable= + #replace="${last//\//\\/}/${now//\//\\/}" + #output:cronreload:if >1 please /etc/init.d/cron restart manual local testline reload local line="$(grep "$findstr" $CRON_FILE)" [ -n "$replace" ] && [ -n "$line" ] && eval testline="\${line//$replace}" && [ "$testline" != "$line" ] && line="$testline" && reload="1" && replace="" diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/firewall.start b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/firewall.start old mode 100644 new mode 100755 diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh index 8bcf05ac01..2469919e31 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/update_core.sh @@ -13,15 +13,21 @@ check_if_already_running(){ [ "${running_tasks}" -gt "2" ] && echo -e "\nA task is already running." && EXIT 2 } +check_wgetcurl(){ + which curl && downloader="curl -L -k --retry 2 --connect-timeout 20 -o" && return + which wget-ssl && downloader="wget-ssl --no-check-certificate -t 2 -T 20 -O" && return + [ -z "$1" ] && opkg update || (echo error opkg && EXIT 1) + [ -z "$1" ] && (opkg remove wget wget-nossl --force-depends ; opkg install wget ; check_wgetcurl 1 ;return) + [ "$1" == "1" ] && (opkg install curl ; check_wgetcurl 2 ; return) + echo error curl and wget && EXIT 1 +} check_latest_version(){ - latest_ver="$(wget -O- https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E 'v[0-9.]+' -o 2>/dev/null)" + check_wgetcurl + latest_ver="$($downloader - https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E 'v[0-9.]+' -o 2>/dev/null)" if [ -z "${latest_ver}" ]; then - wget -V | grep +https >/dev/null || (opkg update && opkg remove wget-nossl --force-depends && opkg install wget && check_latest_version && EXIT 0) echo -e "\nFailed to check latest version, please try again later." && EXIT 1 fi - touch /var/run/AdGfakeconfig - now_ver="$($binpath -c /var/run/AdGfakeconfig --check-config 2>&1| grep -m 1 -E 'v[0-9.]+' -o)" - rm /var/run/AdGfakeconfig + now_ver="$($binpath -c /dev/null --check-config 2>&1| grep -m 1 -E 'v[0-9.]+' -o)" if [ "${latest_ver}"x != "${now_ver}"x ] || [ "$1" == "force" ]; then echo -e "Local version: ${now_ver}., cloud version: ${latest_ver}." doupdate_core @@ -37,7 +43,7 @@ check_latest_version(){ rm -fr /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} /tmp/upx-${upx_latest_ver}-${Arch}_linux/upx $upxflag $binpath -o /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux - /etc/init.d/AdGuardHome stop + /etc/init.d/AdGuardHome stop nobackup rm $binpath mv -f /tmp/AdGuardHomeupdate/AdGuardHome/${binpath##*/} $binpath /etc/init.d/AdGuardHome start @@ -96,10 +102,10 @@ doupx(){ EXIT 1 ;; esac - upx_latest_ver="$(wget -O- https://api.github.com/repos/upx/upx/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E '[0-9.]+' -o 2>/dev/null)" - wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz "https://github.com/upx/upx/releases/download/v${upx_latest_ver}/upx-${upx_latest_ver}-${Arch}_linux.tar.xz" 2>&1 + upx_latest_ver="$($downloader - https://api.github.com/repos/upx/upx/releases/latest 2>/dev/null|grep -E 'tag_name' |grep -E '[0-9.]+' -o 2>/dev/null)" + $downloader /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz "https://github.com/upx/upx/releases/download/v${upx_latest_ver}/upx-${upx_latest_ver}-${Arch}_linux.tar.xz" 2>&1 #tar xvJf - which xz || (opkg update && opkg install xz) || (echo "xz download fail" && EXIT 1) + which xz || (opkg list | grep ^xz || opkg update && opkg install xz) || (echo "xz download fail" && EXIT 1) mkdir -p /tmp/upx-${upx_latest_ver}-${Arch}_linux xz -d -c /tmp/upx-${upx_latest_ver}-${Arch}_linux.tar.xz| tar -x -C "/tmp" >/dev/null 2>&1 if [ ! -e "/tmp/upx-${upx_latest_ver}-${Arch}_linux/upx" ]; then @@ -165,7 +171,7 @@ doupdate_core(){ while read link do eval link="$link" - wget-ssl --no-check-certificate -t 2 -T 20 -O /tmp/AdGuardHomeupdate/${link##*/} "$link" 2>&1 + $downloader /tmp/AdGuardHomeupdate/${link##*/} "$link" 2>&1 if [ "$?" != "0" ]; then echo "download failed try another download" rm -f /tmp/AdGuardHomeupdate/${link##*/} @@ -196,7 +202,7 @@ doupdate_core(){ rm -rf /tmp/upx-${upx_latest_ver}-${Arch}_linux fi echo -e "start copy" - /etc/init.d/AdGuardHome stop + /etc/init.d/AdGuardHome stop nobackup rm "$binpath" mv -f "$downloadbin" "$binpath" if [ "$?" == "1" ]; then diff --git a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh index a62caf90a2..a79a8bac87 100755 --- a/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh +++ b/package/ctcgfw/luci-app-adguardhome/root/usr/share/AdGuardHome/waitnet.sh @@ -5,29 +5,29 @@ while : do ping -c 1 -W 1 -q www.baidu.com 1>/dev/null 2>&1 if [ "$?" == "0" ]; then - /etc/init.d/AdGuardHome reload + /etc/init.d/AdGuardHome force_reload break fi ping -c 1 -W 1 -q 202.108.22.5 1>/dev/null 2>&1 if [ "$?" == "0" ]; then - /etc/init.d/AdGuardHome reload + /etc/init.d/AdGuardHome force_reload break fi sleep 5 ping -c 1 -W 1 -q www.google.com 1>/dev/null 2>&1 if [ "$?" == "0" ]; then - /etc/init.d/AdGuardHome reload + /etc/init.d/AdGuardHome force_reload break fi ping -c 1 -W 1 -q 8.8.8.8 1>/dev/null 2>&1 if [ "$?" == "0" ]; then - /etc/init.d/AdGuardHome reload + /etc/init.d/AdGuardHome force_reload break fi sleep 5 count=$((count+1)) if [ $count -gt 18 ]; then - /etc/init.d/AdGuardHome reload + /etc/init.d/AdGuardHome force_reload break fi done