mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-03 04:33:56 +08:00
⛄ Sync 2026-09-29 03:13:52
This commit is contained in:
1 parent
198ad5b3b8
commit
359c0e3d05
41 files changed
+1553
-5334
No files matched your search
+98
@@ -0,0 +1,98 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2026 OpenWrt.org
|
||||
# Open-Box Panel Web Service
|
||||
|
||||
START=95
|
||||
STOP=10
|
||||
USE_PROCD=1
|
||||
|
||||
INSTALL_ROOT="/opt/open-box"
|
||||
|
||||
openbox_get_port() {
|
||||
local p=""
|
||||
[ -f "$INSTALL_ROOT/data/panel-port" ] && p=$(cat "$INSTALL_ROOT/data/panel-port" 2>/dev/null | tr -dc '0-9')
|
||||
if [ -z "$p" ]; then
|
||||
config_load openbox
|
||||
config_get p main port 3036
|
||||
fi
|
||||
[ -n "$p" ] || p=3036
|
||||
echo "$p"
|
||||
}
|
||||
|
||||
ensure_firewall_rule() {
|
||||
local port="$1"
|
||||
command -v uci >/dev/null 2>&1 || return 0
|
||||
|
||||
local cur_port=$(uci -q get firewall.openbox_panel.dest_port 2>/dev/null)
|
||||
if [ "$cur_port" != "$port" ]; then
|
||||
uci -q delete firewall.openbox_panel 2>/dev/null || true
|
||||
uci -q set firewall.openbox_panel=rule
|
||||
uci -q set firewall.openbox_panel.name='Open-Box Panel'
|
||||
uci -q set firewall.openbox_panel.src='lan'
|
||||
uci -q set firewall.openbox_panel.proto='tcp'
|
||||
uci -q set firewall.openbox_panel.dest_port="$port"
|
||||
uci -q set firewall.openbox_panel.target='ACCEPT'
|
||||
uci -q commit firewall
|
||||
/etc/init.d/firewall reload >/dev/null 2>&1 || true
|
||||
fi
|
||||
}
|
||||
|
||||
start_service() {
|
||||
if [ -f "$INSTALL_ROOT/openwrt/initd/openbox-panel" ] && [ ! -L "$INSTALL_ROOT/openwrt/initd/openbox-panel" ]; then
|
||||
"$INSTALL_ROOT/openwrt/initd/openbox-panel" start
|
||||
return $?
|
||||
fi
|
||||
|
||||
if [ ! -d "$INSTALL_ROOT" ] || [ ! -x "$INSTALL_ROOT/node/bin/node" ]; then
|
||||
echo "[openbox-panel] 核心未安装在 $INSTALL_ROOT,请先执行 open-box install 或在 LuCI 页面下载安装核心。" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
local node_bin="$INSTALL_ROOT/node/bin/node"
|
||||
local panel_app="$INSTALL_ROOT/panel/server/index.mjs"
|
||||
[ -f "$panel_app" ] || panel_app="$INSTALL_ROOT/panel/server/index.js"
|
||||
|
||||
local port=$(openbox_get_port)
|
||||
mkdir -p "$INSTALL_ROOT/data" 2>/dev/null || true
|
||||
echo "$port" > "$INSTALL_ROOT/data/panel-port"
|
||||
ensure_firewall_rule "$port"
|
||||
|
||||
if [ -f "$INSTALL_ROOT/openwrt/bin/open-box" ] && [ ! -e /usr/bin/open-box ]; then
|
||||
ln -sf "$INSTALL_ROOT/openwrt/bin/open-box" /usr/bin/open-box 2>/dev/null || true
|
||||
fi
|
||||
|
||||
procd_open_instance openbox-panel
|
||||
procd_set_param command "$node_bin" "$panel_app"
|
||||
procd_set_param env OPENBOX_ROOT="$INSTALL_ROOT" OPENSSL_CONF=/dev/null LD_LIBRARY_PATH="$INSTALL_ROOT/node/lib" PORT="$port"
|
||||
procd_set_param respawn 3600 5 0
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop_service() {
|
||||
if [ -f "$INSTALL_ROOT/openwrt/initd/openbox-panel" ] && [ ! -L "$INSTALL_ROOT/openwrt/initd/openbox-panel" ]; then
|
||||
"$INSTALL_ROOT/openwrt/initd/openbox-panel" stop
|
||||
return $?
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
status() {
|
||||
if pgrep -f "$INSTALL_ROOT/panel/server" >/dev/null 2>&1; then
|
||||
local pid=$(pgrep -f "$INSTALL_ROOT/panel/server" | head -n 1)
|
||||
local port=$(openbox_get_port)
|
||||
echo "openbox-panel is running (pid $pid, port $port)"
|
||||
return 0
|
||||
fi
|
||||
echo "openbox-panel is not running"
|
||||
return 1
|
||||
}
|
||||
|
||||
reload_service() {
|
||||
restart
|
||||
}
|
||||
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "openbox"
|
||||
}
|
||||
Reference in new issue
Block a user