From 89751480e803c960dd50414b13fb03d9938a0d30 Mon Sep 17 00:00:00 2001 From: Aceix Date: Tue, 3 Dec 2024 09:19:43 +0000 Subject: [PATCH] feat: receive device info and public endpoint from rac (#3215) --- controllers/ext_client.go | 7 +++++++ models/extclient.go | 29 +++++++++++++++++++---------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/controllers/ext_client.go b/controllers/ext_client.go index 874c6257..1c751cc4 100644 --- a/controllers/ext_client.go +++ b/controllers/ext_client.go @@ -490,6 +490,13 @@ func createExtClient(w http.ResponseWriter, r *http.Request) { if err == nil { // check if parent network default ACL is enabled (yes) or not (no) extclient.Enabled = parentNetwork.DefaultACL == "yes" } + extclient.Os = customExtClient.Os + extclient.DeviceName = customExtClient.DeviceName + if customExtClient.IsAlreadyConnectedToInetGw { + slog.Warn("RAC/Client is already connected to internet gateway. this may mask their real IP address", "client IP", customExtClient.PublicEndpoint) + } + extclient.PublicEndpoint = customExtClient.PublicEndpoint + extclient.Country = customExtClient.Country if err = logic.CreateExtClient(&extclient); err != nil { slog.Error( diff --git a/models/extclient.go b/models/extclient.go index a6214c34..cbccc5dd 100644 --- a/models/extclient.go +++ b/models/extclient.go @@ -21,20 +21,29 @@ type ExtClient struct { PostUp string `json:"postup" bson:"postup"` PostDown string `json:"postdown" bson:"postdown"` Tags map[TagID]struct{} `json:"tags"` + Os string `json:"os"` + DeviceName string `json:"device_name"` + PublicEndpoint string `json:"public_endpoint"` + Country string `json:"country"` } // CustomExtClient - struct for CustomExtClient params type CustomExtClient struct { - ClientID string `json:"clientid,omitempty"` - PublicKey string `json:"publickey,omitempty"` - DNS string `json:"dns,omitempty"` - ExtraAllowedIPs []string `json:"extraallowedips,omitempty"` - Enabled bool `json:"enabled,omitempty"` - DeniedACLs map[string]struct{} `json:"deniednodeacls" bson:"acls,omitempty"` - RemoteAccessClientID string `json:"remote_access_client_id"` // unique ID (MAC address) of RAC machine - PostUp string `json:"postup" bson:"postup" validate:"max=1024"` - PostDown string `json:"postdown" bson:"postdown" validate:"max=1024"` - Tags map[TagID]struct{} `json:"tags"` + ClientID string `json:"clientid,omitempty"` + PublicKey string `json:"publickey,omitempty"` + DNS string `json:"dns,omitempty"` + ExtraAllowedIPs []string `json:"extraallowedips,omitempty"` + Enabled bool `json:"enabled,omitempty"` + DeniedACLs map[string]struct{} `json:"deniednodeacls" bson:"acls,omitempty"` + RemoteAccessClientID string `json:"remote_access_client_id"` // unique ID (MAC address) of RAC machine + PostUp string `json:"postup" bson:"postup" validate:"max=1024"` + PostDown string `json:"postdown" bson:"postdown" validate:"max=1024"` + Tags map[TagID]struct{} `json:"tags"` + Os string `json:"os"` + DeviceName string `json:"device_name"` + IsAlreadyConnectedToInetGw bool `json:"is_already_connected_to_inet_gw"` + PublicEndpoint string `json:"public_endpoint"` + Country string `json:"country"` } func (ext *ExtClient) ConvertToStaticNode() Node {