syntax = "proto3"; package agent; option go_package = "l_vpn_proto/proto"; service WireGuardAgent { rpc GetClientConfigs(GetClientConfigsRequest) returns (GetClientConfigsResponse); rpc RegisterClient(RegisterClientRequest) returns (RegisterClientResponse); rpc UnregisterClient(UnregisterClientRequest) returns (UnregisterClientResponse); rpc GetServerStatus(GetServerStatusRequest) returns (GetServerStatusResponse); rpc PingHosts(PingHostsRequest) returns (PingHostsResponse); // Xray / VLESS+Reality management rpc GetXrayStatus(GetXrayStatusRequest) returns (GetXrayStatusResponse); rpc GetXrayPublicKey(GetXrayPublicKeyRequest) returns (GetXrayPublicKeyResponse); rpc AddXrayUser(AddXrayUserRequest) returns (AddXrayUserResponse); rpc RemoveXrayUser(RemoveXrayUserRequest) returns (RemoveXrayUserResponse); // Hysteria2 / QUIC management rpc GetHysteria2Status(GetHysteria2StatusRequest) returns (GetHysteria2StatusResponse); rpc AddHysteria2User(AddHysteria2UserRequest) returns (AddHysteria2UserResponse); rpc RemoveHysteria2User(RemoveHysteria2UserRequest) returns (RemoveHysteria2UserResponse); } message GetClientConfigsRequest {} message ClientConfig { string name = 1; string public_key = 2; string private_key = 3; string endpoint = 4; string allowed_ips = 5; string created_at = 6; } message GetClientConfigsResponse { bool success = 1; string error = 2; repeated ClientConfig clients = 3; } message RegisterClientRequest { string name = 1; string allowed_ips = 2; } message RegisterClientResponse { bool success = 1; string error = 2; ClientConfig client = 3; } message UnregisterClientRequest { string public_key = 1; } message UnregisterClientResponse { bool success = 1; string error = 2; } message GetServerStatusRequest {} message GetServerStatusResponse { bool success = 1; string error = 2; string interface_name = 3; string public_key = 4; string listening_port = 5; int32 peers_count = 6; } message PingHostsRequest { repeated string hosts = 1; } message PingResult { string host = 1; double latency_ms = 2; // -1 if unreachable bool reachable = 3; string error = 4; } message PingHostsResponse { bool success = 1; string error = 2; repeated PingResult results = 3; } // ── Xray messages ───────────────────────────────────────────────────────────── message GetXrayStatusRequest {} message GetXrayStatusResponse { bool running = 1; int32 port = 2; string error = 3; } message GetXrayPublicKeyRequest {} message GetXrayPublicKeyResponse { string public_key = 1; string short_id = 2; string server_name = 3; int32 port = 4; } message AddXrayUserRequest { string uuid = 1; string email = 2; } message AddXrayUserResponse { bool success = 1; string error = 2; } message RemoveXrayUserRequest { string uuid = 1; } message RemoveXrayUserResponse { bool success = 1; string error = 2; } // ── Hysteria2 messages ──────────────────────────────────────────────────────── message GetHysteria2StatusRequest {} message GetHysteria2StatusResponse { bool running = 1; int32 port = 2; string error = 3; } message AddHysteria2UserRequest { string uuid = 1; string email = 2; } message AddHysteria2UserResponse { bool success = 1; string error = 2; } message RemoveHysteria2UserRequest { string uuid = 1; } message RemoveHysteria2UserResponse { bool success = 1; string error = 2; }