Why does ZNC ship with *NickServ and *Q? #436

Closed
opened 2026-10-05 04:20:34 +02:00 by adam · 15 comments
Owner

As far as I am aware, *q is only supported on Quakenet and nowadays there aren't many networks that have NickServ, but don't support SASL. I am only able to name two (OFTC has *cert though) networks where there is NickServ without SASL, but *NickServ module didn't even to do anything there. I think they used HybServ2.

It looks to me like they could be external modules.

Update: according to #znc at freenode, there are multiple networks with NickServ, but without SASL. *perform would probably work as well with them though.

synIRC, dalnet, YourBNC, Rizon, Swiftirc, SlashNet - They all don't support sasl, but have nickserv

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/7191226-why-does-znc-ship-with-nickserv-and-q?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github).
As far as I am aware, *q is only supported on Quakenet and nowadays there aren't many networks that have NickServ, but don't support SASL. I am only able to name two (OFTC has *cert though) networks where there is NickServ without SASL, but *NickServ module didn't even to do anything there. I think they used HybServ2. It looks to me like they could be external modules. Update: according to #znc at freenode, there are multiple networks with NickServ, but without SASL. *perform would probably work as well with them though. > synIRC, dalnet, YourBNC, Rizon, Swiftirc, SlashNet - They all don't support sasl, but have nickserv ## <bountysource-plugin> --- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/7191226-why-does-znc-ship-with-nickserv-and-q?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1759&utm_medium=issues&utm_source=github). </bountysource-plugin> <!-- github-sync-id:52642864 -->
adam closed this issue 2026-10-05 04:20:34 +02:00
Author
Owner

Is the Q module still maintained? https://github.com/znc/znc/issues/554 is something I reported a long time ago and still seems to be in znc 1.4. (It also doesn't seem to work since I constantly need to auth myself; I'll need someone else to confirm that.) Also sending /msg *q HELP returns a bunch of unrelated WHOISes. But the fact it allows you to use challenge authentication is nice.

I think NickServ should remain, I personally still use it on networks that do not support sasl.

Is the Q module still maintained? https://github.com/znc/znc/issues/554 is something I reported a long time ago and still seems to be in znc 1.4. (It also doesn't seem to work since I constantly need to auth myself; I'll need someone else to confirm that.) Also sending /msg *q HELP returns a bunch of unrelated WHOISes. But the fact it allows you to use challenge authentication is nice. I think NickServ should remain, I personally still use it on networks that do not support sasl. <!-- github-comment-id:67829565 -->
Author
Owner

I believe it is maintained, because it's still in this repository and #602 is marked into the 1.6 milestone.

I believe it is maintained, because it's still in this repository and #602 is marked into the 1.6 milestone. <!-- github-comment-id:67829843 -->
Author
Owner

Are you asking because the function of *NickServ can be effectively duplicated in *Perform ?

Biggest difference is the *NickServ module won't use /ns identify YourNick YourPass even if that's available, though it's a far better method if that's available. Pretty much only old Anope 1.8.x (and older, if there are any) networks lack this.

Ben

Are you asking because the function of *NickServ can be effectively duplicated in *Perform ? Biggest difference is the *NickServ module won't use `/ns identify YourNick YourPass` even if that's available, though it's a far better method if that's available. Pretty much only old Anope 1.8.x (and older, if there are any) networks lack this. Ben <!-- github-comment-id:68104883 -->
Author
Owner

Are you asking because the function of *NickServ can be effectively duplicated in *Perform ?

Yes. The *NickServ module also appears to be a little unreliable and if I understood correctly, it also requires NickServ language to be set to English.

Biggest difference is the *NickServ module won't use /ns identify YourNick YourPass even if that's available, though it's a far better method if that's available.

This starts looking like security issue to me.

Pretty much only old Anope 1.8.x (and older, if there are any) networks lack this.

Is Anope 1.8.X even supported (by Anope)?

> Are you asking because the function of *NickServ can be effectively duplicated in *Perform ? Yes. The *NickServ module also appears to be a little unreliable and if I understood correctly, it also requires NickServ language to be set to English. > Biggest difference is the *NickServ module won't use /ns identify YourNick YourPass even if that's available, though it's a far better method if that's available. This starts looking like security issue to me. > Pretty much only old Anope 1.8.x (and older, if there are any) networks lack this. Is Anope 1.8.X even supported (by Anope)? <!-- github-comment-id:68106478 -->
Author
Owner

Yes. The *NickServ module also appears to be a little unreliable and if I understood correctly, it also requires NickServ language to be set to English.

That's correct. *NickServ works by watching out for the private notice prompting you to identify.

This starts looking like security issue to me.

Agreed. On many (most?) IRCds in use, the /ns and /nickserv server-side alias shortcut will only function if the target is on a U-lined server, which in most cases is services.

