Repository navigation
Conversation
ZNC 1.9 and older offer no SASL to clients and answer a client that sends no PASS with 464, then wait; ZNC 1.10 takes SASL only with saslplainauth loaded, which only new installs get by default. Seance never sent PASS, so it could not log in to them at all. - ConnectOptions.serverPassword, sent as `PASS :<password>` after CAP LS and before NICK/USER; nothing is sent when it is empty. Independent of SASL: both go out when both are set. - Stored under the SASL password's rules: on disk only with rememberPassword, with hasServerPassword kept so needsPassword() sends a link or an autoconnect back to the connect form; stripped from a settings backup unless passwords are kept; never from a URL; carried to the push worker's stash under the same rule, and the worker sends it too. - Edit form: the switch off clears it; on with the field blank keeps the stored one, or the one a live client holds in memory. - 464 before 001 stops the connection instead of retrying: the lobby says whether a password was missing or refused, and the entry stops connecting by itself. After 001 a 464 (OPER) stays an ordinary error. - Forms: a "This server needs a password" switch and field in the connect form (hidden when the deploy locks the host) and in network settings; "Remember password" shows for either password.
The worker logs in only for push (draft/webpush), and none of the servers that want a server password offers a push Seance uses: ZNC has none, and soju's is soju.im/webpush. Docs say where to add it when one does.
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Seance never sent
PASS, so it could not log in to ZNC 1.9 and older at all. Those versions offer no SASL to clients: a client that sends noPASSgets464 Password required, and ZNC then just waits. ZNC 1.10 does take SASL, but only with thesaslplainauthmodule loaded, and only new installs load it by default. Getting every ZNC user to reconfigure isn't realistic, so this adds a server password field instead. The field isn't ZNC-specific: soju, older bouncers, password-protected ircds and a few networks that pass a server password to NickServ use it too.What
ConnectOptions.serverPasswordis sent asPASS :<password>afterCAP LS 302and beforeNICK/USER, in the same flush. Nothing is sent when it is empty, so other networks see no change. It is independent of SASL; both are sent when both are set.rememberPasswordis on. OtherwisehasServerPasswordis kept, soneedsPassword()sends a link or an autoconnect back to the connect form to ask for it.tools/i18n/add.ts.docs/resources/client-features.md§ Server password.Testing
pnpm typecheck, oxlint, prettier andi18n:checkare clean. The full mocha run passes (5142).test/irc/server-password.ts: line order, no PASS when empty, 464 missing or refused, 464 after 001, and keeping the in-memory password across an edit.needsPasswordand the edit-form rules intest/irc/saved-networks.ts.test/helpers/settingsBackup.ts.QUIT :Server password required, showed the hint in the lobby and did not redial./connectsentPASS :user/net:pw, got 001 and joined.PASSand joined. With "Remember password" off, the stored entry kepthasServerPassword: trueand no password.qqxlocale. No CSS was added; the rows reuse the existing form classes.