syntax = "proto3"; package trojan.api; option go_package = "api"; message Traffic { uint64 upload_traffic = 1; uint64 download_traffic = 2; } message Speed { uint64 upload_speed = 1; uint64 download_speed = 2; } message User { string password = 1; string hash = 2; } message GetTrafficRequest { User user = 1; } message GetTrafficResponse { bool success = 1; Traffic traffic_total = 2; Speed speed_current = 3; Speed speed_limit = 4; string info = 5; } message ListUserRequest { } message ListUserResponse { User user = 1; bool online = 2; Traffic traffic_total = 3; Speed speed_current = 4; Speed speed_limit = 5; } message SetUserRequest { User user = 1; Speed speed_limit = 2; enum Operation { Add = 0; Delete = 1; Modify = 2; } Operation operation = 3; } message SetUserResponse { bool success = 1; string info = 2; } service TrojanClientService { rpc GetTraffic(GetTrafficRequest) returns(GetTrafficResponse){} } service TrojanServerService { rpc ListUsers(ListUserRequest) returns(stream ListUserResponse){} rpc GetTraffic(stream GetTrafficRequest) returns(stream GetTrafficResponse){} rpc SetUsers(stream SetUserRequest) returns(stream SetUserResponse){} }