Furthermore, the module does no checking of any sort about whether "NickServ" is in fact the real NickServ. It relies on the dangerous assumption that only the real NickServ will use "NickServ" . In the IRC network community, it's considered a de-facto best practice to ban the use of "NickServ" so only the real NickServ can use "NickServ" but this isn't always the case. Even on places such as Freenode, where security is taken seriously, it has been known to happen at times that someone unauthorized will have the NickServ nick, even if only for a few minutes.

Is Anope 1.8.X even supported (by Anope)?

I don't believe so. However, there are still a frighteningly large number of networks that continue to use it, including some rather large ones.

Other comments

To be fair, *NickServ does have the notable advantage of sometimes working if you somehow connect to a split IRC server and NickServ comes online after the connection has taken place. This is probably the strongest argument in favor of keeping *NickServ . This is an advantage that *Perform and *Sasl don't have.

However, that functionality will only sometimes work. It relies on the user using his preferred nick at the moment NickServ comes back online. This may or may not be the case for any number of reasons.

Other than that, *NickServ serves little purpose. But, this is probably why ZNC has *NickServ and why it won't eventually be deprecated.

That said, *NickServ could stand to be improved. For one, it could possibly use some sort of coding logic to ensure that "NickServ" is in fact the real "NickServ" . However, to do so reliably doesn't come without it's own technical challenges. Another idea is to integrate the *KeepNick functionality into *NickServ, possibly somehow running /ns ghost PreferredNick Password followed by /nick PreferredNick or even /ns regain PreferredNick (if supported).

Ben

> Yes. The *NickServ module also appears to be a little unreliable and if I understood correctly, it also requires NickServ language to be set to English. That's correct. *NickServ works by watching out for the private notice prompting you to identify. > This starts looking like security issue to me. Agreed. On many (most?) IRCds in use, the /ns and /nickserv server-side alias shortcut will only function if the target is on a U-lined server, which in most cases is services. Furthermore, the module does no checking of any sort about whether "NickServ" is in fact the real NickServ. It relies on the dangerous assumption that only the real NickServ will use "NickServ" . In the IRC network community, it's considered a de-facto best practice to ban the use of "NickServ" so only the real NickServ can use "NickServ" but this isn't always the case. Even on places such as Freenode, where security is taken seriously, it has been known to happen at times that someone unauthorized will have the NickServ nick, even if only for a few minutes. > Is Anope 1.8.X even supported (by Anope)? I don't believe so. However, there are still a frighteningly large number of networks that continue to use it, including some rather large ones. ### Other comments To be fair, *NickServ does have the notable advantage of sometimes working if you somehow connect to a split IRC server and NickServ comes online after the connection has taken place. This is probably the strongest argument in favor of keeping *NickServ . This is an advantage that *Perform and *Sasl don't have. However, that functionality will only sometimes work. It relies on the user using his preferred nick at the moment NickServ comes back online. This may or may not be the case for any number of reasons. Other than that, *NickServ serves little purpose. But, this is probably why ZNC has *NickServ and why it won't eventually be deprecated. That said, *NickServ could stand to be improved. For one, it could possibly use some sort of coding logic to ensure that "NickServ" is in fact the real "NickServ" . However, to do so reliably doesn't come without it's own technical challenges. Another idea is to integrate the *KeepNick functionality into *NickServ, possibly somehow running `/ns ghost PreferredNick Password` followed by `/nick PreferredNick` or even `/ns regain PreferredNick` (if supported). Ben <!-- github-comment-id:68108178 -->
Author
Owner

To be fair, *NickServ does have the notable advantage of sometimes working if you somehow connect to a split IRC server and NickServ comes online after the connection has taken place. This is probably the strongest argument in favor of keeping *NickServ . This is an advantage that *Perform and *Sasl don't have.

*Cert has this too, but it's not so widely supported, but it doesn't look so much difficult from SASL EDSCA-CHALLENGEAUTH (sorry for misspelled name, I don't ever remember it). There is also https://github.com/ircv3/ircv3-specifications/issues/103 which could help *Sasl to do this too.

By the way, could *sasl do that even now? https://github.com/atheme/atheme/pull/415#issuecomment-66869694 hints something like. (but this would break standards :()

> To be fair, *NickServ does have the notable advantage of sometimes working if you somehow connect to a split IRC server and NickServ comes online after the connection has taken place. This is probably the strongest argument in favor of keeping *NickServ . This is an advantage that *Perform and *Sasl don't have. *Cert has this too, but it's not so widely supported, but it doesn't look so much difficult from SASL EDSCA-CHALLENGEAUTH (sorry for misspelled name, I don't ever remember it). There is also https://github.com/ircv3/ircv3-specifications/issues/103 which could help *Sasl to do this too. By the way, could *sasl do that even now? https://github.com/atheme/atheme/pull/415#issuecomment-66869694 hints something like. (but this would break standards :() <!-- github-comment-id:68108460 -->
Author
Owner

