To create new wiki account, please join us on #znc at freenode and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.

Difference between revisions of "Modules"

From ZNC
Jump to: navigation, search
m (Developers: Include link to the modtcl page.)
(Remove recommendations for external modules as the list is mostly dated and a pain to maintain anyways)
 
(16 intermediate revisions by 10 users not shown)
Line 2: Line 2:
  
 
== Overview ==
 
== Overview ==
Modules are most commonly interfaced with by messaging a special user on irc. For example, to view the highlight keywords in your watch list, you'd send ''/msg *watch list''. When znc sees that the nick you're msging starts with an asterisk, it doesn't forward the message to the ircd but instead sends it to the proper module for processing. In this case, the watch module will get the message and reply to you with a listing of your keywords. This makes for a very convenient and standard way of configuring or otherwise communicating with your loaded modules as well as a common and standard way for your loaded modules to display status or other information back to you. Notice that we said "loaded modules" which brings up the point that you first have to ''/znc loadmod watch'' before you can interface with the watch module. Most modules will reply to ''/msg *module help'' with a listing of commands.
+
'''Modules''' are used to extend and modify the way ZNC functions. Users interact with modules most commonly by messaging a special user on IRC. For example, to view the highlight keywords in your watch list, you'd send ''/msg *watch list''. When ZNC sees that the nick you're messaging starts with an asterisk, it doesn't forward the message to the IRCd/server but instead sends it to the proper module for processing. In this case, the watch module will get the message and reply to you with a listing of your keywords. This makes for a very convenient and standard way of configuring or otherwise communicating with your loaded modules, as well as a common and standard way for your loaded modules to display status or other information. Notice that this is for loaded modules. You must load a given module, for example ''/znc loadmod watch'', before you can interface with the watch module. Most modules will reply to ''/msg *module help'' with a listing of available commands.
  
ZNC modules are loaded either globally or on a per-user basis. Each module itself defines whether it is global or user specific. User level modules can do things ranging from [[crypt|manipulating the incoming/outgoing messages]] to implementing a full blown [[twitter]] client. They can also do more traditional irc tasks such as [[autoop|challenge based auto-op]], [[simple_away|setting you away]], or [[log|logging to disk]]. Each user gets to load and configure their own set of modules to customize their experience to suit their preference.
+
ZNC modules are loaded either '''globally''', '''per-network''', or on a '''per-user''' basis. Each module defines for itself whether it is available to load as global, network-specific and/or user-specific. User level and network modules can do things ranging from [[crypt|manipulating the incoming/outgoing messages]] to [[twitter|implementing a full blown Twitter client]]. They can also do more traditional IRC tasks such as [[autoop|challenge based auto-op]], [[simple_away|setting you away]], or [[log|logging to disk]]. Each user gets to load and configure their own set of modules to customize their experience to suit their preference.
  
Global modules are loadable by admins and provide functionality or change behavior for all users. For example, the [[partyline]] module has to be global since it provides functionality for all users on a given znc instance to be able to communicate with each other from within znc itself. Global modules can do everything that user level modules can do as well as a few extras. They can replace ZNC's [[imapauth|authentication system]], modify the config writing process, deal with CAP, etc.
+
Global modules are loadable by admins and provide functionality or change behavior for all users. For example, the [[partyline]] module has to be global since it provides functionality for all users on a given ZNC instance to be able to communicate with each other from within ZNC itself. Global modules can do everything that user-level modules can do, as well as a few extras. They can replace ZNC's [[imapauth|authentication system]], modify the config-writing process, deal with CAP, etc.
  
Both global and user level modules can also hook into znc's [[WebMods|web interface]] and provide web content. The most common web module is [[webadmin]] which allows admins to add/remove users and allows users to configure their settings from a browser.  The web hooks are a fairly new feature available to znc module authors, so stay tuned for some amazing features to come.
+
The modules can also hook into ZNC's [[WebMods|web interface]] and provide web content. The most common web module is [[webadmin]] which allows admins to add/remove users and allows users to configure their settings from a browser.
  
 
== Developers ==
 
