syntax = "proto3"; package mc_proxy.v1; option go_package = "git.wntrmute.dev/kyle/mc-proxy/gen/mc_proxy/v1;mcproxyv1"; import "google/protobuf/timestamp.proto"; service ProxyAdminService { // Routes rpc ListRoutes(ListRoutesRequest) returns (ListRoutesResponse); rpc AddRoute(AddRouteRequest) returns (AddRouteResponse); rpc RemoveRoute(RemoveRouteRequest) returns (RemoveRouteResponse); // Firewall rpc GetFirewallRules(GetFirewallRulesRequest) returns (GetFirewallRulesResponse); rpc AddFirewallRule(AddFirewallRuleRequest) returns (AddFirewallRuleResponse); rpc RemoveFirewallRule(RemoveFirewallRuleRequest) returns (RemoveFirewallRuleResponse); // Status rpc GetStatus(GetStatusRequest) returns (GetStatusResponse); } // Routes message Route { string hostname = 1; string backend = 2; } message ListRoutesRequest { string listener_addr = 1; } message ListRoutesResponse { string listener_addr = 1; repeated Route routes = 2; } message AddRouteRequest { string listener_addr = 1; Route route = 2; } message AddRouteResponse {} message RemoveRouteRequest { string listener_addr = 1; string hostname = 2; } message RemoveRouteResponse {} // Firewall enum FirewallRuleType { FIREWALL_RULE_TYPE_UNSPECIFIED = 0; FIREWALL_RULE_TYPE_IP = 1; FIREWALL_RULE_TYPE_CIDR = 2; FIREWALL_RULE_TYPE_COUNTRY = 3; } message FirewallRule { FirewallRuleType type = 1; string value = 2; } message GetFirewallRulesRequest {} message GetFirewallRulesResponse { repeated FirewallRule rules = 1; } message AddFirewallRuleRequest { FirewallRule rule = 1; } message AddFirewallRuleResponse {} message RemoveFirewallRuleRequest { FirewallRule rule = 1; } message RemoveFirewallRuleResponse {} // Status message ListenerStatus { string addr = 1; int32 route_count = 2; int64 active_connections = 3; } message GetStatusRequest {} message GetStatusResponse { string version = 1; google.protobuf.Timestamp started_at = 2; repeated ListenerStatus listeners = 3; int64 total_connections = 4; }