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

Modtcl: Difference between revisions

From ZNC
Jump to navigation Jump to search
modtcl.tcl and binds.tcl: no znc.conf change
KindOne (talk | contribs)
m Add WARNING about the RCE.
Line 3: Line 3:


[[modtcl]] allows you to run tcl scripts in ZNC.
[[modtcl]] allows you to run tcl scripts in ZNC.
'''WARNING!!!''': This module has a RCE exploit that has been in ZNC since at least version 0.094 (2009) - 1.9.0 (2024). The RCE has been fixed in version 1.9.1. If you are compiling from source either unload the module or update to 1.9.1. If you are using a OS package install with a older versions of ZNC you need to verify if your distro has backported the fix and install a newer version of the module with your package manager.


'''No, your eggdrop scripts will not work'''. Only few very basic ones will, if you use modtcl.tcl like explained below.
'''No, your eggdrop scripts will not work'''. Only few very basic ones will, if you use modtcl.tcl like explained below.

Revision as of 14:51, 18 August 2024


modtcl allows you to run tcl scripts in ZNC.

WARNING!!!: This module has a RCE exploit that has been in ZNC since at least version 0.094 (2009) - 1.9.0 (2024). The RCE has been fixed in version 1.9.1. If you are compiling from source either unload the module or update to 1.9.1. If you are using a OS package install with a older versions of ZNC you need to verify if your distro has backported the fix and install a newer version of the module with your package manager.

No, your eggdrop scripts will not work. Only few very basic ones will, if you use modtcl.tcl like explained below.

Compiling

First, you need to use ./configure with option --enable-tcl.

Usage

Arguments

This network module takes one optional arguments. The argument is the absolute path to a tcl script file.

Read loading modules to learn more about loading modules.

modtcl allows you to run any tcl code via:

/msg *modtcl tcl-code
/msg *modtcl format [string repe "%c" 10] 90 78 67 32 114 111 99 107 115 33

If you have modtcl.tcl loaded you can rehash your loaded scripts with:

/msg *modtcl rehash

modtcl.tcl and binds.tcl

modtcl comes with modtcl.tcl and binds.tcl (they help emulate an eggdrop) To load these files set the module argument to the absolute path of the file:

/msg *status loadmod modtcl /path/to/modtcl.tcl

By default modtcl.tcl loads binds.tcl aswell and you can add your own script files to be loaded under the "load other script files" section near the end of modtcl.tcl.

After you load them you can use some eggdrop commands:

/msg *modtcl putquick "privmsg #znc :testing"
/msg *modtcl bind pub - !ping pubPing; proc pubPing {nick uhost handle chan arg} {putquick "privmsg $chan :$nick: pong"}