release: v1.0.7 — 依赖包名修正、Gateway crash loop 修复

This commit is contained in:
10000ge10000
2026-03-06 00:33:17 +08:00
parent 20a8c016a4
commit e844b4754b
9 changed files with 130 additions and 9 deletions

View File

@@ -87,6 +87,7 @@ function action_status()
port = port,
pty_port = pty_port,
gateway_running = false,
gateway_starting = false,
pty_running = false,
pid = "",
memory_kb = 0,
@@ -122,6 +123,14 @@ function action_status()
local gw_check = sys.exec("netstat -tlnp 2>/dev/null | grep -c ':" .. port .. " ' || echo 0"):gsub("%s+", "")
result.gateway_running = (tonumber(gw_check) or 0) > 0
-- 如果端口未监听但 procd 进程存在,说明正在启动中 (gateway 初始化需要数分钟)
if not result.gateway_running and enabled == "1" then
local procd_pid = sys.exec("pgrep -f 'openclaw.*gateway' 2>/dev/null | head -1"):gsub("%s+", "")
if procd_pid ~= "" then
result.gateway_starting = true
end
end
-- PTY 端口检查
local pty_check = sys.exec("netstat -tlnp 2>/dev/null | grep -c ':" .. pty_port .. " ' || echo 0"):gsub("%s+", "")
result.pty_running = (tonumber(pty_check) or 0) > 0
@@ -183,8 +192,13 @@ function action_service_ctl()
sys.exec("/etc/init.d/openclaw start >/dev/null 2>&1 &")
elseif action == "stop" then
sys.exec("/etc/init.d/openclaw stop >/dev/null 2>&1")
-- stop 后额外等待确保端口释放
sys.exec("sleep 2")
elseif action == "restart" then
sys.exec("/etc/init.d/openclaw restart >/dev/null 2>&1 &")
-- 先完整 stop (确保端口释放),再后台 start
sys.exec("/etc/init.d/openclaw stop >/dev/null 2>&1")
sys.exec("sleep 2")
sys.exec("/etc/init.d/openclaw start >/dev/null 2>&1 &")
elseif action == "enable" then
sys.exec("/etc/init.d/openclaw enable 2>/dev/null")
elseif action == "disable" then

View File

@@ -136,6 +136,14 @@ local port = uci:get("openclaw", "main", "port") or "18789"
openBtn.href = url;
openBtn.style.display = '';
showIframe(url);
} else if (d.gateway_starting) {
statusTextEl.innerHTML = '<span style="color:#9a6700;">⏳ 网关正在启动</span>';
openBtn.style.display = 'none';
loading.innerHTML = '<div style="text-align:center;color:#666;">' +
'<div style="font-size:40px;margin-bottom:12px;">⏳</div>' +
'<div style="font-size:15px;margin-bottom:6px;">OpenClaw 网关正在启动中...</div>' +
'<div style="font-size:12px;color:#999;">首次启动可能需要 2~5 分钟,请耐心等待,页面会自动刷新。</div>' +
'</div>';
} else {
statusTextEl.innerHTML = '<span style="color:#cf222e;">● 网关未运行</span>';
openBtn.style.display = 'none';

View File

@@ -54,6 +54,7 @@
}
.oc-badge-running { background: #e6f7e9; color: #1a7f37; }
.oc-badge-stopped { background: #ffeef0; color: #cf222e; }
.oc-badge-starting { background: #fff8c5; color: #9a6700; }
.oc-badge-disabled { background: #f0f0f0; color: #656d76; }
.oc-badge-unknown { background: #fff8c5; color: #9a6700; }
.oc-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
@@ -95,6 +96,8 @@
stEl.innerHTML = '<span class="oc-badge oc-badge-disabled">已禁用</span>';
} else if (d.gateway_running) {
stEl.innerHTML = '<span class="oc-badge oc-badge-running">运行中</span>';
} else if (d.gateway_starting) {
stEl.innerHTML = '<span class="oc-badge oc-badge-starting">⏳ 正在启动...</span>';
} else {
stEl.innerHTML = '<span class="oc-badge oc-badge-stopped">已停止</span>';
}
@@ -102,6 +105,8 @@
var gwEl = document.getElementById('oc-st-gateway');
if (d.gateway_running) {
gwEl.innerHTML = '<span class="oc-dot oc-dot-green"></span>监听中 :' + d.port;
} else if (d.gateway_starting) {
gwEl.innerHTML = '<span class="oc-dot oc-dot-gray"></span>初始化中,首次启动可能需要 2~5 分钟...';
} else {
gwEl.innerHTML = '<span class="oc-dot oc-dot-red"></span>未监听';
}