Files
op-packages/luci-app-pingpacket/root/etc/init.d/pingpacket
T

104 lines
2.6 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh /etc/rc.common
START=90
STOP=10
USE_PROCD=1
PROG=/usr/bin/pingpacket.sh
RUN_DIR=/var/run/pingpacket
STATUS_FILE=/tmp/pingpacket_status.json
CONFIG_FILE=$RUN_DIR/config
LOG_FILE=/tmp/pingpacket.log
LOG_MAX_LINES=500
log_rotate() {
[ -f "$LOG_FILE" ] || return 0
tail -n "$LOG_MAX_LINES" "$LOG_FILE" > "${LOG_FILE}.tmp" 2>/dev/null && \
mv -f "${LOG_FILE}.tmp" "$LOG_FILE"
}
log_event() {
local event_type="$1"
local message="$2"
local timestamp
timestamp="$(date '+%Y-%m-%d %H:%M:%S')"
printf '[%s] [%s] %s\n' "$timestamp" "$event_type" "$message" >> "$LOG_FILE"
log_rotate
}
format_foreign_summary() {
local target="$1"
local proxy_type="$2"
local proxy_host="$3"
local proxy_port="$4"
[ -n "$target" ] || {
echo "未配置"
return
}
if [ -n "$proxy_port" ]; then
echo "${target}(代理 ${proxy_type} 本机端口 ${proxy_port})"
else
echo "${target}(代理端口未配置)"
fi
}
start_service() {
local enabled domestic foreign proxy_type proxy_host proxy_port domestic_interval foreign_interval foreign_summary
config_load pingpacket
config_get enabled config enabled "0"
config_get domestic config domestic_target ""
config_get foreign config foreign_target ""
config_get proxy_type config foreign_proxy_type "socks5h"
config_get proxy_host config foreign_proxy_host "127.0.0.1"
config_get proxy_port config foreign_proxy_port "7891"
config_get domestic_interval config domestic_interval "1"
config_get foreign_interval config foreign_interval "5"
proxy_type="socks5h"
[ "$enabled" = "1" ] || return 0
[ -n "$domestic" ] || [ -n "$foreign" ] || return 0
rm -rf "$RUN_DIR"
rm -f "$STATUS_FILE"
mkdir -p "$RUN_DIR"
printf '%s\n' "$domestic" > "$CONFIG_FILE"
printf '%s\n' "$foreign" >> "$CONFIG_FILE"
printf '%s\n' "$proxy_type" >> "$CONFIG_FILE"
printf '%s\n' "${proxy_host:-127.0.0.1}" >> "$CONFIG_FILE"
printf '%s\n' "$proxy_port" >> "$CONFIG_FILE"
printf '%s\n' "$domestic_interval" >> "$CONFIG_FILE"
printf '%s\n' "$foreign_interval" >> "$CONFIG_FILE"
foreign_summary="$(format_foreign_summary "$foreign" "$proxy_type" "$proxy_host" "$proxy_port")"
log_event "启动" "监控服务已启动,国内目标:${domestic:-未配置},国外目标:${foreign_summary}"
procd_open_instance
procd_set_param command /bin/sh "$PROG"
procd_set_param respawn 3600 10 5
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
stop_service() {
if [ -d "$RUN_DIR" ] || [ -f "$STATUS_FILE" ]; then
log_event "停止" "监控服务已停止。"
fi
rm -rf "$RUN_DIR"
rm -f "$STATUS_FILE"
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "pingpacket"
}