== Developers ==
ZNC modules are written in C++ natively. There are also a couple of modules that embed an interpreter to allow you to load perl, python or tcl modules. To learn more about creation of modules you should read [[modperl|Perl Modules]], [[modpython|Python Modules]], [[modtcl|TCL Modules]], or [[Writing modules|C++ Modules]]. Feel free to create wikipages about modules you created, but don't forget to add a download link, contact information and use the same layout as the rest of the modules. Contributions are always much appreciated.
+
ZNC modules are written in C++ natively. There are also a couple of modules that embed an interpreter to allow you to load Perl, Python, or Tcl modules. To learn more about creation of modules you should read [[modperl|Perl Modules]], [[modpython|Python Modules]], [[modtcl|TCL Modules]], or [[Writing modules|C++ Modules]].
 +
 
 +
Feel free to create wikipages about modules you have created, but don't forget to add a download link, contact information, and use the same layout as the rest of the modules. Contributions are always much appreciated.
  
 
== Module List ==
 
== Module List ==
 
=== Global Modules ===
 
=== Global Modules ===
; [[adminlog]] : Log user connects and disconnects and failed logins to file or syslog.
+
; [[adminlog]] : Log user connects, disconnects, and failed logins to a file and/or to syslog.
; [[blockuser]] : Blocks certain users from using ZNC saying their account was disabled.
+
; [[blockuser]] : Blocks certain users from using ZNC, saying their account was disabled.
; [[certauth]] : This module let's users to log in via SSL client keys.
+
; [[certauth]] : This module lets users to log in via SSL client keys.
; [[connect_throttle]] : Limit the number of login attempts a user can make per time
+
; [[cyrusauth]] : This module is intended for admins who run a shell/web/email/etc server and want to provide ZNC access to their existing users.
; [[fail2ban]] : Block IPs for some time after a failed login.
+
; [[fail2ban]] : Block IPs for some time after a failed login.
; [[imapauth]] : Allow users to authenticate via IMAP.
+
; [[identfile]] : Posts the ident of a user to a file when they are trying to connect.
; [[lastseen]] : Logs when a user last logged in to ZNC.
+
; [[imapauth]] : Allow users to authenticate via IMAP.
; [[modperl]] : Loads perl scripts as ZNC modules.
+
; [[lastseen]] : Logs when a user last logged in to ZNC.
; [[modpython]] : Modpython allows you to use modules written on python 3.
+
; [[modperl]] : Loads Perl scripts as ZNC modules.
; [[modtcl]] : Allows you to run tcl scripts in ZNC, including some eggdrop.
+
; [[modpython]] : Allows you to use modules written on Python.
; [[partyline]] : Allows ZNC users to join internal channels and query other ZNC users on the same ZNC.
+
; [[notify_connect]] : Sends a notice to all admins when a user logs in or out of ZNC.
; [[saslauth]] : Allow users to authenticate via SASL.
+
; [[partyline]] : Allows ZNC users to join internal channels and query other ZNC users on the same ZNC.
; [[webadmin]] : Allows you to add/remove/edit users and settings on the fly via a web browser.
+
; [[cyrusauth|saslauth]] : (Now [[cyrusauth]]) Allows users to authenticate via SASL.
; [[notify_connect]] : Sends a notice to all admins when a user logs in or out.
+
; [[webadmin]] : Allows you to add/remove/edit users and settings on the fly via a web browser.
  
 
=== User Modules ===
 
