@chenpu17/tcpmapping 2.0.0 → 2.0.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/README.md +178 -54
- package/package.json +1 -1
- package/public/dashboard.html +388 -125
- package/public/login.html +157 -67
package/README.md
CHANGED
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
#
|
|
1
|
+
# TcpMapping
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TCP端口转发服务器,支持多端口映射、WebUI管理界面和实时连接监控。
|
|
4
4
|
|
|
5
5
|
## 功能特性
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- **动态配置管理** - 通过WebUI实时添加/删除/启动/停止端口映射
|
|
7
|
+
- **TCP端口转发** - 将TCP流量转发到后端服务器
|
|
8
|
+
- **多端口映射** - 同时管理多个转发规则
|
|
9
|
+
- **WebUI管理** - 现代化Web界面,实时监控和管理
|
|
11
10
|
- **连接监控** - 实时显示每个映射的连接数和流量统计
|
|
11
|
+
- **安全认证** - bcrypt密码加密、登录失败保护、会话管理
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- 现代化响应式Web界面
|
|
15
|
-
- 实时系统状态监控(映射数、连接数、运行时间)
|
|
16
|
-
- 每个端口映射的连接数和流量统计
|
|
17
|
-
- 映射的启动/停止控制
|
|
13
|
+
## 安装方式
|
|
18
14
|
|
|
19
|
-
###
|
|
20
|
-
- 强密码策略(8字符+大小写+数字)
|
|
21
|
-
- 登录失败保护(5次失败锁定30分钟)
|
|
22
|
-
- 会话管理(24小时自动超时)
|
|
23
|
-
- bcrypt 12轮密码哈希加密
|
|
24
|
-
- 自动生成的Session Secret
|
|
15
|
+
### 方式一:NPM全局安装(推荐)
|
|
25
16
|
|
|
26
|
-
|
|
17
|
+
```bash
|
|
18
|
+
# 全局安装
|
|
19
|
+
npm install -g @chenpu17/tcpmapping
|
|
20
|
+
|
|
21
|
+
# 初始化配置文件
|
|
22
|
+
tcpmapping init
|
|
23
|
+
|
|
24
|
+
# 设置管理员密码
|
|
25
|
+
tcpmapping setup-password
|
|
26
|
+
|
|
27
|
+
# 启动服务
|
|
28
|
+
tcpmapping start
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 方式二:本地安装
|
|
27
32
|
|
|
28
|
-
### 安装
|
|
29
33
|
```bash
|
|
34
|
+
# 克隆项目
|
|
35
|
+
git clone https://github.com/chenpu17/TcpMapping.git
|
|
36
|
+
cd TcpMapping
|
|
37
|
+
|
|
30
38
|
# 安装依赖
|
|
31
39
|
npm install
|
|
32
40
|
|
|
@@ -37,8 +45,28 @@ npm run setup-password
|
|
|
37
45
|
npm start
|
|
38
46
|
```
|
|
39
47
|
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
## CLI命令
|
|
49
|
+
|
|
50
|
+
全局安装后,可使用以下命令:
|
|
51
|
+
|
|
52
|
+
| 命令 | 说明 |
|
|
53
|
+
|------|------|
|
|
54
|
+
| `tcpmapping start` | 后台启动服务 |
|
|
55
|
+
| `tcpmapping stop` | 停止服务 |
|
|
56
|
+
| `tcpmapping restart` | 重启服务 |
|
|
57
|
+
| `tcpmapping status` | 查看服务状态 |
|
|
58
|
+
| `tcpmapping logs` | 查看最近日志 |
|
|
59
|
+
| `tcpmapping logs -f` | 实时跟踪日志 |
|
|
60
|
+
| `tcpmapping setup-password` | 设置管理员密码 |
|
|
61
|
+
| `tcpmapping init` | 创建默认配置文件 |
|
|
62
|
+
| `tcpmapping version` | 显示版本号 |
|
|
63
|
+
| `tcpmapping help` | 显示帮助信息 |
|
|
64
|
+
|
|
65
|
+
## 访问WebUI
|
|
66
|
+
|
|
67
|
+
启动服务后,访问 **http://localhost:9999** 进入管理界面。
|
|
68
|
+
|
|
69
|
+
默认用户名:`admin`
|
|
42
70
|
|
|
43
71
|
## 配置说明
|
|
44
72
|
|
|
@@ -48,56 +76,152 @@ npm start
|
|
|
48
76
|
{
|
|
49
77
|
"mappings": [
|
|
50
78
|
{
|
|
51
|
-
"name": "
|
|
79
|
+
"name": "Web服务",
|
|
52
80
|
"listen": { "host": "0.0.0.0", "port": 8080 },
|
|
53
81
|
"target": { "host": "192.168.1.100", "port": 3000 }
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "数据库",
|
|
85
|
+
"listen": { "host": "0.0.0.0", "port": 3307 },
|
|
86
|
+
"target": { "host": "192.168.1.100", "port": 3306 }
|
|
54
87
|
}
|
|
55
88
|
],
|
|
56
|
-
"webui": {
|
|
57
|
-
|
|
89
|
+
"webui": {
|
|
90
|
+
"enabled": true,
|
|
91
|
+
"port": 9999,
|
|
92
|
+
"host": "0.0.0.0"
|
|
93
|
+
},
|
|
94
|
+
"logging": {
|
|
95
|
+
"enabled": true,
|
|
96
|
+
"level": "info"
|
|
97
|
+
}
|
|
58
98
|
}
|
|
59
99
|
```
|
|
60
100
|
|
|
61
|
-
|
|
101
|
+
### 配置项说明
|
|
102
|
+
|
|
103
|
+
| 配置项 | 说明 |
|
|
104
|
+
|--------|------|
|
|
105
|
+
| `mappings[].name` | 映射名称,用于标识 |
|
|
106
|
+
| `mappings[].listen.host` | 监听地址,0.0.0.0表示所有网卡 |
|
|
107
|
+
| `mappings[].listen.port` | 监听端口 |
|
|
108
|
+
| `mappings[].target.host` | 目标主机IP或域名 |
|
|
109
|
+
| `mappings[].target.port` | 目标端口 |
|
|
110
|
+
| `webui.enabled` | 是否启用WebUI |
|
|
111
|
+
| `webui.port` | WebUI端口,默认9999 |
|
|
112
|
+
| `logging.level` | 日志级别:debug/info/warn/error |
|
|
113
|
+
|
|
114
|
+
## 使用示例
|
|
115
|
+
|
|
116
|
+
### 示例1:转发本地开发服务
|
|
62
117
|
|
|
118
|
+
将本地8080端口转发到开发服务器的3000端口:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"name": "开发服务",
|
|
123
|
+
"listen": { "host": "0.0.0.0", "port": 8080 },
|
|
124
|
+
"target": { "host": "127.0.0.1", "port": 3000 }
|
|
125
|
+
}
|
|
63
126
|
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
├── 功能总结.md # 功能清单
|
|
76
|
-
└── 安全配置说明.md # 安全指南
|
|
127
|
+
|
|
128
|
+
### 示例2:转发远程数据库
|
|
129
|
+
|
|
130
|
+
将本地3307端口转发到远程MySQL:
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"name": "MySQL",
|
|
135
|
+
"listen": { "host": "127.0.0.1", "port": 3307 },
|
|
136
|
+
"target": { "host": "db.example.com", "port": 3306 }
|
|
137
|
+
}
|
|
77
138
|
```
|
|
78
139
|
|
|
140
|
+
### 示例3:通过WebUI动态添加
|
|
141
|
+
|
|
142
|
+
1. 访问 http://localhost:9999
|
|
143
|
+
2. 登录管理界面
|
|
144
|
+
3. 点击"添加映射"按钮
|
|
145
|
+
4. 填写映射信息并保存
|
|
146
|
+
|
|
147
|
+
## 安全特性
|
|
148
|
+
|
|
149
|
+
- **强密码策略** - 8字符以上,包含大小写字母和数字
|
|
150
|
+
- **登录保护** - 5次失败后锁定30分钟
|
|
151
|
+
- **会话超时** - 24小时自动过期
|
|
152
|
+
- **密码加密** - bcrypt 12轮哈希
|
|
153
|
+
|
|
79
154
|
## API接口
|
|
80
155
|
|
|
81
156
|
详细API文档请参阅 [docs/API.md](docs/API.md)
|
|
82
157
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
158
|
+
### 快速参考
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# 健康检查(无需认证)
|
|
162
|
+
curl http://localhost:9999/api/health
|
|
163
|
+
|
|
164
|
+
# 登录
|
|
165
|
+
curl -X POST http://localhost:9999/api/login \
|
|
166
|
+
-H "Content-Type: application/json" \
|
|
167
|
+
-d '{"username":"admin","password":"YourPassword"}' \
|
|
168
|
+
-c cookies.txt
|
|
169
|
+
|
|
170
|
+
# 获取映射列表
|
|
171
|
+
curl http://localhost:9999/api/mappings -b cookies.txt
|
|
172
|
+
|
|
173
|
+
# 添加映射
|
|
174
|
+
curl -X POST http://localhost:9999/api/mappings \
|
|
175
|
+
-H "Content-Type: application/json" \
|
|
176
|
+
-d '{"name":"测试","listen":{"port":8888},"target":{"host":"127.0.0.1","port":80}}' \
|
|
177
|
+
-b cookies.txt
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## 项目结构
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
├── bin/
|
|
184
|
+
│ └── tcpmapping.js # CLI入口
|
|
185
|
+
├── public/
|
|
186
|
+
│ ├── login.html # 登录页面
|
|
187
|
+
│ └── dashboard.html # 管理面板
|
|
188
|
+
├── docs/
|
|
189
|
+
│ └── API.md # API文档
|
|
190
|
+
├── server.js # 主服务器
|
|
191
|
+
├── setup-password.js # 密码设置工具
|
|
192
|
+
├── config.json # 端口映射配置
|
|
193
|
+
└── package.json # 项目配置
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## 常见问题
|
|
94
197
|
|
|
95
|
-
|
|
198
|
+
### Q: 忘记密码怎么办?
|
|
96
199
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
200
|
+
运行密码重置命令:
|
|
201
|
+
```bash
|
|
202
|
+
# NPM全局安装
|
|
203
|
+
tcpmapping setup-password
|
|
204
|
+
|
|
205
|
+
# 本地安装
|
|
206
|
+
npm run reset-password
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Q: 如何查看服务是否运行?
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
tcpmapping status
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Q: 端口被占用怎么办?
|
|
216
|
+
|
|
217
|
+
修改 `config.json` 中的 `webui.port` 或映射的 `listen.port`。
|
|
218
|
+
|
|
219
|
+
### Q: 如何查看实时日志?
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
tcpmapping logs -f
|
|
223
|
+
```
|
|
100
224
|
|
|
101
225
|
## 许可证
|
|
102
226
|
|
|
103
|
-
MIT License
|
|
227
|
+
MIT License
|