By the way, could *sasl do that even now? atheme/atheme#415 (comment) hints something like. (but this would break standards :()

Possibly. I'd have to dig deeper into the code to be sure. If not, I can't imagine it'd be that hard to implement.

This is a nicer approach but there's not even a draft standard yet, and of course no IRC services software and/or IRCds support this yet. The question is what to do in the meantime.

Ben

> By the way, could *sasl do that even now? atheme/atheme#415 (comment) hints something like. (but this would break standards :() Possibly. I'd have to dig deeper into the code to be sure. If not, I can't imagine it'd be that hard to implement. This is a nicer approach but there's not even a draft standard yet, and of course no IRC services software and/or IRCds support this yet. The question is what to do in the meantime. Ben <!-- github-comment-id:68110387 -->
Author
Owner

Is the Q module still maintained? #554 is something I reported a long time ago and still seems to be in znc 1.4.

Apparently, it's not. @ahf ping?
Dropping Q module (aka making it external, and letting ahf to maintain it outside of ZNC repo) would solve this issue, and will help with #1494

> Is the Q module still maintained? #554 is something I reported a long time ago and still seems to be in znc 1.4. Apparently, it's not. @ahf ping? Dropping Q module (aka making it external, and letting ahf to maintain it outside of ZNC repo) would solve this issue, and will help with #1494 <!-- github-comment-id:365326675 -->
Author
Owner

I have completely overlooked #554. I'm not using the Q module anymore and I'm hardly active on Quakenet either.

I could take a look at #554 during the upcoming week. I don't think I'm the right person to take the decision if the Q module should be maintained externally, internally, or dropped -- I don't know how many znc users that are using it. If #554 is the "only" issue right now I don't see why it would make sense to remove it though. It's not like the Quakenet development community releases early and often! :-)

I have completely overlooked #554. I'm not using the Q module anymore and I'm hardly active on Quakenet either. I could take a look at #554 during the upcoming week. I don't think I'm the right person to take the decision if the Q module should be maintained externally, internally, or dropped -- I don't know how many znc users that are using it. If #554 is the "only" issue right now I don't see why it would make sense to remove it though. It's not like the Quakenet development community releases early and often! :-) <!-- github-comment-id:366560181 -->
Author
Owner

Or roll the Q module into #1496? As long as auth modules are being consolidated, why not?

Or roll the Q module into #1496? As long as auth modules are being consolidated, why not? <!-- github-comment-id:366560962 -->
Author
Owner

why not?

Because Q is useful on a single network, while sasl and nickserv are useful much more widely. But every single piece of code is an additional burden for maintenance.

> why not? Because Q is useful on a single network, while sasl and nickserv are useful much more widely. But every single piece of code is an additional burden for maintenance. <!-- github-comment-id:366564515 -->
Author
Owner

I also don't think it's a good idea to merge it into a module that tries to standardise the authentication schemes used on the more up-to-date networks. To put it bluntly, I personally think the Quakenet authentication scheme should be avoided. I hope nobody else is using it.

I also don't think it's a good idea to merge it into a module that tries to standardise the authentication schemes used on the more up-to-date networks. To put it bluntly, I personally think the Quakenet authentication scheme should be avoided. I hope nobody else is using it. <!-- github-comment-id:366571241 -->
Author
Owner

I don't know how many znc users that are using it.

Without ZNC sending us its usage stats, it's really hard to tell.

I don't think I'm the right person to take the decision if the Q module should be maintained externally, internally, or dropped

I didn't drop it before because you wanted to look after this module and had a strong opinion on having it in ZNC repo. I'll drop it after 1.7 then, which is exactly the same as making it external - it's only a matter of updating URL to the "fresh" version here

> I don't know how many znc users that are using it. Without ZNC sending us its usage stats, it's really hard to tell. > I don't think I'm the right person to take the decision if the Q module should be maintained externally, internally, or dropped I didn't drop it before because you wanted to look after this module and had a strong opinion on having it in ZNC repo. I'll drop it after 1.7 then, which is exactly the same as making it external - it's only a matter of updating URL to the "fresh" version [here](https://wiki.znc.in/Q) <!-- github-comment-id:366621757 -->
Author
Owner

Cool, thank you! Sounds good to me.

Cool, thank you! Sounds good to me. <!-- github-comment-id:366734837 -->
Author
Owner

I haven't noticed this is still open after #1653

I haven't noticed this is still open after #1653 <!-- github-comment-id:605631890 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/znc#436