=== User Modules ===
; [[admin]] : Allows you to add/remove/edit users and settings on the fly via IRC messages.
+
; [[controlpanel|admin]] : (Now [[controlpanel]]) Allows you to add/remove/edit users and settings on the fly via IRC messages.
; [[autoattach]] : Autoattach watches your detached channels and reattaches you automatically when there is activity in a channel you added to your autoattach list. Read the page about detaching to learn about detached channels.
+
; [[autoattach]] : Watches your [[Detaching|detached]] channels and reattaches you automatically when there is specified activity in a channel you added to your autoattach list.
; [[autocycle]] : Cycles a channel when you are the only one in there and you don't have op.
+
; [[autoreply]] : Gives a automatic reply if someone messages you while you are away.
; [[autoop]] : Auto op the good guys.
+
; [[block_motd]] : Blocks the server's Message of the Day.
; [[autoreply]] : Gives a automatic reply if someone messages you if you are away.
+
; [[bouncedcc]] : Bounces DCC transfers through the znc server instead of sending them directly to the user.
; [[autovoice]]: Autovoices everyone who joins some channel.
+
; [[buffextras]] : Add nick changes, joins, parts, topic changes etc. to your playback buffer.
; [[awaynick]] : Change your nick while you are away.
+
; [[chansaver]] : Saves channels to config when user joins and parts.
; [[awaystore]] : When you are set away or detached, this module will save all private messages for you. The messages can be read until you delete them. Messages are stored in an encrypted file on your shell (based on the <password> you set, if set). That way everyone who has access to this shell still cannot read your messages. This module will also set you away when you are idle some time (see timer/settimer).
+
; [[charset]] : Normalizes (i.e. converts) character encodings.
; [[block_motd]] : This module blocks the server's Message of the Day.
+
; [[clearbufferonmsg]] : This module attempts to bridge the gap between being inundated with old buffer if you have KeepBuffer=true; and possibly missing messages when you ping out, if you have KeepBuffer=false.
; [[bouncedcc]] : The bouncedcc module bounces dcc transfers through the znc server instead of sending them directly to the user.
+
; [[clientnotify]] : Notify about new incoming connections to your user.
; [[buffextras]] : Add nick changes, joins, parts, topic changes etc. to your playback buffer.
+
; [[controlpanel]] : Allows you to add/remove/edit users and settings on the fly via IRC messages.
; [[cert]] : This module lets users use their own SSL certificate to connect to a server
+
; [[ctcpflood]] : This module tries to block CTCP floods.
; [[chansaver]] : Keeping config up to date when user joins and parts.
+
; [[dcc]] : This module allows you to transfer files to and from ZNC
; [[charset]] : Normalizes (i.e. converts) character encodings.
+
; [[disconkick]] : This module will kick your client from all channels if ZNC disconnects from server.
; [[clearbufferonmsg]] : This module attempts to bridge the gap between being inundated with old buffer if you have KeepBuffer=true; and possibly missing messages when you ping out, if you have KeepBuffer=false.
+
; [[flooddetach]] : This module detaches you from channels which are flooded.
; [[clientnotify]] : Notify about new incoming connections to your user.
+
; [[listsockets]] : This module displays a list of all open sockets in ZNC.
; [[controlpanel]] : This module allows you to add/remove/edit users and settings on the fly via IRC messages.
+
; [[log]] : Log chat activity to file.
; [[crypt]] : Encryption for channel/private messages.
+
; [[missingmotd]] : This user module will send 422 to clients when they login.
; [[ctcpflood]] : This module tries to block ctcp floods.
+
; [[notes]] : Keep and replay notes. This is an example of [[WebMods]].
; [[cyrusauth]] : This module is intended for admins who run a shell/web/email/etc server and want to provide ZNC access to their existing users.
+
; [[sample]] : This is an example module to help with [[writing modules]] to do whatever you want.
; [[dcc]] : This module allows you to transfer files to and from ZNC
+
; [[send_raw]] : Allows you to send raw traffic to IRC from other users.
; [[disconkick]] : This module will kick your client from all channels where you are, in case if ZNC disconnects from server.
+
; [[shell]] : Access your Unix shell via query right inside of your IRC client.
; [[flooddetach]] : This module detaches you from channels which are flooded.
+
 
