#!/bin/sh /etc/rc.common # Copyright 2023-2024 sirpdboy team START=99 STOP=10 USE_PROCD=1 PROG="/usr/bin/uhttpd-watchdog" NAME="uhttpd-watchdog" LOCK=/var/lock/advancedplus-boot.lock cpumodeset() { for i in 0 1 2 3 ;do echo $1 > /sys/devices/system/cpu/cpufreq/policy$i/scaling_governor done } tsoset() { tautocore=/etc/init.d/autocore [ -f $tautocore ] || return if [ "x$(uci -q get advancedplus.@basic[0].tsoset)" = "x1" ] ;then sed -i 's/tso on/tso off/g' $tautocore $tautocore restart else sed -i 's/tso off/tso on/g' $tautocore $tautocore restart fi } setnetwizard(){ if [ "x$(uci -q get advancedplus.@basic[0].wizard)" == "x1" ] ; then [ `grep -e '-netwizard' /usr/share/luci/menu.d/luci-app-netwizard.json | wc -l` == 1 ] && { sed -i 's|-netwizard|-znetwizard|' /usr/share/luci/menu.d/luci-app-netwizard.json /etc/init.d/rpcd restart } uci -q set netwizard.default.showhide="1" uci commit netwizard else uci -q set netwizard.default.showhide="0" uci commit netwizard [ `grep -e '-znetwizard' /usr/share/luci/menu.d/luci-app-netwizard.json | wc -l` == 1 ] && { sed -i 's|-znetwizard|-netwizard|' /usr/share/luci/menu.d/luci-app-netwizard.json /etc/init.d/rpcd restart } fi } set_login() { if [ "x$(uci -q get advancedplus.@basic[0].set_login)" == "x1" ] ; then sed -i '$ s|exec /bin/sh -l$|exec /bin/login|' /usr/libexec/login.sh else sed -i '$ s|exec /bin/login$|exec /bin/sh -l|' /usr/libexec/login.sh fi } dhcp_domain() { if [ "x$(uci -q get advancedplus.@basic[0].dhcp_domain)" = "x1" ] ; then local domain_name="time.android.com" local domain_ip="203.107.6.88" existing_records=$(uci show dhcp | grep "dhcp.@domain\[[0-9]\+\].name='$domain_name'") if [ -z "$existing_records" ]; then uci add dhcp domain uci -q set "dhcp.@domain[-1].name=$domain_name" uci -q set "dhcp.@domain[-1].ip=$domain_ip" uci commit dhcp fi else existing_records=$(uci show dhcp | grep "dhcp.@domain\[[0-9]\+\].name='$domain_name'") if [ -z "$existing_records" ]; then uci delete dhcp.@domain[-1].name uci delete dhcp.@domain[-1].ip uci commit dhcp fi fi } advancedset(){ dev=`ifconfig | grep "Point-to-Point" | cut -d " " -f1` [ ! $dev ] && dev=` uci -q get network.wan.ifname ` || dev=` uci -q get network.wan.device ` [ ! $dev ] && dev=br-lan setnetwizard set_login # tsoset sed -i "\/bin\/zsh/d" /etc/profile [ "x$(uci -q get advancedplus.@basic[0].usshmenu)" = "x1" ] || echo '/usr/bin/zsh' >> /etc/profile } start_service() { [ -f $LOCK ] && exit [ "x$(uci -q get advancedplus.@basic[0].uhttpd)" = "x1" ] && uhttpd_service touch $LOCK advancedset rm -rf /tmp/luci-* rm -f $LOCK 2>/dev/null } validate_service_file() { if [ ! -x "/usr/sbin/uhttpd" ]; then echo "错误:/usr/sbin/uhttpd 不存在或不可执行" >&2 return 1 fi return 0 } uhttpd_service() { validate_service_file || return 1 echo "uhttpd 服务启用检测!" if ! /etc/init.d/uhttpd enabled; then echo "uhttpd 服务未启用,监控服务不启动" >&2 return 0 fi procd_open_instance procd_set_param command "$PROG" start procd_set_param respawn procd_set_param respawn_retry 5 procd_set_param respawn_threshold 3600 procd_set_param respawn_timeout 10 procd_set_param stderr 1 procd_set_param stdout 1 # procd_set_param file "$PROG" # procd_set_param pidfile "/var/run/${NAME}.pid" # procd_append_param env CHECK_INTERVAL=30 # procd_append_param env MAX_FAILURES=3 procd_close_instance } service_triggers() { procd_add_reload_trigger 'advancedplus' } stop_service() { rm -f $LOCK 2>/dev/null $PROG stop 2>/dev/null rm -f "/var/run/${NAME}.pid" } restart() { stop sleep 2 start } reload() { restart }