lightsword
Version:
LightSword Secure SOCKS5 Proxy / iOS VPN Server
313 lines (224 loc) • 6.42 kB
Markdown
# LightSword 服务器端
LightSword 服务器基于 Node.js 4.0+。支持 SOCKS5 代理,多用户支持,HTTP 管理。从 0.7.0 开始支持 Level.4 客户端。
运行参数
| 参数 | 完整参数 | 解释 |
|------|--------------|------|
| -p | --port | 监听端口 |
| -k | --password | 密码 |
| -m | --method | 加密算法(参见客户端)|
| -c | --config | 配置文件路径 |
| -t | --timeout | 超时时长(单位:秒)|
| -f | --fork | 作为守护进程运行(不支持 Windows)|
| -u | --users | 多用户配置文件路径 |
| -d | --daemon | 守护进程控制命令,支持: stop, restart, status |
| -r | --cluster | 以集群(多进程)模式运行 |
| -a | --management | 启用HTTP管理 |
| -s | --speed | 启用网速限制(单位: KB/s)|
注意:
网速限制仅针对单个TCP连接限速,目前无法针对全局限速。因此对网页浏览等限速效果不明显,对文件下载、观看视频等效果较好。
支持加密算法:
| 算法 |
|----------|
|aes-128-cfb|
|aes-128-ofb|
|aes-192-cfb|
|aes-192-ofb|
|aes-256-cfb|
|aes-256-ofb|
|bf-cfb|
|camellia-128-cfb|
|camellia-192-cfb|
|camellia-256-cfb|
|cast5-cfb|
|des-cfb|
|idea-cfb|
|rc2-cfb|
|rc4|
|rc4-md5|
|seed-cfb|
使用方法
启动
```
lsserver -f -m aes-256-cfb -p 4433 -k password
```
停止服务器
```
lsserver -d stop
```
重启服务器
```
lsserver -d restart
```
服务器状态
```
lsserver -d status
```
配置文件:
配置文件是使用 utf-8 编码的 JSON 格式文件,配置字段和命令行完整参数相同。
```
{
"port": 4433,
"password": "abcabc",
"method": "aes-256-cfb",
"timeout": 60,
"fork": true,
"users": "/etc/lightsword-users.conf",
"cluster": true
}
```
多用户支持:
使用 -u (--users) 参数指定多用户配置文件路径,配置文件请参见 ../misc/users.conf 文件提供的示例。
其中,每个用户对应一个端口号,因此端口号不可以重复,如有重复,则选择最开始的一个。
配置文件为 utf-8 编码的文本文件,格式如下:
```
# 注释行 <必填项> [可选项]
# <Port-Number> <Password> <Cipher-Algorithm> [ISO-8601-Extended-Date-Format-String]
25000 abc123 aes-256-cfb
25001 abc123 aes-256-cfb 2016-01-04T03:01:54+09:00
#注意: 字段之间用半角空格分割,字段中不允许出现空格
------------------------------
> lsserver --users ./users.txt
```
HTTP 管理
从 0.5.0 版本开始,LightSword 加入 HTTP 管理功能,为多用户管理带来方便。LightSword 采用 HTTP 协议,并通过 RESTful 风格交互,数据传输格式为 JSON 。
首先,启用 HTTP 管理:
```
lsserver -a
```
服务器启用后,默认监听本地端口: 5000,你可以使用以下形式访问:
```
http://localhost:5000/api/xxx
```
支持的接口:
| 方法 | 接口 | 解释 |
|--------|-----------------------------|---------------|
| GET | /api/users | 获取所有用户信息 |
| GET | /api/users/count | 获取有效用户总数 |
| POST | /api/users | 新加用户 |
| PUT | /api/users/:port | 更新用户服务器配置 |
| DELETE | /api/users/:port | 删除用户 |
| GET | /api/blacklist | 获取黑名单IP |
| GET | /api/blacklist/count | 获取黑名单IP总数 |
| GET | /api/blacklist/:port | 获取指定端口号所对应的黑名单IP |
| GET | /api/blacklist/:port/count | 获取指定端口号所对应的黑名单IP总数 |
**GET /api/users 返回用户列表(数组)**
| 字段 | 解释 |
|-----|------|
| port | 端口号 |
| cipherAlgorithm | 加密算法 |
| expireDate | 过期日期 |
返回:
```
[{"port":25000,"cipherAlgorithm":"aes-256-cfb"},{"port":25001,"cipherAlgorithm":"bf-cfb","expireDate":"2017-01-04T03:01:54+09:00"}]
```
**GET /api/users/count 返回用户数**
| 字段 | 解释 |
|-----|------|
| count | 用户数 |
返回:
```
{"count":2}
```
**POST /api/users 新增用户**
| 字段 | 解释 |
|-----|------|
| port | 端口号(必填)|
| cipherAlgorithm | 加密算法(可选,默认: aes-256-cfb) |
| password | 密码(必填) |
| timeout | 超时(单位: 秒,可选,默认: 10秒) |
| expireDate | 过期日期(ISO8601扩展日期格式,可选,默认: 空,表示永不过期) |
| disableSelfProtection | 禁用黑名单机制(布尔值,可选,默认: false) |
支持 POST JSON 数组,同时创建多用户
返回:
| 字段 | 解释 |
|-----|------|
| success | true 成功,false 失败 |
| msg | 失败原因 |
```
POST application/json
{
"cipherAlgorithm": "aes-256-cfb",
"port": 28000,
"password": "abc123",
"timeout": 30,
"expireDate": "2017-01-04T03:01:54+09:00",
"disableSelfProtection": true
}
Succeed =>
{
"success": true
}
Failed =>
{
"success": false,
"msg": "Port Number: 28000 is used or access denied"
}
```
**PUT /api/users/:port 更新用户服务器配置**
| 字段 | 解释 |
|-----|------|
| expireDate | 过期日期(ISO8601扩展日期格式,如果不填写该参数,则取消时间限制) |
| disableSelfProtection | 是否禁用黑名单机制(布尔值,可选) |
返回:
同上
```
POST application/json
{
"expireDate": "2015-01-04T03:01:54+09:00",
"disableSelfProtection": true
}
Succeed =>
{
"success": true
}
Failed =>
{
"success": false,
"msg": "User Not Found"
}
```
**DELETE /api/users/:port 删除用户**
通过使用 DELETE 方法,删除已存在用户。
返回:
同上
```
Succeed =>
{
"success": true
}
Failed =>
{
"success": false,
"msg": "User Not Found"
}
```
**GET /api/blacklist 获取黑名单IP列表**
返回IP地址(IPv4, IPv6)字符串数组
黑名单列表,仅保存最近24小时的IP地址
```
=> ["::ffff:127.0.0.1","::1"]
```
**GET /api/blacklist/count 获取黑名单IP总数**
| 字段 | 解释 |
|-----|------|
| count | 黑名单IP总数 |
```
=> {"count":2}
```
**GET /api/blacklist/:port 获取指定端口号所对应的黑名单IP列表**
```
=> ["::ffff:127.0.0.1","::1"]
```
**GET /api/blacklist/:port 获取指定端口号所对应的黑名单IP总数**
| 字段 | 解释 |
|-----|------|
| count | 黑名单IP总数 |
```
=> {"count":2}
```