mirror of
https://github.com/p4gefau1t/trojan-go.git
synced 2024-04-21 12:21:34 +00:00
typo
This commit is contained in:
+1
-1
@@ -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 {
|
||||
|
||||
@@ -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,则维持原状。如果填写负数,则表示不进行限制。
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user