Some modules should only be allowed to be enabled on one level #571

Open
opened 2026-10-05 04:30:33 +02:00 by adam · 8 comments
Owner

Some modules can result in unexpected behavior when enabled on different levels at the same time.

(Ref: #583)

Some modules can result in unexpected behavior when enabled on different levels at the same time. (Ref: #583) <!-- github-sync-id:105907400 -->
Author
Owner

Hate to be evil about it, but "some modules" is vague. The example issue (#583) cites webadmin, but are there other such conflicts? And if so, which of the modules falls into such categories of conflicting?

Hate to be evil about it, but "some modules" is vague. The example issue (#583) cites webadmin, but are there other such conflicts? And if so, which of the modules falls into such categories of conflicting? <!-- github-comment-id:139397960 -->
Author
Owner

At least *watch and *autoattach come to mind as some that cause unexpected results on multiple levels. And I think that issue also mentioned *webadmin.

And example on module that should be loadable on multiple levels would be *perform for setting umodes on all networks and then maybe identifying to idlerpg on only one network (https://github.com/znc/znc/issues/1039).

At least *watch and *autoattach come to mind as some that cause unexpected results on multiple levels. And I think that issue also mentioned *webadmin. And example on module that should be loadable on multiple levels would be *perform for setting umodes on all networks and then maybe identifying to idlerpg on only one network (https://github.com/znc/znc/issues/1039). <!-- github-comment-id:139453148 -->
Author
Owner

Reading lists of modules, from global modules some modules would be:

  • block_motd
    • Currently it's entirely useless on multiple levels and brings new idea, if higher level module is loaded, should the lower level module be unloaded?
  • chansaver
    • same question
  • log
    • also same question
  • privmsg
    • external module
  • webadmin
    • as said before

User modules:

  • alias
    • It's entirely possible user might want to have different aliases on different networks though
  • autoattach
    • especially confusing
  • autoreply
    • one might want to have different autoreplies on different networks, but I would see this like awaynick and worth removing and loading simple_away instead.
  • block_motd
    • mentioned earlier as global module
  • buffextras
    • also confusing, load it on user and network level and you have all events twice.
  • cert
    • It would even be encouraged to use different certificates on different networks.
  • log
    • also wondered before
  • perform
    • as said before, there are legitimate reasons for it in multiple networks.
  • raw
    • I am unsure about this, would loading it as user module spam all networks about traffic of all networks?
  • stripcontrols
    • I would put this to same group, should higher level module unload lower level module.
  • webadmin
    • which has been wondered about a lot.

For clearity: with higher level module I mean global > user > network. I am also not sure if my strikethroughs appear in emails so this might be best to be viewed at GitHub.

Reading lists of modules, from global modules some modules would be: - block_motd - Currently it's entirely useless on multiple levels and brings new idea, if higher level module is loaded, should the lower level module be unloaded? - chansaver - same question - log - also same question - privmsg - _external module_ - webadmin - _as said before_ User modules: - ~~alias~~ - It's entirely possible user might want to have different aliases on different networks though - autoattach - especially confusing - ~~autoreply~~ - one might want to have different autoreplies on different networks, but I would see this like _awaynick_ and worth removing and loading simple_away instead. - block_motd - mentioned earlier as global module - buffextras - also confusing, load it on user and network level and you have all events twice. - ~~cert~~ - It would even be encouraged to use different certificates on different networks. - log - also wondered before - ~~perform~~ - _as said before, there are legitimate reasons for it in multiple networks._ - raw - I am unsure about this, would loading it as user module spam all networks about traffic of all networks? - stripcontrols - I would put this to same group, should higher level module unload lower level module. - webadmin - _which has been wondered about a lot._ _For clearity: with higher level module I mean `global > user > network`. I am also not sure if my strikethroughs appear in emails so this might be best to be viewed at GitHub._ <!-- github-comment-id:139458757 -->
Author
Owner

Trying to be more clear and including my opinion on this issue:

Global module ⬇️ should unload user (& network) module:

  • block_motd
  • chansaver
  • log
  • (privmsg)
  • webadmin

User module ⬇️ should unload network module:

Trying to be more clear and including my opinion on this issue: Global module :arrow_down: should unload user (& network) module: - block_motd - chansaver - log - (privmsg) - webadmin User module :arrow_down: should unload network module: - autoattach (https://github.com/znc/znc/issues/713) - block_motd - buffextras - log - raw - stripcontrols <!-- github-comment-id:139459267 -->
Author
Owner

For the most part, those are the ones I've had issues with. The DCC modules have difficulties too when I was testing.

EDIT: I think the solution to this would be to have the lower level enabled modules take priority over the higher level enabled modules. This should work in most cases.
Ex: You could have autoreply enabled under the user and network at the same time. The network config will override the user config but for only that network.
The only issue I see is things like webadmin being loaded on multiple levels.

For the most part, those are the ones I've had issues with. The DCC modules have difficulties too when I was testing. EDIT: I think the solution to this would be to have the lower level enabled modules take priority over the higher level enabled modules. This should work in most cases. Ex: You could have autoreply enabled under the user and network at the same time. The network config will override the user config but for only that network. The only issue I see is things like webadmin being loaded on multiple levels. <!-- github-comment-id:139799040 -->
Author
Owner

And buffextras too. If you load it as network and user modules, you will get 2 msgs for 1 event happening

And buffextras too. If you load it as network and user modules, you will get 2 msgs for 1 event happening <!-- github-comment-id:142588568 -->
Author
Owner

@necessary129 Just tested with 1.6.1 and had the same effects.

@necessary129 Just tested with 1.6.1 and had the same effects. <!-- github-comment-id:142596515 -->
Author
Owner

Just confirming. This still happens in 1.6.5. If you have buffextras enabled both on the user and on a network you get the messages twice from the module.

@ZacharyDuBois solution would be a good one if it's possible to implement.

Just confirming. This still happens in 1.6.5. If you have buffextras enabled both on the user and on a network you get the messages twice from the module. @ZacharyDuBois solution would be a good one if it's possible to implement. <!-- github-comment-id:286909102 -->
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/znc#571