mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-20 13:49:07 +02:00
refactor layout and structure
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -9,27 +9,81 @@ import "google/protobuf/timestamp.proto";
|
||||
// ProxyService - Management is the SERVER, Proxy is the CLIENT
|
||||
// Proxy initiates connection to management
|
||||
service ProxyService {
|
||||
// Bidirectional stream for proxy-management communication
|
||||
rpc Stream(stream ProxyMessage) returns (stream ManagementMessage);
|
||||
rpc GetMappingUpdate(GetMappingUpdateRequest) returns (stream GetMappingUpdateResponse);
|
||||
|
||||
rpc SendAccessLog(SendAccessLogRequest) returns (SendAccessLogResponse);
|
||||
}
|
||||
|
||||
// Messages FROM Proxy TO Management
|
||||
message ProxyMessage {
|
||||
oneof payload {
|
||||
ProxyHello hello = 1; // First message on connect
|
||||
ProxyRequestData request_data = 2; // Real-time access logs
|
||||
}
|
||||
}
|
||||
|
||||
// Proxy identification on connect
|
||||
message ProxyHello {
|
||||
// GetMappingUpdateRequest is sent to initialise a mapping stream.
|
||||
message GetMappingUpdateRequest {
|
||||
string proxy_id = 1;
|
||||
string version = 2;
|
||||
google.protobuf.Timestamp started_at = 3;
|
||||
}
|
||||
|
||||
// Access log from proxy to management
|
||||
message ProxyRequestData {
|
||||
// GetMappingUpdateResponse contains zero or more ProxyMappings.
|
||||
// No mappings may be sent to test the liveness of the Proxy.
|
||||
// Mappings that are sent should be interpreted by the Proxy appropriately.
|
||||
message GetMappingUpdateResponse {
|
||||
repeated ProxyMapping mapping = 1;
|
||||
}
|
||||
|
||||
enum ProxyMappingUpdateType {
|
||||
UPDATE_TYPE_CREATED = 0;
|
||||
UPDATE_TYPE_MODIFIED = 1;
|
||||
UPDATE_TYPE_REMOVED = 2;
|
||||
}
|
||||
|
||||
message PathMapping {
|
||||
string path = 1;
|
||||
string target = 2;
|
||||
}
|
||||
|
||||
message Authentication {
|
||||
HTTPBasic basic = 1;
|
||||
Pin pin = 2;
|
||||
OIDC oidc = 3;
|
||||
}
|
||||
|
||||
message HTTPBasic {
|
||||
bool enabled = 1;
|
||||
string username = 2;
|
||||
string password = 3;
|
||||
}
|
||||
|
||||
message Pin {
|
||||
bool enabled = 1;
|
||||
string pin = 2;
|
||||
}
|
||||
|
||||
message OIDC {
|
||||
bool enabled = 1;
|
||||
string oidc_provider_url = 2;
|
||||
string oidc_client_id = 3;
|
||||
string oidc_client_secret = 4;
|
||||
string oidc_redirect_url = 5;
|
||||
repeated string oidc_scopes = 6;
|
||||
string session_cookie_name = 7;
|
||||
}
|
||||
|
||||
message ProxyMapping {
|
||||
ProxyMappingUpdateType type = 1;
|
||||
string id = 2;
|
||||
string domain = 3;
|
||||
repeated PathMapping path = 4;
|
||||
string setup_key = 5;
|
||||
Authentication auth = 6;
|
||||
}
|
||||
|
||||
// SendAccessLogRequest consists of one or more AccessLogs from a Proxy.
|
||||
message SendAccessLogRequest {
|
||||
AccessLog log = 1;
|
||||
}
|
||||
|
||||
// SendAccessLogResponse is intentionally empty to allow for future expansion.
|
||||
message SendAccessLogResponse {}
|
||||
|
||||
message AccessLog {
|
||||
google.protobuf.Timestamp timestamp = 1;
|
||||
string service_id = 2;
|
||||
string host = 3;
|
||||
@@ -42,61 +96,3 @@ message ProxyRequestData {
|
||||
string user_id = 10;
|
||||
bool auth_success = 11;
|
||||
}
|
||||
|
||||
// Messages FROM Management TO Proxy
|
||||
message ManagementMessage {
|
||||
oneof payload {
|
||||
ServicesSnapshot snapshot = 1; // Full snapshot on initial connect
|
||||
ServiceUpdate update = 2; // Incremental service update
|
||||
}
|
||||
}
|
||||
|
||||
// Full snapshot of all services for this proxy
|
||||
message ServicesSnapshot {
|
||||
repeated ExposedServiceConfig services = 1;
|
||||
google.protobuf.Timestamp timestamp = 2;
|
||||
}
|
||||
|
||||
// Incremental service update
|
||||
message ServiceUpdate {
|
||||
enum UpdateType {
|
||||
CREATED = 0;
|
||||
UPDATED = 1;
|
||||
REMOVED = 2;
|
||||
}
|
||||
UpdateType type = 1;
|
||||
ExposedServiceConfig service = 2; // Set for CREATED and UPDATED
|
||||
string service_id = 3; // Service ID (always set)
|
||||
}
|
||||
|
||||
// Exposed service configuration
|
||||
message ExposedServiceConfig {
|
||||
string id = 1;
|
||||
string domain = 2;
|
||||
map<string, string> path_mappings = 3; // path -> target
|
||||
string setup_key = 4;
|
||||
AuthConfig auth = 5;
|
||||
}
|
||||
|
||||
// Authentication configuration
|
||||
message AuthConfig {
|
||||
oneof auth_type {
|
||||
BasicAuthConfig basic_auth = 1;
|
||||
PinAuthConfig pin_auth = 2;
|
||||
BearerAuthConfig bearer_auth = 3;
|
||||
}
|
||||
}
|
||||
|
||||
message BasicAuthConfig {
|
||||
string username = 1;
|
||||
string password = 2;
|
||||
}
|
||||
|
||||
message PinAuthConfig {
|
||||
string pin = 1;
|
||||
string header = 2;
|
||||
}
|
||||
|
||||
message BearerAuthConfig {
|
||||
bool enabled = 1;
|
||||
}
|
||||
@@ -18,8 +18,8 @@ const _ = grpc.SupportPackageIsVersion7
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type ProxyServiceClient interface {
|
||||
// Bidirectional stream for proxy-management communication
|
||||
Stream(ctx context.Context, opts ...grpc.CallOption) (ProxyService_StreamClient, error)
|
||||
GetMappingUpdate(ctx context.Context, in *GetMappingUpdateRequest, opts ...grpc.CallOption) (ProxyService_GetMappingUpdateClient, error)
|
||||
SendAccessLog(ctx context.Context, in *SendAccessLogRequest, opts ...grpc.CallOption) (*SendAccessLogResponse, error)
|
||||
}
|
||||
|
||||
type proxyServiceClient struct {
|
||||
@@ -30,43 +30,53 @@ func NewProxyServiceClient(cc grpc.ClientConnInterface) ProxyServiceClient {
|
||||
return &proxyServiceClient{cc}
|
||||
}
|
||||
|
||||
func (c *proxyServiceClient) Stream(ctx context.Context, opts ...grpc.CallOption) (ProxyService_StreamClient, error) {
|
||||
stream, err := c.cc.NewStream(ctx, &ProxyService_ServiceDesc.Streams[0], "/management.ProxyService/Stream", opts...)
|
||||
func (c *proxyServiceClient) GetMappingUpdate(ctx context.Context, in *GetMappingUpdateRequest, opts ...grpc.CallOption) (ProxyService_GetMappingUpdateClient, error) {
|
||||
stream, err := c.cc.NewStream(ctx, &ProxyService_ServiceDesc.Streams[0], "/management.ProxyService/GetMappingUpdate", opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
x := &proxyServiceStreamClient{stream}
|
||||
x := &proxyServiceGetMappingUpdateClient{stream}
|
||||
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := x.ClientStream.CloseSend(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return x, nil
|
||||
}
|
||||
|
||||
type ProxyService_StreamClient interface {
|
||||
Send(*ProxyMessage) error
|
||||
Recv() (*ManagementMessage, error)
|
||||
type ProxyService_GetMappingUpdateClient interface {
|
||||
Recv() (*GetMappingUpdateResponse, error)
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
type proxyServiceStreamClient struct {
|
||||
type proxyServiceGetMappingUpdateClient struct {
|
||||
grpc.ClientStream
|
||||
}
|
||||
|
||||
func (x *proxyServiceStreamClient) Send(m *ProxyMessage) error {
|
||||
return x.ClientStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func (x *proxyServiceStreamClient) Recv() (*ManagementMessage, error) {
|
||||
m := new(ManagementMessage)
|
||||
func (x *proxyServiceGetMappingUpdateClient) Recv() (*GetMappingUpdateResponse, error) {
|
||||
m := new(GetMappingUpdateResponse)
|
||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (c *proxyServiceClient) SendAccessLog(ctx context.Context, in *SendAccessLogRequest, opts ...grpc.CallOption) (*SendAccessLogResponse, error) {
|
||||
out := new(SendAccessLogResponse)
|
||||
err := c.cc.Invoke(ctx, "/management.ProxyService/SendAccessLog", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// ProxyServiceServer is the server API for ProxyService service.
|
||||
// All implementations must embed UnimplementedProxyServiceServer
|
||||
// for forward compatibility
|
||||
type ProxyServiceServer interface {
|
||||
// Bidirectional stream for proxy-management communication
|
||||
Stream(ProxyService_StreamServer) error
|
||||
GetMappingUpdate(*GetMappingUpdateRequest, ProxyService_GetMappingUpdateServer) error
|
||||
SendAccessLog(context.Context, *SendAccessLogRequest) (*SendAccessLogResponse, error)
|
||||
mustEmbedUnimplementedProxyServiceServer()
|
||||
}
|
||||
|
||||
@@ -74,8 +84,11 @@ type ProxyServiceServer interface {
|
||||
type UnimplementedProxyServiceServer struct {
|
||||
}
|
||||
|
||||
func (UnimplementedProxyServiceServer) Stream(ProxyService_StreamServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method Stream not implemented")
|
||||
func (UnimplementedProxyServiceServer) GetMappingUpdate(*GetMappingUpdateRequest, ProxyService_GetMappingUpdateServer) error {
|
||||
return status.Errorf(codes.Unimplemented, "method GetMappingUpdate not implemented")
|
||||
}
|
||||
func (UnimplementedProxyServiceServer) SendAccessLog(context.Context, *SendAccessLogRequest) (*SendAccessLogResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SendAccessLog not implemented")
|
||||
}
|
||||
func (UnimplementedProxyServiceServer) mustEmbedUnimplementedProxyServiceServer() {}
|
||||
|
||||
@@ -90,30 +103,43 @@ func RegisterProxyServiceServer(s grpc.ServiceRegistrar, srv ProxyServiceServer)
|
||||
s.RegisterService(&ProxyService_ServiceDesc, srv)
|
||||
}
|
||||
|
||||
func _ProxyService_Stream_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
return srv.(ProxyServiceServer).Stream(&proxyServiceStreamServer{stream})
|
||||
func _ProxyService_GetMappingUpdate_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||
m := new(GetMappingUpdateRequest)
|
||||
if err := stream.RecvMsg(m); err != nil {
|
||||
return err
|
||||
}
|
||||
return srv.(ProxyServiceServer).GetMappingUpdate(m, &proxyServiceGetMappingUpdateServer{stream})
|
||||
}
|
||||
|
||||
type ProxyService_StreamServer interface {
|
||||
Send(*ManagementMessage) error
|
||||
Recv() (*ProxyMessage, error)
|
||||
type ProxyService_GetMappingUpdateServer interface {
|
||||
Send(*GetMappingUpdateResponse) error
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
type proxyServiceStreamServer struct {
|
||||
type proxyServiceGetMappingUpdateServer struct {
|
||||
grpc.ServerStream
|
||||
}
|
||||
|
||||
func (x *proxyServiceStreamServer) Send(m *ManagementMessage) error {
|
||||
func (x *proxyServiceGetMappingUpdateServer) Send(m *GetMappingUpdateResponse) error {
|
||||
return x.ServerStream.SendMsg(m)
|
||||
}
|
||||
|
||||
func (x *proxyServiceStreamServer) Recv() (*ProxyMessage, error) {
|
||||
m := new(ProxyMessage)
|
||||
if err := x.ServerStream.RecvMsg(m); err != nil {
|
||||
func _ProxyService_SendAccessLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(SendAccessLogRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
if interceptor == nil {
|
||||
return srv.(ProxyServiceServer).SendAccessLog(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/management.ProxyService/SendAccessLog",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(ProxyServiceServer).SendAccessLog(ctx, req.(*SendAccessLogRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// ProxyService_ServiceDesc is the grpc.ServiceDesc for ProxyService service.
|
||||
@@ -122,13 +148,17 @@ func (x *proxyServiceStreamServer) Recv() (*ProxyMessage, error) {
|
||||
var ProxyService_ServiceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "management.ProxyService",
|
||||
HandlerType: (*ProxyServiceServer)(nil),
|
||||
Methods: []grpc.MethodDesc{},
|
||||
Methods: []grpc.MethodDesc{
|
||||
{
|
||||
MethodName: "SendAccessLog",
|
||||
Handler: _ProxyService_SendAccessLog_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{
|
||||
{
|
||||
StreamName: "Stream",
|
||||
Handler: _ProxyService_Stream_Handler,
|
||||
StreamName: "GetMappingUpdate",
|
||||
Handler: _ProxyService_GetMappingUpdate_Handler,
|
||||
ServerStreams: true,
|
||||
ClientStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "proxy_service.proto",
|
||||
|
||||
Reference in New Issue
Block a user