|
@@ -523,55 +523,74 @@ config_load "${CONFIGURATION}"
|
|
|
do_crontab
|
|
|
}
|
|
|
do_crontab(){
|
|
|
+ config_get_bool enabled $CONFIGURATION enabled 0
|
|
|
config_get crontab $CONFIGURATION crontab ""
|
|
|
- local findstr default cronenable
|
|
|
+ local findstr default cronenable replace commit
|
|
|
local cronreload=0
|
|
|
+ local commit=0
|
|
|
findstr="/usr/share/AdGuardHome/update_core.sh"
|
|
|
- default="#30 3 * * * /usr/share/AdGuardHome/update_core.sh 2>&1"
|
|
|
+ default="30 3 * * * /usr/share/AdGuardHome/update_core.sh 2>&1"
|
|
|
[ "$enabled" == "0" ] || [ "${crontab//autoupdate/}" == "$crontab" ] && cronenable=0 || cronenable=1
|
|
|
crontab_editor
|
|
|
-
|
|
|
- findstr="tail -n [0-9]* .*/data/querylog.json > .*/data/querylog.json"
|
|
|
- default="#0 * * * * tail -n 2000 $workdir/data/querylog.json > $workdir/data/querylog.json"
|
|
|
+
|
|
|
+ config_get workdir $CONFIGURATION workdir "/usr/bin/AdGuardHome"
|
|
|
+ config_get lastworkdir $CONFIGURATION lastworkdir "/usr/bin/AdGuardHome"
|
|
|
+ findstr="tail -n [0-9]* $workdir/data/querylog.json > $workdir/data/querylog.json"
|
|
|
+ [ -n "$lastworkdir" ] && findstr="tail -n [0-9]* $lastworkdir/data/querylog.json > $lastworkdir/data/querylog.json" && [ "$lastworkdir" != "$workdir" ] && replace="${lastworkdir//\//\\/}/${workdir//\//\\/}"
|
|
|
+ default="0 * * * * tail -n 2000 $workdir/data/querylog.json > $workdir/data/querylog.json"
|
|
|
[ "$enabled" == "0" ] || [ "${crontab//cutquerylog/}" == "$crontab" ] && cronenable=0 || cronenable=1
|
|
|
crontab_editor
|
|
|
-
|
|
|
+ [ -n "$workdir" ] && [ "$lastworkdir" != "$workdir" ] && uci set AdGuardHome.AdGuardHome.lastworkdir="$workdir" && commit=1
|
|
|
+
|
|
|
config_get logfile $CONFIGURATION logfile ""
|
|
|
+ config_get lastlogfile $CONFIGURATION lastlogfile ""
|
|
|
findstr="tail -n [0-9]* $logfile > $logfile"
|
|
|
- default="#30 3 * * * tail -n 2000 $logfile > $logfile"
|
|
|
+ default="30 3 * * * tail -n 2000 $logfile > $logfile"
|
|
|
+ [ -n "$lastlogfile" ] && findstr="tail -n [0-9]* $lastlogfile > $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
|
|
|
+
|
|
|
findstr="/usr/share/AdGuardHome/addhost.sh"
|
|
|
- default="#0 * * * * /usr/share/AdGuardHome/addhost.sh"
|
|
|
+ default="0 * * * * /usr/share/AdGuardHome/addhost.sh"
|
|
|
[ "$enabled" == "0" ] || [ "${crontab//autohost/}" == "$crontab" ] && cronenable=0 || cronenable=1
|
|
|
crontab_editor
|
|
|
[ "$cronenable" == "0" ] && /usr/share/AdGuardHome/addhost.sh "del" "noreload" || /usr/share/AdGuardHome/addhost.sh "" "noreload"
|
|
|
|
|
|
findstr="/usr/share/AdGuardHome/gfw2adg.sh"
|
|
|
- default="#30 3 * * * /usr/share/AdGuardHome/gfw2adg.sh"
|
|
|
+ default="30 3 * * * /usr/share/AdGuardHome/gfw2adg.sh"
|
|
|
[ "$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
|
|
|
}
|
|
|
crontab_editor(){
|
|
|
+ #
|
|
|
+ local testline reload
|
|
|
local line="$(grep "$findstr" $CRON_FILE)"
|
|
|
- if [ -n "$line" -a "${line:0:1}" != "#" ]; then
|
|
|
+ [ -n "$replace" ] && [ -n "$line" ] && eval testline="\${line//$replace}" && [ "$testline" != "$line" ] && line="$testline" && reload="1" && replace=""
|
|
|
+ if [ "${line:0:1}" != "#" ]; then
|
|
|
if [ $cronenable -eq 1 ]; then
|
|
|
- return
|
|
|
- else
|
|
|
+ [ -z "$line" ] && line="$default" && reload="1"
|
|
|
+ if [ -n "$reload" ]; then
|
|
|
+ sed -i "\,$findstr,d" $CRON_FILE
|
|
|
+ echo "$line" >> $CRON_FILE
|
|
|
+ cronreload=$((cronreload+1))
|
|
|
+ fi
|
|
|
+ elif [ -n "$line" ]; then
|
|
|
sed -i "\,$findstr,d" $CRON_FILE
|
|
|
echo "#$line" >> $CRON_FILE
|
|
|
cronreload=$((cronreload+1))
|
|
|
fi
|
|
|
else
|
|
|
if [ $cronenable -eq 1 ]; then
|
|
|
- [ -z "$line" ] && line="$default"
|
|
|
sed -i "\,$findstr,d" $CRON_FILE
|
|
|
echo "${line:1}" >> $CRON_FILE
|
|
|
cronreload=$((cronreload+1))
|
|
|
- else
|
|
|
- return
|
|
|
+ elif [ -z "$reload" ]; then
|
|
|
+ sed -i "\,$findstr,d" $CRON_FILE
|
|
|
+ echo "$line" >> $CRON_FILE
|
|
|
fi
|
|
|
fi
|
|
|
+
|
|
|
}
|