From 2f399f1e6ecbc6746f285dade6990743d8080130 Mon Sep 17 00:00:00 2001 From: Dmitri Dolguikh Date: Mon, 3 Aug 2026 14:12:27 +0200 Subject: [PATCH] wire up dnssettings Signed-off-by: Dmitri Dolguikh --- .../internals/network_map_db/db_store.go | 1 + .../network_map_db/pgsql/dns_settings.go | 49 +++++++++++++++++++ .../network_map_db/pgsql/group_test.go | 15 +++++- .../network_map_db/pgsql/network_map_data.go | 5 ++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 management/internals/network_map_db/pgsql/dns_settings.go diff --git a/management/internals/network_map_db/db_store.go b/management/internals/network_map_db/db_store.go index 03add8dc3..5278189f9 100644 --- a/management/internals/network_map_db/db_store.go +++ b/management/internals/network_map_db/db_store.go @@ -34,6 +34,7 @@ type NetworkMapDBStore interface { GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, error) GetNetworkMapData(ctx context.Context, accountId string) (*networkmap.NetworkMapData, error) GetAllowedUsers(ctx context.Context, accountId string) (map[string]struct{}, map[string][]string, error) + GetDnsSettings(ctx context.Context, accountId string) (nmdata.DNSSettings, error) } type NetworkMapDBStoreImpl struct { diff --git a/management/internals/network_map_db/pgsql/dns_settings.go b/management/internals/network_map_db/pgsql/dns_settings.go new file mode 100644 index 000000000..d3938e4bc --- /dev/null +++ b/management/internals/network_map_db/pgsql/dns_settings.go @@ -0,0 +1,49 @@ +package networkmap_pgsql + +import ( + "context" + "encoding/json" + + "github.com/jackc/pgx/v5" + "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" +) + +const ( + GetDnsSettingsQuery = ` + select dns_settings_disabled_management_groups + from accounts + where id=$1 + ` +) + +func (pg *PgStore) GetDnsSettings(ctx context.Context, accountId string) (nmdata.DNSSettings, error) { + c, err := pg.Pool.Acquire(ctx) + if err != nil { + return nmdata.DNSSettings{}, err + } + return GetDnsSettingsViaPgxConnection(ctx, c.Conn(), accountId) +} + +func GetDnsSettingsViaPgxConnection(ctx context.Context, con *pgx.Conn, accountId string) (nmdata.DNSSettings, error) { + rows, err := con.Query(ctx, GetDnsSettingsQuery, accountId) + if err != nil { + return nmdata.DNSSettings{}, err + } + + return pgx.CollectOneRow(rows, rowToDnsSettings) +} + +func rowToDnsSettings(row pgx.CollectableRow) (nmdata.DNSSettings, error) { + var value nmdata.DNSSettings + var settings json.RawMessage + + if err := row.Scan(&settings); err != nil { + return value, err + } + + if err := json.Unmarshal(settings, &value.DisabledManagementGroups); err != nil { + return value, err + } + + return value, nil +} diff --git a/management/internals/network_map_db/pgsql/group_test.go b/management/internals/network_map_db/pgsql/group_test.go index 43fa3ffe1..fdad86940 100644 --- a/management/internals/network_map_db/pgsql/group_test.go +++ b/management/internals/network_map_db/pgsql/group_test.go @@ -254,7 +254,7 @@ func TestGetPostureChecks(t *testing.T) { // ) } -func TestGetGetAllowedUserIds(t *testing.T) { +func TestGetAllowedUserIds(t *testing.T) { ctx := context.TODO() s, err := NewPostgresqlStore(ctx, "postgresql://root:netbird@localhost:5432/netbird") @@ -267,3 +267,16 @@ func TestGetGetAllowedUserIds(t *testing.T) { assert.NotEmpty(t, userIds) assert.NotEmpty(t, groupToUserIds) } + +func TestGetDnsSettings(t *testing.T) { + ctx := context.TODO() + + s, err := NewPostgresqlStore(ctx, "postgresql://root:netbird@localhost:5432/netbird") + assert.NoError(t, err) + // err = loadSQL(ctx, s.pool, initDb) + //assert.NoError(t, err) + + set, err := s.GetDnsSettings(ctx, "ckvdmrqfic3c739ihh5g") //"ckd7ee2fic3c73dtendg") + assert.NoError(t, err) + assert.NotEmpty(t, set.DisabledManagementGroups) +} diff --git a/management/internals/network_map_db/pgsql/network_map_data.go b/management/internals/network_map_db/pgsql/network_map_data.go index 466f18d9e..f28a3144d 100644 --- a/management/internals/network_map_db/pgsql/network_map_data.go +++ b/management/internals/network_map_db/pgsql/network_map_data.go @@ -66,6 +66,10 @@ func (pg *PgStore) GetNetworkMapData(ctx context.Context, accountId string) (*ne if err != nil { return rollbackAndReturnError(ctx, tx, err) } + dnsSettings, err := GetDnsSettingsViaPgxConnection(ctx, tx.Conn(), accountId) + if err != nil { + return rollbackAndReturnError(ctx, tx, err) + } resourcePolicies := make(map[string][]*nmdata.Policy) for _, resource := range networkResources { @@ -99,6 +103,7 @@ func (pg *PgStore) GetNetworkMapData(ctx context.Context, accountId string) (*ne toret := networkmap.NetworkMapData{ AccountSettings: &acctSettings, + DNSSettings: &dnsSettings, Network: &network, Peers: toMap(peers, func(p nmdata.Peer) string { return p.ID }), Groups: toMap(groups, func(g nmdata.Group) string { return g.PublicID }),