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或者负数,则表示不进行限制。