mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-30 07:55:13 +08:00
🌈 Sync 2026-04-08 22:17:33
This commit is contained in:
1 parent
babac663b9
commit
5fb3abba3a
23 files changed
+1227
-868
No files matched your search
+1
-1
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=nikki
|
||||
PKG_VERSION:=2026.04.08
|
||||
PKG_RELEASE:=10
|
||||
PKG_RELEASE:=11
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
@@ -6,7 +6,7 @@ config config 'config'
|
||||
option 'profile' 'subscription:subscription'
|
||||
option 'start_delay' '0'
|
||||
option 'scheduled_restart' '0'
|
||||
option 'cron_expression' '0 3 * * *'
|
||||
option 'scheduled_restart_cron' '0 3 * * *'
|
||||
option 'test_profile' '1'
|
||||
option 'core_only' '0'
|
||||
|
||||
@@ -234,3 +234,7 @@ config routing 'routing'
|
||||
config editor 'editor'
|
||||
|
||||
config log 'log'
|
||||
option 'scheduled_clear' '1'
|
||||
option 'scheduled_clear_cron' '*/5 * * * *'
|
||||
option 'scheduled_clear_size_limit' '1'
|
||||
option 'scheduled_clear_size_limit_unit' 'MB'
|
||||
+53
-6
@@ -9,6 +9,7 @@ PROG="/usr/bin/mihomo"
|
||||
. "$IPKG_INSTROOT/etc/nikki/scripts/include.sh"
|
||||
|
||||
extra_command 'update_subscription' 'Update subscription by section id'
|
||||
extra_command 'clear_logs' 'Clear logs if size exceeds the limit'
|
||||
|
||||
boot_func() {
|
||||
# prepare files
|
||||
@@ -55,9 +56,9 @@ start_service() {
|
||||
fi
|
||||
# get config
|
||||
## app config
|
||||
local scheduled_restart cron_expression profile test_profile core_only
|
||||
local scheduled_restart scheduled_restart_cron profile test_profile core_only
|
||||
config_get_bool scheduled_restart "config" "scheduled_restart" 0
|
||||
config_get cron_expression "config" "cron_expression"
|
||||
config_get scheduled_restart_cron "config" "scheduled_restart_cron"
|
||||
config_get profile "config" "profile"
|
||||
config_get_bool test_profile "config" "test_profile" 0
|
||||
config_get_bool core_only "config" "core_only" 0
|
||||
@@ -109,6 +110,10 @@ start_service() {
|
||||
config_get_bool ipv6_dns_hijack "proxy" "ipv6_dns_hijack" 0
|
||||
config_get tcp_mode "proxy" "tcp_mode"
|
||||
config_get udp_mode "proxy" "udp_mode"
|
||||
## log config
|
||||
local log_scheduled_clear log_scheduled_clear_cron
|
||||
config_get_bool log_scheduled_clear "log" "scheduled_clear" 0
|
||||
config_get log_scheduled_clear_cron "log" "scheduled_clear_cron"
|
||||
# get profile
|
||||
local profile_type; profile_type=$(echo "$profile" | cut -d ':' -f 1)
|
||||
local profile_id; profile_id=$(echo "$profile" | cut -d ':' -f 2)
|
||||
@@ -259,9 +264,18 @@ start_service() {
|
||||
|
||||
procd_close_instance
|
||||
# cron
|
||||
if [ "$scheduled_restart" = 1 ] && [ -n "$cron_expression" ]; then
|
||||
local reload_cron; reload_cron=0
|
||||
if [ "$scheduled_restart" = 1 ] && [ -n "$scheduled_restart_cron" ]; then
|
||||
log "App" "Set scheduled restart."
|
||||
echo "$cron_expression /etc/init.d/nikki restart #nikki" >> "/etc/crontabs/root"
|
||||
echo "$scheduled_restart_cron /etc/init.d/nikki restart #nikki scheduled restart" >> "/etc/crontabs/root"
|
||||
reload_cron=1
|
||||
fi
|
||||
if [ "$log_scheduled_clear" = 1 ] && [ -n "$log_scheduled_clear_cron" ]; then
|
||||
log "App" "Set log scheduled clear."
|
||||
echo "$log_scheduled_clear_cron /etc/init.d/nikki clear_logs #nikki log scheduled clear" >> "/etc/crontabs/root"
|
||||
reload_cron=1
|
||||
fi
|
||||
if [ "$reload_cron" = 1 ]; then
|
||||
/etc/init.d/cron restart
|
||||
fi
|
||||
# set started flag
|
||||
@@ -422,8 +436,6 @@ service_triggers() {
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
# clear log
|
||||
clear_log
|
||||
# load config
|
||||
config_load nikki
|
||||
# get config
|
||||
@@ -470,6 +482,41 @@ cleanup() {
|
||||
/etc/init.d/cron restart
|
||||
}
|
||||
|
||||
clear_logs() {
|
||||
# load config
|
||||
config_load nikki
|
||||
# get config
|
||||
## log config
|
||||
local log_scheduled_clear_size_limit log_scheduled_clear_size_limit_unit
|
||||
config_get log_scheduled_clear_size_limit "log" "scheduled_clear_size_limit" 1
|
||||
config_get log_scheduled_clear_size_limit_unit "log" "scheduled_clear_size_limit_unit" "MB"
|
||||
# prepare config
|
||||
local log_scheduled_clear_size_limit_in_bytes; log_scheduled_clear_size_limit_in_bytes=0
|
||||
case "$log_scheduled_clear_size_limit_unit" in
|
||||
B)
|
||||
log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit))
|
||||
;;
|
||||
KB)
|
||||
log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit * 1024))
|
||||
;;
|
||||
MB)
|
||||
log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit * 1024 * 1024))
|
||||
;;
|
||||
GB)
|
||||
log_scheduled_clear_size_limit_in_bytes=$((log_scheduled_clear_size_limit * 1024 * 1024 * 1024))
|
||||
;;
|
||||
esac
|
||||
# clear logs
|
||||
if [ -f "$APP_LOG_PATH" ] && [ "$(wc -c < "$APP_LOG_PATH")" -ge "$log_scheduled_clear_size_limit_in_bytes" ]; then
|
||||
echo -n > "$APP_LOG_PATH"
|
||||
log "Log" "App log is cleared due to scheduled clear and exceeding size limits."
|
||||
fi
|
||||
if [ -f "$CORE_LOG_PATH" ] && [ "$(wc -c < "$CORE_LOG_PATH")" -ge "$log_scheduled_clear_size_limit_in_bytes" ]; then
|
||||
echo -n > "$CORE_LOG_PATH"
|
||||
log "Log" "Core log is cleared due to scheduled clear and exceeding size limits."
|
||||
fi
|
||||
}
|
||||
|
||||
update_subscription() {
|
||||
local subscription_section; subscription_section="$1"
|
||||
if [ -z "$subscription_section" ]; then
|
||||
|
||||
@@ -80,11 +80,6 @@ prepare_files() {
|
||||
fi
|
||||
}
|
||||
|
||||
clear_log() {
|
||||
echo -n > "$APP_LOG_PATH"
|
||||
echo -n > "$CORE_LOG_PATH"
|
||||
}
|
||||
|
||||
log() {
|
||||
echo "[$(date "+%Y-%m-%d %H:%M:%S")] [$1] $2" >> "$APP_LOG_PATH"
|
||||
}
|
||||
@@ -110,7 +110,7 @@ proxy_transparent_proxy=$(uci -q get nikki.proxy.transparent_proxy); [ -n "$prox
|
||||
|
||||
# since v1.23.0
|
||||
|
||||
routing=$(uci -q get nikki.routing); [ -z "$routing" ] && {
|
||||
section_routing=$(uci -q get nikki.routing); [ -z "$section_routing" ] && {
|
||||
uci set nikki.routing=routing
|
||||
uci set nikki.routing.tproxy_fw_mark=0x80
|
||||
uci set nikki.routing.tun_fw_mark=0x81
|
||||
@@ -191,7 +191,7 @@ proxy_bypass_china_mainland_ip6=$(uci -q get nikki.proxy.bypass_china_mainland_i
|
||||
routing_tproxy_fw_mask=$(uci -q get nikki.routing.tproxy_fw_mask); [ -z "$routing_tproxy_fw_mask" ] && uci set nikki.routing.tproxy_fw_mask=0xFF
|
||||
routing_tun_fw_mask=$(uci -q get nikki.routing.tun_fw_mask); [ -z "$routing_tun_fw_mask" ] && uci set nikki.routing.tun_fw_mask=0xFF
|
||||
|
||||
procd=$(uci -q get nikki.procd); [ -z "$procd" ] && {
|
||||
section_procd=$(uci -q get nikki.procd); [ -z "$section_procd" ] && {
|
||||
uci set nikki.procd=procd
|
||||
uci set nikki.procd.fast_reload=$(uci -q get nikki.config.fast_reload)
|
||||
uci set nikki.procd.env_safe_paths=$(uci -q get nikki.env.safe_paths)
|
||||
@@ -205,17 +205,26 @@ procd=$(uci -q get nikki.procd); [ -z "$procd" ] && {
|
||||
|
||||
# since v1.25.1
|
||||
|
||||
dummy_device=$(uci -q get nikki.routing.dummy_device); [ -z "$dummy_device" ] && uci set nikki.routing.dummy_device=nikki-dummy
|
||||
routing_dummy_device=$(uci -q get nikki.routing.dummy_device); [ -z "$routing_dummy_device" ] && uci set nikki.routing.dummy_device=nikki-dummy
|
||||
|
||||
# since v1.25.2
|
||||
|
||||
core=$(uci -q get nikki.core); [ -z "$core" ] && {
|
||||
section_core=$(uci -q get nikki.core); [ -z "$section_core" ] && {
|
||||
uci set nikki.core=core
|
||||
uci set nikki.core.redirect_listener_name=redir-in
|
||||
uci set nikki.core.tproxy_listener_name=tproxy-in
|
||||
uci set nikki.core.tun_listener_name=tun-in
|
||||
}
|
||||
|
||||
# since v1.25.3
|
||||
|
||||
config_scheduled_restart_cron=$(uci -q get nikki.config.scheduled_restart_cron); [ -z "$config_scheduled_restart_cron" ] && uci rename nikki.config.cron_expression="scheduled_restart_cron"
|
||||
|
||||
log_scheduled_clear=$(uci -q get nikki.log.scheduled_clear); [ -z "$log_scheduled_clear" ] && uci set nikki.log.scheduled_clear=1
|
||||
log_scheduled_clear_cron=$(uci -q get nikki.log.scheduled_clear_cron); [ -z "$log_scheduled_clear_cron" ] && uci set nikki.log.scheduled_clear_cron="*/5 * * * *"
|
||||
log_scheduled_clear_size_limit=$(uci -q get nikki.log.scheduled_clear_size_limit); [ -z "$log_scheduled_clear_size_limit" ] && uci set nikki.log.scheduled_clear_size_limit=1
|
||||
log_scheduled_clear_size_limit_unit=$(uci -q get nikki.log.scheduled_clear_size_limit_unit); [ -z "$log_scheduled_clear_size_limit_unit" ] && uci set nikki.log.scheduled_clear_size_limit_unit=MB
|
||||
|
||||
# commit
|
||||
uci commit nikki
|
||||
|
||||
|
||||
Reference in new issue
Block a user