github.com/ipfans/trojan-go@v0.11.0/docs/content/advance/api.md (about) 1 --- 2 title: "使用API动态管理用户" 3 draft: false 4 weight: 10 5 --- 6 7 ### 注意,Trojan不支持这个特性 8 9 Trojan-Go使用gRPC提供了一组API,API支持以下功能: 10 11 - 用户信息增删改查 12 13 - 流量统计 14 15 - 速度统计 16 17 - IP连接数统计 18 19 Trojan-Go本身集成了API控制功能,也即可以使用一个Trojan-Go实例控制另一个Trojan-Go服务器。 20 21 你需要在你需要被控制的服务端配置添加API设置,例如: 22 23 ```json 24 { 25 ... 26 "api": { 27 "enabled": true, 28 "api_addr": "127.0.0.1", 29 "api_port": 10000, 30 } 31 } 32 ``` 33 34 然后启动Trojan-Go服务器 35 36 ```shell 37 ./trojan-go -config ./server.json 38 ``` 39 40 然后可以使用另一个Trojan-Go连接该服务器进行管理,基本命令格式为 41 42 ```shell 43 ./trojan-go -api-addr SERVER_API_ADDRESS -api COMMAND 44 ``` 45 46 其中```SERVER_API_ADDRESS```为API地址和端口,如127.0.0.1:10000 47 48 ```COMMAND```为API命令,合法的命令有 49 50 - list 列出所有用户 51 52 - get 获取某个用户信息 53 54 - set 设置某个用户信息(添加/删除/修改) 55 56 下面是一些例子 57 58 1. 列出所有用户信息 59 60 ```shell 61 ./trojan-go -api-addr 127.0.0.1:10000 -api list 62 ``` 63 64 所有的用户信息将以json的形式导出,信息包括在线IP数量,实时速度,总上传和下载流量等。下面是一个返回的结果的例子 65 66 ```json 67 [{"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}}] 68 ``` 69 70 流量单位均为字节。 71 72 2. 获取一个用户信息 73 74 可以使用 -target-password 指定密码,也可以使用 -target-hash 指定目标用户密码的SHA224散列值。格式和list命令相同 75 76 ```shell 77 ./trojan-go -api-addr 127.0.0.1:10000 -api get -target-password password 78 ``` 79 80 或者 81 82 ```shell 83 ./trojan-go -api-addr 127.0.0.1:10000 -api get -target-hash d63dc919e201d7bc4c825630d2cf25fdc93d4b2f0d46706d29038d01 84 ``` 85 86 以上两条命令等价,下面的例子统一使用明文密码的方式,散列值指定某个用户的方式以此类推。 87 88 该用户信息将以json的形式导出,格式与list命令类似。下面是一个返回的结果的例子 89 90 ```json 91 {"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}} 92 ``` 93 94 3. 添加一个用户信息 95 96 ```shell 97 ./trojan-go -api-addr 127.0.0.1:10000 -api set -add-profile -target-password password 98 ``` 99 100 4. 删除一个用户信息 101 102 ```shell 103 ./trojan-go -api-addr 127.0.0.1:10000 -api set -delete-profile -target-password password 104 ``` 105 106 5. 修改一个用户信息 107 108 ```shell 109 ./trojan-go -api-addr 127.0.0.1:10000 -api set -modify-profile -target-password password \ 110 -ip-limit 3 \ 111 -upload-speed-limit 5242880 \ 112 -download-speed-limit 5242880 113 ``` 114 115 这个命令将密码为password的用户上传和下载速度限制为5MiB/s,同时连接的IP数量限制为3个,注意这里5242880的单位是字节。如果填写0或者负数,则表示不进行限制。