From e10bff7d75f1056613ba636a1dba92f7005dc04d Mon Sep 17 00:00:00 2001 From: Diego Romar Date: Wed, 3 Dec 2025 09:26:15 -0300 Subject: [PATCH 1/6] [ios] Add a bogus test to check iOS behavior when setting environment variables --- client/ios/NetBirdSDK/preferences.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/client/ios/NetBirdSDK/preferences.go b/client/ios/NetBirdSDK/preferences.go index 5e7050465fe..f890d3658dd 100644 --- a/client/ios/NetBirdSDK/preferences.go +++ b/client/ios/NetBirdSDK/preferences.go @@ -1,6 +1,11 @@ package NetBirdSDK import ( + "os" + "strconv" + + log "github.com/sirupsen/logrus" + "github.com/netbirdio/netbird/client/internal/profilemanager" ) @@ -113,3 +118,18 @@ func (p *Preferences) Commit() error { _, err := profilemanager.UpdateOrCreateConfig(p.configInput) return err } + +var myBogusKey = "MY_BOGUS_KEY" + +func (p *Preferences) SetBogusVariable(value bool) { + err := os.Setenv(myBogusKey, strconv.FormatBool(value)) + if err != nil { + log.Errorf("failed to set bogus variable: %s", err) + } +} + +func (p *Preferences) GetBogusVariable() string { + bogusValue := os.Getenv(myBogusKey) + log.Debugf("bogus value: %s", bogusValue) + return bogusValue +} From 0d2bc3f7e15bd08a9c20598256d2c3bdc0eb0d16 Mon Sep 17 00:00:00 2001 From: Diego Romar Date: Wed, 3 Dec 2025 15:55:38 -0300 Subject: [PATCH 2/6] [ios] Revert "Add a bogus test to check iOS behavior when setting environment variables" This reverts commit 90ca01105a6b0f4471aac07a63fc95e5d4eaef9b. --- client/ios/NetBirdSDK/preferences.go | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/client/ios/NetBirdSDK/preferences.go b/client/ios/NetBirdSDK/preferences.go index f890d3658dd..5e7050465fe 100644 --- a/client/ios/NetBirdSDK/preferences.go +++ b/client/ios/NetBirdSDK/preferences.go @@ -1,11 +1,6 @@ package NetBirdSDK import ( - "os" - "strconv" - - log "github.com/sirupsen/logrus" - "github.com/netbirdio/netbird/client/internal/profilemanager" ) @@ -118,18 +113,3 @@ func (p *Preferences) Commit() error { _, err := profilemanager.UpdateOrCreateConfig(p.configInput) return err } - -var myBogusKey = "MY_BOGUS_KEY" - -func (p *Preferences) SetBogusVariable(value bool) { - err := os.Setenv(myBogusKey, strconv.FormatBool(value)) - if err != nil { - log.Errorf("failed to set bogus variable: %s", err) - } -} - -func (p *Preferences) GetBogusVariable() string { - bogusValue := os.Getenv(myBogusKey) - log.Debugf("bogus value: %s", bogusValue) - return bogusValue -} From 84d0cc535540d34cf9f4d4718760a7aa60c90754 Mon Sep 17 00:00:00 2001 From: Diego Romar Date: Wed, 3 Dec 2025 15:56:38 -0300 Subject: [PATCH 3/6] [ios] Add EnvList struct to export and import environment variables --- client/ios/NetBirdSDK/env_list.go | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 client/ios/NetBirdSDK/env_list.go diff --git a/client/ios/NetBirdSDK/env_list.go b/client/ios/NetBirdSDK/env_list.go new file mode 100644 index 00000000000..4800803d7b3 --- /dev/null +++ b/client/ios/NetBirdSDK/env_list.go @@ -0,0 +1,34 @@ +//go:build ios + +package NetBirdSDK + +import "github.com/netbirdio/netbird/client/internal/peer" + +// EnvList is an exported struct to be bound by gomobile +type EnvList struct { + data map[string]string +} + +// NewEnvList creates a new EnvList +func NewEnvList() *EnvList { + return &EnvList{data: make(map[string]string)} +} + +// Put adds a key-value pair +func (el *EnvList) Put(key, value string) { + el.data[key] = value +} + +// Get retrieves a value by key +func (el *EnvList) Get(key string) string { + return el.data[key] +} + +func (el *EnvList) AllItems() map[string]string { + return el.data +} + +// GetEnvKeyNBForceRelay Exports the environment variable for the iOS client +func GetEnvKeyNBForceRelay() string { + return peer.EnvKeyNBForceRelay +} From db28d6fcc067eb3f463a6295d2e010f6963688de Mon Sep 17 00:00:00 2001 From: Diego Romar Date: Wed, 3 Dec 2025 15:57:42 -0300 Subject: [PATCH 4/6] [ios] Add envList parameter to the iOS Client Run method --- client/ios/NetBirdSDK/client.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/client/ios/NetBirdSDK/client.go b/client/ios/NetBirdSDK/client.go index 6d969bb1231..cf2087bdf79 100644 --- a/client/ios/NetBirdSDK/client.go +++ b/client/ios/NetBirdSDK/client.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "net/netip" + "os" "sort" "strings" "sync" @@ -90,7 +91,8 @@ func NewClient(cfgFile, stateFile, deviceName string, osVersion string, osName s } // Run start the internal client. It is a blocker function -func (c *Client) Run(fd int32, interfaceName string) error { +func (c *Client) Run(fd int32, interfaceName string, envList *EnvList) error { + exportEnvList(envList) log.Infof("Starting NetBird client") log.Debugf("Tunnel uses interface: %s", interfaceName) cfg, err := profilemanager.UpdateOrCreateConfig(profilemanager.ConfigInput{ @@ -433,3 +435,14 @@ func toNetIDs(routes []string) []route.NetID { } return netIDs } + +func exportEnvList(list *EnvList) { + if list == nil { + return + } + for k, v := range list.AllItems() { + if err := os.Setenv(k, v); err != nil { + log.Errorf("could not set env variable %s: %v", k, err) + } + } +} From 1fd875a62790b5f6efea54870b0d68a09c967947 Mon Sep 17 00:00:00 2001 From: Diego Romar Date: Mon, 8 Dec 2025 16:35:01 -0300 Subject: [PATCH 5/6] [ios] Add some debug logging to exportEnvVarList --- client/ios/NetBirdSDK/client.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/ios/NetBirdSDK/client.go b/client/ios/NetBirdSDK/client.go index cf2087bdf79..11392f21133 100644 --- a/client/ios/NetBirdSDK/client.go +++ b/client/ios/NetBirdSDK/client.go @@ -441,8 +441,13 @@ func exportEnvList(list *EnvList) { return } for k, v := range list.AllItems() { + log.Debugf("Env variable %s's value is currently: %s", k, os.Getenv(k)) + log.Debugf("Setting env variable %s: %s", k, v) + if err := os.Setenv(k, v); err != nil { log.Errorf("could not set env variable %s: %v", k, err) + } else { + log.Debugf("Env variable %s was set successfully", k) } } } From 5bfdaabb7fdce86c5a1bf8c5c0dc1c26e7dfbdd5 Mon Sep 17 00:00:00 2001 From: Diego Romar Date: Tue, 9 Dec 2025 14:36:50 -0300 Subject: [PATCH 6/6] Add "//go:build ios" to client/ios/NetBirdSDK files --- client/ios/NetBirdSDK/client.go | 2 ++ client/ios/NetBirdSDK/gomobile.go | 2 ++ client/ios/NetBirdSDK/logger.go | 2 ++ client/ios/NetBirdSDK/login.go | 2 ++ client/ios/NetBirdSDK/peer_notifier.go | 2 ++ client/ios/NetBirdSDK/preferences.go | 2 ++ client/ios/NetBirdSDK/preferences_test.go | 2 ++ client/ios/NetBirdSDK/routes.go | 2 ++ 8 files changed, 16 insertions(+) diff --git a/client/ios/NetBirdSDK/client.go b/client/ios/NetBirdSDK/client.go index 11392f21133..463c93d5750 100644 --- a/client/ios/NetBirdSDK/client.go +++ b/client/ios/NetBirdSDK/client.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK import ( diff --git a/client/ios/NetBirdSDK/gomobile.go b/client/ios/NetBirdSDK/gomobile.go index 9eadd6a7f37..79bf0c2acbd 100644 --- a/client/ios/NetBirdSDK/gomobile.go +++ b/client/ios/NetBirdSDK/gomobile.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK import _ "golang.org/x/mobile/bind" diff --git a/client/ios/NetBirdSDK/logger.go b/client/ios/NetBirdSDK/logger.go index f1ad1b9f6a6..531d0ba89fb 100644 --- a/client/ios/NetBirdSDK/logger.go +++ b/client/ios/NetBirdSDK/logger.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK import ( diff --git a/client/ios/NetBirdSDK/login.go b/client/ios/NetBirdSDK/login.go index 570c44f80dc..1c2b38a61ae 100644 --- a/client/ios/NetBirdSDK/login.go +++ b/client/ios/NetBirdSDK/login.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK import ( diff --git a/client/ios/NetBirdSDK/peer_notifier.go b/client/ios/NetBirdSDK/peer_notifier.go index 16c5039ebe9..9b00568be37 100644 --- a/client/ios/NetBirdSDK/peer_notifier.go +++ b/client/ios/NetBirdSDK/peer_notifier.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK // PeerInfo describe information about the peers. It designed for the UI usage diff --git a/client/ios/NetBirdSDK/preferences.go b/client/ios/NetBirdSDK/preferences.go index 5e7050465fe..39ae06538c9 100644 --- a/client/ios/NetBirdSDK/preferences.go +++ b/client/ios/NetBirdSDK/preferences.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK import ( diff --git a/client/ios/NetBirdSDK/preferences_test.go b/client/ios/NetBirdSDK/preferences_test.go index 780443a7b20..5f75e7c9a2b 100644 --- a/client/ios/NetBirdSDK/preferences_test.go +++ b/client/ios/NetBirdSDK/preferences_test.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK import ( diff --git a/client/ios/NetBirdSDK/routes.go b/client/ios/NetBirdSDK/routes.go index 30d0d0d0a25..7b84d6e1c1a 100644 --- a/client/ios/NetBirdSDK/routes.go +++ b/client/ios/NetBirdSDK/routes.go @@ -1,3 +1,5 @@ +//go:build ios + package NetBirdSDK // RoutesSelectionInfoCollection made for Java layer to get non default types as collection