Skip to content

Commit 4cec6f4

Browse files
committed
调整文档
1 parent aa07531 commit 4cec6f4

File tree

3 files changed

+180
-0
lines changed

3 files changed

+180
-0
lines changed

_doc/config.md

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
## ✅ 服务端配置:ss.yml
2+
3+
### 基础配置项
4+
5+
| 配置项 | 类型 | 默认值 | 是否必填 | 说明 |
6+
| -------------------- | ------------ | ---------- | ---- | ---------------------------------------------------------------------------- |
7+
| `type` | String ||| 服务运行协议类型,支持:`post``websocket``hppt``rhppt``rpost``file` 或插件类全名(如 Kafka) |
8+
| `port` | int ||| 服务端监听端口 |
9+
| `clients` | List<Client> ||| 允许连接的客户端账户列表,包含字段 `user``password` |
10+
| `relayScConfig` | ScConfig | null || 中继模式下嵌套一个完整的客户端配置(可实现链式转发) |
11+
| `addonsPath` | String | `./addons` || 插件目录路径 |
12+
| `heartbeatTimeout` | long | -1 || 心跳超时时间(ms),超过未收到心跳将强制重启连接 |
13+
| `initSessionTimeout` | long | 30000 || 建立连接后与目标端口握手的最大超时(ms) |
14+
| `sessionTimeout` | long | 120000 || 空闲会话超时(ms),超时未确认将强制关闭连接 |
15+
| `messageQueueSize` | int | 2048 || 每个会话消息队列的最大长度,超出将强制断开 |
16+
| `maxReturnBodySize` | long | 10MB || 每个请求最大返回数据体积(字节) |
17+
| `passwordRetryNum` | int | 5 || 密码允许重试次数,超过后账号锁定直到重启 |
18+
| `lifecycle` | String | null || 自定义生命周期实现类,允许实现初始化/销毁钩子 |
19+
20+
### 客户端认证配置
21+
22+
```yaml
23+
clients:
24+
- user: user1
25+
password: 123456
26+
- user: admin
27+
password: admin123
28+
```
29+
30+
---
31+
32+
### 协议专用配置项(服务端)
33+
34+
#### `post`
35+
36+
| 配置项 | 类型 | 默认值 | 说明 |
37+
| ------------------ | ---- | ----- | ------------------ |
38+
| `waitResponseTime` | long | 10000 | 等待真实端响应的最大时间(ms) |
39+
| `replyDelayTime` | long | 0 | 延迟回复时间(ms),用于调试等场景 |
40+
| `bossGroupNum` | int | 1 | Netty boss 线程池大小 |
41+
| `workerGroupNum` | int | 0 | Netty worker 线程池大小 |
42+
43+
#### `websocket`
44+
45+
| 配置项 | 类型 | 默认值 | 说明 |
46+
| ---------------- | --- | --- | ------------------ |
47+
| `bossGroupNum` | int | 1 | Netty boss 线程池大小 |
48+
| `workerGroupNum` | int | 0 | Netty worker 线程池大小 |
49+
50+
#### `hppt`
51+
52+
| 配置项 | 类型 | 默认值 | 说明 |
53+
| ------------------- | --- | --- | ------------------ |
54+
| `lengthFieldLength` | int | 3 | 包头长度字段使用的字节数(1-4) |
55+
| `bossGroupNum` | int | 1 | Netty boss 线程池大小 |
56+
| `workerGroupNum` | int | 0 | Netty worker 线程池大小 |
57+
58+
#### `rhppt`
59+
60+
| 配置项 | 类型 | 默认值 | 说明 |
61+
| ------------------- | ------ | --- | ----------- |
62+
| `host` | String | 无 | 客户端可访问的服务地址 |
63+
| `port` | int | 无 | 客户端连接端口 |
64+
| `lengthFieldLength` | int | 3 | 包长度字段所占字节数 |
65+
66+
#### `rpost`
67+
68+
| 配置项 | 类型 | 默认值 | 说明 |
69+
| ----------- | ------ | --- | --------------------------- |
70+
| `serverUrl` | String | 无 | 客户端启动的 HTTP 服务地址(如反向代理 URL) |
71+
72+
#### `file` 尚不成熟
73+
74+
| 配置项 | 类型 | 默认值 | 说明 |
75+
| --------- | ------ | --- | -------- |
76+
| `fileDir` | String | 无 | 文件传输共享目录 |
77+
78+
---
79+
80+
## ✅ 客户端配置:sc.yml
81+
82+
### 基础配置项
83+
84+
| 配置项 | 类型 | 默认值 | 是否必填 | 说明 |
85+
| ----------------- | ------------- | ----------- | ---- | ------------------ |
86+
| `type` | String | 无 | ✅ | 协议类型,需与服务端一致 |
87+
| `clientUser` | String | 无 | ✅ | 客户端用户名,服务端校验用 |
88+
| `clientPassword` | String | 无 | ✅ | 客户端密码 |
89+
| `forwards` | List<Forward> | 无 | ✅ | 本地端口转发规则列表 |
90+
| `localHost` | String | `127.0.0.1` | ❌ | 本地监听 IP 地址 |
91+
| `workerGroupNum` | int | 0 (CPU核数) | ❌ | Netty worker 线程数 |
92+
| `maxSendBodySize` | int | 10MB | ❌ | 单次发送最大包体大小 |
93+
| `heartbeatPeriod` | long | 120000 | ❌ | 心跳间隔(ms),设置为 0 可关闭 |
94+
| `isRelay` | boolean | false | ❌ | 是否启用中继转发模式 |
95+
| `addonsPath` | String | `./addons` | ❌ | 插件目录路径 |
96+
| `lifecycle` | String | null | ❌ | 自定义生命周期实现类 |
97+
98+
### 转发规则配置(Forward)
99+
100+
| 字段 | 类型 | 说明 |
101+
| ------------ | ------ | ---------- |
102+
| `localHost` | String | 本地监听 IP |
103+
| `localPort` | int | 本地监听端口 |
104+
| `remoteHost` | String | 服务端访问的目标地址 |
105+
| `remotePort` | int | 服务端访问的目标端口 |
106+
107+
---
108+
109+
### 协议专用配置项(客户端)
110+
111+
#### `post`
112+
113+
| 配置项 | 类型 | 默认值 | 说明 |
114+
| --------------- | ------ | --- | --------------- |
115+
| `serverUrl` | String | 无 | 服务端 HTTP 接口 URL |
116+
| `sendSleepTime` | long | 5 | 每次请求后的等待间隔(ms) |
117+
118+
#### `websocket`
119+
120+
| 配置项 | 类型 | 默认值 | 说明 |
121+
| ---------------- | ------ | ----- | ------------ |
122+
| `serverUrl` | String | 无 | WebSocket 地址 |
123+
| `pingInterval` | long | 30000 | 发送 ping 间隔 |
124+
| `workerGroupNum` | int | 0 | worker线程数 |
125+
126+
#### `hppt`
127+
128+
| 配置项 | 类型 | 默认值 | 说明 |
129+
| ------------------- | ------ | --- | --------- |
130+
| `host` | String | 无 | 服务端地址 |
131+
| `port` | int | 无 | 服务端端口 |
132+
| `lengthFieldLength` | int | 3 | 包长字段所占字节数 |
133+
| `workerGroupNum` | int | 0 | Netty线程数 |
134+
135+
#### `rhppt`
136+
137+
| 配置项 | 类型 | 默认值 | 说明 |
138+
| ------------------- | --- | --- | ----------- |
139+
| `port` | int | 无 | 本地反向服务端口 |
140+
| `lengthFieldLength` | int | 3 | 包头长度字段所占字节数 |
141+
142+
#### `rpost`
143+
144+
| 配置项 | 类型 | 默认值 | 说明 |
145+
| ---------------- | --- | --- | ------------ |
146+
| `port` | int | 无 | 启动 HTTP 服务端口 |
147+
| `bossGroupNum` | int | 1 | Boss 线程池大小 |
148+
| `workerGroupNum` | int | 0 | Worker 线程池大小 |
149+
150+
#### `file`
151+
152+
| 配置项 | 类型 | 默认值 | 说明 |
153+
| --------------- | ------ | --- | -------------- |
154+
| `sendDir` | String | 无 | 本地发送文件目录 |
155+
| `receiveDir` | String | 无 | 本地接收文件目录 |
156+
| `sendSleepTime` | long | 200 | 每次文件片段发送间隔(ms) |
157+
158+
---
159+
160+
## 🚀 高级功能说明
161+
162+
### 中继模式 尚不成熟
163+
164+
* `ss.yml` 中配置 `relayScConfig` 字段,即可将当前服务端作为客户端连接下一个服务端,实现链式转发。
165+
166+
### 插件系统
167+
168+
* 通过配置 `addonsPath` 可加载插件(如 Kafka、Redis 等),插件需打包为 `.jar` 放入此目录。
169+
170+
### 生命周期钩子
171+
172+
* 可在 `ss.yml` 和 `sc.yml` 中通过 `lifecycle` 配置类路径,实现初始化与销毁逻辑,适合接入监控、日志等框架。
173+

readme.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,9 @@ cd hppt
235235

236236
随后,你就可以在公司用linux连接工具访问111.222.33.44的10022端口,来登录家里的台式机了
237237

238+
## 更多配置
239+
[完整的配置文件说明](_doc/config.md)
240+
238241
## 示例3 编写自定义协议
239242

240243
下面通过一个用kafka做为“通信协议”的方式,演示如何编写自定义协议。

readme_en.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ cd hppt
195195

196196
You can now SSH into your home desktop from work via `111.222.33.44:10022`.
197197

198+
199+
## more config
200+
[more config see this doc](_doc/config.md)
201+
198202
## Example 3: Custom Protocol Implementation (e.g., Kafka)
199203

200204
If A and B cannot communicate directly but both can access a Kafka server on machine C, you can bridge them via Kafka:

0 commit comments

Comments
 (0)