; [[identfile]] : The identfile module places the ident of a user to a file when they are trying to connect.
+
=== Network Modules ===
; [[keepnick]] : Tries to get you your primary nick.
+
; [[autocycle]] : Rejoin a channel when you are the only one there (to gain operator status).
; [[kickrejoin]] : Implements auto-rejoin-on-kick.
+
; [[autoop]] : Automatically give operator status to the good guys.
; [[listsockets]] : This module displays a list of all open sockets in ZNC.  
+
; [[modtcl]] : Allows you to run Tcl scripts in ZNC.
; [[log]] : Log conversations to file.
+
; [[autovoice]] : Automatically give voice status to everyone who joins some channel.
; [[missingmotd]] : This user module will send 422 to clients when they login.
+
; [[awaynick]] : Change your nick while you are away.
; [[nickserv]] : Auths you with NickServ.
+
; [[awaystore]] : When you are set away or detached, this module will save all private messages for you. The messages can be read until you delete them. This module will also set you away when you are idle some time.
; [[perform]] : Performs commands on connect.
+
; [[cert]] : This module lets users use their own SSL certificate to connect to a server.
; [[q]] : Auths you with Q (and a little more).
+
; [[crypt]] : Encryption for channel/private messages.
; [[raw]] : View all of the raw traffic.
+
; [[keepnick]] : Tries to get and keep your primary nick if it is taken.
; [[route_replies]] : Routes back answers to the right client when connected with multiple clients.
+
; [[kickrejoin]] : Implements auto-rejoin-on-kick.
; [[sample]] : This is an example for [[writing modules]] to do whatever you want.
+
; [[modules_online]] : Fakes online status of ZNC modules to fix some clients.
; [[sasl]] : Allows you to authenticate to an IRC network via SASL
+
; [[nickserv]] : Auths you with NickServ.
; [[savebuff]] : Saves your channel buffers into an encrypted file so they can survive restarts and reboots.
+
; [[perform]] : Performs commands on connect.
; [[schat]] : SSL (encrypted) DCC chats.
+
; [[q]] : Auths you with Q (and a little more).
; [[send_raw]] : Allows you to send raw traffic to IRC from other users.
+
; [[raw]] : View all of the raw traffic.
; [[shell]] : Have your unix shell in a query window right inside of your IRC client.
+
; [[route_replies]] : Routes back answers to the right client when connected with multiple clients.
; [[simple_away]]: Automatically set you away on IRC when disconnected from the bouncer.
+
; [[sasl]] : Allows you to authenticate to an IRC network via SASL
; [[stickychan]] : Keeps you sticked to specific channels.
+
; [[savebuff]] : Saves your channel buffers into an encrypted file so they can survive restarts and reboots.
; [[watch]] : Monitor activity for specific text patterns from specific users and have the text sent to a special query window.
+
; [[schat]] : SSL (encrypted) DCC chats.
 +
; [[simple_away]] : Automatically set you away on IRC when disconnected from the bouncer.
 +
; [[stickychan]] : Keeps you in specified channels.
 +
; [[watch]] : Monitor activity for specific text patterns from specific users and have the text sent to a special query window.
  
 
=== More Modules ===
 
=== More Modules ===
Line 86: Line 91:
  
 
=== (Un)Loading Modules ===
 
=== (Un)Loading Modules ===
Both global and user modules can be (un)loaded from [[webadmin]] or via the *status query window, like:
+
Global, user, and network modules can be (un)loaded from [[webadmin]] or via the <tt>*status</tt> query window, like:
  
  /msg *status loadmod <module> <parameters>
+
  /msg *status LoadMod [--type=global|user|network] <module> <parameters>
  /msg *status unloadmod <module>
+
  /msg *status UnloadMod [--type=global|user|network] <module>
  
 
* <code>*</code> is the StatusPrefix set in your [[configuration]]. Usually it's just an asterisk ("*").
 
* <code>*</code> is the StatusPrefix set in your [[configuration]]. Usually it's just an asterisk ("*").
* <code><module></code> is based on the modules file name excluding ".so".
+
* <code>[--type=global|user|network]</code> optionally specifies whether to (un)load the module as a global, user, or network module. Not all modules can be loaded at all levels; see individual [[:Category:Modules|Module documentation]] to find out where it may be loaded.
* <code><parameters></code> are specific for each module and not required.
+
* <code><module></code> is based on the modules file name, excluding the ".so" extension.
 +
