From a53587eacd92d5108b846620be684e025ca5827f Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Thu, 1 Aug 2024 17:43:40 +0200 Subject: [PATCH 01/39] Add IP to listen error message Patch by: michaelortmann --- src/net.c | 2 +- src/tcldcc.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/net.c b/src/net.c index 644f4f6c5..42be92b34 100644 --- a/src/net.c +++ b/src/net.c @@ -130,7 +130,7 @@ char *iptostr(struct sockaddr *sa) */ int setsockname(sockname_t *addr, char *src, int port, int allowres) { - char *endptr, *src2 = src;; + char *endptr, *src2 = src; long val; IP ip; volatile int af = AF_UNSPEC; diff --git a/src/tcldcc.c b/src/tcldcc.c index 601714ba2..8c0cfbb3c 100644 --- a/src/tcldcc.c +++ b/src/tcldcc.c @@ -1176,15 +1176,22 @@ static int setlisten(Tcl_Interp *irp, char *ip, char *portp, char *type, char *m if (strlen(newip)) { setsockname(&name, newip, port, 1); i = open_address_listen(&name); + if (i < 0) { + snprintf(msg, sizeof msg, "Couldn't listen on port %d on %s: %s. " + "Please check that the port is not already in use", + realport, newip, strerror(errno)); + Tcl_AppendResult(irp, msg, NULL); + return TCL_ERROR; + } } else { i = open_listen(&port); - } - if (i < 0) { - egg_snprintf(msg, sizeof msg, "Couldn't listen on port '%d' on the given " + if (i < 0) { + snprintf(msg, sizeof msg, "Couldn't listen on port %d on the given " "address: %s. Please check that the port is not already in use", realport, strerror(errno)); - Tcl_AppendResult(irp, msg, NULL); - return TCL_ERROR; + Tcl_AppendResult(irp, msg, NULL); + return TCL_ERROR; + } } idx = new_dcc(&DCC_TELNET, 0); dcc[idx].sockname.addrlen = sizeof(dcc[idx].sockname.addr); From ba228ba860385cd64137f61fc382d48db09bdf40 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Tue, 6 Aug 2024 20:22:49 +0200 Subject: [PATCH 02/39] Update README source --- doc/Changes1.8 | 6 +++--- doc/sphinx_source/install/readme.rst | 12 ++++-------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/doc/Changes1.8 b/doc/Changes1.8 index 84b8e046a..343142f92 100644 --- a/doc/Changes1.8 +++ b/doc/Changes1.8 @@ -647,7 +647,7 @@ Eggdrop v1.8.1rc1 (2017-03-01): - Various small bugfixes. Patch by: Geo, thommey - # RC2 Relased on Nov 1, 2016 + # RC2 Released on Nov 1, 2016 - Use -pthread for OpenBSD linking, found in TCL_EXTRA_CFLAGS in tclConfig.sh. Patch by: thommey / Found by: fahuo @@ -656,7 +656,7 @@ Eggdrop v1.8.1rc1 (2017-03-01): Patch by: thommey - Switch to using $CC -shared for BSD in general, this seems to work on - newer versios, and ld -Bshareable -x fails. + newer versions, and ld -Bshareable -x fails. Patch by: thommey / Found by: LinaSovereign - Work around some incompatibilies between gnu make 3.82 and 4.x. @@ -764,7 +764,7 @@ Eggdrop v1.8.1rc1 (2017-03-01): - Typo: "timer " should be "utimer " Patch by: sirfz, Geo / Found by: sirfz - # RC1 Relased on September 12, 2016 + # RC1 Released on September 12, 2016 - Add basic.eggdrop.conf to source directory Patch by: Geo, thommey diff --git a/doc/sphinx_source/install/readme.rst b/doc/sphinx_source/install/readme.rst index 628f07353..573783de7 100644 --- a/doc/sphinx_source/install/readme.rst +++ b/doc/sphinx_source/install/readme.rst @@ -27,9 +27,9 @@ What is Eggdrop? information, hosting games, etc. One of the features that makes Eggdrop stand out from other bots is module - and Tcl scripting support. With scripts and modules you can make the bot - perform almost any task you want. They can do anything: from preventing - floods to greeting users and banning advertisers from channels. + and Tcl and Python scripting support. With scripts and modules you can + make the bot perform almost any task you want. They can do anything: from + preventing floods to greeting users and banning advertisers from channels. You can also link multiple Eggdrop bots together to form a botnet. This can allow bots to op each other securely, control floods efficiently and @@ -65,11 +65,7 @@ FTP Git Development Snapshot ^^^^^^^^^^^^^^^^^^^^^^^^ - Eggdrop development has moved from a CVS-based version control system to - git. If you are interested in trying out the VERY LATEST updates to - Eggdrop, you may be interested in pulling the most recent code from - there. BE WARNED, the development branch of Eggdrop is not to be - considered stable and may (haha) have some significant bugs in it. + Eggdrop developers use git to manage the Eggdrop codebase for development. If you are interested in trying out the VERY LATEST updates to Eggdrop, you can use git to obtain most recent code from the Eggheads repository. BE WARNED, the development branch of Eggdrop is not to be considered stable and may (haha) contain significant bugs still being worked on. To obtain Eggdrop via the git repository (hosted by GitHub), you can either clone the repository via git or download a development snapshot. From 2f6446b7332a7164169b9596881d0817c9c6003f Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Wed, 7 Aug 2024 02:33:13 +0200 Subject: [PATCH 03/39] Add Tcl 9 compatibility - Tcl_Size in python module Found by: michaelortmann Patch by: michaelortmann Fixes: #1668 --- src/mod/python.mod/pycmds.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/python.mod/pycmds.c b/src/mod/python.mod/pycmds.c index d1ae78e5c..02c890b2d 100644 --- a/src/mod/python.mod/pycmds.c +++ b/src/mod/python.mod/pycmds.c @@ -156,7 +156,7 @@ static int tcl_call_python(ClientData cd, Tcl_Interp *irp, int objc, Tcl_Obj *co } static PyObject *py_parse_tcl_list(PyObject *self, PyObject *args) { - int max; + Tcl_Size max; const char *str; Tcl_Obj *strobj; PyObject *result; @@ -175,7 +175,7 @@ static PyObject *py_parse_tcl_list(PyObject *self, PyObject *args) { for (int i = 0; i < max; i++) { Tcl_Obj *tclobj; const char *tclstr; - int tclstrlen; + Tcl_Size tclstrlen; Tcl_ListObjIndex(tclinterp, strobj, i, &tclobj); tclstr = Tcl_GetStringFromObj(tclobj, &tclstrlen); @@ -203,7 +203,7 @@ static PyObject *py_parse_tcl_dict(PyObject *self, PyObject *args) { } result = PyDict_New(); while (!done) { - int len; + Tcl_Size len; const char *valstr = Tcl_GetStringFromObj(value, &len); PyObject *pyval = PyUnicode_DecodeUTF8(valstr, len, NULL); PyDict_SetItemString(result, Tcl_GetString(key), pyval); From cd91671068f51bda2e1b166d1222a350d1b18319 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Wed, 7 Aug 2024 02:34:06 +0200 Subject: [PATCH 04/39] Revert adding -fsanitize=address Fix make bug, see test case below So we can only add -Og, not -fsanitize=address Due to the current ordering of eggdrop CFLAGS/DEBUGFLAGS, it is a good idea to remove it anyway, because currently -fsanitize=address is appended after USER CFLAGS. --- aclocal.m4 | 1 - 1 file changed, 1 deletion(-) diff --git a/aclocal.m4 b/aclocal.m4 index 13e3649e9..de8d6e665 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1249,7 +1249,6 @@ AC_DEFUN([EGG_DEBUG_DEFAULTS], debug_cflags_debug="-g3 -DDEBUG" AX_CHECK_COMPILE_FLAG([-Og], [debug_cflags_debug="-Og $debug_cflags_debug"]) - AX_CHECK_COMPILE_FLAG([-fsanitize=address], [debug_cflags_debug="$debug_cflags_debug -fsanitize=address"]) debug_cflags_debug_assert="-DDEBUG_ASSERT" debug_cflags_debug_mem="-DDEBUG_MEM" debug_cflags_debug_dns="-DDEBUG_DNS" From c61ae0decb6d5d1ab7b34e9e25dc8e34b2b78e1f Mon Sep 17 00:00:00 2001 From: Geo Date: Tue, 6 Aug 2024 20:34:37 -0400 Subject: [PATCH 05/39] Update Tcl MacOS search paths --- m4/tcl.m4 | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/m4/tcl.m4 b/m4/tcl.m4 index 93320acf8..7dcf43822 100644 --- a/m4/tcl.m4 +++ b/m4/tcl.m4 @@ -98,8 +98,9 @@ AC_DEFUN([TEA_PATH_TCLCONFIG], [ # we reset no_tcl in case something fails here no_tcl=true AC_ARG_WITH(tcl, - AS_HELP_STRING([--with-tcl],[directory containing tcl configuration (tclConfig.sh)]), - with_tclconfig="${withval}") + AS_HELP_STRING([--with-tcl], + [directory containing tcl configuration (tclConfig.sh)]), + [with_tclconfig="${withval}"]) AC_MSG_CHECKING([for Tcl configuration]) AC_CACHE_VAL(ac_cv_c_tclconfig,[ @@ -151,7 +152,9 @@ AC_DEFUN([TEA_PATH_TCLCONFIG], [ for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ - `ls -d /System/Library/Frameworks 2>/dev/null` \ + `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \ + `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \ + `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`" @@ -178,14 +181,14 @@ AC_DEFUN([TEA_PATH_TCLCONFIG], [ for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ - `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ + `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ - `ls -d /usr/lib/tcl[[8-9]].[[0-9]] 2>/dev/null` \ - `ls -d /usr/local/lib/tcl[[8-9]].[[0-9]] 2>/dev/null` \ - `ls -d /usr/local/lib/tcl/tcl[[8-9]].[[0-9]] 2>/dev/null` \ + `ls -d /usr/lib/tcl[[8-9]].[[0-9]] 2>/dev/null` \ + `ls -d /usr/local/lib/tcl[[8-9]].[[0-9]] 2>/dev/null` \ + `ls -d /usr/local/lib/tcl/tcl[[8-9]].[[0-9]] 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" @@ -224,7 +227,6 @@ AC_DEFUN([TEA_PATH_TCLCONFIG], [ fi fi ]) - ## ## Here ends the standard Tcl configuration bits and starts the ## TEA specific functions From e9aead7d407c9282aeb3b78b8eb2a94524abfcc4 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Wed, 7 Aug 2024 02:35:05 +0200 Subject: [PATCH 06/39] python.mod: add dir(eggdrop.tcl) (#1596) * Add dir(eggdrop.tcl) * Add "info procs" and filter by starting '*' instead of containing ':' --------- Co-authored-by: Michael Ortmann --- src/mod/python.mod/pycmds.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/mod/python.mod/pycmds.c b/src/mod/python.mod/pycmds.c index 02c890b2d..ec336e969 100644 --- a/src/mod/python.mod/pycmds.c +++ b/src/mod/python.mod/pycmds.c @@ -371,6 +371,38 @@ static PyObject *python_call_tcl(PyObject *self, PyObject *args, PyObject *kwarg return PyUnicode_DecodeUTF8(result, strlen(result), NULL); } + +static PyObject *py_dir(PyObject *self, PyObject *args) { + PyObject *py_list, *py_s; + int i, j; + const char *info[] = {"info commands", "info procs"}, *s, *value; + Tcl_Obj *tcl_list, **objv; + int objc; + + py_list = PyList_New(0); + for (i = 0; i < (sizeof info / sizeof info[0]); i++) { + s = info[i]; + if (Tcl_VarEval(tclinterp, s, NULL, NULL) == TCL_ERROR) + putlog(LOG_MISC, "*", "python error: Tcl_VarEval(%s)", s); + else { + tcl_list = Tcl_GetObjResult(tclinterp); + if (Tcl_ListObjGetElements(tclinterp, tcl_list, &objc, &objv) == TCL_ERROR) + putlog(LOG_MISC, "*", "python error: Tcl_VarEval(%s)", s); + else { + for (j = 0; j < objc; j++) { + value = Tcl_GetString(objv[j]); + if (*value != '*') { + py_s = PyUnicode_FromString(value); + PyList_Append(py_list, py_s); + Py_DECREF(py_s); + } + } + } + } + } + return py_list; +} + static PyObject *py_findtclfunc(PyObject *self, PyObject *args) { char *cmdname; TclFunc *result; @@ -399,7 +431,7 @@ static PyMethodDef MyPyMethods[] = { }; static PyMethodDef EggTclMethods[] = { - // TODO: __dict__ with all valid Tcl commands? + {"__dir__", py_dir, METH_VARARGS, ""}, {"__getattr__", py_findtclfunc, METH_VARARGS, "fallback to call Tcl functions transparently"}, {NULL, NULL, 0, NULL} }; From 607cdb36665e694a53242e90613ad85745883a08 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 7 Aug 2024 00:36:44 +0000 Subject: [PATCH 07/39] Run autotools --- configure | 52 ++++++---------------------------- src/mod/compress.mod/configure | 2 +- src/mod/dns.mod/configure | 2 +- src/mod/python.mod/configure | 2 +- 4 files changed, 11 insertions(+), 47 deletions(-) diff --git a/configure b/configure index de68e72ac..050b34976 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac cd32a73. +# From configure.ac e9aead7. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # @@ -9059,7 +9059,9 @@ printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory co for i in `ls -d ~/Library/Frameworks 2>/dev/null` \ `ls -d /Library/Frameworks 2>/dev/null` \ `ls -d /Network/Library/Frameworks 2>/dev/null` \ - `ls -d /System/Library/Frameworks 2>/dev/null` \ + `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \ + `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \ + `ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \ ; do if test -f "$i/Tcl.framework/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i/Tcl.framework; pwd)`" @@ -9086,14 +9088,14 @@ printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory co for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ - `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/local/lib 2>/dev/null` \ + `ls -d /usr/contrib/lib 2>/dev/null` \ `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ - `ls -d /usr/lib/tcl[8-9].[0-9] 2>/dev/null` \ - `ls -d /usr/local/lib/tcl[8-9].[0-9] 2>/dev/null` \ - `ls -d /usr/local/lib/tcl/tcl[8-9].[0-9] 2>/dev/null` \ + `ls -d /usr/lib/tcl[8-9].[0-9] 2>/dev/null` \ + `ls -d /usr/local/lib/tcl[8-9].[0-9] 2>/dev/null` \ + `ls -d /usr/local/lib/tcl/tcl[8-9].[0-9] 2>/dev/null` \ ; do if test -f "$i/tclConfig.sh" ; then ac_cv_c_tclconfig="`(cd $i; pwd)`" @@ -9805,44 +9807,6 @@ else $as_nop : fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=address" >&5 -printf %s "checking whether C compiler accepts -fsanitize=address... " >&6; } -if test ${ax_cv_check_cflags___fsanitize_address+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - ax_check_save_flags=$CFLAGS - CFLAGS="$CFLAGS -fsanitize=address" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ax_cv_check_cflags___fsanitize_address=yes -else $as_nop - ax_cv_check_cflags___fsanitize_address=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS=$ax_check_save_flags -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_address" >&5 -printf "%s\n" "$ax_cv_check_cflags___fsanitize_address" >&6; } -if test "x$ax_cv_check_cflags___fsanitize_address" = xyes -then : - debug_cflags_debug="$debug_cflags_debug -fsanitize=address" -else $as_nop - : -fi - debug_cflags_debug_assert="-DDEBUG_ASSERT" debug_cflags_debug_mem="-DDEBUG_MEM" debug_cflags_debug_dns="-DDEBUG_DNS" diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 0af9c1865..c336a3d8c 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac cd32a73. +# From configure.ac e9aead7. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 2757a5ab0..20c9653b6 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac cd32a73. +# From configure.ac e9aead7. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. # diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index 779d2ebe7..ec08ac875 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac cd32a73. +# From configure.ac e9aead7. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. # From 320ab0fcf9d0c23d18710b4b229586134f1a1b7c Mon Sep 17 00:00:00 2001 From: Geo Date: Tue, 6 Aug 2024 21:25:16 -0400 Subject: [PATCH 08/39] Update NEWS --- NEWS | 365 ++++++++++++----------------------------------------------- 1 file changed, 75 insertions(+), 290 deletions(-) diff --git a/NEWS b/NEWS index 54eea1d7e..6cc03a177 100644 --- a/NEWS +++ b/NEWS @@ -6,314 +6,99 @@ Last revised: December 4, 2021 This file lists major and incompatible changes in Eggdrop versions. - You can find the full list of changes in doc/Changes1.9. + You can find the full list of changes in doc/Changes1.10. For support, feel free to visit us on Libera #eggdrop. - For upgrading from a pre-1.6 version of Eggdrop: Read the UPGRADING file. + For upgrading help, read the UPGRADING file. - In general, always make a BACKUP of your config and user/chanfile. + In general, always make a BACKUP of your config and user/chanfile + before performing an upgrade! _________________________________________________________________ -Eggdrop v1.9.5: +Eggdrop v1.10.0: General changes: - - Implemented a workaround for a Tcl issue parsing emojis that can cause a - crash - - Fixed an improper change to the display of bind flags that caused issues - with Tcl scripts that parse bind flags - - Added SSL header information to .status to help diagnose ./configure - mismatches - - Lots of under-the-hood bug fixes + - Added the new Tcl 'autoscripts' capability. By loading the autoscripts Tcl + script, Eggdrop can automatically view, download and install Tcl scripts + hosted by the Eggheads team, all via the partyline! No modification of the + config file needed. + - Eggdrop can now use the account a user is logged into as an identification + method in the same manner that a hostmask does. For this feature to be + fully accurate, Eggdrop use a server with WHOX enabled and negotiate the + extended-join and account-notify IRCv3 capabilities. + - Added the IRCv3 userhost-in-names capability. This capability is + negotiated with the server at connect and prompts the server to add + hostmask to the NAMES command. This is useful in a scenario where an IRC + server has disabled the WHO command, but allows + Eggdrop to still track hostmasks (and removes the "pending" status from + the channel listing under .status). + - Added the IRCv3 standard-replies capability. This capability is negotiated + with the server at connect and enables the use of non-numeric FAIL, WARN, + and NOTE messages. + - Modified .bans to properly display channel bans. + - Fixed a bug with network reads performed on TLS connections, where + Eggdrop could hang until a connection times out, most commonly + manifesting itself on server connects and userfile transfers. This is + expected to fix the last documented issue with Eggdrop's handling of + secure connections. + - Eggdrop now requires TLS/SSL libs to be installed by default. Whereas + previously Eggdrop would previously continue to compile if TLS libraries + were not found, it will now error unless the user explicitly specifies + the --disable-tls flag. + - Fixed the Monitor bind to properly use wildcards in binds. + - Updated language files from ISO-8859 to UTF-8. Botnet changes: - - None + - Fixed an issue in pbkdf2-only links properly using/comparing PASS2 entries Tcl API changes: - - Tcl minimum required version is now 8.5! This actually happened in version - 1.9.0; we just forgot to tell people. Oops! :) + - Updated much of the core Tcl integration to be compatible with the + upcoming Tcl 9 release. Much work was done (thank you DasBrain!) to update + Eggdrop's internal Tcl calls to prevent breakages using Tcl 9. Most of + these changes are transparent to the user, but the one major item to call + out is the improvement of Tcl's UTF-8 emoji handling, which no longer + requires users to modify TCL_MAX and compile Tcl manually in order to use + emojis properly. + - The Python module (below) adds the pysource Tcl command, to load + a python script into Eggdrop. + - Added the Tcl CHGHOST bind, which is triggered when a user's + hostmask is changed via an IRCv3 CHGHOST message. + - Added the 'hidden-host' type to the event (EVNT) bind. This bind + is triggered when the bot's own host is hidden (+x) by a 396 + message sent by server. + - Added the 'got-chanlist' type to the event (EVNT) bind. This bind + is triggered once Eggdrop finishes receiving the list of usernames + for a channel from a server. This can be used when Eggdrop needs to + wait to perform specific functions when joining a channel but + needs to wait until the users on a channel have been presented by + the server. + - Fixed a bug in the isidentified command to check if a user has + definitively been identified or unidentified. Module changes: - - Updated woobie.mod with additional example code + - Added a Python module! This module integrates an embedded Python + interpreter similar to the Tcl interpreter already present in + Eggdrop. This module adds the .python command to the partyline + (again, similar to the .tcl command) to execute python strings, + as well as adding the pysource Tcl command that will load a Python + script into Eggdrop. See doc/modules/mod.python for details on how + to use it, or example scripts in the scripts/ directory. Eggdrop config changes: - - None + - The copy-to-tmp option was removed from the config. This value is + now functions under the old '1' behavior where an intermediate temp + file is created before copying from/to files that are in use. + - The quick-logs option was removed from the config. This value was + created to hedge against frequent writes to disk, but is less + relveant with today's technology. Eggdrop now writes logfiles to + disk immediately. Documentation changes: - - Added additional documentation to help write modules - - Updated botnet docs to include reference to TLS docs for secure links - - Updated Tcl repo from unmaintained FTP to HTTP repository - -Eggdrop v1.9.4: - - General changes: - - Fixed a DNS bug causing Eggdrop to often hang on DCC or telnet - connections - - BETA: Added -systemd option to autobotchk script to restart Eggdrop via - systemd instead of cron - - Reverted matchattr match syntax to previous functionality. Matching - against "-" as a flag will once again successfully match against "no" - flags, instead of returning an error. - - Fixed some inaccurate log messages - - Fixed some format specifiers that could cause crashes in certain - situations - - Fixed logging of TAGMSG messages - - Fixed unspecified behavior of freeaddrinfo() on some BSD systems - - Botnet changes: - - None - - Tcl API changes: - - Moved the 'gotmsg' function back as a raw bind. It was inadvertently - moved to a rawt bind in 1.9.3, causing issues with scripts attempting to - unbind this internal reference - Module changes: - - None - -Eggdrop config changes: - - None - - -Eggdrop v1.9.3: - - General changes: - - Added the ability to track services account names for users in a channel - and those added to an Eggdrop. To work properly, this feature requires a - server that supports WHOX requests and can negotiate the extended-join - and account-notify capabilities - - Added the +account and -account partyline commands to add or remove a - services account name to a handle - - Updated .channel output to display services account names associated with - channel users - - Added the ability to create a timer with a custom name instead of the - default "timerXX" format - - Fixed a compile error if TLS libraraies weren't detected on the host OS - - Fixed a compile error for pthreads found mainly on BSD systems - - Fixed a bug with threaded DNS queries where threads were not terminated - properly, potentially resulting in an out-of-memory error - - Fixed an issue where PLAIN SASL authentication incorrectly errored unless - (unneeded) TLS libraries were installed - - Updated information obtained via extended-join to all channels the user is - on, not just the channel they joined - - Force ident requests to originate from the specified vhost/listen IP - - Reorganized the documentation structure - - Botnet changes: - - None - - Tcl API changes: - - Updated the 'finduser' command to accept the -account flag. Using this - flag will search the userfile and return the handle that contains the - provided account name - - Updated the getuser and setuser commands to accept the "ACCOUNT" entry - - Added the 'accounttracking' variable, which returns a '1' if all three - requirements (WHOX, extended-join, and account-notify) are available and - active for the current server connection - - Added an optional timer name field to the timer and utimer commands - - Updated docs to reflect a value of '0' for the server-online value when - Eggdrop is disconnected - - Module changes: - - None - - Eggdrop config changes: - - None - - _________________________________________________________________ - -Eggdrop v1.9.2: - - General changes: - - Added CAP 302 support, and generally enhance CAP support - - Enabled threaded core DNS requests as the default method for DNS lookups; - this can be disabled with ./configure --disable-tdns - - Added support for the MONITOR CAP capability, allowing tracking of online - and offline nicknames - - Added support for the 005 BOT flag, allowing tracking of users that - declare themselves as bots to the IRC server - - Added SSL status to the .bottree command, denoted with a '=' symbol - - Fixed allowing Eggdrop to process message-tags even if the message-tags - capability is not explicitly requested - - Alt-nick is now used before a randomly generated nickname if the requested - nickname is rejected as invalid by the server. This feature is now - divorced of any previous dependence on the keep-nick setting, with the - reasoning that getting the Eggdrop onto the server with a random nick is - more important than keeping a nickname and not ever joining, particularly - from a troubleshooting standpoint - - RAWT binds returning a '1' now block similar RAW binds from triggering - by the same activity (but RAW binds cannot block a RAWT bind- use a RAWT!) - - Fixed mistakenly requiring a flag for the 'listen script' command - - Fixed an issue with Eggdrop not properly updating the account-tracking - status - - Botnet changes: - - None - - Tcl API changes: - - Added the 'monitor' command, which allows interaction with the CAP - MONITOR capability - - Added the 'isircbot' command, which returns if a user has registered as a - bot with the IRC server - - Added the 'server list' command, which lists servers added to Eggdrop - - Added the USERNOTICE bind to the Twitch module - - Added a 'values' argument to the 'cap' command, outputting the display of - CAP 302 values, if any, associated with each capability - - Module changes: - - Fixed bug in PBKDF2 that caused PBKDF2-only environments to not store - hashes properly, resulting in 'bad password' errors after relinking - - Deprecated the DNS module (functionality has been moved core Eggdrop - code). Eggdrop now natively handles asynchronous DNS (which was the - purpose of the DNS module), so the DNS module is no longer needed - - Fixed a bug with the Twitch module where it would crash on .rehash and - .restart - - Eggdrop config file changes: - - Added the 'extended-join' setting, to enable the extended-join CAP - capability - - Moved DNS-related settings out of the modules section and into the core - config area - - No longer load the (now-deprecated) DNS module by default - - _________________________________________________________________ - -Eggdrop v1.9.1: - - General changes: - - Fixed an issue where an IP address was incorrectly overwritten after a - CTCP chat was received - - Fixed an issue where Eggdrop would occasionally crash if no port was - provided when the server was added - - Error, instead of silently change, when adding a bot with invalid ascii - characters in the handle (.+bot) - - Removed an incorrect error message after restarting the bot with the - PBKDF2 module loaded - - Further improved error reporting for socket connections - - Botnet changes: - - None - - Tcl API changes: - - Fixed the isaway command to properly track AWAY server messages - - Module changes: - - None - - Eggdrop config file changes: - - Added Libera Chat to the accepted server types - - _________________________________________________________________ - -Eggdrop v1.9.0: - - General changes: - - Added CAP support, allowing Eggdrop to extend IRC server capabilities - - Added support for SASL authentication - - Added a BETA threaded DNS capability, enabled with the --enable-tdns - configure flag. This allows asynchronous DNS requests similar to the what - the current DNS module offers, but using host system capability instead - of rewriting it from scratch. Using this means you no longer have to use - the DNS module. - - Eggdrop can listen on multiple IPs (and ports) now by using multiple - instances of the 'listen' command - - Added Twitch support - - Added support for users that change hosts mid-session, usually associated - with authenticating with services (396 raw code and CHGHOST capability). - - Added support for the users that change their realname value mid-session - (SETNAME capability) - - Added the ability for Eggdrop to internally track the away status of an - individual, with some limitations. - - Added the 'make sslsilent' option that creates an SSL certificate keypair - non-interactively, to assist in scripted/automated installs - - Differentiate between scripted and server WHOX calls, preventing mangling - of channel userlists - - The -n flag is no longer required to run Eggdrop in terminal mode; just - -t or -c are fine by themselves - - Added some checks to flags added via .chattr and .botattr to clearly - identify what happens when you add flags that can't co-exist together - - Botnet changes: - - Removed automatic upgrade to TLS-protected botnet links with STARTTLS. - Based on user feedback, protecting a botnet link is now at the discretion - of the user. Prefixing a port with a '+' will require a TLS connection, - otherwise the connection will be in plaintext. A port not prefixed with a - + can still be upgraded with STARTTLS, allowing 1.8 bots and scripts to - initiate a secure connection, but 1.9.0 bots will not attempt the upgrade. - - Added granular userfile sharing flags (bcejnu). Adding these flags can - limit userfile sharing to a combination of bans, invites, exempts, - channels, users, and ignores (or still the s flag for all these). - - No longer try port+1,2,3 when connecting to a botnet port doesn't work - the first time - - Tcl API changes: - - Added the RAWT bind, which will (eventually) phase out the RAW bind. - Implementing the IRCv3 message-tags capability requires a new way to - handle basic IRC messages, and RAWT was added in a way so that a) RAW - binds in old scripts still work and b) the RAWT bind can handle messages - that either do or do not have message-tags attached - - Added the INVT bind, allowing Eggdrop to react to a standard invitation, - or the new IRCv3 invite-notify capability - - Added the AWY3 bind, allowing Eggdrop to react to the new IRCv3 - away-notify capability. - - Added the refreshchan command, which refreshes without removing existing - channel status information tracked by Eggdrop for users on a channel. - - Added the isaway command, which returns if a user is listed by the server - as away or not, if using the IRCv3 away-notify capability. If away-notify - is not enabled, this command can still be used effectively in conjunction - with 'refreshchan w', described above. - - Added the hand2nicks command, an alternative to the hand2nick command. - hand2nicks returns ALL nicks matching a handle, not just the first one. - - Added the socklist command, an update to the dcclist command. Returns - similar info as a Tcl dict, and adds the IP to the information. - - Use the system's strftime formatting instead of Eggdrop-provided - GNU version/extensions. This could cause formatting differences - or errors between systems. To ensure fully portable code, developers - should only rely on POSIX-compliant formatting specifiers. - - The dcclist command now returns port information and whether or not TLS - is in use for that port. This change could affect field-based parsers - depending on this command - - Added the addserver and delserver command, to *gasp* add and delete a - server from Eggdrop's server list - - Modified the listen command to accept an optional IP argument. This - allows Eggdrop to listen on multiple addresses by using multiple listen - commands in the config file or Tcl script. If no IP is specified, 0.0.0.0 - is used as default. As a result of this change, the listen-addr command - is no longer needed and removed from the config file - - Added an optional -channel flag to the end of the is* commands (isban, - isexempt, etc). This flag prevents the is* command from checking the - global list and returning a '1' when there is no channel-specific case - - Added several Tcl commands and binds to enable better interaction with - the Twitch gaming service. Because these commands only work with a Twitch - server, they are not included in tcl-commands.doc but rather - twitch-tcl-commands.doc, located in the doc/ directory. - - Limited the expiration for new bans, ignores and exempts to 2000 days. - - Module changes: - - Added the PBKDF2 module, which allows Eggdrop to hash passwords using the - PBKDF2 algorithm. This module is a stepping stone to future, more - adaptable hashing and encryption implementation. IMPORTANT: PLEASE read - doc/PBKDF2 for more information on how to properly use it, you could - accidentally render old passwords useless! - - Added the twitch module, which allows Eggdrop to connect to the Twitch - gaming service. As Twitch offers only a limited subset of standard IRC - functionality, be prepared for some commands or scripts to work - differently than on a normal IRC server. Please read doc/TWITCH for more - information. - - Added the ident module, which can automatically interact with a running - oidentd service or allow Eggdrop to serve as its own ident server to - respond to ident requests during the server connection process. - - Eggdrop config file changes: - - Added additional net-types for freenode, Quakenet, and Rizon (net-type) - - Added ability to choose specific SSL/TLS protocols to use (ssl-protocols) - - Added ability to allow bots to remain linked if userfile sharing fails - (sharefail-unlink) - - Changed the method Eggdrop uses to add servers from a {} list to the new - addserver command - - Removed the listen-addr command. See above; the listen command now - accepts an optional IP argument in lieu of using listen-addr - - Added the show-uname setting, which allows you to disable the display of - uname info for the host system in things like .status + - Added documentation that covers values commonly used when writing + new Tcl binds in C + - Added a tutorial to demonstrate how to share userfiles + - Added version variable for document generation ________________________________________________________________________ Copyright (C) 1997 Robey Pointer From dcd2efe750f2f8d4b07bc8cad8c79dd67da820f7 Mon Sep 17 00:00:00 2001 From: Geo Date: Wed, 7 Aug 2024 19:44:19 -0400 Subject: [PATCH 09/39] Update docs --- README | 50 ++- UPGRADING | 22 +- doc/BOTNET | 15 +- doc/IRCv3 | 15 + doc/TLS | 18 +- doc/core.settings | 8 - doc/html/_static/documentation_options.js | 2 +- doc/html/about/about.html | 10 +- doc/html/about/legal.html | 10 +- doc/html/index.html | 39 ++- doc/html/install/install.html | 10 +- doc/html/install/readme.html | 57 +++- doc/html/install/upgrading.html | 24 +- doc/html/modules/included.html | 29 +- doc/html/modules/index.html | 12 +- doc/html/modules/internals.html | 384 +++++++++++++--------- doc/html/modules/mod/assoc.html | 10 +- doc/html/modules/mod/blowfish.html | 10 +- doc/html/modules/mod/channels.html | 10 +- doc/html/modules/mod/compress.html | 10 +- doc/html/modules/mod/console.html | 10 +- doc/html/modules/mod/ctcp.html | 10 +- doc/html/modules/mod/dns.html | 10 +- doc/html/modules/mod/filesys.html | 10 +- doc/html/modules/mod/ident.html | 10 +- doc/html/modules/mod/irc.html | 10 +- doc/html/modules/mod/notes.html | 10 +- doc/html/modules/mod/pbkdf2.html | 10 +- doc/html/modules/mod/python.html | 92 +----- doc/html/modules/mod/seen.html | 16 +- doc/html/modules/mod/server.html | 10 +- doc/html/modules/mod/share.html | 10 +- doc/html/modules/mod/transfer.html | 10 +- doc/html/modules/mod/twitch.html | 10 +- doc/html/modules/mod/uptime.html | 15 +- doc/html/modules/mod/woobie.html | 10 +- doc/html/modules/writing.html | 10 +- doc/html/objects.inv | Bin 1556 -> 1709 bytes doc/html/search.html | 10 +- doc/html/searchindex.js | 2 +- doc/html/tutorials/firstscript.html | 16 +- doc/html/tutorials/firststeps.html | 16 +- doc/html/tutorials/module.html | 90 +---- doc/html/tutorials/setup.html | 40 +-- doc/html/tutorials/tlssetup.html | 16 +- doc/html/tutorials/userfilesharing.html | 179 ++++++++++ doc/html/using/accounts.html | 10 +- doc/html/using/autoscripts.html | 10 +- doc/html/using/bans.html | 10 +- doc/html/using/botnet.html | 26 +- doc/html/using/core.html | 16 +- doc/html/using/features.html | 10 +- doc/html/using/ipv6.html | 10 +- doc/html/using/ircv3.html | 19 +- doc/html/using/partyline.html | 10 +- doc/html/using/patch.html | 10 +- doc/html/using/pbkdf2info.html | 16 +- doc/html/using/python.html | 229 +++++++++++++ doc/html/using/tcl-commands.html | 36 +- doc/html/using/text-sub.html | 14 +- doc/html/using/tls.html | 24 +- doc/html/using/tricks.html | 10 +- doc/html/using/twitch-tcl-commands.html | 10 +- doc/html/using/twitchinfo.html | 18 +- doc/html/using/users.html | 10 +- doc/modules/MODULES | 11 +- doc/modules/mod.python | 143 ++++++++ doc/modules/mod.seen | 7 +- doc/modules/mod.uptime | 9 +- doc/sphinx_source/conf.py | 4 +- doc/sphinx_source/index.rst | 1 + doc/sphinx_source/modules/internals.rst | 4 +- doc/sphinx_source/using/tcl-commands.rst | 4 +- doc/tcl-commands.doc | 38 ++- 74 files changed, 1395 insertions(+), 701 deletions(-) create mode 100644 doc/html/tutorials/userfilesharing.html create mode 100644 doc/html/using/python.html create mode 100644 doc/modules/mod.python diff --git a/README b/README index 468549297..fdd5c32ef 100644 --- a/README +++ b/README @@ -24,10 +24,10 @@ WHAT IS EGGDROP? events, providing information, hosting games, etc. One of the features that makes Eggdrop stand out from other bots is - module and Tcl scripting support. With scripts and modules you can - make the bot perform almost any task you want. They can do anything: - from preventing floods to greeting users and banning advertisers from - channels. + module and Tcl and Python scripting support. With scripts and modules + you can make the bot perform almost any task you want. They can do + anything: from preventing floods to greeting users and banning + advertisers from channels. You can also link multiple Eggdrop bots together to form a botnet. This can allow bots to op each other securely, control floods @@ -60,16 +60,17 @@ FTP The latest Eggdrop stable source code is always located at https://geteggdrop.com. You can also download the current stable, - previous stable, and development snapshot via FTP at - ftp://ftp.eggheads.org/pub/eggdrop/source + previous stable, and development snapshot at + https://ftp.eggheads.org/pub/eggdrop/source Git Development Snapshot - Eggdrop development has moved from a CVS-based version control system - to git. If you are interested in trying out the VERY LATEST updates to - Eggdrop, you may be interested in pulling the most recent code from - there. BE WARNED, the development branch of Eggdrop is not to be - considered stable and may (haha) have some significant bugs in it. + Eggdrop developers use git to manage the Eggdrop codebase for + development. If you are interested in trying out the VERY LATEST + updates to Eggdrop, you can use git to obtain most recent code from + the Eggheads repository. BE WARNED, the development branch of Eggdrop + is not to be considered stable and may (haha) contain significant bugs + still being worked on. To obtain Eggdrop via the git repository (hosted by GitHub), you can either clone the repository via git or download a development @@ -105,10 +106,29 @@ SYSTEM PRE-REQUISITES download Tcl source from https://www.tcl.tk/software/tcltk/download.html. - It is also strongly recommended to install openssl (and its - development headers) in order to enable SSL/TLS protection of network - data. The header files are often called something similar to - 'libssl-dev'. + Eggdrop also requires openssl (and its development headers) in order + to enable SSL/TLS protection of network data. The header files are + often called something similar to 'libssl-dev'. While not advised, + this requirement can be removed by compilling using + ./configure --disable-tls, but you will not be able to connect to + TLS-protected IRC servers nor utilize secure botnet communication. + +MINIMUM REQUIREMENTS + +Some components of Eggdrop relies on a variety of third-party libraries, +documented here. + + ----------------------------------------------------------------------- + Functionality Package Minimum Version + ------------------------------- ------------------- ------------------- + Tcl interpreter (required) Tcl Dev Library 8.5.0 + + Secure communication OpenSSL 0.9.8 + + Python module Python 3.8.0 + + Compression module zlib Any + ----------------------------------------------------------------------- QUICK STARTUP diff --git a/UPGRADING b/UPGRADING index 562c88247..ef9464e16 100644 --- a/UPGRADING +++ b/UPGRADING @@ -26,7 +26,7 @@ HOW TO UPGRADE Restart your Eggdrop and you will be up and running with the latest version of Eggdrop. -MUST-READ CHANGES FOR EGGDROP V1.9 +MUST-READ CHANGES FOR EGGDROP V1.10 These are NOT all the changes or new settings; rather just the "killer" changes that may directly affect Eggdrop's previous performance without @@ -34,7 +34,7 @@ modification. Config file changes -To migrate from a 1.8 to a 1.9 Eggdrop, some changes are suggested to be +To migrate from a 1.8 to a Eggdrop, some changes are suggested to be made in your configuration file: - Eggdrop has deprecated the blowfish module for password hashing in @@ -62,22 +62,22 @@ made in your configuration file: Modules -While most 3rd party modules that worked on Eggdrop v1.6/v1.8 should -still work with Eggdrop v1.9, many of them contain a version check that -only allows them to run on 1.6.x bots. We have removed the version check -from some of the more popular modules provide them at -ftp://eggheads.org/pub/eggdrop/modules/1.9/ +While most 3rd party modules that worked on older Eggdrop versions +should still work with Eggdrop , many of them contain a version check +that only allows them to run on 1.6.x bots. We have removed the version +check from some of the more popular modules provide them at +https://ftp.eggheads.org/pub/eggdrop/modules/1.10/ Scripts -All 3rd party Tcl scripts that work with Eggdrop v1.6/v1.8 should fully -work with Eggdrop v1.9. +All 3rd party Tcl scripts that worked with Eggdrop versions as early as +v1.6 should still fully work with Eggdrop . Botnet In Eggdrop v1.8, Eggdrop bots would automatically attempt to upgrade any -botnet link to an SSL/TLS connection. In v1.9, the user is required to -explicitly request an SSL/TLS connection by prefixing the port with a +botnet link to an SSL/TLS connection. Since v1.9, the user is required +to explicitly request an SSL/TLS connection by prefixing the port with a '+'. If you wish your botnet to take advantage of encryption, use the .chaddr command to update your ports to start with a '+'. diff --git a/doc/BOTNET b/doc/BOTNET index a33c42d00..e5d5468f7 100644 --- a/doc/BOTNET +++ b/doc/BOTNET @@ -90,15 +90,18 @@ Port and/or users. Note that you can define separate ports for user and bot connections. -EXAMPLE BOTTREE +EXAMPLE BOTTREES BotA |-+BotB - `-+BotC - -BotB is linked to a master sharebot, BotA, and a slave sharebot, BotC. -BotB shares passively with [receives from] BotA and shares aggressively -with [sends to] BotC. + |==BotC + |=+BotD + `--BotC + +Legend: * -- means the bots are linked, but not sharing userfiles * -+ +means the bots are sharing userfiles * == means the bots have an +encrypted link between them, and are not sharing userfiles * =+ means +the bots have an encrypted link between them, and are sharing userfiles BOT FLAGS diff --git a/doc/IRCv3 b/doc/IRCv3 index c5567b11e..0cb8e3df6 100644 --- a/doc/IRCv3 +++ b/doc/IRCv3 @@ -52,6 +52,21 @@ The following capabilities are supported by Eggdrop: - Monitor - server-time - setname + - userhost-in-names - +typing +ERRATA + +- Enabling echo-message will cause Eggdrop to trigger PUB/PUBM binds + on its own messages (because now it can actually see them). This may + cause unintentional functionality with some scripts +- Enabling userhost-in-names will cause Eggdrop's internal mechanisms + to mark a channel's userlist as synch'd upon receiving the NAMES + list after a join, instead of waiting for a full WHO listing. This + is done because the assumption is that userhost-in-names was enabled + as a response to WHO queries being disabled on a server, which + prevents Eggdrop from populating its userlist. To avoid unintended + functionality, it is suggested that this capability only be enabled + on servers that disable WHO queries. + Copyright (C) 2010 - 2024 Eggheads Development Team diff --git a/doc/TLS b/doc/TLS index e218a81cb..9b848585a 100644 --- a/doc/TLS +++ b/doc/TLS @@ -3,14 +3,14 @@ TLS support Last revised: Jan 26, 2020 TLS support This document provides information about TLS support which is a new -eggdrop feature since version 1.8.0. +Eggdrop feature since version 1.8.0. ABOUT Eggdrop can be optionally compiled with TLS support. This requires -OpenSSL 0.9.8 or more recent installed on your system. TLS support -includes encryption for IRC, DCC, botnet, telnet and scripted -connections as well as certificate authentication for users and bots. +OpenSSL 0.9.8 or later installed on your system. TLS support includes +encryption for IRC, DCC, botnet, telnet and scripted connections as well +as certificate authentication for users and bots. INSTALLATION @@ -82,7 +82,7 @@ like this: In short, a bot added to your Eggdrop with a +port in the address can only connect to a bot listening with a +port in the config. Conversely, -a bot added to your eggdrop without a + prefix can only connect to a bot +a bot added to your Eggdrop without a + prefix can only connect to a bot listening without a + prefix in the config. If TLS negotiation fails, the connection is deliberately aborted and no @@ -111,7 +111,7 @@ Scripts can open or connect to TLS ports the usual way specifying the port with a plus sign. Alternatively, the connection could be established as plaintext and later switched on with the starttls Tcl command. (Note that the other side should also switch to TLS at the same -time - the synchronization is the script's job, not eggdrop's.) +time - the synchronization is the script's job, not Eggdrop's.) KEYS, CERTIFICATES AND AUTHENTICATION @@ -121,7 +121,7 @@ bots and TLS listening ports. General information about certificates and public key infrastructure can be obtained from Internet. This document only contains eggdrop-specific information on the subject. The easy way to create a key and a certificate is to type 'make sslcert' after -compiling your bot (If you installed eggdrop to a non-standard location, +compiling your bot (If you installed Eggdrop to a non-standard location, use make sslcert DEST=/path/to/eggdrop). This will generate a 4096-bit private key (eggdrop.key) and a certificate (eggdrop.crt) after you fill in the required fields. Alternatively, you can use 'make sslsilent' to @@ -133,12 +133,12 @@ make a ssl certificate for yourself and enable ssl-cert-auth in the config file. Then either connect to the bot using TLS and type ".fprint +" or enter your certificate fingerprint with .fprint SHA1-FINGERPRINT. To generate a ssl certificate for yourself, you can run the following -command from the eggdrop source directory: +command from the Eggdrop source directory: openssl req -new -x509 -nodes -keyout my.key -out my.crt -config ssl.conf When asked about bot's handle, put your handle instead. How to use your -new certificate to connect to eggdrop, depends on your irc client. To +new certificate to connect to Eggdrop, depends on your irc client. To connect to your bot from the command line, you can use the OpenSSL ssl client: diff --git a/doc/core.settings b/doc/core.settings index 6597611b9..b17b2c1dc 100644 --- a/doc/core.settings +++ b/doc/core.settings @@ -118,14 +118,6 @@ overwritten by the logfile of the next day. reaches the size of 550 kilobytes. Note that this only works if you have keep-all-logs set to 0 (OFF). - set quick-logs 0 - - This could be good if you have had a problem with logfiles filling - your quota/hard disk or if you log +p and publish it to the web, - and you need more up-to-date info. Note that this setting might - increase the CPU usage of your bot (on the other hand it will - decrease your RAM usage). - set raw-log 0 This setting allows you the logging of raw incoming server traffic diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index 935cd0815..693055604 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '1.9.5', + VERSION: '1.10.0rc1', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/doc/html/about/about.html b/doc/html/about/about.html index 184a2cd4c..e589e343e 100644 --- a/doc/html/about/about.html +++ b/doc/html/about/about.html @@ -5,10 +5,10 @@ - About Eggdrop — Eggdrop 1.9.5 documentation + About Eggdrop — Eggdrop 1.10.0rc1 documentation - + @@ -18,7 +18,7 @@ diff --git a/doc/html/about/legal.html b/doc/html/about/legal.html index 5e510d5b1..d64811836 100644 --- a/doc/html/about/legal.html +++ b/doc/html/about/legal.html @@ -5,10 +5,10 @@ - Boring legal stuff — Eggdrop 1.9.5 documentation + Boring legal stuff — Eggdrop 1.10.0rc1 documentation - + @@ -17,7 +17,7 @@ diff --git a/doc/html/index.html b/doc/html/index.html index fedeb01b5..e272b96bf 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -5,10 +5,10 @@ - Eggdrop, an open source IRC bot — Eggdrop 1.9.5 documentation + Eggdrop, an open source IRC bot — Eggdrop 1.10.0rc1 documentation - + @@ -17,7 +17,7 @@ diff --git a/doc/html/install/install.html b/doc/html/install/install.html index 2455a4844..f2d430e26 100644 --- a/doc/html/install/install.html +++ b/doc/html/install/install.html @@ -5,10 +5,10 @@ - Installing Eggdrop — Eggdrop 1.9.5 documentation + Installing Eggdrop — Eggdrop 1.10.0rc1 documentation - + @@ -18,7 +18,7 @@ diff --git a/doc/html/modules/mod/compress.html b/doc/html/modules/mod/compress.html index d1d271845..6a2b41afc 100644 --- a/doc/html/modules/mod/compress.html +++ b/doc/html/modules/mod/compress.html @@ -173,7 +173,7 @@

Search

diff --git a/doc/html/modules/mod/console.html b/doc/html/modules/mod/console.html index 372522040..b12a429c7 100644 --- a/doc/html/modules/mod/console.html +++ b/doc/html/modules/mod/console.html @@ -175,7 +175,7 @@

Search

diff --git a/doc/html/modules/mod/ctcp.html b/doc/html/modules/mod/ctcp.html index 6b84ecc3f..980e05abf 100644 --- a/doc/html/modules/mod/ctcp.html +++ b/doc/html/modules/mod/ctcp.html @@ -187,7 +187,7 @@

Search

diff --git a/doc/html/modules/mod/dns.html b/doc/html/modules/mod/dns.html index 142697d1c..c96900c15 100644 --- a/doc/html/modules/mod/dns.html +++ b/doc/html/modules/mod/dns.html @@ -188,7 +188,7 @@

Search

diff --git a/doc/html/modules/mod/filesys.html b/doc/html/modules/mod/filesys.html index 993b742fe..1aecf28dd 100644 --- a/doc/html/modules/mod/filesys.html +++ b/doc/html/modules/mod/filesys.html @@ -385,7 +385,7 @@

.filesys module © Copyright 2024, Eggheads. - Last updated on Sep 08, 2024. + Last updated on Oct 13, 2024. Created using Sphinx 8.0.2. diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 00155cc31..22a388d52 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -226,7 +226,7 @@

Search

diff --git a/doc/html/modules/mod/irc.html b/doc/html/modules/mod/irc.html index 21061f2f3..2e0c2a295 100644 --- a/doc/html/modules/mod/irc.html +++ b/doc/html/modules/mod/irc.html @@ -296,7 +296,7 @@

Search

diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index 132d22aeb..9d066f7ca 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -183,7 +183,7 @@

Search

diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index 10474ca71..070cdb426 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -182,7 +182,7 @@

Search

diff --git a/doc/html/modules/mod/python.html b/doc/html/modules/mod/python.html index 15ef49b7b..f20d9fb2b 100644 --- a/doc/html/modules/mod/python.html +++ b/doc/html/modules/mod/python.html @@ -192,7 +192,7 @@

pysource <path/to/file> © Copyright 2024, Eggheads. - Last updated on Sep 08, 2024. + Last updated on Oct 13, 2024. Created using Sphinx 8.0.2. diff --git a/doc/html/modules/mod/seen.html b/doc/html/modules/mod/seen.html index b4fa3b8be..195298cd3 100644 --- a/doc/html/modules/mod/seen.html +++ b/doc/html/modules/mod/seen.html @@ -162,7 +162,7 @@

Search

diff --git a/doc/html/modules/mod/server.html b/doc/html/modules/mod/server.html index d788f17a8..0d0ebd3fe 100644 --- a/doc/html/modules/mod/server.html +++ b/doc/html/modules/mod/server.html @@ -371,7 +371,7 @@

Search

diff --git a/doc/html/modules/mod/share.html b/doc/html/modules/mod/share.html index 8c2c94f74..1821367e9 100644 --- a/doc/html/modules/mod/share.html +++ b/doc/html/modules/mod/share.html @@ -192,7 +192,7 @@

Search

diff --git a/doc/html/modules/mod/transfer.html b/doc/html/modules/mod/transfer.html index 8d9609ba5..18de22488 100644 --- a/doc/html/modules/mod/transfer.html +++ b/doc/html/modules/mod/transfer.html @@ -181,7 +181,7 @@

Search

diff --git a/doc/html/modules/mod/twitch.html b/doc/html/modules/mod/twitch.html index cae00cac8..97115d071 100644 --- a/doc/html/modules/mod/twitch.html +++ b/doc/html/modules/mod/twitch.html @@ -196,7 +196,7 @@

Partyline commands © Copyright 2024, Eggheads. - Last updated on Sep 08, 2024. + Last updated on Oct 13, 2024. Created using Sphinx 8.0.2. diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index cf3f5bae6..37981cdcb 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -169,7 +169,7 @@

Search

diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index 0ec72e427..75cb7ca6b 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -161,7 +161,7 @@

Search

diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index ff40f4fed..721a0405f 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -426,7 +426,7 @@

What to do with a module? © Copyright 2024, Eggheads. - Last updated on Sep 08, 2024. + Last updated on Oct 13, 2024. Created using Sphinx 8.0.2. diff --git a/doc/html/search.html b/doc/html/search.html index 6718e6394..447d237b0 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -148,7 +148,7 @@

Search

diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 55f0bc3e7..906ac5dc1 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {".binds python": [[21, "binds-python"]], ".cancel [file] \u2026": [[16, "cancel-file-file"]], ".cd ": [[16, "cd-directory"]], ".cp ": [[16, "cp-source-dst"]], ".desc ": [[16, "desc-file-description"]], ".files": [[16, "files"]], ".filestats [clear]": [[16, "filestats-user-clear"]], ".filesys module": [[16, "id1"]], ".get [nickname]": [[16, "get-filename-nickname"]], ".hide [files] \u2026": [[16, "hide-file-files"]], ".ln ": [[16, "ln-bot-filepath-localfile"]], ".ls [filemask]": [[16, "ls-filemask"]], ".mkdir [flags [channel]]": [[16, "mkdir-dir-flags-channel"]], ".mv ": [[16, "mv-source-dest"]], ".optimize": [[16, "optimize"]], ".pending": [[16, "pending"]], ".pwd": [[16, "pwd"]], ".quit": [[16, "quit"]], ".rmdir ": [[16, "rmdir-dir"]], ".share [files] \u2026": [[16, "share-file-files"]], ".stats": [[16, "stats"]], ".unhide": [[16, "unhide"]], ".unshare [file] \u2026": [[16, "unshare-file-file"]], "About": [[42, "about"], [43, "about"], [50, "about"]], "About Eggdrop": [[0, null], [2, null]], "Account tracking in Eggdrop": [[36, null]], "Add a Host to a User": [[31, "add-a-host-to-a-user"]], "Add a User": [[31, "add-a-user"]], "Adding Bind Functionality": [[8, "adding-bind-functionality"]], "Adding a New Bind Type to the Bind Table": [[8, "adding-a-new-bind-type-to-the-bind-table"]], "Adding a Partyline Command": [[32, "adding-a-partyline-command"]], "Adding a Tcl Bind": [[32, "adding-a-tcl-bind"]], "Adding a Tcl Command": [[32, "adding-a-tcl-command"]], "Adding and linking bots": [[39, "adding-and-linking-bots"]], "Additional Information": [[34, "additional-information"]], "Additional functions": [[29, "additional-functions"]], "Advanced Settings": [[40, "advanced-settings"]], "Advanced Tips": [[51, null]], "Assign Permission Flags": [[31, "assign-permission-flags"]], "Assoc Module": [[9, null], [48, "assoc-module"]], "Authenticating with NickServ": [[31, "authenticating-with-nickserv"]], "Auto-starting Eggdrop": [[4, "auto-starting-eggdrop"]], "Automatically restarting an Eggdrop": [[31, "automatically-restarting-an-eggdrop"]], "Autoscripts File Structure": [[37, "autoscripts-file-structure"]], "Autoscripts usage": [[37, "autoscripts-usage"]], "Background": [[46, "background"]], "Bans, Invites, and Exempts": [[38, null]], "Basic Settings": [[40, "basic-settings"]], "Best-Effort Account Tracking": [[36, "best-effort-account-tracking"]], "Bind Flags": [[8, "bind-flags"]], "Bind Return Values": [[8, "bind-return-values"]], "Bind Types": [[48, "bind-types"], [52, "bind-types"]], "Binds": [[48, "binds"], [52, "binds"]], "Blowfish Module": [[10, null]], "Boring legal stuff": [[1, null]], "Bot Flags": [[39, "bot-flags"]], "Botnet": [[5, "botnet"], [50, "botnet"]], "Botnet Sharing and Linking": [[39, null]], "Botnet/Dcc/Telnet Settings": [[40, "botnet-dcc-telnet-settings"]], "C Binding": [[8, "c-binding"]], "C Handler": [[8, "c-handler"]], "CTCP CHAT/CHAT4/CHAT6": [[42, "ctcp-chat-chat4-chat6"]], "CTCP Module": [[14, null]], "Calling the Bind": [[32, "calling-the-bind"]], "Can I compile Eggdrop without dynamic modules? (Static compile)": [[7, "can-i-compile-eggdrop-without-dynamic-modules-static-compile"]], "Channel Commands": [[48, "channel-commands"]], "Channel Settings": [[11, "channel-settings"]], "Channels Module": [[11, null]], "Checking Account-tracking Status": [[36, "checking-account-tracking-status"]], "Command Line": [[4, "command-line"]], "Commands": [[52, "commands"]], "Common First Steps": [[31, null]], "Common first steps": [[31, "id1"]], "Compress Module": [[12, null], [48, "compress-module"]], "Config file changes": [[5, "config-file-changes"]], "Config file setup": [[16, "config-file-setup"]], "Configuration": [[33, "configuration"]], "Configuration File Preparation - Generating Keys": [[34, "configuration-file-preparation-generating-keys"]], "Configuration File Preparation - Listening with TLS": [[34, "configuration-file-preparation-listening-with-tls"]], "Configure Channel Settings": [[31, "configure-channel-settings"]], "Connecting to a TLS-enabled IRC server": [[34, "connecting-to-a-tls-enabled-irc-server"]], "Connecting to an Eggdrop listening with TLS": [[34, "connecting-to-an-eggdrop-listening-with-tls"]], "Console Module": [[13, null]], "Console Settings": [[40, "console-settings"]], "Control Procedures": [[48, "control-procedures"]], "Crontab Method (Old)": [[31, "crontab-method-old"]], "Cygwin Requirements (Windows)": [[3, "cygwin-requirements-windows"]], "DCC Commands": [[48, "dcc-commands"]], "DNS Module": [[15, null]], "Default Channel Values": [[11, "default-channel-values"]], "Defining bind arguments": [[32, "defining-bind-arguments"]], "Determining if a Server Supports Account Capabilities": [[36, "determining-if-a-server-supports-account-capabilities"]], "Development hints": [[37, "development-hints"]], "Disclaimer": [[53, "disclaimer"]], "Do I still need to \u2018loadmodule\u2019 modules?": [[7, "do-i-still-need-to-loadmodule-modules"]], "Docker": [[4, "docker"]], "Documentation": [[4, "documentation"], [5, "documentation"]], "Download locations": [[33, "download-locations"]], "Editing the config file": [[33, "editing-the-config-file"], [53, "editing-the-config-file"]], "Eggdrop Autoscripts": [[37, null]], "Eggdrop Bind Internals": [[8, null]], "Eggdrop Core Settings": [[40, null]], "Eggdrop Features": [[41, null]], "Eggdrop Module Information": [[7, null]], "Eggdrop Modules": [[2, null]], "Eggdrop Python Commands": [[47, "eggdrop-python-commands"]], "Eggdrop Tcl Commands": [[48, null]], "Eggdrop Twitch Tcl Commands": [[52, null]], "Eggdrop, an open source IRC bot": [[2, null]], "Enable/Disable Channel Settings": [[11, "enable-disable-channel-settings"]], "Enabling Eggdrop Account Tracking": [[36, "enabling-eggdrop-account-tracking"]], "Enabling TLS Security on Eggdrop": [[34, null]], "Enabling hybrid configuration": [[46, "enabling-hybrid-configuration"]], "Enabling solo configuration": [[46, "enabling-solo-configuration"]], "Encryption/Hashing": [[46, null]], "Errata": [[43, "errata"]], "Example bottrees": [[39, "example-bottrees"]], "Executable Path": [[40, "executable-path"]], "Explaining the Linking/Sharing Process": [[35, "explaining-the-linking-sharing-process"]], "FTP": [[4, "ftp"]], "File and Directory Settings": [[40, "file-and-directory-settings"]], "File placement": [[37, "file-placement"]], "Filesys Module": [[16, null], [48, "filesys-module"]], "Flag Masks": [[48, "flag-masks"]], "Flags": [[52, "flags"]], "General Workflow To Create a New Bind": [[8, "general-workflow-to-create-a-new-bind"]], "Getting the source": [[33, "getting-the-source"]], "Git Development Snapshot": [[4, "git-development-snapshot"]], "Global Variables": [[48, "global-variables"]], "Header section": [[47, "header-section"]], "History": [[33, "history"]], "How to Get Eggdrop": [[4, "how-to-get-eggdrop"]], "How to Upgrade": [[5, "how-to-upgrade"]], "How to Write an Eggdrop Module": [[29, null]], "How to get Eggdrop": [[2, "how-to-get-eggdrop"]], "How to install Eggdrop": [[2, "how-to-install-eggdrop"]], "How to install a module": [[7, "how-to-install-a-module"]], "How to share userfiles- the super-short version": [[35, "how-to-share-userfiles-the-super-short-version"]], "Hybrid Configuration": [[46, "hybrid-configuration"]], "IPv6 support": [[42, null]], "IRC": [[50, "irc"]], "IRC Module": [[18, null]], "IRCv3 support": [[43, null]], "Ident Module": [[17, null]], "Installation": [[2, "installation"], [33, "installation"], [42, "installation"], [50, "installation"]], "Installation Pre-requisites": [[2, "installation-pre-requisites"]], "Installing Eggdrop": [[2, null], [3, null]], "Join a Channel": [[31, "join-a-channel"]], "Keeping Logs": [[51, "keeping-logs"]], "Keys, certificates and authentication": [[50, "keys-certificates-and-authentication"]], "Limitations": [[26, "limitations"]], "Loading Python": [[21, "loading-python"], [47, "loading-python"]], "Log Files": [[40, "log-files"]], "Log on to the partyline": [[31, "log-on-to-the-partyline"]], "MODULE_close ()": [[29, "module-close"]], "MODULE_expmem": [[29, "module-expmem"]], "MODULE_report": [[29, "module-report"]], "MODULE_start": [[29, "module-start"]], "MODULE_table": [[29, "module-table"]], "Making bots share user records": [[39, "making-bots-share-user-records"]], "Manifest.json": [[37, "manifest-json"]], "Match Characters": [[48, "match-characters"]], "Minimum Requirements": [[4, "minimum-requirements"]], "Miscellaneous Commands": [[48, "miscellaneous-commands"]], "Modifying Default Strings": [[51, "modifying-default-strings"]], "Modularizing Your Config File": [[51, "modularizing-your-config-file"]], "Module Header": [[32, "module-header"]], "Module requirements": [[29, "module-requirements"]], "Modules": [[3, "modules"], [5, "modules"], [40, "modules"]], "Modules included with Eggdrop": [[6, null]], "Must-read changes for Eggdrop v1.10": [[5, "must-read-changes-for-eggdrop-v1-10"]], "No show?": [[33, "no-show"]], "Notes Module": [[19, null], [48, "notes-module"]], "Notice": [[4, "notice"]], "Obtaining Help": [[4, "obtaining-help"]], "On the Hub Bot": [[35, "on-the-hub-bot"]], "On the Leaf Bot": [[35, "on-the-leaf-bot"]], "Output Commands": [[48, "output-commands"]], "PBKDF2 Module": [[20, null], [48, "pbkdf2-module"]], "Partyline Commands": [[21, "partyline-commands"]], "Partyline commands": [[26, "partyline-commands"]], "Partyline usage": [[16, "partyline-usage"]], "Patching Eggdrop": [[45, null]], "Pre-requisites": [[34, "pre-requisites"]], "Prerequisites": [[33, "prerequisites"]], "Protecting Botnet Communications": [[34, "protecting-botnet-communications"]], "Python Module": [[21, null]], "Quick Startup": [[3, "quick-startup"], [4, "quick-startup"]], "README": [[4, null]], "Registering with Twitch": [[53, "registering-with-twitch"]], "Removing a bind": [[48, "removing-a-bind"]], "Renaming commands": [[51, "renaming-commands"]], "Required Code": [[32, "required-code"]], "Required Server Capabilities": [[36, "required-server-capabilities"]], "Return Values": [[48, "return-values"]], "SSL Settings": [[40, "ssl-settings"]], "SSL/TLS Settings": [[50, "ssl-tls-settings"]], "Scripts": [[5, "scripts"], [40, "scripts"], [50, "scripts"]], "Secure (TLS) Links": [[39, "secure-tls-links"]], "Secure DCC": [[50, "secure-dcc"]], "Seen Module": [[22, null]], "Self-logging": [[51, "self-logging"]], "Server Module": [[23, null]], "Setting Up Eggdrop": [[33, null]], "Setting up SASL authentication": [[31, "setting-up-sasl-authentication"]], "Settings": [[42, "settings"]], "Share Module": [[24, null]], "Sharing Userfiles": [[35, null]], "Solo configuration": [[46, "solo-configuration"]], "Some things you can do with Eggdrop": [[2, "some-things-you-can-do-with-eggdrop"]], "Stackable Binds: HT_STACKABLE": [[8, "stackable-binds-ht-stackable"]], "Stackable binds": [[48, "stackable-binds"]], "Starting the Eggdrop": [[33, "starting-the-eggdrop"]], "Submitting a patch via GitHub": [[45, "submitting-a-patch-via-github"]], "Summary": [[8, "summary"]], "Supported CAP capabilities": [[43, "supported-cap-capabilities"]], "System Pre-Requisites": [[4, "system-pre-requisites"]], "System Requirements": [[21, "system-requirements"], [47, "system-requirements"]], "Systemd Method (Newer Systems)": [[31, "systemd-method-newer-systems"]], "TCP Connections": [[48, "tcp-connections"]], "TLS support": [[50, null]], "Tcl API": [[26, "tcl-api"]], "Tcl Commands": [[5, "tcl-commands"], [21, "tcl-commands"], [37, "tcl-commands"]], "Tcl File": [[37, "tcl-file"]], "Tcl Interface": [[46, "tcl-interface"]], "Terms": [[39, "terms"]], "Textfile Substitutions": [[49, null]], "The Party Line": [[44, null]], "The super-short version": [[33, "the-super-short-version"]], "Transfer Module": [[25, null]], "Triggering any Bind": [[8, "triggering-any-bind"]], "Tutorials": [[2, null]], "Twitch": [[53, null]], "Twitch IRC limitations": [[53, "twitch-irc-limitations"]], "Twitch Module": [[26, null]], "Twitch web UI functions": [[53, "twitch-web-ui-functions"]], "Upgrading": [[4, "upgrading"]], "Upgrading Eggdrop": [[5, null]], "Uptime Module": [[27, null]], "Usage": [[42, "usage"], [43, "usage"], [46, "usage"], [50, "usage"]], "User Record Manipulation Commands": [[48, "user-record-manipulation-commands"]], "Users and Flags": [[54, null]], "Using Accounts with Tcl Scripts": [[36, "using-accounts-with-tcl-scripts"]], "Using Eggdrop": [[2, null]], "Using botflags": [[39, "using-botflags"]], "Using certificates to authenticate Eggdrops": [[39, "using-certificates-to-authenticate-eggdrops"]], "Using the Bind in Tcl": [[8, "using-the-bind-in-tcl"]], "Using the Python Module": [[47, null]], "Value-based Channel Settings": [[11, "value-based-channel-settings"]], "Variables in Your Config": [[51, "variables-in-your-config"]], "WHOX": [[36, "whox"]], "What are modules?": [[7, "what-are-modules"]], "What is Eggdrop?": [[4, "what-is-eggdrop"]], "What is a botnet?": [[39, "what-is-a-botnet"]], "What to do with a module?": [[29, "what-to-do-with-a-module"]], "Where to find more help": [[2, "where-to-find-more-help"]], "Woobie Module": [[28, null]], "Writing a Basic Eggdrop Module": [[32, null]], "Writing a module for use with Eggdrop": [[47, "writing-a-module-for-use-with-eggdrop"]], "Writing an Eggdrop Python script": [[47, "writing-an-eggdrop-python-script"]], "Writing an Eggdrop Script": [[30, null]], "account-notify": [[36, "account-notify"]], "account-tag": [[36, "account-tag"]], "account2nicks [channel]": [[48, "account2nicks-account-channel"]], "accounttracking": [[48, "accounttracking"]], "addbot
[botport [userport]]": [[48, "addbot-handle-address-botport-userport"]], "addchanrec ": [[48, "addchanrec-handle-channel"]], "adduser [hostmask]": [[48, "adduser-handle-hostmask"]], "and": [[48, "and"]], "assoc [name]": [[48, "assoc-chan-name"]], "backup": [[48, "backup"]], "banlist [channel]": [[48, "banlist-channel"]], "bind ": [[47, "bind-arguments"]], "bind [proc-name]": [[48, "bind-type-flags-keyword-mask-proc-name"]], "binds [type/mask]": [[48, "binds-type-mask"]], "boot [reason]": [[48, "boot-user-bot-reason"]], "botattr [changes [channel]]": [[48, "botattr-handle-changes-channel"]], "botishalfop [channel]": [[48, "botishalfop-channel"]], "botisop [channel]": [[48, "botisop-channel"]], "botisvoice [channel]": [[48, "botisvoice-channel"]], "botlist": [[48, "botlist"]], "botname": [[48, "botname"]], "botnick": [[48, "botnick"]], "botonchan [channel]": [[48, "botonchan-channel"]], "bots": [[48, "bots"]], "callevent ": [[48, "callevent-event"]], "cap [arg]": [[48, "cap-ls-values-req-enabled-raw-arg"]], "chanbans ": [[48, "chanbans-channel"]], "chandname2name ": [[48, "chandname2name-channel-dname"]], "chanexempts ": [[48, "chanexempts-channel"]], "chaninvites ": [[48, "chaninvites-channel"]], "chanlist [flags][<&|>chanflags]": [[48, "chanlist-channel-flags-chanflags"]], "channame2dname ": [[48, "channame2dname-channel-name"]], "channel add [option-list]": [[48, "channel-add-name-option-list"]], "channel get [setting]": [[48, "channel-get-name-setting"]], "channel info ": [[48, "channel-info-name"]], "channel remove ": [[48, "channel-remove-name"]], "channel set ": [[48, "channel-set-name-options"]], "channels": [[48, "channels"]], "chansettype ": [[48, "chansettype-setting"]], "chattr [changes [channel]]": [[48, "chattr-handle-changes-channel"]], "chhandle ": [[48, "chhandle-old-handle-new-handle"]], "clean