#!/bin/sh
# author 2021 jjm2473
# author 2020-2024 sirpdboy
TMP_T=/var/taskplan/taskplan.tmp
LOG=/etc/taskplan/taskplan.log
log(){
	echo "$(date +'%Y-%m-%d %H:%M:%S') $*" >> $LOG
}

limit_log() {
	local logf=$1
	[ ! -f "$logf" ] && return
	local sc=100
	[ -n "$2" ] && sc=$2
	local count=$(grep -c "" $logf)
	if [ $count -gt $sc ];then
		let count=count-$sc
		sed -i "1,$count d" $logf
	fi
}

remwan3() {
while true; do   
    status=$(/usr/sbin/mwan3 status | grep error)
    if [ -z $status ]; then
        log  "Mwan3 is OK"
	exit 1
    else
        log "mwan3 restarting ..."  
        /usr/sbin/mwan3 restart
    fi 
    sleep 60
done
}

disreconnwan() {
i=0
PingA=114.114.114.114
PingB=223.5.5.5
while [[ $i -lt 5 ]]
do
	if /bin/ping -c 1 $PingA >/dev/null
	then
		PingErr=0
		break
	else
		if /bin/ping -c 1 $PingB >/dev/null
		then
			PingErr=0
			break
		else
			i=$(($i + 1))
			PingErr=1
			sleep 10
		fi
	fi
done
}

trigger() {
	case "$1" in
	reboot)
		reboot
		;;
	poweroff)
		poweroff
		;;
	network)
		/etc/init.d/network restart
		;;
	clearmem)
		sync && echo 3 > /proc/sys/vm/drop_caches
		;;
	sysfree)
		cd /overlay
		rm -rf `ls | egrep -v '(upper|.fs_state)'`
		cd upper
		rm -rf `ls | egrep -v '(etc)'`
		cd etc
		rm -rf `ls | egrep -v '(config|ssr|bench.log|shadow)'`
		rm -rf /var/luci-modulecache
		rm -rf /var/luci-indexcache
		rm -rf /tmp/cache/*
		reboot
		;;
	restartsamba)
		/etc/init.d/ksmdb restart
		/etc/init.d/samba restart
		/etc/init.d/samba4 restart
		;;

	restartlan)
		ifdown lan && ifup lan
		log  "restart lan succeeded!"
		;;
	restartwan)
		ifup wan
		log  "restart wan succeeded!"
		;;
	closewan)
		ifdown wan
		;;
	disreconn)
		disreconnwan
		if [ $PingErr = 1 ]; then
		  ifup wan
		  log  "Redial succeeded!"
		fi
		;;
	disrereboot)
		disreconnwan
		if [ $PingErr = 1 ]; then
		  log  "Reboot succeeded!"
		  reboot
		fi
		;;
	restartmwan3)
		[ -s /usr/sbin/mwan3 ] && remwan3
		;;
	customscript)
	         script=`cat /etc/taskplan/taskplancustomscript | wc -l`
	         if [[ $script > 0 ]] ;then
		    bash /etc/taskplan/taskplancustomscript
		    log  "CustomScript succeeded!"
		 else
		    log  "CustomScript run Error!"
		 fi
		;;
	customscript2)
	         script=`cat /etc/taskplan/taskplancustomscript2 | wc -l`
	         if [[ $script > 0 ]] ;then
		    bash /etc/taskplan/taskplancustomscript2
		    log  "CustomScript2 succeeded!"
		 else
		    log  "CustomScript2 run Error!"
		 fi
		;;
	upwifi)
		ifconfig wlan0 up
		uci set wireless.radio0.disabled=0
		uci set wireless.radio1.disabled=0
		uci commit wireless
		wifi up
		;;
	downwifi)
		ifconfig wlan0 down
		uci set wireless.radio0.disabled=1
		uci set wireless.radio1.disabled=1
		uci commit wireless
		wifi down
		;;
	esac
}

limit_log $LOG 500
PingErr=0
log  "Scheduled operation $2: $1" && trigger $1