* <code><parameters></code> are specific for each module and not required: You can provide parameters when loading the module, or you can set up the module after loading it.
  
Please keep in mind, that a user is not able to load a module, if the directive "DenyLoadMod" is set to true.
+
So, to load the '''[[log]]''' module at the '''global''' level (as opposed to user or network) and remove all color/formatting control codes with the '''<code>-sanitize</code>''' parameter, you would type:
Trying to load a module will fail with "Unable to load [<module>] Access Denied.".
 
  
If some module blocks startup of ZNC and therefore you can't unload the module using [[webadmin]], you can edit [[configuration|znc.conf]] and remove the corresponding <code>LoadModule</code> line.
+
/msg *status LoadMod --type=global log -sanitize
 +
 
 +
For older versions of ZNC, you won't have the option to specify <code>[--type=global|user|network]</code>. In that case, just use:
 +
/msg *status LoadMod <module> <parameters>
 +
/msg *status UnloadMod <module>
 +
 
 +
Please keep in mind that a user is not able to load a module if the directive "DenyLoadMod" is set to true. Trying to load a module will fail with "Unable to load [<module>] Access Denied.".
 +
 
 +
If a module prevents ZNC from starting up and therefore you can't unload the module using [[webadmin]], you can edit [[configuration|znc.conf]] and remove the corresponding <code>LoadModule</code> line.
  
 
== Using modules ==
 
== Using modules ==
 
It is recommended to read the module's wikipage if you want to find out how a module works. Alternatively the following command can be used to get a command list:
 
It is recommended to read the module's wikipage if you want to find out how a module works. Alternatively the following command can be used to get a command list:
 
  /msg *<module> help
 
  /msg *<module> help
* * is the StatusPrefix set in your config file.
+
* <code>*</code> is the StatusPrefix set in your [[configuration]]. Usually it's just an asterisk ("*").
  
 
== External modules ==
 
== External modules ==
; [[droproot]] : Allows ZNC to drop root privileges on systems that implement POSIX setuid/setgid.
+
Please see [[:Category:External Modules]] for a comprehensive list.
; [[motdfile]] : Reads a MOTD from a file and displays it to users when they login.
 
; [[notify]] : Notifies all ZNC users when a client attaches/detaches.
 
; [[amsgfilter]] : Filters amsgs from specified channels.
 
; [[antiidle]] : Hides your idle time.
 
; [[autoattach]] : Reattaches you to channels on activity.
 
; [[colloquy]] : Push private messages and highlights to your iPhone/iPod Touch via Colloquy Mobile.
 
; [[email]] : Monitors email activity on local disk /var/mail/user.
 
; [[fish]] : FiSH encryption for channel/private messages.
 
; [[fixfreenode]] : This module blocks some freenode-specific feature which results in plus (+) and minus (-) signs being displayed in front of every message from a client.
 
; [[fakeonline]] : Fakes online status of ZNC *-users, to fix some clients.
 
; [[push]] : Send private messages and highlights to your mobile devices using various push notification services.  Includes a highly configurable set of conditions to control how and when notifications get sent.
 
; [[twitter]] : Implements a Twitter client. It can post new tweets and monitor searches, users, timeline and @mentions.
 
 
 
See this page for a list of external modules
 
[[:Category:External Modules]]
 
 
 
 
 
  
 
[[Category:Modules]]
 
[[Category:Modules]]

Latest revision as of 18:13, 11 September 2017

Overview[edit]

Modules are used to extend and modify the way ZNC functions. Users interact with modules most commonly by messaging a special user on IRC. For example, to view the highlight keywords in your watch list, you'd send /msg *watch list. When ZNC sees that the nick you're messaging starts with an asterisk, it doesn't forward the message to the IRCd/server but instead sends it to the proper module for processing. In this case, the watch module will get the message and reply to you with a listing of your keywords. This makes for a very convenient and standard way of configuring or otherwise communicating with your loaded modules, as well as a common and standard way for your loaded modules to display status or other information. Notice that this is for loaded modules. You must load a given module, for example /znc loadmod watch, before you can interface with the watch module. Most modules will reply to /msg *module help with a listing of available commands.

