This commit is contained in:
Page Fault
2020-05-28 09:19:23 +00:00
parent da60d72299
commit c1fbc67eec
4 changed files with 16 additions and 11 deletions
+1 -1
View File
@@ -85,7 +85,7 @@ func (a *Address) Marshal(r io.Reader) error {
byteBuf := [1]byte{}
_, err := r.Read(byteBuf[:])
if err != nil {
return NewError("Unable to read atype").Base(err)
return NewError("Unable to read ATYPE").Base(err)
}
a.AddressType = AddressType(byteBuf[0])
switch a.AddressType {
+5 -5
View File
@@ -41,9 +41,9 @@ Trojan-Go本身集成了API控制功能,也即可以使用一个Trojan-Go实
./trojan-go -api-addr SERVER_API_ADDRESS -api COMMAND
```
其中SERVER_API_ADDRESS为API地址和端口,如127.0.0.1:10000
其中```SERVER_API_ADDRESS```为API地址和端口,如127.0.0.1:10000
COMMAND为API命令,合法的命令有
```COMMAND```为API命令,合法的命令有
- list 列出所有用户
@@ -59,7 +59,7 @@ COMMAND为API命令,合法的命令有
./trojan-go -api-addr 127.0.0.1:10000 -api list
```
所有的用户信息将以json的形式导出,信息包括在线IP数量,实时速度,总上传和下载流量等。下面是一个例子
所有的用户信息将以json的形式导出,信息包括在线IP数量,实时速度,总上传和下载流量等。下面是一个返回的结果的例子
```json
[{"user":{"hash":"d63dc919e201d7bc4c825630d2cf25fdc93d4b2f0d46706d29038d01"},"status":{"traffic_total":{"upload_traffic":36393,"download_traffic":186478},"speed_current":{"upload_speed":25210,"download_speed":72384},"speed_limit":{"upload_speed":5242880,"download_speed":5242880},"ip_limit":50}}]
@@ -83,7 +83,7 @@ COMMAND为API命令,合法的命令有
以上两条命令等价,下面的例子统一使用明文密码的方式,散列值指定某个用户的方式以此类推。
该用户信息将以json的形式导出,格式与list命令类似。下面是一个例子
该用户信息将以json的形式导出,格式与list命令类似。下面是一个返回的结果的例子
```json
{"user":{"hash":"d63dc919e201d7bc4c825630d2cf25fdc93d4b2f0d46706d29038d01"},"status":{"traffic_total":{"upload_traffic":36393,"download_traffic":186478},"speed_current":{"upload_speed":25210,"download_speed":72384},"speed_limit":{"upload_speed":5242880,"download_speed":5242880},"ip_limit":50}}
@@ -110,4 +110,4 @@ COMMAND为API命令,合法的命令有
-download-speed-limit 5242880
```
这个命令将密码为password的用户上传和下载速度限制为5MiB/s,同时连接的IP数量限制为3个,注意这里5242880的单位是字节。如果不填写相关限制或填写0,则维持原状。如果填写负数,则表示不进行限制。
这个命令将密码为password的用户上传和下载速度限制为5MiB/s,同时连接的IP数量限制为3个,注意这里5242880的单位是字节。如果不填写这些限制或填写0,则维持原状。如果填写负数,则表示不进行限制。
+9 -4
View File
@@ -45,7 +45,6 @@ func (i *TrojanInboundConnSession) Close() error {
log.Info("User", i.passwordHash, "to", i.request, "closed", "sent:", common.HumanFriendlyTraffic(i.sent), "recv:", common.HumanFriendlyTraffic(i.recv))
i.cancel()
i.user.DelIP(i.ip)
log.Debug("IP " + i.ip + " deleted")
return i.rwc.Close()
}
@@ -68,17 +67,23 @@ func (i *TrojanInboundConnSession) parseRequest(r *common.RewindReader) error {
if !ok {
return common.NewError("IP limit reached")
}
log.Debug("IP " + i.ip + " added")
crlf := [2]byte{}
r.Read(crlf[:])
_, err = io.ReadFull(r, crlf[:])
if err != nil {
return err
}
i.request = new(protocol.Request)
if err := i.request.Marshal(r); err != nil {
return err
}
r.Read(crlf[:])
_, err = io.ReadFull(r, crlf[:])
if err != nil {
return err
}
return nil
}
+1 -1
View File
@@ -31,7 +31,7 @@ func (i *TrojanPacketSession) ReadPacket() (*protocol.Request, []byte, error) {
length := binary.BigEndian.Uint16(lengthBuf[:])
packet := make([]byte, length)
n, err := i.conn.Read(packet)
return req, packet[0:n], err
return req, packet[:n], err
}
func (i *TrojanPacketSession) WritePacket(req *protocol.Request, packet []byte) (int, error) {