@feng3d/ctc 0.0.19 → 0.1.0
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 +82 -106
- package/dist/cli.d.ts +13 -11
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +188 -1067
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +18 -55
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -188
- package/dist/config.js.map +1 -1
- package/dist/controller.d.ts +47 -5
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +10 -15
- package/dist/controller.js.map +1 -1
- package/dist/handlers/unified-handler.d.ts.map +1 -1
- package/dist/handlers/unified-handler.js +3 -1
- package/dist/handlers/unified-handler.js.map +1 -1
- package/dist/index.d.ts +20 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -328
- package/dist/index.js.map +1 -1
- package/dist/proxy-manager.d.ts +32 -32
- package/dist/proxy-manager.d.ts.map +1 -1
- package/dist/proxy-manager.js +81 -66
- package/dist/proxy-manager.js.map +1 -1
- package/package.json +5 -6
- package/admin-ui/dist/app.js +0 -29
- package/admin-ui/dist/index.html +0 -222
- package/admin-ui/dist/style.css +0 -1
- package/dist/admin-server.d.ts +0 -143
- package/dist/admin-server.d.ts.map +0 -1
- package/dist/admin-server.js +0 -407
- package/dist/admin-server.js.map +0 -1
- package/dist/forward-proxy.d.ts +0 -100
- package/dist/forward-proxy.d.ts.map +0 -1
- package/dist/forward-proxy.js +0 -407
- package/dist/forward-proxy.js.map +0 -1
- package/dist/ipc-handler.d.ts +0 -52
- package/dist/ipc-handler.d.ts.map +0 -1
- package/dist/ipc-handler.js +0 -110
- package/dist/ipc-handler.js.map +0 -1
package/README.md
CHANGED
|
@@ -6,173 +6,149 @@
|
|
|
6
6
|
|
|
7
7
|
## 特性
|
|
8
8
|
|
|
9
|
+
- 极简设计,仅两步:`set` 配置服务端 → `-p <端口>` 映射
|
|
10
|
+
- 远程端口由服务端自动分配,无需手动指定
|
|
9
11
|
- **每个代理端口同时支持 HTTP/WebSocket/TCP/UDP 四种协议**
|
|
10
12
|
- 三通道架构:WebSocket 控制通道 + TCP 二进制数据通道 + UDP 数据通道
|
|
11
13
|
- 自动重连机制
|
|
12
|
-
- 多代理支持
|
|
13
|
-
- 单实例模式:通过 IPC 机制支持动态添加代理映射
|
|
14
14
|
|
|
15
15
|
## 快速开始
|
|
16
16
|
|
|
17
|
-
推荐使用 `npx`
|
|
17
|
+
推荐使用 `npx` 直接运行,无需全局安装。两步即可完成映射:
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
# 启动客户端(连接本地服务器测试)
|
|
21
|
-
npx @feng3d/ctc start -s ws://localhost:9000 -t "my-token" -p "8080:3000:localhost"
|
|
19
|
+
### 1. 配置服务端访问信息
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
npx @feng3d/ctc status
|
|
21
|
+
从服务端启动时打印的命令中复制(服务端 `start` 会自动给出):
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
npx @feng3d/ctc
|
|
23
|
+
```bash
|
|
24
|
+
npx @feng3d/ctc set -ip 203.0.113.10 -p 9000 -t a1b2c3d4-e5f6-7890-abcd-ef1234567890
|
|
28
25
|
```
|
|
29
26
|
|
|
30
|
-
|
|
27
|
+
服务端启用 TLS 时追加 `--tls`。配置保存在 `~/.chuantou/config.json`。
|
|
31
28
|
|
|
32
|
-
###
|
|
29
|
+
### 2. 映射本地端口
|
|
33
30
|
|
|
34
31
|
```bash
|
|
35
|
-
npx @feng3d/ctc
|
|
32
|
+
npx @feng3d/ctc -p 3000
|
|
36
33
|
```
|
|
37
34
|
|
|
38
|
-
|
|
35
|
+
服务端自动分配远程端口,映射成功后打印访问地址:
|
|
39
36
|
|
|
40
|
-
|
|
37
|
+
```
|
|
38
|
+
端口映射成功
|
|
39
|
+
───────────────────────────────────
|
|
40
|
+
本地端口: 3000
|
|
41
|
+
服务端映射端口: 9123
|
|
42
|
+
访问地址: http://203.0.113.10:9123
|
|
43
|
+
───────────────────────────────────
|
|
44
|
+
```
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
# 指定服务器地址和认证令牌
|
|
44
|
-
npx @feng3d/ctc start -s ws://your-server.com:9000 -t "my-token"
|
|
46
|
+
访问 `http://<服务端IP>:<映射端口>` 即可访问本地的 3000 端口服务。
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
npx @feng3d/ctc start -s ws://your-server.com:9000 -t "my-token" -p "8080:3000:localhost"
|
|
48
|
+
## 命令说明
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
npx @feng3d/ctc start -s ws://your-server.com:9000 -t "my-token" -p "8080:3000:localhost,8081:3001,8082:8080"
|
|
50
|
+
### `set` - 配置服务端访问信息
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
npx @feng3d/ctc
|
|
52
|
+
```bash
|
|
53
|
+
npx @feng3d/ctc set [选项]
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
**参数说明:**
|
|
57
57
|
|
|
58
|
-
| 参数 | 说明 |
|
|
59
|
-
|
|
60
|
-
| `-
|
|
61
|
-
| `-
|
|
62
|
-
| `-
|
|
63
|
-
| `--
|
|
64
|
-
| `--max-reconnect <number>` | 最大重连次数 | `10` | `10` |
|
|
65
|
-
| `--no-daemon` | 前台运行(不作为后台守护进程) | - | - |
|
|
66
|
-
| `--no-autostart` | 不注册开机启动 | - | - |
|
|
67
|
-
| `-o, --open` | 启动后在浏览器中打开管理页面 | - | - |
|
|
58
|
+
| 参数 | 说明 | 默认值 |
|
|
59
|
+
|------|------|--------|
|
|
60
|
+
| `-ip <ip>` | 服务端 IP 或域名(简写,标准形式 `--ip`) | (必填) |
|
|
61
|
+
| `-p, --server-port <port>` | 服务端控制端口 | (必填) |
|
|
62
|
+
| `-t, --token <token>` | 认证 token(与服务端一致) | (必填) |
|
|
63
|
+
| `--tls` | 服务端启用 TLS(使用 wss/https) | `false` |
|
|
68
64
|
|
|
69
|
-
|
|
65
|
+
**示例:**
|
|
70
66
|
|
|
71
67
|
```bash
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
# 标准用法(推荐直接复制服务端打印的命令)
|
|
69
|
+
npx @feng3d/ctc set -ip 203.0.113.10 -p 9000 -t my-token
|
|
74
70
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
穿透客户端状态
|
|
79
|
-
PID: 12345
|
|
80
|
-
服务器: ws://your-server.com:9000
|
|
81
|
-
管理页面: http://127.0.0.1:9001/
|
|
82
|
-
开机启动: 已启用
|
|
83
|
-
连接状态: 已认证
|
|
84
|
-
运行时长: 5分30秒
|
|
85
|
-
代理映射: 2 个
|
|
86
|
-
:8080 -> localhost:3000
|
|
87
|
-
:8081 -> localhost:3001
|
|
71
|
+
# 使用域名 + TLS
|
|
72
|
+
npx @feng3d/ctc set -ip your.domain.com -p 9000 -t my-token --tls
|
|
88
73
|
```
|
|
89
74
|
|
|
90
|
-
|
|
75
|
+
> 说明:`-ip` 是用户习惯的简写(commander 短选项本是单字符,内部会自动重写为 `--ip`)。`set` 上下文中的 `-p` 指服务端控制端口,与映射命令的 `-p`(本地端口)含义不同。
|
|
76
|
+
|
|
77
|
+
### 映射本地端口(默认动作)
|
|
91
78
|
|
|
92
79
|
```bash
|
|
93
|
-
npx @feng3d/ctc
|
|
80
|
+
npx @feng3d/ctc -p <本地端口> [选项]
|
|
94
81
|
```
|
|
95
82
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
## Web 管理页面
|
|
99
|
-
|
|
100
|
-
客户端启动后,可以通过浏览器访问本地管理页面:
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
http://127.0.0.1:9001/
|
|
104
|
-
```
|
|
83
|
+
**参数说明:**
|
|
105
84
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- 动态添加新的代理映射
|
|
111
|
-
- 删除现有代理映射
|
|
112
|
-
- 每 3 秒自动刷新状态
|
|
85
|
+
| 参数 | 说明 | 默认值 |
|
|
86
|
+
|------|------|--------|
|
|
87
|
+
| `-p, --port <localPort>` | 要映射的本地端口 | (必填) |
|
|
88
|
+
| `-d, --detach` | 后台运行(终端关闭不停止) | 前台运行 |
|
|
113
89
|
|
|
114
|
-
|
|
90
|
+
**示例:**
|
|
115
91
|
|
|
116
92
|
```bash
|
|
117
|
-
|
|
118
|
-
|
|
93
|
+
# 前台运行,映射本地 3000 端口
|
|
94
|
+
npx @feng3d/ctc -p 3000
|
|
119
95
|
|
|
120
|
-
|
|
96
|
+
# 后台运行
|
|
97
|
+
npx @feng3d/ctc -p 3000 -d
|
|
98
|
+
```
|
|
121
99
|
|
|
122
|
-
|
|
100
|
+
不带任何参数运行会显示帮助。
|
|
123
101
|
|
|
124
|
-
|
|
125
|
-
2. **再次启动**:如果客户端已运行,则向已运行进程添加新的代理映射
|
|
126
|
-
3. **不同服务器**:如果尝试连接到不同的服务器,会提示错误
|
|
102
|
+
## 运行模式
|
|
127
103
|
|
|
128
|
-
|
|
104
|
+
默认前台运行,Ctrl+C 或关闭终端即停止。
|
|
129
105
|
|
|
130
|
-
|
|
106
|
+
追加 `-d` 后台运行(脱离终端),日志写入 `~/.chuantou/client.log`:
|
|
131
107
|
|
|
108
|
+
```bash
|
|
109
|
+
npx @feng3d/ctc -p 3000 -d
|
|
132
110
|
```
|
|
133
|
-
remotePort:localPort[:localHost]
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
- `remotePort` - 公网端口
|
|
137
|
-
- `localPort` - 本地端口
|
|
138
|
-
- `localHost` - 本地地址(可选,默认:localhost)
|
|
139
111
|
|
|
140
|
-
|
|
112
|
+
后台进程停止用 `kill <pid>`(Linux)或 `taskkill /F /PID <pid>`(Windows),PID 在启动时打印。
|
|
141
113
|
|
|
142
|
-
|
|
114
|
+
## 配置文件
|
|
143
115
|
|
|
144
|
-
|
|
116
|
+
`set` 命令将服务端访问信息写入 `~/.chuantou/config.json`:
|
|
145
117
|
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"serverIp": "203.0.113.10",
|
|
121
|
+
"serverPort": 9000,
|
|
122
|
+
"token": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
123
|
+
"tls": false
|
|
124
|
+
}
|
|
146
125
|
```
|
|
147
|
-
# 单个代理(同时支持 HTTP/WebSocket/TCP/UDP)
|
|
148
|
-
8080:3000:localhost
|
|
149
126
|
|
|
150
|
-
|
|
151
|
-
8082:8080:192.168.1.100
|
|
152
|
-
|
|
153
|
-
# 多个代理(逗号分隔)
|
|
154
|
-
8080:3000:localhost,8081:3001,8082:8080
|
|
155
|
-
```
|
|
127
|
+
映射命令(`-p`)启动时读取该配置连接服务端。如需切换服务端,重新执行 `set` 即可覆盖。
|
|
156
128
|
|
|
157
129
|
## 作为库使用
|
|
158
130
|
|
|
159
131
|
```typescript
|
|
160
132
|
import { Controller, ProxyManager } from '@feng3d/ctc';
|
|
161
|
-
import type { Config } from '@feng3d/chuantou-shared';
|
|
162
133
|
|
|
163
|
-
const
|
|
164
|
-
serverUrl: 'ws://
|
|
134
|
+
const controller = new Controller({
|
|
135
|
+
serverUrl: 'ws://203.0.113.10:9000/control',
|
|
165
136
|
token: 'my-token',
|
|
166
137
|
reconnectInterval: 5000,
|
|
167
|
-
maxReconnectAttempts:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
const controller = new Controller(config);
|
|
138
|
+
maxReconnectAttempts: Infinity,
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
const proxyManager = new ProxyManager(controller);
|
|
142
|
+
|
|
175
143
|
await controller.connect();
|
|
144
|
+
// 认证成功后注册代理,服务端自动分配远程端口
|
|
145
|
+
controller.on('authenticated', async () => {
|
|
146
|
+
await proxyManager.registerProxy({ localPort: 3000 });
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
proxyManager.on('registered', (assignedPort: number) => {
|
|
150
|
+
console.log(`已映射,访问地址: http://203.0.113.10:${assignedPort}`);
|
|
151
|
+
});
|
|
176
152
|
```
|
|
177
153
|
|
|
178
154
|
## 许可证
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* @module cli
|
|
4
|
-
* @description 穿透客户端 CLI - 简洁的命令行工具
|
|
5
4
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
5
|
+
* 穿透客户端命令行入口。
|
|
6
|
+
*
|
|
7
|
+
* 提供两条命令:
|
|
8
|
+
*
|
|
9
|
+
* 1. 设置服务端访问信息(写入配置文件):
|
|
10
|
+
* npx @feng3d/ctc set -ip <serverip> -p <serverport> -t <token> [--tls]
|
|
11
|
+
*
|
|
12
|
+
* 2. 映射本地端口到服务端(服务端自动分配端口并返回):
|
|
13
|
+
* npx @feng3d/ctc -p <localPort> [-d]
|
|
14
|
+
*
|
|
15
|
+
* 运行模式:
|
|
16
|
+
* - 默认前台:进程依附终端,终端关闭即停止
|
|
17
|
+
* - -d / --detach:后台运行,脱离终端;停止用系统 kill <pid>
|
|
16
18
|
*/
|
|
17
19
|
export {};
|
|
18
20
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
|