github.com/ipfans/trojan-go@v0.11.0/api/service/api.proto (about) 1 syntax = "proto3"; 2 3 package trojan.api; 4 option go_package = "github.com/ipfans/trojan-go/api/service"; 5 6 message Traffic { 7 uint64 upload_traffic = 1; 8 uint64 download_traffic = 2; 9 } 10 11 message Speed { 12 uint64 upload_speed = 1; 13 uint64 download_speed = 2; 14 } 15 16 message User { 17 string password = 1; 18 string hash = 2; 19 } 20 21 message UserStatus { 22 User user = 1; 23 Traffic traffic_total = 2; 24 Speed speed_current = 3; 25 Speed speed_limit = 4; 26 int32 ip_current = 5; 27 int32 ip_limit = 6; 28 } 29 30 message GetTrafficRequest { 31 User user = 1; 32 } 33 34 message GetTrafficResponse { 35 bool success = 1; 36 string info = 2; 37 Traffic traffic_total = 3; 38 Speed speed_current = 4; 39 } 40 41 message ListUsersRequest { 42 43 } 44 45 message ListUsersResponse { 46 UserStatus status = 1; 47 } 48 49 message GetUsersRequest { 50 User user = 1; 51 } 52 53 message GetUsersResponse { 54 bool success = 1; 55 string info = 2; 56 UserStatus status = 3; 57 } 58 59 message SetUsersRequest { 60 enum Operation { 61 Add = 0; 62 Delete = 1; 63 Modify = 2; 64 } 65 UserStatus status = 1; 66 Operation operation = 2; 67 } 68 69 message SetUsersResponse { 70 bool success = 1; 71 string info = 2; 72 } 73 74 service TrojanClientService { 75 rpc GetTraffic(GetTrafficRequest) returns(GetTrafficResponse){} 76 } 77 78 service TrojanServerService { 79 // list all users 80 rpc ListUsers(ListUsersRequest) returns(stream ListUsersResponse){} 81 // obtain specified user's info 82 rpc GetUsers(stream GetUsersRequest) returns(stream GetUsersResponse){} 83 // setup existing users' config 84 rpc SetUsers(stream SetUsersRequest) returns(stream SetUsersResponse){} 85 }