panrouter 1.7.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.mjs +9 -14
- package/daemon.mjs +34 -11
- package/package.json +1 -1
package/cli.mjs
CHANGED
|
@@ -140,17 +140,6 @@ async function startServer() {
|
|
|
140
140
|
|
|
141
141
|
// ─── 4. 以托盘模式启动 ──────────────────────────────────────────────────
|
|
142
142
|
|
|
143
|
-
/**
|
|
144
|
-
* 启动 daemon (Node 常驻进程, 管理 server + PS tray)
|
|
145
|
-
*
|
|
146
|
-
* cli.mjs ─→ node daemon.mjs (detached, hidden)
|
|
147
|
-
* ├─ 启动 server.mjs (子进程, detached, hidden)
|
|
148
|
-
* └─ 启动 powershell tray-daemon.ps1 (子进程, hidden)
|
|
149
|
-
* └─ 保持存活, 30s 健康检查
|
|
150
|
-
*
|
|
151
|
-
* key: 用 process.execPath (绝对路径) 启动
|
|
152
|
-
* 避免 VBS/WScript/CMD 的 PATH 查找问题
|
|
153
|
-
*/
|
|
154
143
|
function startTray() {
|
|
155
144
|
const daemonPath = path.join(__dirname, "daemon.mjs");
|
|
156
145
|
|
|
@@ -170,9 +159,15 @@ function startTray() {
|
|
|
170
159
|
});
|
|
171
160
|
child.unref();
|
|
172
161
|
|
|
173
|
-
log("OK", "Pan Router
|
|
174
|
-
console.log("
|
|
175
|
-
|
|
162
|
+
log("OK", "Pan Router 托盘服务已启动", "green");
|
|
163
|
+
console.log("");
|
|
164
|
+
console.log(" \x1b[33m实时查看日志:\x1b[0m");
|
|
165
|
+
console.log(" powershell -Command \"Get-Content -Wait -Tail 20 $env:TEMP\\panrouter-daemon.log\"");
|
|
166
|
+
console.log("");
|
|
167
|
+
console.log(" \x1b[33m查看全部日志:\x1b[0m");
|
|
168
|
+
console.log(" notepad %TEMP%\\panrouter-daemon.log");
|
|
169
|
+
console.log("");
|
|
170
|
+
console.log(" 若 10 秒后图标未出现,请查看日志并反馈");
|
|
176
171
|
|
|
177
172
|
// ─── 主流程 ──────────────────────────────────────────────────────────────
|
|
178
173
|
|
package/daemon.mjs
CHANGED
|
@@ -69,26 +69,49 @@ function isOnline() {
|
|
|
69
69
|
log(`Server online=${ready}`);
|
|
70
70
|
|
|
71
71
|
// ─── 4. 用 VBS 启动 PS 托盘 ─────────────────────
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
log("Starting PS tray via VBS...");
|
|
73
|
+
|
|
74
74
|
if (fs.existsSync(trayPsPath)) {
|
|
75
|
+
log(`trayPsPath exists: ${trayPsPath}`);
|
|
76
|
+
|
|
75
77
|
// 创建临时的 VBS 启动器
|
|
76
78
|
const vbsContent = `Set WshShell = CreateObject("WScript.Shell")
|
|
79
|
+
Set FSO = CreateObject("Scripting.FileSystemObject")
|
|
80
|
+
' 写诊断日志
|
|
81
|
+
On Error Resume Next
|
|
82
|
+
Dim f : Set f = FSO.OpenTextFile("${(process.env.TEMP || "/tmp").replace(/\\/g, "\\\\")}\\panrouter-vbs.log", 2, True)
|
|
83
|
+
f.WriteLine Now & " VBS started"
|
|
84
|
+
f.Close
|
|
85
|
+
' 启动 PS 托盘
|
|
77
86
|
WshShell.Run "powershell -ExecutionPolicy Bypass -WindowStyle Hidden -STA -File """ & "${trayPsPath.replace(/\\/g, "\\\\")}" & """", 0, False
|
|
87
|
+
If Err.Number <> 0 Then
|
|
88
|
+
Set f = FSO.OpenTextFile("${(process.env.TEMP || "/tmp").replace(/\\/g, "\\\\")}\\panrouter-vbs.log", 8, True)
|
|
89
|
+
f.WriteLine Now & " ERROR: " & Err.Description
|
|
90
|
+
f.Close
|
|
91
|
+
End If
|
|
78
92
|
`;
|
|
79
93
|
const vbsPath = path.join(process.env.TEMP || "/tmp", "panrouter-tray-launcher.vbs");
|
|
80
|
-
try {
|
|
94
|
+
try {
|
|
95
|
+
fs.writeFileSync(vbsPath, vbsContent, "utf8");
|
|
96
|
+
log(`VBS written: ${vbsPath}`);
|
|
97
|
+
} catch (e) {
|
|
98
|
+
log(`VBS write FAILED: ${e.message}`);
|
|
99
|
+
}
|
|
81
100
|
|
|
82
|
-
log(`VBS
|
|
101
|
+
log(`VBS content:\n${vbsContent}`);
|
|
83
102
|
|
|
84
|
-
// wscript //B
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
103
|
+
// 先试 wscript //B
|
|
104
|
+
try {
|
|
105
|
+
const vbs = spawn("wscript.exe", ["//B", "//NoLogo", vbsPath], {
|
|
106
|
+
stdio: "ignore", windowsHide: true, shell: false,
|
|
107
|
+
});
|
|
108
|
+
vbs.unref();
|
|
109
|
+
log(`VBS spawned via wscript`);
|
|
110
|
+
} catch (e) {
|
|
111
|
+
log(`VBS via wscript FAILED: ${e.message}`);
|
|
112
|
+
}
|
|
90
113
|
} else {
|
|
91
|
-
log(`WARN: ${trayPsPath}
|
|
114
|
+
log(`WARN: tray-daemon.ps1 NOT FOUND at ${trayPsPath}`);
|
|
92
115
|
}
|
|
93
116
|
|
|
94
117
|
// ─── 5. 保持存活 ────────────────────────────────
|