@cjwddz/mirror 2.0.2 → 2.0.4
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/README.md +6 -3
- package/dist/cli/cli-commands.d.ts.map +1 -1
- package/dist/cli/cli-commands.js +83 -90
- package/dist/cli/cli-commands.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +18 -60
- package/dist/cli/index.js.map +1 -1
- package/dist/core/http-tunnel-server.d.ts.map +1 -1
- package/dist/core/http-tunnel-server.js +4 -4
- package/dist/core/http-tunnel-server.js.map +1 -1
- package/dist/core/rule-manager.d.ts.map +1 -1
- package/dist/core/rule-manager.js +4 -6
- package/dist/core/rule-manager.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/file-sync.d.ts +0 -14
- package/dist/core/file-sync.d.ts.map +0 -1
- package/dist/core/file-sync.js +0 -34
- package/dist/core/file-sync.js.map +0 -1
- package/dist/core/output-buffer.d.ts +0 -42
- package/dist/core/output-buffer.d.ts.map +0 -1
- package/dist/core/output-buffer.js +0 -66
- package/dist/core/output-buffer.js.map +0 -1
- package/dist/core/protocol.d.ts +0 -83
- package/dist/core/protocol.d.ts.map +0 -1
- package/dist/core/protocol.js +0 -10
- package/dist/core/protocol.js.map +0 -1
- package/dist/core/state-machine.d.ts +0 -19
- package/dist/core/state-machine.d.ts.map +0 -1
- package/dist/core/state-machine.js +0 -39
- package/dist/core/state-machine.js.map +0 -1
- package/dist/core/token-manager.d.ts +0 -29
- package/dist/core/token-manager.d.ts.map +0 -1
- package/dist/core/token-manager.js +0 -90
- package/dist/core/token-manager.js.map +0 -1
- package/dist/core/workspace.d.ts +0 -28
- package/dist/core/workspace.d.ts.map +0 -1
- package/dist/core/workspace.js +0 -186
- package/dist/core/workspace.js.map +0 -1
- package/dist/transport/websocket.d.ts +0 -22
- package/dist/transport/websocket.d.ts.map +0 -1
- package/dist/transport/websocket.js +0 -96
- package/dist/transport/websocket.js.map +0 -1
package/README.md
CHANGED
|
@@ -24,12 +24,13 @@ npm install -g @cjwddz/mirror
|
|
|
24
24
|
在公网服务器上运行:
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
|
-
mirror server -p 80 -t
|
|
27
|
+
mirror server -p 80 -t 3000 --token your-token
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
参数说明:
|
|
31
|
+
|
|
31
32
|
- `-p, --port`: HTTP 服务端口(默认 80)
|
|
32
|
-
- `-t, --tunnel-port`: WebSocket 隧道端口(默认
|
|
33
|
+
- `-t, --tunnel-port`: WebSocket 隧道端口(默认 3000,通常由 Nginx 反向代理到 443)
|
|
33
34
|
- `--host`: 监听地址(默认 0.0.0.0)
|
|
34
35
|
- `--token`: 认证令牌(可选)
|
|
35
36
|
|
|
@@ -141,6 +142,7 @@ mirror stop
|
|
|
141
142
|
- `target`: 目标服务地址(如 `localhost:3001`)
|
|
142
143
|
|
|
143
144
|
**规则格式说明:**
|
|
145
|
+
|
|
144
146
|
- 域名和路径写在一起,使用 `/` 分隔
|
|
145
147
|
- 路径可以省略,省略时默认为 `/`
|
|
146
148
|
- 示例:
|
|
@@ -170,7 +172,7 @@ mirror stop
|
|
|
170
172
|
启动 HTTP 隧道服务端。
|
|
171
173
|
|
|
172
174
|
- `-p, --port`: HTTP 服务端口(默认 80)
|
|
173
|
-
- `-t, --tunnel-port`: WebSocket 隧道端口(默认
|
|
175
|
+
- `-t, --tunnel-port`: WebSocket 隧道端口(默认 3000)
|
|
174
176
|
- `--host`: 监听地址(默认 0.0.0.0)
|
|
175
177
|
- `--token`: 认证令牌(可选)
|
|
176
178
|
- `--timeout`: 请求超时时间(毫秒,默认 30000)
|
|
@@ -193,6 +195,7 @@ mirror stop
|
|
|
193
195
|
```
|
|
194
196
|
|
|
195
197
|
请求匹配结果(按优先级排序):
|
|
198
|
+
|
|
196
199
|
1. `example.com/api/users/v1` → `localhost:3002`(匹配规则 3,路径长度 10)
|
|
197
200
|
2. `example.com/api/products` → `localhost:3001`(匹配规则 1,路径长度 4)
|
|
198
201
|
3. `example.com/` → `localhost:5173`(匹配规则 2,路径长度 1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../../src/cli/cli-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoEH;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../../src/cli/cli-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoEH;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwF5F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DlF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoClE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBjD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA+BjD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDnD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFzE"}
|
package/dist/cli/cli-commands.js
CHANGED
|
@@ -28,8 +28,8 @@ async function checkLockFile() {
|
|
|
28
28
|
// 检查进程是否还在运行
|
|
29
29
|
try {
|
|
30
30
|
process.kill(pid, 0);
|
|
31
|
-
console.error(`[!]
|
|
32
|
-
console.error('[!]
|
|
31
|
+
console.error(`[!] 已有 mirror 客户端在运行 (PID: ${pid})`);
|
|
32
|
+
console.error('[!] 请先执行 mirror stop 停止后再试');
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
catch {
|
|
@@ -42,7 +42,7 @@ async function checkLockFile() {
|
|
|
42
42
|
return true;
|
|
43
43
|
}
|
|
44
44
|
catch (error) {
|
|
45
|
-
console.error('[!]
|
|
45
|
+
console.error('[!] 创建锁文件失败:', error);
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -64,8 +64,8 @@ async function cleanupLockFile() {
|
|
|
64
64
|
* link 命令:连接服务端
|
|
65
65
|
*/
|
|
66
66
|
export async function linkCommand(server, options) {
|
|
67
|
-
console.log('Mirror HTTP
|
|
68
|
-
console.log('
|
|
67
|
+
console.log('Mirror HTTP 隧道客户端');
|
|
68
|
+
console.log('========================\n');
|
|
69
69
|
// 检查锁文件
|
|
70
70
|
const lockCheck = await checkLockFile();
|
|
71
71
|
if (!lockCheck) {
|
|
@@ -81,29 +81,22 @@ export async function linkCommand(server, options) {
|
|
|
81
81
|
}
|
|
82
82
|
// 保存服务器配置
|
|
83
83
|
ruleManager.setServer(server, options.token);
|
|
84
|
-
console.log(`[*]
|
|
84
|
+
console.log(`[*] 服务端: ${server}`);
|
|
85
85
|
if (options.token) {
|
|
86
|
-
console.log(`[*]
|
|
86
|
+
console.log(`[*] 令牌: ${options.token}`);
|
|
87
87
|
}
|
|
88
|
-
// 构建 WebSocket URL
|
|
88
|
+
// 构建 WebSocket URL:仅使用域名,走 wss 默认 443(由 Nginx 等反向代理处理 TLS)
|
|
89
89
|
let wsUrl = `wss://${server}`;
|
|
90
|
-
if (!server.includes(':')) {
|
|
91
|
-
wsUrl = `wss://${server}:7332`;
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
const [host, port] = server.split(':');
|
|
95
|
-
wsUrl = `wss://${host}:${port}`;
|
|
96
|
-
}
|
|
97
90
|
// 添加 token
|
|
98
91
|
if (options.token) {
|
|
99
92
|
const separator = wsUrl.includes('?') ? '&' : '?';
|
|
100
93
|
wsUrl = `${wsUrl}${separator}token=${options.token}`;
|
|
101
94
|
}
|
|
102
|
-
console.log(`[*]
|
|
95
|
+
console.log(`[*] 正在连接 ${wsUrl} ...`);
|
|
103
96
|
try {
|
|
104
97
|
tunnelWs = new WebSocket(wsUrl);
|
|
105
98
|
tunnelWs.on('open', () => {
|
|
106
|
-
console.log('[✓]
|
|
99
|
+
console.log('[✓] 已连接服务端\n');
|
|
107
100
|
isConnected = true;
|
|
108
101
|
// 发送规则同步
|
|
109
102
|
syncRules();
|
|
@@ -112,20 +105,20 @@ export async function linkCommand(server, options) {
|
|
|
112
105
|
handleTunnelMessage(data);
|
|
113
106
|
});
|
|
114
107
|
tunnelWs.on('close', (code, reason) => {
|
|
115
|
-
const reasonStr = reason ? reason.toString() : '
|
|
116
|
-
console.log(`[!]
|
|
108
|
+
const reasonStr = reason ? reason.toString() : '未知原因';
|
|
109
|
+
console.log(`[!] 已断开与服务端的连接: ${reasonStr} (code: ${code})\n`);
|
|
117
110
|
isConnected = false;
|
|
118
111
|
cleanupLockFile();
|
|
119
112
|
process.exit(0);
|
|
120
113
|
});
|
|
121
114
|
tunnelWs.on('error', (error) => {
|
|
122
|
-
console.error('[!]
|
|
115
|
+
console.error('[!] 连接错误:', error.message);
|
|
123
116
|
cleanupLockFile();
|
|
124
117
|
process.exit(1);
|
|
125
118
|
});
|
|
126
119
|
// 处理进程退出
|
|
127
120
|
const exitHandler = () => {
|
|
128
|
-
console.log('\n[*]
|
|
121
|
+
console.log('\n[*] 正在断开连接...');
|
|
129
122
|
if (tunnelWs) {
|
|
130
123
|
tunnelWs.close();
|
|
131
124
|
}
|
|
@@ -138,7 +131,7 @@ export async function linkCommand(server, options) {
|
|
|
138
131
|
await new Promise(() => { });
|
|
139
132
|
}
|
|
140
133
|
catch (error) {
|
|
141
|
-
console.error('[!]
|
|
134
|
+
console.error('[!] 连接失败:', error);
|
|
142
135
|
cleanupLockFile();
|
|
143
136
|
process.exit(1);
|
|
144
137
|
}
|
|
@@ -147,34 +140,34 @@ export async function linkCommand(server, options) {
|
|
|
147
140
|
* add 命令:添加代理规则
|
|
148
141
|
*/
|
|
149
142
|
export async function addCommand(domainPath, target) {
|
|
150
|
-
console.log('Mirror -
|
|
143
|
+
console.log('Mirror - 添加代理规则');
|
|
151
144
|
console.log('========================\n');
|
|
152
145
|
// 解析 domain 和 path
|
|
153
146
|
const domainMatch = domainPath.match(/^([^/]+)(.*)$/);
|
|
154
147
|
if (!domainMatch) {
|
|
155
|
-
console.error('[!]
|
|
156
|
-
console.error('[!]
|
|
157
|
-
console.error('[!]
|
|
148
|
+
console.error('[!] 域名/路径格式无效');
|
|
149
|
+
console.error('[!] 用法: mirror add <域名/路径> <目标>');
|
|
150
|
+
console.error('[!] 示例: mirror add example.com/api localhost:3001');
|
|
158
151
|
process.exit(1);
|
|
159
152
|
}
|
|
160
153
|
const domain = domainMatch[1];
|
|
161
154
|
const path = domainMatch[2] || '/';
|
|
162
155
|
// 验证参数
|
|
163
156
|
if (!domain || !target) {
|
|
164
|
-
console.error('[!]
|
|
165
|
-
console.error('[!]
|
|
166
|
-
console.error('[!]
|
|
157
|
+
console.error('[!] 缺少必填参数');
|
|
158
|
+
console.error('[!] 用法: mirror add <域名/路径> <目标>');
|
|
159
|
+
console.error('[!] 示例: mirror add example.com/api localhost:3001');
|
|
167
160
|
process.exit(1);
|
|
168
161
|
}
|
|
169
|
-
console.log(`[*]
|
|
170
|
-
console.log(`[*]
|
|
171
|
-
console.log(`[*]
|
|
162
|
+
console.log(`[*] 域名: ${domain}`);
|
|
163
|
+
console.log(`[*] 路径: ${path}`);
|
|
164
|
+
console.log(`[*] 目标: ${target}\n`);
|
|
172
165
|
// 创建规则管理器
|
|
173
166
|
const ruleManager = new RuleManager();
|
|
174
167
|
// 添加规则
|
|
175
168
|
const rule = ruleManager.addRule(domain, path, target);
|
|
176
169
|
if (rule) {
|
|
177
|
-
console.log('[✓]
|
|
170
|
+
console.log('[✓] 规则添加成功\n');
|
|
178
171
|
console.log(` ID: ${rule.id}`);
|
|
179
172
|
console.log(` ${rule.domain}${rule.path} -> ${rule.target}`);
|
|
180
173
|
// 根据路径长度显示优先级
|
|
@@ -189,7 +182,7 @@ export async function addCommand(domainPath, target) {
|
|
|
189
182
|
console.log(` 优先级: ${priorityText} (路径长度: ${pathLength})\n`);
|
|
190
183
|
}
|
|
191
184
|
else {
|
|
192
|
-
console.error('[!]
|
|
185
|
+
console.error('[!] 添加规则失败\n');
|
|
193
186
|
process.exit(1);
|
|
194
187
|
}
|
|
195
188
|
// 如果已连接,同步规则
|
|
@@ -202,34 +195,34 @@ export async function addCommand(domainPath, target) {
|
|
|
202
195
|
* remove 命令:删除代理规则
|
|
203
196
|
*/
|
|
204
197
|
export async function removeCommand(ruleId) {
|
|
205
|
-
console.log('Mirror -
|
|
206
|
-
console.log('
|
|
198
|
+
console.log('Mirror - 删除代理规则');
|
|
199
|
+
console.log('========================\n');
|
|
207
200
|
const ruleManager = new RuleManager();
|
|
208
201
|
if (ruleId) {
|
|
209
202
|
// 删除指定规则
|
|
210
203
|
const id = parseInt(ruleId, 10);
|
|
211
204
|
if (isNaN(id)) {
|
|
212
|
-
console.error('[!]
|
|
205
|
+
console.error('[!] 规则 ID 无效:', ruleId);
|
|
213
206
|
process.exit(1);
|
|
214
207
|
}
|
|
215
208
|
const rules = ruleManager.getRules();
|
|
216
|
-
const rule = rules.find(r => r.id === id);
|
|
209
|
+
const rule = rules.find((r) => r.id === id);
|
|
217
210
|
if (!rule) {
|
|
218
|
-
console.error(`[!]
|
|
211
|
+
console.error(`[!] 规则不存在: ${id}`);
|
|
219
212
|
process.exit(1);
|
|
220
213
|
}
|
|
221
214
|
ruleManager.removeRule(id);
|
|
222
|
-
console.log(`[✓]
|
|
215
|
+
console.log(`[✓] 规则已删除: ${rule.domain}${rule.path} -> ${rule.target}\n`);
|
|
223
216
|
}
|
|
224
217
|
else {
|
|
225
218
|
// 删除所有规则
|
|
226
219
|
const count = ruleManager.getRules().length;
|
|
227
220
|
ruleManager.removeRule();
|
|
228
|
-
console.log(`[✓]
|
|
221
|
+
console.log(`[✓] 已删除全部规则 (共 ${count} 条)\n`);
|
|
229
222
|
}
|
|
230
223
|
// 如果已连接,同步规则
|
|
231
224
|
if (isConnected && tunnelWs) {
|
|
232
|
-
console.log('[*]
|
|
225
|
+
console.log('[*] 正在同步规则到服务端...');
|
|
233
226
|
syncRules();
|
|
234
227
|
}
|
|
235
228
|
}
|
|
@@ -237,21 +230,21 @@ export async function removeCommand(ruleId) {
|
|
|
237
230
|
* list 命令:查看代理规则
|
|
238
231
|
*/
|
|
239
232
|
export async function listCommand() {
|
|
240
|
-
console.log('Mirror -
|
|
241
|
-
console.log('
|
|
233
|
+
console.log('Mirror - 代理规则');
|
|
234
|
+
console.log('================\n');
|
|
242
235
|
const ruleManager = new RuleManager();
|
|
243
236
|
const rules = ruleManager.getRules();
|
|
244
237
|
if (rules.length === 0) {
|
|
245
|
-
console.log('[!]
|
|
238
|
+
console.log('[!] 未配置规则\n');
|
|
246
239
|
return;
|
|
247
240
|
}
|
|
248
|
-
console.log(
|
|
241
|
+
console.log(`共 ${rules.length} 条规则\n`);
|
|
249
242
|
for (const rule of rules) {
|
|
250
243
|
const priorityLabel = rule.priority === 'high' ? '高' : '低';
|
|
251
244
|
const priorityNote = rule.priority === 'high' ? '(路径规则)' : '(域名规则)';
|
|
252
245
|
console.log(`[${rule.id}] ${rule.domain}${rule.path} -> ${rule.target}`);
|
|
253
|
-
console.log(`
|
|
254
|
-
console.log(`
|
|
246
|
+
console.log(` 优先级: ${priorityLabel}${priorityNote}`);
|
|
247
|
+
console.log(` 创建时间: ${new Date(rule.createdAt).toLocaleString()}`);
|
|
255
248
|
console.log();
|
|
256
249
|
}
|
|
257
250
|
}
|
|
@@ -259,31 +252,31 @@ export async function listCommand() {
|
|
|
259
252
|
* stop 命令:断开连接
|
|
260
253
|
*/
|
|
261
254
|
export async function stopCommand() {
|
|
262
|
-
console.log('Mirror -
|
|
263
|
-
console.log('
|
|
255
|
+
console.log('Mirror - 断开连接');
|
|
256
|
+
console.log('==================\n');
|
|
264
257
|
// 检查锁文件
|
|
265
258
|
try {
|
|
266
259
|
const fs = await import('fs');
|
|
267
260
|
const lockFile = process.env.HOME + '/.mirror/.lock';
|
|
268
261
|
if (!fs.existsSync(lockFile)) {
|
|
269
|
-
console.log('[!]
|
|
262
|
+
console.log('[!] 当前没有 mirror 客户端在运行\n');
|
|
270
263
|
process.exit(0);
|
|
271
264
|
}
|
|
272
265
|
const pid = parseInt(fs.readFileSync(lockFile, 'utf-8'), 10);
|
|
273
266
|
try {
|
|
274
267
|
// 发送 SIGTERM 信号
|
|
275
268
|
process.kill(pid, 'SIGTERM');
|
|
276
|
-
console.log(`[✓]
|
|
269
|
+
console.log(`[✓] 已向 mirror 客户端发送停止信号 (PID: ${pid})\n`);
|
|
277
270
|
}
|
|
278
271
|
catch {
|
|
279
|
-
console.log(`[!]
|
|
280
|
-
console.log('[!]
|
|
272
|
+
console.log(`[!] mirror 客户端 (PID: ${pid}) 无响应\n`);
|
|
273
|
+
console.log('[!] 正在清理锁文件...');
|
|
281
274
|
fs.unlinkSync(lockFile);
|
|
282
|
-
console.log('[✓]
|
|
275
|
+
console.log('[✓] 锁文件已移除\n');
|
|
283
276
|
}
|
|
284
277
|
}
|
|
285
278
|
catch (error) {
|
|
286
|
-
console.error('[!]
|
|
279
|
+
console.error('[!] 错误:', error);
|
|
287
280
|
}
|
|
288
281
|
process.exit(0);
|
|
289
282
|
}
|
|
@@ -291,8 +284,8 @@ export async function stopCommand() {
|
|
|
291
284
|
* status 命令:查看连接状态
|
|
292
285
|
*/
|
|
293
286
|
export async function statusCommand() {
|
|
294
|
-
console.log('Mirror -
|
|
295
|
-
console.log('
|
|
287
|
+
console.log('Mirror - 连接状态');
|
|
288
|
+
console.log('==================\n');
|
|
296
289
|
try {
|
|
297
290
|
const fs = await import('fs');
|
|
298
291
|
const lockFile = process.env.HOME + '/.mirror/.lock';
|
|
@@ -302,36 +295,36 @@ export async function statusCommand() {
|
|
|
302
295
|
const pid = parseInt(fs.readFileSync(lockFile, 'utf-8'), 10);
|
|
303
296
|
try {
|
|
304
297
|
process.kill(pid, 0);
|
|
305
|
-
console.log('[✓] Mirror
|
|
298
|
+
console.log('[✓] Mirror 客户端正在运行');
|
|
306
299
|
console.log(` PID: ${pid}\n`);
|
|
307
300
|
}
|
|
308
301
|
catch {
|
|
309
|
-
console.log('[!] Mirror
|
|
310
|
-
console.log('[!]
|
|
302
|
+
console.log('[!] Mirror 客户端未运行(锁文件已过期)');
|
|
303
|
+
console.log('[!] 正在清理锁文件...');
|
|
311
304
|
fs.unlinkSync(lockFile);
|
|
312
|
-
console.log('[✓]
|
|
305
|
+
console.log('[✓] 锁文件已移除\n');
|
|
313
306
|
}
|
|
314
307
|
}
|
|
315
308
|
else {
|
|
316
|
-
console.log('[!] Mirror
|
|
309
|
+
console.log('[!] Mirror 客户端未运行\n');
|
|
317
310
|
}
|
|
318
311
|
// 显示服务器配置
|
|
319
312
|
const config = ruleManager.getServer();
|
|
320
313
|
if (config.server) {
|
|
321
|
-
console.log('
|
|
322
|
-
console.log(`
|
|
314
|
+
console.log('服务器配置:');
|
|
315
|
+
console.log(` 服务端: ${config.server}`);
|
|
323
316
|
if (config.token) {
|
|
324
|
-
console.log(`
|
|
317
|
+
console.log(` 令牌: ${config.token.substring(0, 8)}...`);
|
|
325
318
|
}
|
|
326
319
|
console.log();
|
|
327
320
|
}
|
|
328
321
|
else {
|
|
329
|
-
console.log('[!]
|
|
322
|
+
console.log('[!] 未配置服务器\n');
|
|
330
323
|
}
|
|
331
324
|
// 显示规则
|
|
332
325
|
const rules = ruleManager.getRules();
|
|
333
326
|
if (rules.length > 0) {
|
|
334
|
-
console.log(
|
|
327
|
+
console.log(`代理规则 (已配置 ${rules.length} 条):`);
|
|
335
328
|
for (const rule of rules) {
|
|
336
329
|
const priority = rule.priority === 'high' ? '高' : '低';
|
|
337
330
|
console.log(` [${rule.id}] ${rule.domain}${rule.path} -> ${rule.target} (${priority})`);
|
|
@@ -339,11 +332,11 @@ export async function statusCommand() {
|
|
|
339
332
|
console.log();
|
|
340
333
|
}
|
|
341
334
|
else {
|
|
342
|
-
console.log('[!]
|
|
335
|
+
console.log('[!] 未配置代理规则\n');
|
|
343
336
|
}
|
|
344
337
|
}
|
|
345
338
|
catch (error) {
|
|
346
|
-
console.error('[!]
|
|
339
|
+
console.error('[!] 错误:', error);
|
|
347
340
|
}
|
|
348
341
|
process.exit(0);
|
|
349
342
|
}
|
|
@@ -352,13 +345,13 @@ export async function statusCommand() {
|
|
|
352
345
|
*/
|
|
353
346
|
export async function serverCommand(options) {
|
|
354
347
|
const { port, host, tunnelPort, token, timeout } = options;
|
|
355
|
-
console.log('Mirror HTTP
|
|
356
|
-
console.log('
|
|
348
|
+
console.log('Mirror HTTP 隧道服务端');
|
|
349
|
+
console.log('========================\n');
|
|
357
350
|
// 创建 WebSocket 服务器(用于隧道连接)
|
|
358
351
|
const wss = new WebSocketServer({ port: tunnelPort, host });
|
|
359
|
-
console.log(`[*] WebSocket
|
|
352
|
+
console.log(`[*] WebSocket 隧道服务端监听中 ${host}:${tunnelPort}`);
|
|
360
353
|
if (token) {
|
|
361
|
-
console.log(`[*]
|
|
354
|
+
console.log(`[*] 认证令牌: ${token}`);
|
|
362
355
|
}
|
|
363
356
|
// 创建 HTTP 隧道服务端
|
|
364
357
|
const tunnelServer = new HttpTunnelServer({
|
|
@@ -368,46 +361,46 @@ export async function serverCommand(options) {
|
|
|
368
361
|
});
|
|
369
362
|
// 启动 HTTP 服务器
|
|
370
363
|
await tunnelServer.start();
|
|
371
|
-
console.log(`[*] HTTP
|
|
372
|
-
console.log('[*]
|
|
364
|
+
console.log(`[*] HTTP 服务监听中 http://${host}:${port}\n`);
|
|
365
|
+
console.log('[*] 等待客户端连接...\n');
|
|
373
366
|
// 处理 WebSocket 隧道连接
|
|
374
367
|
wss.on('connection', (ws, req) => {
|
|
375
368
|
// 验证 token(如果配置了)
|
|
376
369
|
const url = new URL(req.url || '', `http://${req.headers.host}`);
|
|
377
370
|
const clientToken = url.searchParams.get('token');
|
|
378
371
|
if (token && clientToken !== token) {
|
|
379
|
-
console.log('[!]
|
|
372
|
+
console.log('[!] 客户端被拒绝:令牌无效');
|
|
380
373
|
ws.close(1008, 'Invalid token');
|
|
381
374
|
return;
|
|
382
375
|
}
|
|
383
|
-
const clientIp = req.socket.remoteAddress || '
|
|
384
|
-
console.log(`[✓]
|
|
376
|
+
const clientIp = req.socket.remoteAddress || '未知';
|
|
377
|
+
console.log(`[✓] 新客户端已连接,来源: ${clientIp}`);
|
|
385
378
|
// 设置隧道连接(会自动关闭旧连接)
|
|
386
379
|
tunnelServer.setTunnelConnection(ws);
|
|
387
|
-
console.log('[*] HTTP
|
|
380
|
+
console.log('[*] HTTP 隧道已就绪\n');
|
|
388
381
|
// 处理客户端断开
|
|
389
382
|
ws.on('close', () => {
|
|
390
|
-
console.log('[!]
|
|
391
|
-
console.log('[*] HTTP
|
|
383
|
+
console.log('[!] 客户端已断开');
|
|
384
|
+
console.log('[*] HTTP 隧道未就绪\n');
|
|
392
385
|
});
|
|
393
386
|
ws.on('error', (error) => {
|
|
394
|
-
console.error('[!]
|
|
387
|
+
console.error('[!] 客户端错误:', error);
|
|
395
388
|
});
|
|
396
389
|
// 发送欢迎消息
|
|
397
390
|
ws.send(JSON.stringify({
|
|
398
391
|
type: 'WELCOME',
|
|
399
|
-
message: '
|
|
392
|
+
message: '已连接 Mirror HTTP 隧道服务端',
|
|
400
393
|
serverVersion: '2.0.0',
|
|
401
394
|
}));
|
|
402
395
|
});
|
|
403
396
|
// 处理 WebSocket 服务器错误
|
|
404
397
|
wss.on('error', (error) => {
|
|
405
|
-
console.error('[!] WebSocket
|
|
398
|
+
console.error('[!] WebSocket 服务错误:', error);
|
|
406
399
|
process.exit(1);
|
|
407
400
|
});
|
|
408
401
|
// 处理进程退出
|
|
409
402
|
const cleanup = async () => {
|
|
410
|
-
console.log('\n[*]
|
|
403
|
+
console.log('\n[*] 正在关闭...');
|
|
411
404
|
await tunnelServer.stop();
|
|
412
405
|
wss.close();
|
|
413
406
|
process.exit(0);
|
|
@@ -440,14 +433,14 @@ function handleTunnelMessage(data) {
|
|
|
440
433
|
switch (message.type) {
|
|
441
434
|
case 'WELCOME':
|
|
442
435
|
console.log(`[✓] ${message.message}`);
|
|
443
|
-
console.log(`[*]
|
|
436
|
+
console.log(`[*] 服务端版本: ${message.serverVersion}\n`);
|
|
444
437
|
break;
|
|
445
438
|
case 'RULES_ACK':
|
|
446
439
|
if (message.success) {
|
|
447
|
-
console.log(`[✓]
|
|
440
|
+
console.log(`[✓] 规则已同步: ${message.count} 条\n`);
|
|
448
441
|
}
|
|
449
442
|
else {
|
|
450
|
-
console.error(`[!]
|
|
443
|
+
console.error(`[!] 规则同步失败: ${message.message}\n`);
|
|
451
444
|
}
|
|
452
445
|
break;
|
|
453
446
|
default:
|
|
@@ -456,7 +449,7 @@ function handleTunnelMessage(data) {
|
|
|
456
449
|
}
|
|
457
450
|
}
|
|
458
451
|
catch (error) {
|
|
459
|
-
console.error('[!]
|
|
452
|
+
console.error('[!] 处理消息时出错:', error);
|
|
460
453
|
}
|
|
461
454
|
}
|
|
462
455
|
//# sourceMappingURL=cli-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../../src/cli/cli-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-commands.js","sourceRoot":"","sources":["../../src/cli/cli-commands.ts"],"names":[],"mappings":"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"}
|