burrow/proto/burrow.proto
JettChenT 6c6bfe5434 Remove unused NetworkType::Trojan tombstone
The Trojan network type only ever existed as a non-runnable tombstone:
the SOCKS-era Trojan runtime it guarded against (BEP-0009) was never
merged to main, and no stored network uses it. Drop the enum value and
its dead match arms across the daemon, GTK summary, and Apple bindings.

The Trojan *protocol* outbound used by proxy-subscription nodes
(TrojanOutbound / ProxyOutbound::Trojan / isTrojanTCP) is unaffected.

- proto: remove `Trojan = 2`, add `reserved 2; reserved "Trojan";`
- daemon: drop ResolvedTunnel/ActiveTunnel::Trojan variants + match arms
  (runtime.rs) and the validate_network_payload arm (database.rs)
- gtk: drop the "Legacy Trojan Proxy" summary arm
- apple: drop the makeCard .trojan arm and regenerate the Swift
  NetworkType enum (case/rawValue/init/allCases/nameMap)

An unknown stored type now surfaces via the existing UNRECOGNIZED path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 17:06:01 -07:00

203 lines
4.6 KiB
Protocol Buffer

syntax = "proto3";
package burrow;
import "google/protobuf/timestamp.proto";
service Tunnel {
rpc TunnelConfiguration (Empty) returns (stream TunnelConfigurationResponse);
rpc TunnelPackets (stream TunnelPacket) returns (stream TunnelPacket);
rpc TunnelStart (Empty) returns (Empty);
rpc TunnelStop (Empty) returns (Empty);
rpc TunnelStatus (Empty) returns (stream TunnelStatusResponse);
}
service Networks {
rpc NetworkAdd (Network) returns (Empty);
rpc NetworkList (Empty) returns (stream NetworkListResponse);
rpc NetworkReorder (NetworkReorderRequest) returns (Empty);
rpc NetworkDelete (NetworkDeleteRequest) returns (Empty);
}
service TailnetControl {
rpc Discover (TailnetDiscoverRequest) returns (TailnetDiscoverResponse);
rpc Probe (TailnetProbeRequest) returns (TailnetProbeResponse);
rpc LoginStart (TailnetLoginStartRequest) returns (TailnetLoginStatusResponse);
rpc LoginStatus (TailnetLoginStatusRequest) returns (TailnetLoginStatusResponse);
rpc LoginCancel (TailnetLoginCancelRequest) returns (Empty);
}
service ProxySubscriptions {
rpc PreviewImport (ProxySubscriptionImportRequest) returns (ProxySubscriptionPreviewResponse);
rpc ApplyImport (ProxySubscriptionApplyRequest) returns (ProxySubscriptionApplyResponse);
rpc SelectNode (ProxySubscriptionSelectRequest) returns (ProxySubscriptionSelectResponse);
}
message NetworkReorderRequest {
int32 id = 1;
int32 index = 2;
}
message WireGuardPeer {
string endpoint = 1;
repeated string subnet = 2;
}
message WireGuardNetwork {
string address = 1;
string dns = 2;
repeated WireGuardPeer peer = 3;
}
message NetworkDeleteRequest {
int32 id = 1;
}
message Network {
int32 id = 1;
NetworkType type = 2;
bytes payload = 3;
}
enum NetworkType {
WireGuard = 0;
Tailnet = 1;
reserved 2;
reserved "Trojan";
ProxySubscription = 3;
}
message ProxySubscriptionImportRequest {
string url = 1;
}
message ProxySubscriptionRejectedEntry {
int32 ordinal = 1;
string reason = 2;
string scheme = 3;
}
message ProxySubscriptionNodePreview {
int32 ordinal = 1;
string name = 2;
string protocol = 3;
string server = 4;
int32 port = 5;
repeated string warnings = 6;
bool runtime_supported = 7;
}
message ProxySubscriptionPreviewResponse {
string suggested_name = 1;
string detected_format = 2;
int32 compatible_count = 3;
int32 rejected_count = 4;
repeated ProxySubscriptionNodePreview node = 5;
repeated ProxySubscriptionRejectedEntry rejected = 6;
repeated string warnings = 7;
}
message ProxySubscriptionApplyRequest {
int32 id = 1;
string url = 2;
string name = 3;
int32 selected_ordinal = 4;
}
message ProxySubscriptionApplyResponse {
int32 id = 1;
int32 imported_count = 2;
int32 selected_ordinal = 3;
}
message ProxySubscriptionSelectRequest {
int32 id = 1;
int32 selected_ordinal = 2;
}
message ProxySubscriptionSelectResponse {
int32 id = 1;
int32 selected_ordinal = 2;
}
message NetworkListResponse {
repeated Network network = 1;
}
message Empty {
}
message TailnetDiscoverRequest {
string email = 1;
}
message TailnetDiscoverResponse {
string domain = 1;
string authority = 2;
string oidc_issuer = 3;
bool managed = 4;
}
message TailnetProbeRequest {
string authority = 1;
}
message TailnetProbeResponse {
string authority = 1;
int32 status_code = 2;
string summary = 3;
string detail = 4;
bool reachable = 5;
}
message TailnetLoginStartRequest {
string account_name = 1;
string identity_name = 2;
string hostname = 3;
string authority = 4;
}
message TailnetLoginStatusRequest {
string session_id = 1;
}
message TailnetLoginCancelRequest {
string session_id = 1;
}
message TailnetLoginStatusResponse {
string session_id = 1;
string backend_state = 2;
string auth_url = 3;
bool running = 4;
bool needs_login = 5;
string tailnet_name = 6;
string magic_dns_suffix = 7;
string self_dns_name = 8;
repeated string tailnet_ips = 9;
repeated string health = 10;
}
enum State {
Stopped = 0;
Running = 1;
}
message TunnelStatusResponse {
State state = 1;
optional google.protobuf.Timestamp start = 2;
}
message TunnelConfigurationResponse {
repeated string addresses = 1;
int32 mtu = 2;
repeated string routes = 3;
repeated string dns_servers = 4;
repeated string search_domains = 5;
bool include_default_route = 6;
repeated string excluded_routes = 7;
}
message TunnelPacket {
bytes payload = 1;
}