ZNC modules are loaded either globally, per-network, or on a per-user basis. Each module defines for itself whether it is available to load as global, network-specific and/or user-specific. User level and network modules can do things ranging from manipulating the incoming/outgoing messages to implementing a full blown Twitter client. They can also do more traditional IRC tasks such as challenge based auto-op, setting you away, or logging to disk. Each user gets to load and configure their own set of modules to customize their experience to suit their preference.

Global modules are loadable by admins and provide functionality or change behavior for all users. For example, the partyline module has to be global since it provides functionality for all users on a given ZNC instance to be able to communicate with each other from within ZNC itself. Global modules can do everything that user-level modules can do, as well as a few extras. They can replace ZNC's authentication system, modify the config-writing process, deal with CAP, etc.

The modules can also hook into ZNC's web interface and provide web content. The most common web module is webadmin which allows admins to add/remove users and allows users to configure their settings from a browser.

Developers[edit]

ZNC modules are written in C++ natively. There are also a couple of modules that embed an interpreter to allow you to load Perl, Python, or Tcl modules. To learn more about creation of modules you should read Perl Modules, Python Modules, TCL Modules, or C++ Modules.

Feel free to create wikipages about modules you have created, but don't forget to add a download link, contact information, and use the same layout as the rest of the modules. Contributions are always much appreciated.

Module List[edit]

Global Modules[edit]

adminlog
Log user connects, disconnects, and failed logins to a file and/or to syslog.
blockuser
Blocks certain users from using ZNC, saying their account was disabled.
certauth
This module lets users to log in via SSL client keys.
cyrusauth
This module is intended for admins who run a shell/web/email/etc server and want to provide ZNC access to their existing users.
fail2ban
Block IPs for some time after a failed login.
identfile
Posts the ident of a user to a file when they are trying to connect.
imapauth
Allow users to authenticate via IMAP.
lastseen
Logs when a user last logged in to ZNC.
modperl
Loads Perl scripts as ZNC modules.
modpython
Allows you to use modules written on Python.
notify_connect
Sends a notice to all admins when a user logs in or out of ZNC.
partyline
Allows ZNC users to join internal channels and query other ZNC users on the same ZNC.
saslauth
(Now cyrusauth) Allows users to authenticate via SASL.
webadmin
Allows you to add/remove/edit users and settings on the fly via a web browser.

User Modules[edit]

admin
(Now controlpanel) Allows you to add/remove/edit users and settings on the fly via IRC messages.
autoattach
Watches your detached channels and reattaches you automatically when there is specified activity in a channel you added to your autoattach list.
autoreply
Gives a automatic reply if someone messages you while you are away.
block_motd
Blocks the server's Message of the Day.
bouncedcc
Bounces DCC transfers through the znc server instead of sending them directly to the user.
buffextras
Add nick changes, joins, parts, topic changes etc. to your playback buffer.
chansaver
Saves channels to config when user joins and parts.
charset
Normalizes (i.e. converts) character encodings.
clearbufferonmsg
This module attempts to bridge the gap between being inundated with old buffer if you have KeepBuffer=true; and possibly missing messages when you ping out, if you have KeepBuffer=false.
clientnotify
Notify about new incoming connections to your user.
controlpanel
Allows you to add/remove/edit users and settings on the fly via IRC messages.
ctcpflood
This module tries to block CTCP floods.
dcc
This module allows you to transfer files to and from ZNC
disconkick
This module will kick your client from all channels if ZNC disconnects from server.
flooddetach
This module detaches you from channels which are flooded.
listsockets
This module displays a list of all open sockets in ZNC.
log
Log chat activity to file.
missingmotd
This user module will send 422 to clients when they login.
notes
Keep and replay notes. This is an example of WebMods.
sample
This is an example module to help with writing modules to do whatever you want.
send_raw
Allows you to send raw traffic to IRC from other users.
shell
Access your Unix shell via query right inside of your IRC client.

