[client] Mark Rosenpass as deprecated (#8372)

* [client] Mark Rosenpass flags as deprecated

Rosenpass support is being deprecated. Users enabling it from the CLI
should learn that before they depend on it, while the feature itself
keeps working.

* [client] Show Rosenpass deprecation notice in the UI settings

Desktop users enable Rosenpass from the settings toggle, not the CLI,
so the deprecation notice needs to reach them there too. A new string
key falls back to English until Crowdin translates it, instead of
showing a stale translation without the notice.

* [client] Keep switchOrCreateProfile doc comment attached

The Rosenpass warning helper landed between switchOrCreateProfile and
its doc comment, leaving the function undocumented.

* [client] Use MarkDeprecated for the Rosenpass flags

Follows the convention already used for --enable-lazy-connection, as
asked in review. The flags drop out of --help and pflag warns on any
use, so the custom helper is no longer needed.

* [client] Isolate the Rosenpass flag test from upCmd's flag set

Setting the shared upCmd flags left them marked Changed for any later
test in the package.
This commit is contained in:
Riccardo Manfrin
2026-10-27 14:01:16 +01:00
committed by GitHub
parent 2c68a84a97
commit 36339993bc
4 changed files with 50 additions and 3 deletions
+4 -2
View File
@@ -220,13 +220,15 @@ func init() {
`An empty string "" clears the previous configuration. `+
`E.g. --dns-resolver-address 127.0.0.1:5053 or --dns-resolver-address ""`,
)
upCmd.PersistentFlags().BoolVar(&rosenpassEnabled, enableRosenpassFlag, false, "[Experimental] Enable Rosenpass feature. If enabled, the connection will be post-quantum secured via Rosenpass.")
upCmd.PersistentFlags().BoolVar(&rosenpassPermissive, rosenpassPermissiveFlag, false, "[Experimental] Enable Rosenpass in permissive mode to allow this peer to accept WireGuard connections without requiring Rosenpass functionality from peers that do not have Rosenpass enabled.")
upCmd.PersistentFlags().BoolVar(&rosenpassEnabled, enableRosenpassFlag, false, "[Deprecated] Enable Rosenpass feature. If enabled, the connection will be post-quantum secured via Rosenpass.")
upCmd.PersistentFlags().BoolVar(&rosenpassPermissive, rosenpassPermissiveFlag, false, "[Deprecated] Enable Rosenpass in permissive mode to allow this peer to accept WireGuard connections without requiring Rosenpass functionality from peers that do not have Rosenpass enabled.")
upCmd.PersistentFlags().BoolVar(&autoConnectDisabled, disableAutoConnectFlag, false, "Disables auto-connect feature. If enabled, then the client won't connect automatically when the service starts.")
upCmd.PersistentFlags().BoolVar(&localMetricsEnabled, enableLocalMetricsFlag, false, "Enables a local Prometheus /metrics endpoint exposing connection state (peers, latency, P2P vs relay).")
upCmd.PersistentFlags().StringVar(&localMetricsAddr, localMetricsAddressFlag, localmetrics.DefaultListenAddress, "Listen address of the local Prometheus /metrics endpoint.")
upCmd.PersistentFlags().BoolVar(&lazyConnEnabled, enableLazyConnectionFlag, false, "Deprecated: no longer used. Lazy connections are controlled by the server and the NB_LAZY_CONN environment variable.")
_ = upCmd.PersistentFlags().MarkDeprecated(enableLazyConnectionFlag, "no longer used; lazy connections are controlled by the server and the NB_LAZY_CONN environment variable")
_ = upCmd.PersistentFlags().MarkDeprecated(enableRosenpassFlag, "Rosenpass support may be removed in a future release")
_ = upCmd.PersistentFlags().MarkDeprecated(rosenpassPermissiveFlag, "Rosenpass support may be removed in a future release")
}
+34
View File
@@ -0,0 +1,34 @@
package cmd
import (
"bytes"
"testing"
"github.com/spf13/pflag"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestRosenpassFlagsWarnDeprecated(t *testing.T) {
origEnabled, origPermissive := rosenpassEnabled, rosenpassPermissive
t.Cleanup(func() {
rosenpassEnabled, rosenpassPermissive = origEnabled, origPermissive
})
for _, name := range []string{enableRosenpassFlag, rosenpassPermissiveFlag} {
// Copy the production flag into a private set so Set marks only the copy as
// Changed, leaving upCmd's shared flag set untouched for other tests.
prod := upCmd.PersistentFlags().Lookup(name)
require.NotNil(t, prod, "flag --%s must be registered on up", name)
flagCopy := *prod
var out bytes.Buffer
flags := pflag.NewFlagSet("rosenpass-test", pflag.ContinueOnError)
flags.SetOutput(&out)
flags.AddFlag(&flagCopy)
require.NoError(t, flags.Set(name, "true"))
assert.Contains(t, out.String(), "Flag --"+name+" has been deprecated", "setting --%s should print the deprecation notice", name)
assert.False(t, prod.Changed, "the shared --%s flag must stay unchanged", name)
}
}