mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-08-31 08:19:14 +00:00
3fe427bc99
* feat(credentials): manage declarative credentials through TOML Make managed credentials part of the canonical TOML configuration and load them before peers can authenticate. Reuse ConfigRpc hot patches to durably replace the configured credential set without restarting the instance. Serialize credential mutations so base, managed, and ephemeral keys cannot race into conflicts. Remove the managed overlay file format, digest protocol, capability negotiation, force reconciliation, and database CAS machinery. Redact credential secrets from debug output and management events. Write credential-bearing files atomically with private permissions. * fix(core): release JoinSet reapers with their owners Pass weak task-set references into background reapers so they cannot retain the JoinSet they are meant to collect. This lets stale smoltcp bridge tasks terminate when an IPv4 generation is replaced. Add ownership and TCP generation-replacement regressions covering the production port-forward failure.
97 lines
2.1 KiB
Protocol Buffer
97 lines
2.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
import "common.proto";
|
|
import "acl.proto";
|
|
import "api_instance.proto";
|
|
import "api_manage.proto";
|
|
|
|
package api.config;
|
|
|
|
enum ConfigPatchAction {
|
|
ADD = 0;
|
|
REMOVE = 1;
|
|
CLEAR = 2;
|
|
}
|
|
|
|
message InstanceConfigPatch {
|
|
optional string hostname = 1;
|
|
optional common.Ipv4Inet ipv4 = 2;
|
|
optional common.Ipv6Inet ipv6 = 3;
|
|
repeated PortForwardPatch port_forwards = 4;
|
|
optional AclPatch acl = 5;
|
|
repeated ProxyNetworkPatch proxy_networks = 6;
|
|
repeated RoutePatch routes = 7;
|
|
repeated ExitNodePatch exit_nodes = 8;
|
|
repeated UrlPatch mapped_listeners = 9;
|
|
repeated UrlPatch connectors = 10;
|
|
optional bool ipv6_public_addr_provider = 11;
|
|
optional bool ipv6_public_addr_auto = 12;
|
|
optional string ipv6_public_addr_prefix = 13;
|
|
optional bool disable_relay_data = 14;
|
|
repeated VpnPortalClientPatch vpn_portal_clients = 15;
|
|
api.manage.ManagedCredentialSet managed_credentials = 16;
|
|
}
|
|
|
|
message VpnPortalClientPatch {
|
|
ConfigPatchAction action = 1;
|
|
api.manage.VpnPortalClientConfig client = 2;
|
|
}
|
|
|
|
message PortForwardPatch {
|
|
ConfigPatchAction action = 1;
|
|
common.PortForwardConfigPb cfg = 2;
|
|
}
|
|
|
|
message StringPatch {
|
|
ConfigPatchAction action = 1;
|
|
string value = 2;
|
|
}
|
|
|
|
message UrlPatch {
|
|
ConfigPatchAction action = 1;
|
|
common.Url url = 2;
|
|
}
|
|
|
|
message AclPatch {
|
|
optional acl.Acl acl = 1;
|
|
repeated StringPatch tcp_whitelist = 2;
|
|
repeated StringPatch udp_whitelist = 3;
|
|
}
|
|
|
|
message ProxyNetworkPatch {
|
|
ConfigPatchAction action = 1;
|
|
common.Ipv4Inet cidr = 2;
|
|
optional common.Ipv4Inet mapped_cidr = 3;
|
|
}
|
|
|
|
message RoutePatch {
|
|
ConfigPatchAction action = 1;
|
|
common.Ipv4Inet cidr = 2;
|
|
}
|
|
|
|
message ExitNodePatch {
|
|
ConfigPatchAction action = 1;
|
|
common.IpAddr node = 2;
|
|
}
|
|
|
|
message PatchConfigRequest {
|
|
InstanceConfigPatch patch = 1;
|
|
api.instance.InstanceIdentifier instance = 2;
|
|
}
|
|
|
|
message PatchConfigResponse {}
|
|
|
|
message GetConfigRequest {
|
|
api.instance.InstanceIdentifier instance = 1;
|
|
}
|
|
|
|
message GetConfigResponse {
|
|
api.manage.NetworkConfig config = 1;
|
|
string toml_config = 2;
|
|
}
|
|
|
|
service ConfigRpc {
|
|
rpc PatchConfig(PatchConfigRequest) returns (PatchConfigResponse);
|
|
rpc GetConfig(GetConfigRequest) returns (GetConfigResponse);
|
|
}
|