Network Modules[edit]

autocycle
Rejoin a channel when you are the only one there (to gain operator status).
autoop
Automatically give operator status to the good guys.
modtcl
Allows you to run Tcl scripts in ZNC.
autovoice
Automatically give voice status to everyone who joins some channel.
awaynick
Change your nick while you are away.
awaystore
When you are set away or detached, this module will save all private messages for you. The messages can be read until you delete them. This module will also set you away when you are idle some time.
cert
This module lets users use their own SSL certificate to connect to a server.
crypt
Encryption for channel/private messages.
keepnick
Tries to get and keep your primary nick if it is taken.
kickrejoin
Implements auto-rejoin-on-kick.
modules_online
Fakes online status of ZNC modules to fix some clients.
nickserv
Auths you with NickServ.
perform
Performs commands on connect.
q
Auths you with Q (and a little more).
raw
View all of the raw traffic.
route_replies
Routes back answers to the right client when connected with multiple clients.
sasl
Allows you to authenticate to an IRC network via SASL
savebuff
Saves your channel buffers into an encrypted file so they can survive restarts and reboots.
schat
SSL (encrypted) DCC chats.
simple_away
Automatically set you away on IRC when disconnected from the bouncer.
stickychan
Keeps you in specified channels.
watch
Monitor activity for specific text patterns from specific users and have the text sent to a special query window.

More Modules[edit]

For more modules, see Category:Modules.

Managing Modules[edit]

Modules can be added or removed easily. Modules can be stored in ~/.znc/modules and /usr/local/lib/znc by default. ZNC installs its modules to that second directory, which in fact is ${prefix}/lib/znc, but this can be changed with ./configure --module-prefix=DIR before compiling.

ZNC will first look in the local sub-directory modules when searching for modules. Only files that end with ".so" will be seen as a module. To remove modules you can simply delete them from the folder. No other configuration changes or restarts are necessary. To remove, but also keep a module for later use you can also change the name, like: mv sample.so sample.so_.

To compile a new module you must first save the source as a ".cpp" file. Compiling modules describes the process in detail.

(Un)Loading Modules[edit]

Global, user, and network modules can be (un)loaded from webadmin or via the *status query window, like:

/msg *status LoadMod [--type=global|user|network] <module> <parameters>
/msg *status UnloadMod [--type=global|user|network] <module>
  • * is the StatusPrefix set in your configuration. Usually it's just an asterisk ("*").
  • [--type=global|user|network] optionally specifies whether to (un)load the module as a global, user, or network module. Not all modules can be loaded at all levels; see individual Module documentation to find out where it may be loaded.
  • <module> is based on the modules file name, excluding the ".so" extension.
  • <parameters> are specific for each module and not required: You can provide parameters when loading the module, or you can set up the module after loading it.

So, to load the log module at the global level (as opposed to user or network) and remove all color/formatting control codes with the -sanitize parameter, you would type:

/msg *status LoadMod --type=global log -sanitize

For older versions of ZNC, you won't have the option to specify [--type=global|user|network]. In that case, just use:

/msg *status LoadMod <module> <parameters>
/msg *status UnloadMod <module>

Please keep in mind that a user is not able to load a module if the directive "DenyLoadMod" is set to true. Trying to load a module will fail with "Unable to load [<module>] Access Denied.".

If a module prevents ZNC from starting up and therefore you can't unload the module using webadmin, you can edit znc.conf and remove the corresponding LoadModule line.

Using modules[edit]

It is recommended to read the module's wikipage if you want to find out how a module works. Alternatively the following command can be used to get a command list:

/msg *<module> help
  • * is the StatusPrefix set in your configuration. Usually it's just an asterisk ("*").

External modules[edit]

Please see Category:External Modules for a comprehensive list.