@feng3d/cts 0.0.6
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 +150 -0
- package/dist/boot.d.ts +41 -0
- package/dist/boot.d.ts.map +1 -0
- package/dist/boot.js +204 -0
- package/dist/boot.js.map +1 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +377 -0
- package/dist/cli.js.map +1 -0
- package/dist/handlers/control-handler.d.ts +158 -0
- package/dist/handlers/control-handler.d.ts.map +1 -0
- package/dist/handlers/control-handler.js +378 -0
- package/dist/handlers/control-handler.js.map +1 -0
- package/dist/handlers/unified-proxy.d.ts +207 -0
- package/dist/handlers/unified-proxy.d.ts.map +1 -0
- package/dist/handlers/unified-proxy.js +475 -0
- package/dist/handlers/unified-proxy.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +115 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +433 -0
- package/dist/server.js.map +1 -0
- package/dist/session-manager.d.ts +218 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +372 -0
- package/dist/session-manager.js.map +1 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# @feng3d/cts
|
|
2
|
+
|
|
3
|
+
**cts** 是 **穿透服务器**(Chuantou Server)的缩写。
|
|
4
|
+
|
|
5
|
+
内网穿透转发系统的服务端,负责接收公网请求并转发给内网客户端。
|
|
6
|
+
|
|
7
|
+
## 特性
|
|
8
|
+
|
|
9
|
+
- WebSocket 控制通道
|
|
10
|
+
- 动态端口分配
|
|
11
|
+
- 自动心跳检测
|
|
12
|
+
- 多客户端支持
|
|
13
|
+
- Token 认证
|
|
14
|
+
- TLS 加密支持
|
|
15
|
+
- 开机自启动
|
|
16
|
+
- Web 状态监控
|
|
17
|
+
|
|
18
|
+
## 快速开始
|
|
19
|
+
|
|
20
|
+
推荐使用 `npx` 直接运行,无需全局安装:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# 启动服务器
|
|
24
|
+
npx @feng3d/cts start -p 9000 -t "my-token"
|
|
25
|
+
|
|
26
|
+
# 查询状态
|
|
27
|
+
npx @feng3d/cts status
|
|
28
|
+
|
|
29
|
+
# 停止服务器
|
|
30
|
+
npx @feng3d/cts stop
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 命令说明
|
|
34
|
+
|
|
35
|
+
### `start` - 启动服务器
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx @feng3d/cts start [选项]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**常用示例:**
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# 默认配置启动
|
|
45
|
+
npx @feng3d/cts start
|
|
46
|
+
|
|
47
|
+
# 指定端口和 token
|
|
48
|
+
npx @feng3d/cts start -p 9000 -t "my-token"
|
|
49
|
+
|
|
50
|
+
# 多个 token(逗号分隔)
|
|
51
|
+
npx @feng3d/cts start -p 9000 -t "token1,token2,token3"
|
|
52
|
+
|
|
53
|
+
# 完整参数示例
|
|
54
|
+
npx @feng3d/cts start -p 9000 -a 0.0.0.0 -t "my-token" --heartbeat-interval 30000 --session-timeout 60000
|
|
55
|
+
|
|
56
|
+
# 启动后打开浏览器监控页面
|
|
57
|
+
npx @feng3d/cts start -p 9000 -t "my-token" --open
|
|
58
|
+
|
|
59
|
+
# 不注册开机自启动
|
|
60
|
+
npx @feng3d/cts start --no-boot
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**参数说明:**
|
|
64
|
+
|
|
65
|
+
| 参数 | 说明 | 默认值 |
|
|
66
|
+
|------|------|--------|
|
|
67
|
+
| `-p, --port <port>` | 控制端口 | `9000` |
|
|
68
|
+
| `-a, --host <address>` | 监听地址 | `0.0.0.0` |
|
|
69
|
+
| `-t, --tokens <tokens>` | 认证令牌(逗号分隔) | - |
|
|
70
|
+
| `--tls-key <path>` | TLS 私钥文件路径 | - |
|
|
71
|
+
| `--tls-cert <path>` | TLS 证书文件路径 | - |
|
|
72
|
+
| `--heartbeat-interval <ms>` | 心跳间隔(毫秒) | `30000` |
|
|
73
|
+
| `--session-timeout <ms>` | 会话超时(毫秒) | `60000` |
|
|
74
|
+
| `-o, --open` | 启动后在浏览器中打开状态页面 | - |
|
|
75
|
+
| `--no-boot` | 不注册开机自启动 | - |
|
|
76
|
+
|
|
77
|
+
### `status` - 查询服务器状态
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx @feng3d/cts status
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**输出示例:**
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
穿透服务器状态
|
|
87
|
+
运行中: 是
|
|
88
|
+
主机: 0.0.0.0:9000
|
|
89
|
+
TLS: 已禁用
|
|
90
|
+
运行时长: 3600秒
|
|
91
|
+
客户端: 2
|
|
92
|
+
端口: 4
|
|
93
|
+
连接数: 12
|
|
94
|
+
开机自启: 已注册
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### `stop` - 停止服务器
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npx @feng3d/cts stop
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
停止服务器并取消开机自启动。
|
|
104
|
+
|
|
105
|
+
## Web 状态监控
|
|
106
|
+
|
|
107
|
+
服务器启动后,可以通过浏览器访问状态监控页面:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
http://127.0.0.1:9000/
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
状态页面显示:
|
|
114
|
+
- 服务器运行状态(运行中/已停止)
|
|
115
|
+
- 监听地址和端口
|
|
116
|
+
- 运行时长
|
|
117
|
+
- 已认证客户端数量
|
|
118
|
+
- 已注册端口数量
|
|
119
|
+
- 活跃连接数
|
|
120
|
+
- TLS 状态
|
|
121
|
+
- 客户端会话列表
|
|
122
|
+
- 每 3 秒自动刷新
|
|
123
|
+
|
|
124
|
+
使用 `--open` 参数启动时可自动打开浏览器:
|
|
125
|
+
```bash
|
|
126
|
+
npx @feng3d/cts start --open
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 多 Token 配置
|
|
130
|
+
|
|
131
|
+
支持配置多个认证令牌,允许不同的客户端使用各自的令牌连接:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# 三个客户端使用不同的 token
|
|
135
|
+
npx @feng3d/cts start -t "client1-token,client2-token,client3-token"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
每个客户端连接时使用对应的 token 即可认证成功。
|
|
139
|
+
|
|
140
|
+
## 架构
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
公网用户请求 -> 服务端监听端口 -> WebSocket 控制通道 -> 内网客户端 -> 本地服务
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**每个代理端口同时支持 HTTP 和 WebSocket 协议**,客户端无需指定协议类型。
|
|
147
|
+
|
|
148
|
+
## 许可证
|
|
149
|
+
|
|
150
|
+
ISC
|
package/dist/boot.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module boot
|
|
3
|
+
* @description 开机自启动管理模块。
|
|
4
|
+
* 提供跨平台的开机自启动注册、注销和状态查询功能。
|
|
5
|
+
* Windows 使用注册表 Run 键 + VBS 静默启动,Linux 使用 systemd --user 用户级服务。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 启动信息接口
|
|
9
|
+
*
|
|
10
|
+
* 保存启动命令的完整信息,用于重建开机自启动任务。
|
|
11
|
+
*/
|
|
12
|
+
export interface StartupInfo {
|
|
13
|
+
/** Node.js 可执行文件的绝对路径 */
|
|
14
|
+
nodePath: string;
|
|
15
|
+
/** CLI 脚本文件的绝对路径 */
|
|
16
|
+
scriptPath: string;
|
|
17
|
+
/** 传递给 _serve 命令的参数数组 */
|
|
18
|
+
args: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 注册开机自启动
|
|
22
|
+
*
|
|
23
|
+
* 将启动信息持久化到磁盘,并根据操作系统注册开机启动任务。
|
|
24
|
+
* Windows 使用注册表 Run 键 + VBS 静默启动,Linux 使用 systemd --user 服务。
|
|
25
|
+
*
|
|
26
|
+
* @param info - 启动信息(Node路径、脚本路径、启动参数)
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerBoot(info: StartupInfo): void;
|
|
29
|
+
/**
|
|
30
|
+
* 取消开机自启动
|
|
31
|
+
*
|
|
32
|
+
* 根据操作系统注销开机启动任务,并清理启动配置文件。
|
|
33
|
+
*/
|
|
34
|
+
export declare function unregisterBoot(): void;
|
|
35
|
+
/**
|
|
36
|
+
* 查询是否已注册开机自启动
|
|
37
|
+
*
|
|
38
|
+
* @returns 是否已注册
|
|
39
|
+
*/
|
|
40
|
+
export declare function isBootRegistered(): boolean;
|
|
41
|
+
//# sourceMappingURL=boot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAgKD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAUpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAQrC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAK1C"}
|
package/dist/boot.js
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module boot
|
|
3
|
+
* @description 开机自启动管理模块。
|
|
4
|
+
* 提供跨平台的开机自启动注册、注销和状态查询功能。
|
|
5
|
+
* Windows 使用注册表 Run 键 + VBS 静默启动,Linux 使用 systemd --user 用户级服务。
|
|
6
|
+
*/
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
import { writeFileSync, readFileSync, unlinkSync, mkdirSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { homedir, platform } from 'os';
|
|
11
|
+
/** 数据目录路径 */
|
|
12
|
+
const DATA_DIR = join(homedir(), '.chuantou');
|
|
13
|
+
/** 启动配置文件路径 */
|
|
14
|
+
const STARTUP_FILE = join(DATA_DIR, 'startup.json');
|
|
15
|
+
/** 任务/服务名称 */
|
|
16
|
+
const TASK_NAME = 'feng3d-cts';
|
|
17
|
+
/**
|
|
18
|
+
* 保存启动信息到文件
|
|
19
|
+
*/
|
|
20
|
+
function saveStartupInfo(info) {
|
|
21
|
+
mkdirSync(DATA_DIR, { recursive: true });
|
|
22
|
+
writeFileSync(STARTUP_FILE, JSON.stringify(info, null, 2));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 读取启动信息
|
|
26
|
+
*/
|
|
27
|
+
function loadStartupInfo() {
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(readFileSync(STARTUP_FILE, 'utf-8'));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 删除启动信息文件
|
|
37
|
+
*/
|
|
38
|
+
function removeStartupInfo() {
|
|
39
|
+
try {
|
|
40
|
+
unlinkSync(STARTUP_FILE);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// ignore
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ====== Windows 实现(注册表 Run 键)======
|
|
47
|
+
/** Windows 注册表 Run 键路径 */
|
|
48
|
+
const WIN_REG_KEY = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run';
|
|
49
|
+
/** 获取 Windows 启动 VBS 脚本路径 */
|
|
50
|
+
function getStartupScriptPath() {
|
|
51
|
+
return join(DATA_DIR, `${TASK_NAME}.vbs`);
|
|
52
|
+
}
|
|
53
|
+
function registerWindows(info) {
|
|
54
|
+
// 生成 .vbs 启动脚本(使用 WScript.Shell.Run 以隐藏窗口方式启动)
|
|
55
|
+
const serveArgs = info.args.map((a) => (a.includes(' ') ? `""${a}""` : a)).join(' ');
|
|
56
|
+
const command = `""${info.nodePath}"" ""${info.scriptPath}"" _serve ${serveArgs}`;
|
|
57
|
+
const scriptContent = `Set WshShell = CreateObject("WScript.Shell")\r\nWshShell.Run "${command}", 0, False\r\n`;
|
|
58
|
+
const scriptPath = getStartupScriptPath();
|
|
59
|
+
mkdirSync(DATA_DIR, { recursive: true });
|
|
60
|
+
writeFileSync(scriptPath, scriptContent);
|
|
61
|
+
// 通过注册表 Run 键注册开机自启动(无需管理员权限)
|
|
62
|
+
execSync(`reg add "${WIN_REG_KEY}" /v "${TASK_NAME}" /t REG_SZ /d "wscript.exe \\"${scriptPath}\\"" /f`, { stdio: 'ignore', shell: 'cmd.exe' });
|
|
63
|
+
}
|
|
64
|
+
function unregisterWindows() {
|
|
65
|
+
try {
|
|
66
|
+
execSync(`reg delete "${WIN_REG_KEY}" /v "${TASK_NAME}" /f`, { stdio: 'ignore', shell: 'cmd.exe' });
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// ignore
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
unlinkSync(getStartupScriptPath());
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// ignore
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function isRegisteredWindows() {
|
|
79
|
+
try {
|
|
80
|
+
execSync(`reg query "${WIN_REG_KEY}" /v "${TASK_NAME}"`, { stdio: 'ignore', shell: 'cmd.exe' });
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ====== Linux 实现(systemd --user)======
|
|
88
|
+
function getServiceFilePath() {
|
|
89
|
+
return join(homedir(), '.config', 'systemd', 'user', `${TASK_NAME}.service`);
|
|
90
|
+
}
|
|
91
|
+
function registerLinux(info) {
|
|
92
|
+
const serviceDir = join(homedir(), '.config', 'systemd', 'user');
|
|
93
|
+
mkdirSync(serviceDir, { recursive: true });
|
|
94
|
+
const serveArgs = info.args.map((a) => (a.includes(' ') ? `"${a}"` : a)).join(' ');
|
|
95
|
+
const command = `${info.nodePath} ${info.scriptPath} _serve ${serveArgs}`;
|
|
96
|
+
const logFile = join(DATA_DIR, 'server.log');
|
|
97
|
+
const unit = `[Unit]
|
|
98
|
+
Description=feng3d-cts 穿透内网穿透服务端
|
|
99
|
+
After=network.target
|
|
100
|
+
|
|
101
|
+
[Service]
|
|
102
|
+
Type=simple
|
|
103
|
+
ExecStart=${command}
|
|
104
|
+
Restart=on-failure
|
|
105
|
+
RestartSec=5
|
|
106
|
+
StandardOutput=append:${logFile}
|
|
107
|
+
StandardError=append:${logFile}
|
|
108
|
+
|
|
109
|
+
[Install]
|
|
110
|
+
WantedBy=default.target
|
|
111
|
+
`;
|
|
112
|
+
writeFileSync(getServiceFilePath(), unit);
|
|
113
|
+
execSync('systemctl --user daemon-reload', { stdio: 'ignore' });
|
|
114
|
+
execSync(`systemctl --user enable ${TASK_NAME}.service`, { stdio: 'ignore' });
|
|
115
|
+
// 尝试启用 linger,使服务在用户未登录时也能运行
|
|
116
|
+
try {
|
|
117
|
+
execSync('loginctl enable-linger', { stdio: 'ignore' });
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// ignore - 用户可手动运行 sudo loginctl enable-linger $USER
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function unregisterLinux() {
|
|
124
|
+
try {
|
|
125
|
+
execSync(`systemctl --user disable ${TASK_NAME}.service`, { stdio: 'ignore' });
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// ignore
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
unlinkSync(getServiceFilePath());
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// ignore
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
execSync('systemctl --user daemon-reload', { stdio: 'ignore' });
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// ignore
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function isRegisteredLinux() {
|
|
144
|
+
try {
|
|
145
|
+
const result = execSync(`systemctl --user is-enabled ${TASK_NAME}.service`, {
|
|
146
|
+
encoding: 'utf-8',
|
|
147
|
+
});
|
|
148
|
+
return result.trim() === 'enabled';
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// ====== 公共 API ======
|
|
155
|
+
/**
|
|
156
|
+
* 注册开机自启动
|
|
157
|
+
*
|
|
158
|
+
* 将启动信息持久化到磁盘,并根据操作系统注册开机启动任务。
|
|
159
|
+
* Windows 使用注册表 Run 键 + VBS 静默启动,Linux 使用 systemd --user 服务。
|
|
160
|
+
*
|
|
161
|
+
* @param info - 启动信息(Node路径、脚本路径、启动参数)
|
|
162
|
+
*/
|
|
163
|
+
export function registerBoot(info) {
|
|
164
|
+
saveStartupInfo(info);
|
|
165
|
+
const os = platform();
|
|
166
|
+
if (os === 'win32') {
|
|
167
|
+
registerWindows(info);
|
|
168
|
+
}
|
|
169
|
+
else if (os === 'linux') {
|
|
170
|
+
registerLinux(info);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
throw new Error(`不支持在 ${os} 上注册开机自启动`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 取消开机自启动
|
|
178
|
+
*
|
|
179
|
+
* 根据操作系统注销开机启动任务,并清理启动配置文件。
|
|
180
|
+
*/
|
|
181
|
+
export function unregisterBoot() {
|
|
182
|
+
const os = platform();
|
|
183
|
+
if (os === 'win32') {
|
|
184
|
+
unregisterWindows();
|
|
185
|
+
}
|
|
186
|
+
else if (os === 'linux') {
|
|
187
|
+
unregisterLinux();
|
|
188
|
+
}
|
|
189
|
+
removeStartupInfo();
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* 查询是否已注册开机自启动
|
|
193
|
+
*
|
|
194
|
+
* @returns 是否已注册
|
|
195
|
+
*/
|
|
196
|
+
export function isBootRegistered() {
|
|
197
|
+
const os = platform();
|
|
198
|
+
if (os === 'win32')
|
|
199
|
+
return isRegisteredWindows();
|
|
200
|
+
if (os === 'linux')
|
|
201
|
+
return isRegisteredLinux();
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=boot.js.map
|
package/dist/boot.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|