@feng3d/ctc 0.0.10 → 0.0.12
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 +17 -32
- package/dist/admin-server.d.ts +65 -12
- package/dist/admin-server.d.ts.map +1 -1
- package/dist/admin-server.js +291 -564
- package/dist/admin-server.js.map +1 -1
- package/dist/cli.d.ts +12 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +931 -311
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -11
- package/dist/config.js.map +1 -1
- package/dist/controller.d.ts +27 -124
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +77 -139
- package/dist/controller.js.map +1 -1
- package/dist/data-channel.d.ts +76 -0
- package/dist/data-channel.d.ts.map +1 -0
- package/dist/data-channel.js +222 -0
- package/dist/data-channel.js.map +1 -0
- package/dist/forward-proxy.d.ts +100 -0
- package/dist/forward-proxy.d.ts.map +1 -0
- package/dist/forward-proxy.js +407 -0
- package/dist/forward-proxy.js.map +1 -0
- package/dist/handlers/unified-handler.d.ts +33 -75
- package/dist/handlers/unified-handler.d.ts.map +1 -1
- package/dist/handlers/unified-handler.js +191 -315
- package/dist/handlers/unified-handler.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +135 -36
- package/dist/index.js.map +1 -1
- package/dist/ipc-handler.d.ts +52 -0
- package/dist/ipc-handler.d.ts.map +1 -0
- package/dist/ipc-handler.js +110 -0
- package/dist/ipc-handler.js.map +1 -0
- package/dist/proxy-manager.d.ts +13 -6
- package/dist/proxy-manager.d.ts.map +1 -1
- package/dist/proxy-manager.js +58 -23
- package/dist/proxy-manager.js.map +1 -1
- package/package.json +9 -5
package/README.md
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
## 特性
|
|
8
8
|
|
|
9
|
-
- WebSocket
|
|
9
|
+
- **每个代理端口同时支持 HTTP/WebSocket/TCP/UDP 四种协议**
|
|
10
|
+
- 三通道架构:WebSocket 控制通道 + TCP 二进制数据通道 + UDP 数据通道
|
|
10
11
|
- 自动重连机制
|
|
11
|
-
- **每个端口同时支持 HTTP 和 WebSocket 代理**
|
|
12
12
|
- 多代理支持
|
|
13
|
-
-
|
|
13
|
+
- 单实例模式:通过 IPC 机制支持动态添加代理映射
|
|
14
14
|
|
|
15
15
|
## 快速开始
|
|
16
16
|
|
|
@@ -20,19 +20,16 @@
|
|
|
20
20
|
# 启动客户端(连接本地服务器测试)
|
|
21
21
|
npx @feng3d/ctc start -s ws://localhost:9000 -t "my-token" -p "8080:3000:localhost"
|
|
22
22
|
|
|
23
|
-
#
|
|
23
|
+
# 查询状态与代理列表
|
|
24
24
|
npx @feng3d/ctc status
|
|
25
25
|
|
|
26
|
-
# 列出代理映射
|
|
27
|
-
npx @feng3d/ctc list
|
|
28
|
-
|
|
29
26
|
# 停止客户端
|
|
30
27
|
npx @feng3d/ctc stop
|
|
31
28
|
```
|
|
32
29
|
|
|
33
30
|
## 命令说明
|
|
34
31
|
|
|
35
|
-
### `start` -
|
|
32
|
+
### `start` - 启动客户端(别名:`ks`)
|
|
36
33
|
|
|
37
34
|
```bash
|
|
38
35
|
npx @feng3d/ctc start [选项]
|
|
@@ -66,9 +63,10 @@ npx @feng3d/ctc start -s ws://your-server.com:9000 -t "my-token" -p "8080:3000:l
|
|
|
66
63
|
| `--reconnect-interval <ms>` | 重连间隔(毫秒) | `5000` | `5000` |
|
|
67
64
|
| `--max-reconnect <number>` | 最大重连次数 | `10` | `10` |
|
|
68
65
|
| `--no-daemon` | 前台运行(不作为后台守护进程) | - | - |
|
|
66
|
+
| `--no-autostart` | 不注册开机启动 | - | - |
|
|
69
67
|
| `-o, --open` | 启动后在浏览器中打开管理页面 | - | - |
|
|
70
68
|
|
|
71
|
-
### `status` -
|
|
69
|
+
### `status` - 查询客户端状态与代理列表(别名:`zt`)
|
|
72
70
|
|
|
73
71
|
```bash
|
|
74
72
|
npx @feng3d/ctc status
|
|
@@ -78,28 +76,18 @@ npx @feng3d/ctc status
|
|
|
78
76
|
|
|
79
77
|
```
|
|
80
78
|
穿透客户端状态
|
|
81
|
-
运行中: 是
|
|
82
|
-
服务器: ws://your-server.com:9000
|
|
83
79
|
PID: 12345
|
|
80
|
+
服务器: ws://your-server.com:9000
|
|
81
|
+
管理页面: http://127.0.0.1:9001/
|
|
82
|
+
开机启动: 已启用
|
|
83
|
+
连接状态: 已认证
|
|
84
84
|
运行时长: 5分30秒
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### `list` - 列出代理映射
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
npx @feng3d/ctc list
|
|
85
|
+
代理映射: 2 个
|
|
86
|
+
:8080 -> localhost:3000
|
|
87
|
+
:8081 -> localhost:3001
|
|
92
88
|
```
|
|
93
89
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
当前代理映射:
|
|
98
|
-
:8080 -> localhost:3000
|
|
99
|
-
:8081 -> localhost:3001
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### `stop` - 停止客户端
|
|
90
|
+
### `stop` - 停止客户端(别名:`tz`)
|
|
103
91
|
|
|
104
92
|
```bash
|
|
105
93
|
npx @feng3d/ctc stop
|
|
@@ -151,15 +139,12 @@ remotePort:localPort[:localHost]
|
|
|
151
139
|
|
|
152
140
|
**推荐**:本地地址为 localhost 时推荐省略,使用 `8080:3000` 而非 `8080:3000:localhost`。
|
|
153
141
|
|
|
154
|
-
每个代理端口同时支持 HTTP
|
|
142
|
+
每个代理端口同时支持 HTTP/WebSocket/TCP/UDP 协议。
|
|
155
143
|
|
|
156
144
|
**示例:**
|
|
157
145
|
|
|
158
146
|
```
|
|
159
|
-
# HTTP
|
|
160
|
-
8080:3000:localhost
|
|
161
|
-
|
|
162
|
-
# WebSocket 代理(同一端口)
|
|
147
|
+
# 单个代理(同时支持 HTTP/WebSocket/TCP/UDP)
|
|
163
148
|
8080:3000:localhost
|
|
164
149
|
|
|
165
150
|
# 完整格式
|
package/dist/admin-server.d.ts
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* @module admin-server
|
|
3
3
|
* @description 客户端管理页面 HTTP 服务器模块。
|
|
4
4
|
* 提供一个本地 HTTP 服务,用于查看客户端状态和管理代理映射。
|
|
5
|
+
* 支持反向代理模式和正向穿透模式。
|
|
5
6
|
*/
|
|
6
|
-
import { ProxyConfig } from '@feng3d/chuantou-shared';
|
|
7
|
+
import { ProxyConfig, ForwardProxyEntry } from '@feng3d/chuantou-shared';
|
|
8
|
+
export type { ForwardProxyEntry };
|
|
7
9
|
/**
|
|
8
10
|
* 客户端状态信息接口
|
|
9
11
|
*/
|
|
@@ -18,10 +20,22 @@ export interface ClientStatus {
|
|
|
18
20
|
authenticated: boolean;
|
|
19
21
|
/** 运行时长(毫秒) */
|
|
20
22
|
uptime: number;
|
|
21
|
-
/**
|
|
22
|
-
proxies: ProxyConfig
|
|
23
|
+
/** 代理列表(包含注册状态) */
|
|
24
|
+
proxies: (ProxyConfig & {
|
|
25
|
+
registered?: boolean;
|
|
26
|
+
})[];
|
|
23
27
|
/** 重连次数 */
|
|
24
28
|
reconnectAttempts: number;
|
|
29
|
+
/** 正向穿透代理列表 */
|
|
30
|
+
forwardProxies?: Array<{
|
|
31
|
+
localPort: number;
|
|
32
|
+
targetClientId: string;
|
|
33
|
+
targetPort: number;
|
|
34
|
+
}>;
|
|
35
|
+
/** 客户端是否已注册到服务器(正向穿透模式) */
|
|
36
|
+
isRegistered?: boolean;
|
|
37
|
+
/** 当前客户端ID */
|
|
38
|
+
clientId?: string;
|
|
25
39
|
}
|
|
26
40
|
/**
|
|
27
41
|
* 管理页面服务器配置接口
|
|
@@ -53,19 +67,50 @@ export declare class AdminServer {
|
|
|
53
67
|
private addProxyCallback;
|
|
54
68
|
/** 删除代理回调函数 */
|
|
55
69
|
private removeProxyCallback;
|
|
70
|
+
/** 正向穿透代理列表(用于存储运行时的正向穿透配置) */
|
|
71
|
+
private forwardProxies;
|
|
72
|
+
/** 发送消息到服务端的回调(用于正向穿透操作) */
|
|
73
|
+
private sendMessageCallback?;
|
|
74
|
+
/** 触发重连的回调函数 */
|
|
75
|
+
private reconnectCallback?;
|
|
76
|
+
/** 添加正向穿透代理回调函数 */
|
|
77
|
+
private addForwardProxyCallback?;
|
|
78
|
+
/** 删除正向穿透代理回调函数 */
|
|
79
|
+
private removeForwardProxyCallback?;
|
|
80
|
+
/** 注册客户端回调函数 */
|
|
81
|
+
private registerClientCallback?;
|
|
82
|
+
/** 获取客户端列表回调函数 */
|
|
83
|
+
private getClientListCallback?;
|
|
56
84
|
/**
|
|
57
|
-
*
|
|
85
|
+
* 静态文件路径常量
|
|
58
86
|
*/
|
|
59
|
-
private static readonly
|
|
87
|
+
private static readonly STATIC_DIR;
|
|
88
|
+
/**
|
|
89
|
+
* HTML 模板文件路径
|
|
90
|
+
*/
|
|
91
|
+
private static readonly TEMPLATE_PATH;
|
|
60
92
|
/**
|
|
61
93
|
* 创建管理服务器实例
|
|
62
94
|
*
|
|
63
95
|
* @param config - 服务器配置
|
|
64
96
|
* @param getStatus - 获取状态的回调函数
|
|
65
|
-
* @param addProxy -
|
|
66
|
-
* @param removeProxy -
|
|
97
|
+
* @param addProxy - 添加反向代理的回调函数
|
|
98
|
+
* @param removeProxy - 删除反向代理的回调函数
|
|
99
|
+
* @param addForwardProxy - 添加正向穿透的回调函数
|
|
100
|
+
* @param removeForwardProxy - 删除正向穿透的回调函数
|
|
101
|
+
* @param registerClient - 注册客户端的回调函数
|
|
102
|
+
* @param getClientList - 获取客户端列表的回调函数
|
|
103
|
+
* @param reconnect - 触发重连的回调函数
|
|
104
|
+
*/
|
|
105
|
+
constructor(config: AdminServerConfig, getStatus: () => ClientStatus, addProxy: (proxy: ProxyConfig) => Promise<void>, removeProxy: (remotePort: number) => Promise<void>, addForwardProxy?: (entry: ForwardProxyEntry) => Promise<void>, removeForwardProxy?: (localPort: number) => Promise<void>, registerClient?: (description?: string) => Promise<void>, getClientList?: () => Promise<any>, sendMessage?: (message: any) => Promise<any>, reconnect?: () => Promise<void>);
|
|
106
|
+
/**
|
|
107
|
+
* 设置发送消息的回调
|
|
108
|
+
*/
|
|
109
|
+
setSendMessageCallback(callback: (message: any) => Promise<any>): void;
|
|
110
|
+
/**
|
|
111
|
+
* 设置重连回调
|
|
67
112
|
*/
|
|
68
|
-
|
|
113
|
+
setReconnectCallback(callback: () => Promise<void>): void;
|
|
69
114
|
/**
|
|
70
115
|
* 启动服务器
|
|
71
116
|
*
|
|
@@ -76,10 +121,18 @@ export declare class AdminServer {
|
|
|
76
121
|
* 处理 HTTP 请求
|
|
77
122
|
*
|
|
78
123
|
* 提供以下端点:
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
124
|
+
* 反向代理:
|
|
125
|
+
* - `GET /` - 管理页面
|
|
126
|
+
* - `GET /_ctc/status` - 获取状态
|
|
127
|
+
* - `POST /_ctc/proxies` - 添加反向代理
|
|
128
|
+
* - `DELETE /_ctc/proxies/:port` - 删除反向代理
|
|
129
|
+
* - `POST /_ctc/test-proxy?port=xxx` - 测试反向代理连接
|
|
130
|
+
* 正向穿透:
|
|
131
|
+
* - `GET /_ctc/forward/list` - 获取正向穿透列表
|
|
132
|
+
* - `POST /_ctc/forward/add` - 添加正向穿透
|
|
133
|
+
* - `POST /_ctc/forward/remove` - 删除正向穿透
|
|
134
|
+
* - `GET /_ctc/forward/clients` - 获取客户端列表
|
|
135
|
+
* - `POST /_ctc/forward/register` - 注册到服务器
|
|
83
136
|
*/
|
|
84
137
|
private handleRequest;
|
|
85
138
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-server.d.ts","sourceRoot":"","sources":["../src/admin-server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"admin-server.d.ts","sourceRoot":"","sources":["../src/admin-server.ts"],"names":[],"mappings":"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"}
|