diff --git a/AUTHORS b/AUTHORS index 0a0d78221..dc4275d08 100644 --- a/AUTHORS +++ b/AUTHORS @@ -104,4 +104,4 @@ See also: THANKS, doc/Versions, doc/Changes ------------------------------------------------------------------------------ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/CONTENTS b/CONTENTS index ac9540049..6b5dbc606 100644 --- a/CONTENTS +++ b/CONTENTS @@ -82,4 +82,4 @@ Last revised: September 21, 2018 Contains information on upgrading from a 1.6 bot to a 1.8 bot. _____________________________________________________________________ - Copyright (C) 2003 - 2021 Eggheads Development Team + Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/FEATURES b/FEATURES index 5f8fafe56..4de630f7e 100644 --- a/FEATURES +++ b/FEATURES @@ -44,4 +44,4 @@ Eggdrop Features Copyright (C) 1997 Robey Pointer -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/INSTALL b/INSTALL index 1b355fd85..81e2a5184 100644 --- a/INSTALL +++ b/INSTALL @@ -158,5 +158,5 @@ the README file. If not, then READ IT!&@#%@! Have fun with Eggdrop! - Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2022 Eggheads + Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/NEWS b/NEWS index 6af6b7bac..e6e210449 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,35 @@ Last revised: December 4, 2021 _________________________________________________________________ +Eggdrop v1.9.5: + + 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 + + Botnet changes: + - None + + 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! :) + + Module changes: + - Updated woobie.mod with additional example code + + Eggdrop config changes: + - None + + 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: @@ -181,7 +210,7 @@ Eggdrop v1.9.0: - 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 asynchronus DNS requests similar to the what + 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. @@ -288,4 +317,4 @@ Eggdrop v1.9.0: ________________________________________________________________________ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/README b/README index 9e5bef168..9696eee5d 100644 --- a/README +++ b/README @@ -216,5 +216,5 @@ OBTAINING HELP - Don't ask to ask- just state your question, along with any relevant details and error messages -Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2022 Eggheads +Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/THANKS b/THANKS index 1f3f5ba6f..fb26bdb6e 100644 --- a/THANKS +++ b/THANKS @@ -34,7 +34,7 @@ Fabian Fabian Knittel fabian.knittel@avona.com Fred1 Chris Fuller G`Quann Florian Sander gquann@gmx.de Geo Geo Van O geo@eggheads.org -guppy Jeff Fisher guppy@techmonkeys.org +guppy Jeff Fisher jeff@zaf.ca ITE Federico Mennite ite@freex.ch Jason Jason Ede j.d.ede@sheffield.ac.uk John` John Johnny@technik.sth.ac.at @@ -236,6 +236,7 @@ eelcohuininga Eelco Huininga Ehrenberg ejm Emmanuel Marty +Empus Erick- Erick Velez erick@erick.org eryg-kai Evo|ver @@ -312,7 +313,7 @@ jay Jay Maynard Jay S. Monk jedis - Jeff Fisher guppy@techmonkeys.org + Jeff Fisher jeff@zaf.ca jeffx Jerome jerrold @@ -509,6 +510,7 @@ Robby robby@chatbelgie.be Roger Yerramsetti Rok Papez romulus +rsc Robert Scheck Rufus S Wilcox S7reaM diff --git a/aclocal.m4 b/aclocal.m4 index fc810bc45..f0df8ce91 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ dnl aclocal.m4: macros autoconf uses when building configure from configure.ac dnl -dnl Copyright (C) 1999 - 2022 Eggheads Development Team +dnl Copyright (C) 1999 - 2023 Eggheads Development Team dnl dnl This program is free software; you can redistribute it and/or dnl modify it under the terms of the GNU General Public License @@ -1087,14 +1087,14 @@ dnl AC_DEFUN([EGG_TCL_CHECK_VERSION], [ - if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 3; then + if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 5; then cat << EOF >&2 configure: error: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is $tclrecommendver and can be downloaded from - ${tclrecommendsite}. We require at least Tcl 8.3. + ${tclrecommendsite}. We require at least Tcl 8.5. See doc/COMPILE-GUIDE's 'Tcl Detection and Installation' section for more information. @@ -1114,16 +1114,6 @@ dnl AC_DEFUN([EGG_CACHE_UNSET], [unset $1]) -dnl EGG_TCL_CHECK_NOTIFIER_INIT -dnl -AC_DEFUN([EGG_TCL_CHECK_NOTIFIER_INIT], -[ - if test $TCL_MAJOR_VERSION -gt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -ge 4; then - AC_DEFINE(HAVE_TCL_NOTIFIER_INIT, 1, [Define for Tcl that has the Tcl_NotifierProcs struct member initNotifierProc (8.4 and later).]) - fi -]) - - dnl EGG_SUBST_EGGVERSION() dnl AC_DEFUN([EGG_SUBST_EGGVERSION], @@ -1432,7 +1422,6 @@ dnl AC_DEFUN([EGG_IPV6_COMPAT], [ if test "$enable_ipv6" = "yes"; then - AC_CHECK_FUNCS([gethostbyname2]) AC_CHECK_TYPES([struct in6_addr], egg_cv_var_have_in6_addr="yes", egg_cv_var_have_in6_addr="no", [ #include #include diff --git a/config.h.in b/config.h.in index a0f0bbfe1..cec70a8a3 100644 --- a/config.h.in +++ b/config.h.in @@ -2,7 +2,7 @@ /* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2022 Eggheads Development Team + * Copyright (C) 1999 - 2023 Eggheads Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -111,9 +111,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H -/* Define to 1 if you have the `gethostbyname2' function. */ -#undef HAVE_GETHOSTBYNAME2 - /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE @@ -296,10 +293,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H -/* Define for Tcl that has the Tcl_NotifierProcs struct member - initNotifierProc (8.4 and later). */ -#undef HAVE_TCL_NOTIFIER_INIT - /* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE diff --git a/configure b/configure index b7e1fb352..2815718c8 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac 13ab0170. +# From configure.ac 1d62d238. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop 1.9.4. +# Generated by GNU Autoconf 2.69 for Eggdrop 1.9.5. # # Report bugs to . # @@ -12,7 +12,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (C) 1999 - 2022 Eggheads Development Team +# Copyright (C) 1999 - 2023 Eggheads Development Team ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -583,8 +583,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Eggdrop' PACKAGE_TARNAME='eggdrop' -PACKAGE_VERSION='1.9.4' -PACKAGE_STRING='Eggdrop 1.9.4' +PACKAGE_VERSION='1.9.5' +PACKAGE_STRING='Eggdrop 1.9.5' PACKAGE_BUGREPORT='bugs@eggheads.org' PACKAGE_URL='' @@ -1334,7 +1334,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop 1.9.4 to adapt to many kinds of systems. +\`configure' configures Eggdrop 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1401,7 +1401,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Eggdrop 1.9.4:";; + short | recursive ) echo "Configuration of Eggdrop 1.9.5:";; esac cat <<\_ACEOF @@ -1511,14 +1511,14 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Eggdrop configure 1.9.4 +Eggdrop configure 1.9.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team _ACEOF exit fi @@ -2222,7 +2222,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Eggdrop $as_me 1.9.4, which was +It was created by Eggdrop $as_me 1.9.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -7985,7 +7985,7 @@ rm -f conftest.mmap conftest.txt # Tcl version to recommend if no Tcl is found, and the site where it can be # found for download. tclrecommendver="8.6.X" -tclrecommendsite="ftp://ftp.tcl.tk/pub/tcl/tcl8_6/" +tclrecommendsite="https://sourceforge.net/projects/tcl/files/Tcl/" # Tcl header filenames. tclheadernames="tcl.h" @@ -8933,14 +8933,14 @@ $as_echo "$TCL_INCLUDE_SPEC" >&6; } - if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 3; then + if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 5; then cat << EOF >&2 configure: error: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is $tclrecommendver and can be downloaded from - ${tclrecommendsite}. We require at least Tcl 8.3. + ${tclrecommendsite}. We require at least Tcl 8.5. See doc/COMPILE-GUIDE's 'Tcl Detection and Installation' section for more information. @@ -8951,13 +8951,6 @@ EOF - if test $TCL_MAJOR_VERSION -gt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -ge 4; then - -$as_echo "#define HAVE_TCL_NOTIFIER_INIT 1" >>confdefs.h - - fi - - if test "x$TCLINCFN" != x; then egg_tclinc="\\\"$TCLINC/$TCLINCFN\\\"" else @@ -9335,17 +9328,6 @@ $as_echo "#define IPV6 1" >>confdefs.h if test "$enable_ipv6" = "yes"; then - for ac_func in gethostbyname2 -do : - ac_fn_c_check_func "$LINENO" "gethostbyname2" "ac_cv_func_gethostbyname2" -if test "x$ac_cv_func_gethostbyname2" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETHOSTBYNAME2 1 -_ACEOF - -fi -done - ac_fn_c_check_type "$LINENO" "struct in6_addr" "ac_cv_type_struct_in6_addr" " #include #include @@ -10513,7 +10495,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Eggdrop $as_me 1.9.4, which was +This file was extended by Eggdrop $as_me 1.9.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10579,7 +10561,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Eggdrop config.status 1.9.4 +Eggdrop config.status 1.9.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index f6c66bbae..defe04557 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ dnl configure.ac: this file is processed by autoconf to produce ./configure. AC_PREREQ(2.61) -AC_INIT([Eggdrop],[1.9.4],[bugs@eggheads.org]) -AC_COPYRIGHT([Copyright (C) 1999 - 2022 Eggheads Development Team]) +AC_INIT([Eggdrop],[1.9.5],[bugs@eggheads.org]) +AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) AC_LANG([C]) AC_REVISION([m4_esyscmd([misc/getcommit])]) AC_CONFIG_SRCDIR(src/eggdrop.h) @@ -14,7 +14,7 @@ AC_PRESERVE_HELP_ORDER dnl config.h stuff AH_TOP([/* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2022 Eggheads Development Team + * Copyright (C) 1999 - 2023 Eggheads Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -122,7 +122,7 @@ AC_FUNC_MMAP # Tcl version to recommend if no Tcl is found, and the site where it can be # found for download. tclrecommendver="8.6.X" -tclrecommendsite="ftp://ftp.tcl.tk/pub/tcl/tcl8_6/" +tclrecommendsite="https://sourceforge.net/projects/tcl/files/Tcl/" # Tcl header filenames. tclheadernames="tcl.h" @@ -136,7 +136,6 @@ EGG_TCL_WITH_TCLLIB EGG_TCL_WITH_TCLINC EGG_TCL_TCLCONFIG EGG_TCL_CHECK_VERSION -EGG_TCL_CHECK_NOTIFIER_INIT EGG_TCL_LUSH diff --git a/doc/ABOUT b/doc/ABOUT index 30fb3e7ff..dd7301edd 100644 --- a/doc/ABOUT +++ b/doc/ABOUT @@ -55,4 +55,4 @@ About Eggdrop - Tcl -- Eggdrop cannot compile without Tcl installed on your shell. - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BANS b/doc/BANS index 747f95ffa..0eb2ddfdb 100644 --- a/doc/BANS +++ b/doc/BANS @@ -75,4 +75,4 @@ Bans, Invites, and Exempts file) or until the channel goes -i again, whichever happens last. - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BOTNET b/doc/BOTNET index d3e700766..a0bef1c93 100644 --- a/doc/BOTNET +++ b/doc/BOTNET @@ -1,4 +1,4 @@ -Botnet Sharing and Linking Last revised: Nov 09, 2017 +Botnet Sharing and Linking Botnet Sharing and Linking @@ -171,6 +171,16 @@ At this point, you can link the two bots by typing '.link BotA' on BotB passwords which are not stored encrypted in the userfile. Note that you can link as many bots as you wish to your botnet. +Secure (TLS) Links + +Since Eggdrop 1.8.0, the ability to encrypt bot links using TLS is +possible. On the hub bot you would prefix the port given in the listen +command with a +, and when you add the hub bot to the leaf, you would +prefix the port used in the .+bot command with a +. In other words, you +would set listen +5555 in the hub config and use .+bot hubbot 1.2.3.4 ++5555 on the leaf bot. These settings are explained more thoroughly in +the TLS botnet documentation. + USING BOTFLAGS Botflags are needed to assign special functions and tasks to your bots. @@ -338,4 +348,17 @@ MAKING BOTS SHARE USER RECORDS |-+beldin `-+Lameshare -Copyright (C) 1999 - 2022 Eggheads Development Team +USING CERTIFICATES TO AUTHENTICATE EGGDROPS + +Eggdrops can use certificates to authenticate when linking to each other +instead of a password. First, you must ensure you have set the +appropriate certificates in the ssl-privatekey and ssl-certificate +settings in the config file, and then enable the ssl-cert-auth setting. +Next, add the certificate on the partyline by using .fprint + to add the +fingerprint for the certificate currently in use, or .fprint to manually add a fingerprint. Once the config file +settings are set 0and fingerprints are added on the partyline, Eggdrops +will attempt to use their certificates instead of passwords for +authentication. + +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BUG-REPORT b/doc/BUG-REPORT index f1ceda1e8..f60096f40 100644 --- a/doc/BUG-REPORT +++ b/doc/BUG-REPORT @@ -26,7 +26,7 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 1) INFORMATION ABOUT YOUR EGGDROP 1.1) Eggdrop version: - 1.8.__ + 1.9._ 1.2) Make type: ( ) dynamic @@ -42,17 +42,11 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 2) INFORMATION ABOUT TCL 2.1) Tcl library version: - ( ) 8.3 - ( ) 8.4 - ( ) 8.5 - ( ) 8.6 + ( ) 8.5._ + ( ) 8.6._ ( ) Other - Which? ____ -2.2) Tcl library patchlevel: ___ - eg; p1, p2, etc for Tcl versions up to 8.0p2 - or the 3rd part of the version number for 8.0.3 and newer - -2.3) Tcl scripts used: +2.2) Tcl scripts used: [ ] alltools [ ] sentinel [ ] getops @@ -81,6 +75,7 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. ( ) SINIX ( ) Solaris/SunOS/OpenIndiana ( ) Ultrix + ( ) Windows Subsystem for Linux (WSL) ( ) Other - Which? _____________ 3.2) OS Version/Release: _____________ @@ -110,8 +105,10 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. useful if you could paste gdb's output during the following steps: First call gdb $ gdb eggdrop -c core + (systemd users could try coredumpctl) and then enter 'bt' on gdb's command line: (gdb) bt + (even more information could be obtained with 'bt full') Keep your core file for at least one week, so that the dev team can ask for further information if needed. However, don't send us the core file unless we ask for it. diff --git a/doc/COMPILE-GUIDE b/doc/COMPILE-GUIDE index 54e98d32f..7e4322866 100644 --- a/doc/COMPILE-GUIDE +++ b/doc/COMPILE-GUIDE @@ -1,5 +1,5 @@ Eggdrop Compile Guide and FAQ -Last revised: June 9, 2020 +Last revised: November 17, 2022 _____________________________________________________________________ Eggdrop Compile Guide and FAQ @@ -20,7 +20,7 @@ Last revised: June 9, 2020 A. Standard compile process (Linux, FreeBSD, NetBSD, OpenBSD, etc) B. HP-UX B.11.* C. Ultrix - D. Mac OS X + D. macOS (previously OS X and originally Mac OS X) E. AIX F. IRIX G. Solaris / SunOS @@ -187,7 +187,7 @@ Last revised: June 9, 2020 gmake install DEST=/home/user/otherdir - D. Mac OS X + D. macOS Follow the standard compile process in Section A. To compile dynamically (with module support), use 'make eggdrop' instead of 'make'. @@ -210,7 +210,7 @@ Last revised: June 9, 2020 If you notice a module that requires these changes, it would probably be a good idea to let the module's developer know, so it can be fixed. - Note that on Mac OS X, the DYLD_LIBRARY_PATH environment variable should + Note that on macOS, the DYLD_LIBRARY_PATH environment variable should be used instead of LD_LIBRARY_PATH. Install OpenSSL using homebrew: @@ -221,7 +221,7 @@ Last revised: June 9, 2020 Tell configure where to find tcl and openssl: - ./configure --with-tcl=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh --with-sslinc=/usr/local/opt/openssl/include --with-ssllib=/usr/local/opt/openssl/lib + ./configure --with-tcl=/System/Volumes/Data/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh -with-sslinc=/usr/local/Cellar/openssl@3/3.0.7/include --with-ssllib=/usr/local/Cellar/openssl@3/3.0.7/lib E. AIX Follow the standard compile process in Section A. To compile dynamically @@ -581,4 +581,4 @@ Last revised: June 9, 2020 _____________________________________________________________________ Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2021 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/CONTENTS b/doc/CONTENTS index ba059a05e..a56d03cb4 100644 --- a/doc/CONTENTS +++ b/doc/CONTENTS @@ -72,4 +72,4 @@ Last revised: Nov 01, 2010 notes in reverse chronological order. _____________________________________________________________________ - Copyright (C) 2003 - 2021 Eggheads Development Team + Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/doc/Changes1.0 b/doc/Changes1.0 index 4de0765b9..516ee5adb 100644 --- a/doc/Changes1.0 +++ b/doc/Changes1.0 @@ -1984,7 +1984,7 @@ Eggdrop Changes (since version 0.9) - Each channel keeps its own banlist now for temporary bans - - Changed various Tcl ban commands to accomidate the concept of having a + - Changed various Tcl ban commands to accommodate the concept of having a global banlist + separate banlist for each channel - Channel ban lists are sent by channel name to other sharebots @@ -2365,7 +2365,7 @@ Eggdrop Changes (since version 0.9) - Each channel keeps its own banlist now for temporary bans - - Changed various Tcl ban commands to accomidate the concept of having a + - Changed various Tcl ban commands to accommodate the concept of having a global banlist + separate banlist for each channel - Channel ban lists are sent by channel name to other sharebots diff --git a/doc/Changes1.8 b/doc/Changes1.8 index e66daa364..f472a38e0 100644 --- a/doc/Changes1.8 +++ b/doc/Changes1.8 @@ -135,7 +135,7 @@ Eggdrop v1.8.4rc1 (2018-12-12): 2018-10-26 * Run autotools * Allow -HQ to be added when no userfile is present. Closes #727 [Found by: Geo / Patch by: Cizzle] - 2018-10-24 * Fix forgoten #include . Fixes #732 + 2018-10-24 * Fix forgotten #include . Fixes #732 [Patch by: michaelortmann] * Fix nwcc compiler error. Fixes #729 [Patch by: michaelortmann] @@ -547,7 +547,7 @@ Eggdrop v1.8.2rc1 (2017-07-07): 2017-03-20 * Restore NEWS-1.8.0 as UPGRADE-1.8. * Update releaseprep to correct version.h on stable release 2017-03-18 * Add compatibility autoconf macro for stdint.h - * Update gitingore file. + * Update gitignore file. 2017-03-15 * Make depend. Eggdrop v1.8.1 (2017-03-27): diff --git a/doc/Changes1.9 b/doc/Changes1.9 index a8c1c3762..2f8fb420b 100644 --- a/doc/Changes1.9 +++ b/doc/Changes1.9 @@ -327,7 +327,7 @@ Eggdrop v1.9.0rc1: * Split tags into key/value pairs * Add tag-related definitions * Implement dict-based msg-tags - * Update buffer sizes to accomodate larger msgtag strings + * Update buffer sizes to accommodate larger msgtag strings * Prevent double-tapping internal binds * Update tagmsg to accept dicts 2020-01-29 * Fix eggdrop.conf typos diff --git a/doc/FIRST-SCRIPT b/doc/FIRST-SCRIPT index c98d00674..919531af7 100644 --- a/doc/FIRST-SCRIPT +++ b/doc/FIRST-SCRIPT @@ -225,4 +225,4 @@ of salt!)
-Copyright (C) 2003 - 2022 Eggheads Development Team +Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/doc/IPV6 b/doc/IPV6 index b088b8a8f..b181d3b14 100644 --- a/doc/IPV6 +++ b/doc/IPV6 @@ -77,4 +77,4 @@ Other affected variables: nat-ip works with IPv4 as it used to. It has no meaning for IPv6 and is not queried for IPv6 connections. -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/IRCv3 b/doc/IRCv3 index e72536ff9..2199771ee 100644 --- a/doc/IRCv3 +++ b/doc/IRCv3 @@ -54,4 +54,4 @@ The following capabilities are supported by Eggdrop: - setname - +typing -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/MODULES b/doc/MODULES index 9e6aeba41..b61a69b4b 100644 --- a/doc/MODULES +++ b/doc/MODULES @@ -418,4 +418,4 @@ WHAT TO DO WITH A MODULE? the modules directory on ftp.eggheads.org. Don't forget to mention in your text file which version Eggdrop the module is written for. -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/PARTYLINE b/doc/PARTYLINE index 4b4a030c1..3d490e611 100644 --- a/doc/PARTYLINE +++ b/doc/PARTYLINE @@ -34,4 +34,4 @@ prefixed with an apostrophe is sent to all users on the local bot only. You can change channels with the ".chat" command or even leave all channels with ".chat off". -Copyright (C) 2002 - 2022 Eggheads Development Team +Copyright (C) 2002 - 2023 Eggheads Development Team diff --git a/doc/PATCH-HOWTO b/doc/PATCH-HOWTO index abfa9c012..411ef0adc 100644 --- a/doc/PATCH-HOWTO +++ b/doc/PATCH-HOWTO @@ -34,4 +34,4 @@ To create a patch via github: 7. Pour yourself a cold one and bask in the warm feeling of contributing to the open source community! Karma++! -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/PBKDF2 b/doc/PBKDF2 index cbb4e5e81..7e60d55c7 100644 --- a/doc/PBKDF2 +++ b/doc/PBKDF2 @@ -138,4 +138,4 @@ where 'PBK method' is the method specified in the configuration file, 'salt' is the value used for the salt, and 'password hash' is the output of the hashing algorithm. -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/doc/TLS b/doc/TLS index d4c9661d3..991217fd4 100644 --- a/doc/TLS +++ b/doc/TLS @@ -202,4 +202,4 @@ verification and authorization. Higher values enable specific exceptions like allowing self-signed or expired certificates. Details are documented in eggdrop.conf. -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/TRICKS b/doc/TRICKS index 157390db8..dfc5dbb6d 100644 --- a/doc/TRICKS +++ b/doc/TRICKS @@ -58,4 +58,4 @@ normal Tcl file. For example, you can set 'userfile' and 'chanfile' to set userfile "$myvar.user" set chanfile "$myvar.chan" -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/USERS b/doc/USERS index de72d3bf6..5e561135f 100644 --- a/doc/USERS +++ b/doc/USERS @@ -97,4 +97,4 @@ global flag applies to all channels. The standard global flags are: user-defined flags (Capital letters A through Z). These are used by scripts, and their uses vary depending on the script that uses them. -Copyright (C) 2002 - 2022 Eggheads Development Team +Copyright (C) 2002 - 2023 Eggheads Development Team diff --git a/doc/Versions b/doc/Versions index 71187084b..61aaf483d 100644 --- a/doc/Versions +++ b/doc/Versions @@ -7,6 +7,8 @@ get in contact via #eggdrop on Libera so it can be added. Version Release date +1.9.5 Mar 11, 2023 +1.9.4 Dec 14, 2022 1.9.3 Aug 10, 2022 1.9.2 Mar 05, 2022 1.9.1 May 31, 2021 diff --git a/doc/core.settings b/doc/core.settings index 236709f7f..28b090666 100644 --- a/doc/core.settings +++ b/doc/core.settings @@ -231,9 +231,7 @@ logfile "logs/logfile" set logfile-suffix ".%d%b%Y" If keep-all-logs is 1, this setting will define the suffix of the logfiles. The default will result in a suffix like "04May2000". "%Y%m%d" will produce the often used - yyyymmdd format. Read the strftime manpages for more options. NOTE: - On systems which don't support strftime, the default format will - always be used. + yyyymmdd format. Read the strftime manpages for more options. CONSOLE SETTINGS @@ -712,4 +710,4 @@ point. source scripts/alltools.tcl source scripts/action.fix.tcl -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css index 9b49ca350..18255e5ae 100644 --- a/doc/html/_static/basic.css +++ b/doc/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -15,6 +15,12 @@ div.clearer { clear: both; } +div.section::after { + display: block; + content: ''; + clear: left; +} + /* -- relbar ---------------------------------------------------------------- */ div.related { @@ -124,7 +130,7 @@ ul.search li a { font-weight: bold; } -ul.search li div.context { +ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -216,7 +222,7 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; + min-width: 360px; max-width: 800px; } @@ -261,19 +267,25 @@ p.rubric { font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -287,30 +299,45 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; - padding: 7px 7px 0 7px; + padding: 7px; background-color: #ffe; width: 40%; float: right; + clear: right; + overflow-x: auto; } p.sidebar-title { font-weight: bold; } +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + /* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, div.topic { border: 1px solid #ccc; - padding: 7px 7px 0 7px; + padding: 7px; margin: 10px 0 10px 0; } @@ -332,10 +359,6 @@ div.admonition dt { font-weight: bold; } -div.admonition dl { - margin-bottom: 0; -} - p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; @@ -346,9 +369,34 @@ div.body p.centered { margin-top: 25px; } +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + /* -- tables ---------------------------------------------------------------- */ table.docutils { + margin-top: 10px; + margin-bottom: 10px; border: 0; border-collapse: collapse; } @@ -358,6 +406,11 @@ table.align-center { margin-right: auto; } +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } @@ -373,10 +426,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -391,22 +440,34 @@ table.citation td { border-bottom: none; } +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -433,10 +494,71 @@ table.field-list td, table.field-list th { /* -- hlist styles ---------------------------------------------------------- */ +table.hlist { + margin: 1em 0; +} + table.hlist td { vertical-align: top; } +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + /* -- other body styles ----------------------------------------------------- */ @@ -460,11 +582,81 @@ ol.upperroman { list-style: upper-roman; } +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + dl { margin-bottom: 15px; } -dd p { +dd > :first-child { margin-top: 0px; } @@ -478,6 +670,11 @@ dd { margin-left: 30px; } +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + dt:target, span.highlighted { background-color: #fbe54e; } @@ -491,14 +688,6 @@ dl.glossary dt { font-size: 1.1em; } -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - .versionmodified { font-style: italic; } @@ -537,6 +726,13 @@ dl.glossary dt { font-style: oblique; } +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + abbr, acronym { border-bottom: dotted 1px; cursor: help; @@ -549,29 +745,69 @@ pre { overflow-y: hidden; /* fixes display issues on Chrome browsers */ } +pre, div[class*="highlight-"] { + clear: both; +} + span.pre { -moz-hyphens: none; -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; } td.linenos pre { - padding: 5px 0px; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { - margin-left: 0.5em; + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; } table.highlighttable td { - padding: 0 0.5em 0 0.5em; + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; } div.code-block-caption { + margin-top: 1em; padding: 2px 5px; font-size: small; } @@ -580,8 +816,14 @@ div.code-block-caption code { background-color: transparent; } -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { @@ -593,21 +835,7 @@ div.code-block-caption span.caption-text { } div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; + margin: 1em 0; } code.xref, a code { @@ -648,8 +876,7 @@ span.eqno { } span.eqno a.headerlink { - position: relative; - left: 0px; + position: absolute; z-index: 1; } diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js index 344db17dd..d06a71d75 100644 --- a/doc/html/_static/doctools.js +++ b/doc/html/_static/doctools.js @@ -2,314 +2,155 @@ * doctools.js * ~~~~~~~~~~~ * - * Sphinx JavaScript utilities for all documentation. + * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - return result; }; -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - /** * Small JavaScript module for the documentation. */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + * helper function to focus on search bar */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * highlight the search words provided in the url in the text + * Initialise the domain index toggle buttons */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, + }; - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } + break; } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); +_ready(Documentation.init); diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index c0721a95a..eb68a3b87 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,10 +1,14 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.9.4', - LANGUAGE: 'None', + VERSION: '1.9.5', + LANGUAGE: 'en', COLLAPSE_INDEX: false, + BUILDER: 'html', FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/doc/html/_static/language_data.js b/doc/html/_static/language_data.js index 5266fb19e..250f5665f 100644 --- a/doc/html/_static/language_data.js +++ b/doc/html/_static/language_data.js @@ -5,15 +5,16 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ -var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; -/* Non-minified version JS is _stemmer.js if file is provided */ +/* Non-minified version is copied as a separate JS file, is available */ + /** * Porter Stemmer */ @@ -196,102 +197,3 @@ var Stemmer = function() { } } - - - - -var splitChars = (function() { - var result = {}; - var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, - 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, - 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, - 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, - 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, - 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, - 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, - 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, - 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, - 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; - var i, j, start, end; - for (i = 0; i < singles.length; i++) { - result[singles[i]] = true; - } - var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], - [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], - [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], - [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], - [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], - [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], - [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], - [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], - [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], - [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], - [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], - [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], - [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], - [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], - [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], - [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], - [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], - [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], - [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], - [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], - [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], - [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], - [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], - [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], - [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], - [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], - [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], - [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], - [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], - [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], - [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], - [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], - [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], - [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], - [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], - [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], - [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], - [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], - [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], - [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], - [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], - [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], - [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], - [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], - [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], - [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], - [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], - [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], - [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; - for (i = 0; i < ranges.length; i++) { - start = ranges[i][0]; - end = ranges[i][1]; - for (j = start; j <= end; j++) { - result[j] = true; - } - } - return result; -})(); - -function splitQuery(query) { - var result = []; - var start = -1; - for (var i = 0; i < query.length; i++) { - if (splitChars[query.charCodeAt(i)]) { - if (start !== -1) { - result.push(query.slice(start, i)); - start = -1; - } - } else if (start === -1) { - start = i; - } - } - if (start !== -1) { - result.push(query.slice(start)); - } - return result; -} - - diff --git a/doc/html/_static/pygments.css b/doc/html/_static/pygments.css index 20c4814dc..691aeb82d 100644 --- a/doc/html/_static/pygments.css +++ b/doc/html/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/doc/html/_static/searchtools.js b/doc/html/_static/searchtools.js index 5ff318066..97d56a74d 100644 --- a/doc/html/_static/searchtools.js +++ b/doc/html/_static/searchtools.js @@ -4,22 +4,24 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ +"use strict"; -if (!Scorer) { - /** - * Simple result scoring code. - */ +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { var Scorer = { // Implement the following function to further tweak the score for each result - // The function takes a result array [filename, title, anchor, descr, score] + // The function takes a result array [docname, title, anchor, descr, score, filename] // and returns the new score. /* - score: function(result) { - return result[4]; + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score }, */ @@ -28,423 +30,508 @@ if (!Scorer) { // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object - objPrio: {0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5}, // used to be unimportantResults + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, // Used when the priority is not in the mapping. objPrioDefault: 0, // query found in title title: 15, + partialTitle: 7, // query found in terms - term: 5 + term: 5, + partialTerm: 2, }; } -if (!splitQuery) { - function splitQuery(query) { - return query.split(/\s+/); +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings } /** * Search Module */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; }, - loadIndex : function(url) { - $.ajax({type: "GET", url: url, data: null, - dataType: "script", cache: true, - complete: function(jqxhr, textstatus) { - if (textstatus != "success") { - document.getElementById("searchindexloader").src = url; - } - }}); + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); }, - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); } }, - hasIndex : function() { - return this._index !== null; - }, + hasIndex: () => Search._index !== null, - deferQuery : function(query) { - this._queued_query = query; - }, + deferQuery: (query) => (Search._queued_query = query), - stopPulse : function() { - this._pulse_status = 0; - }, + stopPulse: () => (Search._pulse_status = -1), - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - var i; + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - } + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; pulse(); }, /** * perform a search for something (or wait until index is loaded) */ - performSearch : function(query) { + performSearch: (query) => { // create the required interface elements - this.out = $('#search-results'); - this.title = $('

' + _('Searching') + '

').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

').appendTo(this.out); - this.output = $(' -

Using Eggdrop

+

Using Eggdrop

-

Tutorials

+

Tutorials

-

Eggdrop Modules

+

Eggdrop Modules

-

About Eggdrop

+

About Eggdrop

  • About Eggdrop
  • Boring legal stuff
  • @@ -103,30 +100,29 @@

    Search

    -
    -

    Upgrading Eggdrop

    +
    +

    Upgrading Eggdrop

    It is easy to upgrade Eggdrop to a new version! To have a full picture of the changes made since your last upgrade, we recommend reading the NEWS file. Upgrades from the 1.6 and 1.8 lines of Eggdrop should take place with little to no issues. The config file, user files, and channel files can all be reused.

    For support, feel free to visit us on Libera #eggdrop.

    -
    -

    How to Upgrade

    +
    +

    How to Upgrade

    To upgrade to a newer version of Eggdrop, first backup your .config file, .user file, and .chan file. While they are saved and should not be overwritten by the upgrade process, it never hurts to make anothere copy :)

    Next, view the NEWS file to see what changes have been made, paying particular attention to the config file section to see what new/different commands have been added. Update your config file appropriately.

    Then, simply follow the same steps you followed to install Eggdrop previously. Download the source, unzip/untar it, and run the ‘./configure’, ‘make config’, ‘make’, and ‘make install’ commands. 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.9

    These are NOT all the changes or new settings; rather just the “killer” changes that may directly affect Eggdrop’s previous performance without modification.

    -
    -

    Config file changes

    +
    +

    Config file changes

    To migrate from a 1.8 to a 1.9 Eggdrop, some changes are suggested to be made in your configuration file:

      -
    • Eggdrop has deprecated the blowfish module for password hashing in favor of the PBKDF2 module. This is a BIG change which, if done carelessly, has the potential to render stored passwords useless. Please see doc/PBKDF2 for information on how to properly migrate your userfiles and passwords to the new module.

      -
    • -
    • Eggdrop 1.9 switched from the “set servers {}” syntax to the “server add” command. For example, if your configuration file previously had:

      +
    • Eggdrop has deprecated the blowfish module for password hashing in favor of the PBKDF2 module. This is a BIG change which, if done carelessly, has the potential to render stored passwords useless. Please see doc/PBKDF2 for information on how to properly migrate your userfiles and passwords to the new module.

    • +
    • Eggdrop 1.9 switched from the “set servers {}” syntax to the “server add” command. For example, if your configuration file previously had:

      set servers {
         my.server.com:6667
       }
      @@ -138,34 +134,34 @@ 

      Config file changesEggdrop no longer requires the ‘-n’ flag to start Eggdrop in terminal mode.

      -

    • +
    • Eggdrop no longer requires the ‘-n’ flag to start Eggdrop in terminal mode.

    -
    -
    +
    +

    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/

    -
    -
    -

    Scripts

    + +
    +

    Scripts

    All 3rd party Tcl scripts that work with Eggdrop v1.6/v1.8 should fully work with Eggdrop v1.9.

    -
    -
    -

    Botnet

    + +
    +

    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 ‘+’. If you wish your botnet to take advantage of encryption, use the .chaddr command to update your ports to start with a ‘+’.

    -
    -
    -

    Tcl Commands

    + +
    +

    Tcl Commands

    A lot of backwards-compatible additions and changes have been made to Tcl commands. Please look at doc/tcl-commands.doc to see them.

    -
    -
    -

    Documentation

    + +
    +

    Documentation

    Documentation has been updated to reflect new and removed commands and variables.

    -
    -
    -
    + + + +
    @@ -190,9 +186,9 @@

    Documentation
    diff --git a/doc/html/modules/assoc.html b/doc/html/modules/assoc.html index 913d65c1f..e00b9a19d 100644 --- a/doc/html/modules/assoc.html +++ b/doc/html/modules/assoc.html @@ -102,7 +102,7 @@

    Search

    loadmodule assoc
     
    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/blowfish.html b/doc/html/modules/blowfish.html index 380aaeb33..cc7a9c8da 100644 --- a/doc/html/modules/blowfish.html +++ b/doc/html/modules/blowfish.html @@ -128,7 +128,7 @@

    Search

    loadmodule blowfish
     
    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/channels.html b/doc/html/modules/channels.html index aa81acf05..bc267dc1e 100644 --- a/doc/html/modules/channels.html +++ b/doc/html/modules/channels.html @@ -504,7 +504,7 @@

    Search

    }

    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/compress.html b/doc/html/modules/compress.html index 81954ac85..f73333233 100644 --- a/doc/html/modules/compress.html +++ b/doc/html/modules/compress.html @@ -137,7 +137,7 @@

    Search

    as those used by GNU gzip. -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/console.html b/doc/html/modules/console.html index 1a7aa30e5..fea12a5fd 100644 --- a/doc/html/modules/console.html +++ b/doc/html/modules/console.html @@ -139,7 +139,7 @@

    Search

    when they join a botnet channel. -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/ctcp.html b/doc/html/modules/ctcp.html index d4616277a..1f1926884 100644 --- a/doc/html/modules/ctcp.html +++ b/doc/html/modules/ctcp.html @@ -156,7 +156,7 @@

    Search

    There are also several variables to help make your bot less noticeable. They are: ctcp-version, ctcp-finger, and ctcp-userinfo. You can use set to set them to values you’d like.

    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/dns.html b/doc/html/modules/dns.html index a772c22c2..6450379bc 100644 --- a/doc/html/modules/dns.html +++ b/doc/html/modules/dns.html @@ -152,7 +152,7 @@

    Search

    the query. The value must be in seconds. -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/filesys.html b/doc/html/modules/filesys.html index 11096914d..9574e8bcc 100644 --- a/doc/html/modules/filesys.html +++ b/doc/html/modules/filesys.html @@ -309,7 +309,7 @@

    .optimize

    .unhide

    @@ -332,7 +332,7 @@

    .filesys moduleSearch

    for potential ways to implement this setting. -

    Copyright (C) 2019 - 2022 Eggheads Development Team

    +

    Copyright (C) 2019 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/included.html b/doc/html/modules/included.html index 0ea348b20..4af3d9154 100644 --- a/doc/html/modules/included.html +++ b/doc/html/modules/included.html @@ -1,30 +1,25 @@ - + - + - - - Modules included with Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Modules included with Eggdrop — Eggdrop 1.9.5 documentation + + + + +
    diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index 546553921..a52851467 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -1,30 +1,25 @@ - + - + - - - Assoc Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Assoc Module — Eggdrop 1.9.5 documentation + + + + + @@ -364,9 +381,9 @@

    .filesys module
    diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 0fb9cf6a6..854645660 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -1,30 +1,25 @@ - + - + - - - Ident Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Ident Module — Eggdrop 1.9.5 documentation + + + + + @@ -289,9 +292,9 @@

    Search

    diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index f96790008..55227968f 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -1,30 +1,25 @@ - + - + - - - Notes Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Notes Module — Eggdrop 1.9.5 documentation + + + + + @@ -181,9 +179,9 @@

    Search

    diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index ce866e4b4..7ca50bc9d 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -1,30 +1,25 @@ - + - + - - - PBKDF2 Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + PBKDF2 Module — Eggdrop 1.9.5 documentation + + + + +
    diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index cc5e5f575..971d5676d 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -1,34 +1,29 @@ - + - + - - - Uptime Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Uptime Module — Eggdrop 1.9.5 documentation + + + + + - + @@ -39,13 +34,13 @@ @@ -156,7 +154,7 @@

    Search

    @@ -166,9 +164,9 @@

    Search

    diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index aad24ae95..53d098b1a 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -1,30 +1,25 @@ - + - + - - - Woobie Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Woobie Module — Eggdrop 1.9.5 documentation + + + + + -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/pbkdf2.html b/doc/html/modules/pbkdf2.html index b3fc92f1c..7cbf42856 100644 --- a/doc/html/modules/pbkdf2.html +++ b/doc/html/modules/pbkdf2.html @@ -145,7 +145,7 @@

    Search

    Number of rounds. The higher the number, the longer hashing takes; but also generally the higher the protection against brute force attacks.

    This module requires: none

    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/seen.html b/doc/html/modules/seen.html index b0193ec2c..3ba76754a 100644 --- a/doc/html/modules/seen.html +++ b/doc/html/modules/seen.html @@ -126,7 +126,7 @@

    Search

    loadmodule seen
     
    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/server.html b/doc/html/modules/server.html index c5c67c42d..5a9c69c01 100644 --- a/doc/html/modules/server.html +++ b/doc/html/modules/server.html @@ -344,7 +344,7 @@

    Search

    Eggdrop is 32. -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/share.html b/doc/html/modules/share.html index 4afc6f660..593929171 100644 --- a/doc/html/modules/share.html +++ b/doc/html/modules/share.html @@ -156,7 +156,7 @@

    Search

    are v1.5.1 or higher. -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/transfer.html b/doc/html/modules/transfer.html index 19d88ea4f..325d7a271 100644 --- a/doc/html/modules/transfer.html +++ b/doc/html/modules/transfer.html @@ -151,7 +151,7 @@

    Search

    be v1.9.0 or higher). -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/twitch.html b/doc/html/modules/twitch.html index f8dfb3c13..bc21cddcf 100644 --- a/doc/html/modules/twitch.html +++ b/doc/html/modules/twitch.html @@ -163,7 +163,7 @@

    Partyline commandsSearch

    loadmodule uptime
     
    -

    Copyright (C) 2001 - 2022 Eggheads Development Team

    +

    Copyright (C) 2001 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/woobie.html b/doc/html/modules/woobie.html index 1076d3c2b..02f5b6c8b 100644 --- a/doc/html/modules/woobie.html +++ b/doc/html/modules/woobie.html @@ -125,7 +125,7 @@

    Search

    loadmodule woobie
     
    -

    Copyright (C) 2000 - 2022 Eggheads Development Team

    +

    Copyright (C) 2000 - 2023 Eggheads Development Team

    diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index 4cd607b43..7789198fa 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -1,34 +1,29 @@ - + - + - - - Writing an Eggdrop Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + How to Write an Eggdrop Module — Eggdrop 1.9.5 documentation + + + + + - +
    @@ -39,13 +34,13 @@ + + +
    @@ -417,7 +413,7 @@

    What to do with a module? previous | - next
    @@ -427,9 +423,9 @@

    What to do with a module?

    diff --git a/doc/html/objects.inv b/doc/html/objects.inv index 3eeec3c4f..e31c384a3 100644 Binary files a/doc/html/objects.inv and b/doc/html/objects.inv differ diff --git a/doc/html/search.html b/doc/html/search.html index bab736ece..8eb843f1b 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -1,37 +1,28 @@ - + - + - - - Search — Eggdrop 1.9.4 documentation - - + + + Search — Eggdrop 1.9.5 documentation + + - - - - - - + + + + + - - - + @@ -42,13 +33,13 @@ @@ -146,9 +147,9 @@

    Search

    diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 8beae41b2..c047bfa80 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about/about","about/legal","index","install/install","install/readme","install/upgrading","modules/included","modules/index","modules/mod/assoc","modules/mod/blowfish","modules/mod/channels","modules/mod/compress","modules/mod/console","modules/mod/ctcp","modules/mod/dns","modules/mod/filesys","modules/mod/ident","modules/mod/irc","modules/mod/notes","modules/mod/pbkdf2","modules/mod/seen","modules/mod/server","modules/mod/share","modules/mod/transfer","modules/mod/twitch","modules/mod/uptime","modules/mod/woobie","modules/writing","tutorials/firstscript","tutorials/firststeps","tutorials/setup","tutorials/tlssetup","using/accounts","using/bans","using/botnet","using/core","using/features","using/ipv6","using/ircv3","using/partyline","using/patch","using/pbkdf2info","using/tcl-commands","using/text-sub","using/tls","using/tricks","using/twitch-tcl-commands","using/twitchinfo","using/users"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["about/about.rst","about/legal.rst","index.rst","install/install.rst","install/readme.rst","install/upgrading.rst","modules/included.rst","modules/index.rst","modules/mod/assoc.rst","modules/mod/blowfish.rst","modules/mod/channels.rst","modules/mod/compress.rst","modules/mod/console.rst","modules/mod/ctcp.rst","modules/mod/dns.rst","modules/mod/filesys.rst","modules/mod/ident.rst","modules/mod/irc.rst","modules/mod/notes.rst","modules/mod/pbkdf2.rst","modules/mod/seen.rst","modules/mod/server.rst","modules/mod/share.rst","modules/mod/transfer.rst","modules/mod/twitch.rst","modules/mod/uptime.rst","modules/mod/woobie.rst","modules/writing.rst","tutorials/firstscript.rst","tutorials/firststeps.rst","tutorials/setup.rst","tutorials/tlssetup.rst","using/accounts.rst","using/bans.rst","using/botnet.rst","using/core.rst","using/features.rst","using/ipv6.rst","using/ircv3.rst","using/partyline.rst","using/patch.rst","using/pbkdf2info.rst","using/tcl-commands.rst","using/text-sub.rst","using/tls.rst","using/tricks.rst","using/twitch-tcl-commands.rst","using/twitchinfo.rst","using/users.rst"],objects:{},objnames:{},objtypes:{},terms:{"04may2000":35,"3rd":5,"5c0":[21,30,35],"break":[15,42],"byte":[17,21,23,27,42],"case":[14,19,21,28,30,32,35,42],"catch":42,"char":[27,35,42],"const":27,"default":[2,3,4,10,11,14,15,17,21,23,29,30,31,32,33,35,41,42,44],"export":45,"final":[0,4,28,29,30,35,41],"function":[0,1,2,4,6,7,19,24,30,34,35,37,41,42,45,46],"import":[27,28,29,30,32,35,39,42],"int":27,"long":[6,10,14,18,21,22,33,35,42,43,46],"new":[4,5,7,19,24,28,29,30,32,35,36,37,38,39,40,41,44,45,47],"null":27,"public":[0,1,4,28,29,31,35,42,44,45,48],"return":[17,27,32,41,46],"short":[2,27,29,37,44],"static":[2,3,10,27,29,42],"super":2,"switch":[5,27,30,32,35,42,44,45],"throw":42,"true":28,"try":[3,4,6,7,20,21,25,27,28,29,30,32,35,46],"var":42,"void":27,"while":[0,4,5,10,16,24,30,32,33,35,39,41,42,47],AND:[19,30,42],ARE:28,Adding:[2,24,47],And:28,CVS:4,DNS:[2,6,42],DOING:28,For:[1,2,3,5,7,15,21,29,30,31,34,35,37,38,39,41,42,44,45,46,47],IPs:[29,31,37],NFS:23,NOT:[5,28,30,32,34,35,42,46],Not:[6,21,29,38],One:[0,4,28,32,42],THE:3,TLS:[2,3,4,5,29,30,35,42],That:[24,28,30,34,42,48],The:[0,1,2,3,4,5,6,10,11,13,14,15,16,19,21,22,23,24,25,27,28,29,31,32,33,34,35,36,38,41,42,44,45,46,47,48],Their:37,Then:[5,29,30,44],There:[1,3,4,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,29,31,32,33,35,37,41,43,44,47,48],These:[5,11,17,27,30,32,33,34,35,37,43,44,46,48],Use:[16,17,19,21,27,30,35,42],Used:42,Useful:42,Using:[2,27,42],WILL:46,With:[0,4,6,15,34,35,41,42,44],YES:7,Yes:[7,29],aaa:[],abcdechannel:42,abil:[2,7,16,31,32,36,42],abl:[3,6,10,15,17,21,30,32,35,39,41,42],abort:[23,30,42,44],about:[2,4,6,24,25,27,28,29,35,42,45,47],abov:[1,4,10,17,19,27,28,29,36,42,43],absolut:[0,31,42,48],abus:[0,2,4],accept:[15,22,24,31,34,35,42,44,47],access:[0,4,16,21,27,28,29,30,36,39,41,42,44,46,47,48],accomplish:3,accord:[1,42,48],accordingli:21,account:[0,2,4,16,18,27,29,30,36,38,40,41,47],accur:[32,42,46],accuraci:32,acknowledg:29,across:[0,4,34,38,40,42,45],act:[16,27,35,36,42,44],action:[28,29,31,35,42],activ:[2,10,16,30,32,33,39,42,44],actual:[0,4,15,27,28,31,35,39,42],acut:[],add:[3,4,5,7,10,16,17,24,27,28,30,31,32,34,35,36,41,47],add_builtin:27,add_hook:27,add_tcl_command:27,add_tcl_int:27,add_tcl_str:27,added:[0,3,4,5,19,22,24,28,30,32,34,35,36,37,38,41,42,44,46],addhost:17,adding:[7,21,27,35,36,38,42],addit:[2,4,5,16,21,30,35,42,44,46],addition:[16,30,32,42],addlang:[35,42],address:[18,22,25,30,34,35,37,44],addus:30,adh:35,adjust:[0,4,17],admin:[35,43],admit:23,advanc:[0,2,4,6,20,28,36],advantag:[5,30,45],advertis:[0,4,42],advis:[3,21,23],affect:[5,10,24,35,36,37,42,47],affet:42,affili:[1,47],after:[3,4,10,16,17,21,27,28,29,32,33,35,42,44,45,47],afterward:[17,35],again:[6,15,25,27,33,34,35,41,42,46],against:[10,15,19,21,28,30,41,42,46],age:42,aggress:34,aka:35,alarm:42,alert:[32,47],algorithm:[19,41],all:[1,5,6,7,10,13,14,15,17,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,44,45,46,47,48],alloc:[27,42],allow:[0,3,4,5,6,7,10,11,15,16,17,18,19,21,22,23,24,27,28,29,30,32,34,35,36,41,42,44,45,47],alltool:35,almost:[0,4,30,33,48],along:[4,15],alphabet:35,alphanumer:47,alreadi:[10,21,27,28,30,31,32,34,35,41,42,47],also:[0,2,3,4,7,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,29,30,33,34,35,36,39,41,42,43,44,45,46,47,48],alt:[21,35],alter:[15,36,42,47],altern:[2,4,16,21,30,31,34,35,42,44],although:[17,30,35,42],altnick:[21,30],altogeth:19,alwai:[0,3,4,10,30,32,33,35,42],amount:[6,35],anachron:31,ani:[0,1,3,4,5,7,12,15,16,17,18,21,22,24,27,28,29,30,33,35,36,39,41,42,44,46,47,48],annoi:28,announc:32,anonym:35,anoth:[0,10,15,17,18,21,22,27,30,34,35,42,43,46],another:5,ansi:42,answer:[0,7,13,16,21,28],any_other_funct:27,anymor:[6,9,19,35],anyon:[10,33,42],anyth:[0,4,15,28,29,30,34,35,39,42,46],anywai:35,anywher:[39,42],aol:[28,41],aop:10,apart:[27,35],api:6,apostroph:39,appear:[29,30,34,35,42,46],append:[27,42],appli:[30,33,35,41,48],applic:[1,35,42],appreci:31,appropri:[3,5,30,35,38,40,41],april:[24,46],apt:[30,31],arbitrari:42,arbitrarili:46,archiv:4,area:[6,15,35,42,45,48],aren:[30,35,42,45,46],arg:27,argument:[15,17,28,29,37,42,46],around:[0,4,24,31,37,42,47],arriv:42,ascii:42,ask:[4,17,29,30,39,42,44],assign:[34,35,42],assist:[2,30,32,44],assoc:[2,6],associ:[24,32,42,47],assum:[21,28,30,31,32,33,35,42],assumpt:38,assur:46,asynchron:[6,14,42],attach:[32,42,46],attack:[10,19,41],attempt:[4,5,10,16,17,21,24,31,32,33,34,35,42,44,47],attent:[5,21,32,42],attribut:[33,34,42,48],auch:27,aug:42,august:17,auth:[35,44],authent:[2,32,41,42,47],author:[28,31,35,44],auto:[2,3,34,48],autobotchk:[3,4,29],autoconf:3,autoconfigur:3,autodetect:44,autohalfop:10,autom:[0,2,4],automat:[2,3,4,5,12,16,21,30,32,33,34,35,36,37,41,42,44,47,48],autoop:10,autosav:12,autovoic:[10,48],avail:[4,10,15,19,25,27,29,30,31,35,36,37,39,42,47],avoid:[6,14,29],awai:[36,38,42],awar:42,awesom:28,b33f:30,baa:42,back:[21,28,30,35,37,40,41,42,45],background:[2,4,28],backslash:30,backup:[5,27],backward:[5,38],bad:[10,42,48],badg:48,badgui:46,ban:[0,2,4,10,17,24,34,35,36,47,48],bandwidth:[6,11],banner:[35,43],bar:42,barr:35,base64:29,base:[4,30,32,35,41,42],basi:30,basic:[2,4,6,7,20,28,30],bask:40,bbb:[],bcst:42,bear:1,becaus:[0,4,16,21,27,28,35,42,45,46,47],becom:[29,30,35,42],been:[0,1,4,5,15,17,21,27,33,35,36,42,46],beerbot:32,befor:[0,4,10,14,16,17,18,21,22,23,27,29,30,32,34,35,42,47],began:38,begin:[16,28,37,42],behalf:42,behav:42,behavior:[13,17,33,35,37,42],behind:35,being:[0,4,10,15,17,21,31,32,36,37,42,46],beldin:34,bell:42,belong:35,below:[10,15,16,22,24,27,28,30,35,41,42,46],best:[2,3,6,16,30,34,42,46],better:[3,4,6,20,29,30,35],between:[3,6,10,15,18,21,22,31,32,34,35,37,42],beverag:41,big:[5,23,42,45],binari:[3,31],bind:[2,16,17,21,24,27,28,32,35,45,47],birthdai:35,bit:[3,15,24,28,30,31,35,42,44,47],bitch:10,bitchx:42,blank:42,bless:1,blindli:17,bloat:7,block:[23,24,27,30,43,47],blowfish:[1,2,5,6,19,27,35,41,42],bodi:28,bogu:35,bold:[4,42,43,48],boldfac:42,boot:[4,35],bore:[2,4],boston:1,bot:[0,1,3,4,5,6,7,10,12,13,14,16,17,18,19,20,21,22,23,25,27,28,29,30,31,33,35,36,37,38,39,41,43,44,45,46,47,48],bota:34,botaddr:42,botaddress:42,botattr:34,botb:34,botc:34,botchk:[4,29,30],botdir:30,botfl:42,botflag:[2,22],both:[0,4,10,21,23,31,32,34,37,41,42,44],botnam:[29,34],botnet:[0,2,3,4,6,8,10,12,15,21,25,30,36,37,39,41,42,45,48],botnetcentr:43,botnetnick:42,botnetop:10,botnick:[21,28,29,30,35],bottom:28,bottre:2,bounc:17,bound:[16,35,42],boundari:14,box:[30,35],brace:10,bracket:37,branch:[4,40],breach:42,brief:30,broadcast:[24,39,42,46,47],broken:[15,28,35,42],brows:15,brute:19,buf:17,buffer:22,bug:[0,3,4,28,30,40],build:42,built:[2,16,42,45],builtin:[16,42],busi:28,button:[40,47],bypass:42,bywho:42,cach:[14,42],cafil:[35,44],calcul:21,call:[0,3,4,27,28,29,34,35,42,46],callback:32,can:[0,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],cancel:[6,42],cannot:[0,27,30,32,41,42,48],cap:[2,27,32,36,47],cap_net_bind_servic:16,capabl:[2,35,36,42,45,47],capac:47,capath:[35,44],capit:[4,48],caption:[],captur:[30,42,45],care:[35,42,47],carefulli:[30,42],carelessli:5,categori:42,caught:42,caus:[16,30,34,42,45],caution:42,cbc:42,ccht:46,center:43,central:[15,35],cerfif:[],cert:[29,35,44],certain:[33,35,36,37,42,43,46,48],certainli:[24,30,47],certif:[2,3,21,29,31,35,42],certifict:44,cet:35,chaddr:[5,34],chain:[35,44],challeng:[28,29],chan:[5,10,17,28,29,30,45],chanc:30,chanfil:[10,30,45],chang:[1,2,6,9,10,15,17,19,21,22,24,28,30,31,34,35,36,38,39,40,44,46,47],chaninfo:[29,34],chanmod:[10,29],channel:[0,2,4,5,6,8,12,17,20,21,22,24,27,28,30,32,33,34,35,36,39,43,45,47,48],channelflag:42,chanrec:[17,42],chanserv:10,chanset:[10,29,34],charact:[2,10,15,21,30,34,35,37,41],chase:[0,4],chat4:2,chat6:2,chat:[0,2,4,6,13,21,29,30,34,35,36,39,42,44,46,47],chatter:35,chattr:[29,48],check:[2,4,5,10,21,27,28,29,31,35,41,42,44,46],checkout:[30,40],chfinger:35,chghost:[36,38],chjn:42,chmod:[3,35],chof:42,choic:[1,21,28],chon:42,choos:[3,7,29,30,35,36,47],chpass:41,chpt:42,chri:1,chunk:21,cidr:[35,42],cipher:[35,42,44],claim:[24,47],clarifi:33,clean:15,clear:[4,6,40,42,44,46,47],clearchat:[24,46],clearmsg:[24,46],cleartext:42,clemson:48,click:[40,47],client:[15,16,21,24,29,30,32,35,38,42,44,47],cloak:29,clone:[2,4,10,30],close:[27,42],cmd:[35,42],cmd_t:27,cmsg:46,code:[1,2,3,4,7,27,28,42],coder:[],col:43,cold:[40,41],colon:[35,37],color:[4,42],column:43,com:[2,4,5,6,20,21,28,29,30,34,35,41,42,44],combin:[36,42],combo:[],come:[4,6,17,21,29,30,40,42],comfort:30,comma:[35,39,42],commadlin:30,command:[2,3,6,10,12,15,16,17,20,21,27,28,29,30,31,32,33,34,35,36,37,39,41,44,47,48],commandlin:30,comment:[15,17,25,28,30,35,41],commerci:30,common:[2,21,30,31,34,35,38,44,48],commonli:[29,31,35,42],commun:[2,27,34,39,40,42],compat:[3,5,38,42,46,47],compil:[0,2,3,4,27,30,31,35,37,42,44],complet:[3,4,10,15,22,30,36,42,44,48],compliant:[17,21,42],compon:42,comprehens:46,compress:[2,6,29],compris:38,concurr:[35,41],conf:[3,7,16,29,30,38,42,44],config:[2,3,4,6,7,10,11,12,13,14,16,17,18,19,21,22,23,24,25,27,28,29,31,32,33,34,35,37,41,43,44],configfil:42,configur:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,35,37,40,42,44],confirm:[40,42],conflict:16,confus:[29,42],connect:[2,4,5,6,14,15,16,21,24,27,29,30,34,35,37,39,44,47,48],connet:[],consequ:46,consid:[4,30,32,33,35,39,42],consider:41,consist:[34,36,39,42],consol:[2,4,6,10,27,36,39],constantli:27,constitut:[10,21,35],consult:[29,37,38,44],contact:[28,35],contain:[1,3,4,5,28,30,32,34,35,37,42,44,46],content:[41,42,46],contest:6,context:27,continu:[30,42],contribut:40,control:[0,2,4,17,21,28,29,34,35,36,44,47,48],conv_form:29,conveni:35,convers:[27,39,44],convert:42,cooldud:30,coordin:35,copi:[1,2,5,7,15,23,27,30,42],copyright:[0,1,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],core:[2,3,6,7,17,18,21,27,28,42,45],correct:[3,31,35,41],correctli:[3,42],correspond:[10,29,33,42],cos:10,could:[1,21,28,34,35,37,40,41,42,44,47],couldn:42,count:21,counterpart:42,coupl:42,cours:[3,28,34,35,42],cover:[32,33,34],cpu:[21,35,42],crappi:42,crash:[3,4,42],creat:[0,3,4,15,16,22,27,28,29,30,33,35,40,41,42,44,45,47],creation:[29,32],credit:[28,42],cron:42,crontab:[3,4,42],cross:30,crotab:[],crt:[29,35,44],crypto:41,cryptograph:[19,41,42],crytopgraphi:41,ctcp:[2,6,10,21,29,30,35,42,44],ctcr:42,ctrl:42,curl:30,current:[2,4,6,7,9,15,17,18,19,24,27,29,30,32,35,36,39,42,43,44,46],custom:[16,21,28,29,32,36,42,44],cut:29,cycl:[10,21,35],cygwin:[2,37],daemon:[16,35],dai:[18,23,35,42,45],daili:[30,42],dalnet:[4,17,21],danc:42,danger:42,danish:35,data:[4,10,22,27,31,41,42],databas:[15,42],date:[1,4,30,32,35,42],db8:[21,30,35],dcc:[0,2,4,6,15,20,21,23,27,29,30,34,36,37,39,41,45],dead:30,deal:[35,42,48],dealloc:27,deauthent:32,debian:[30,31],debug:[3,25,27,28,35,42,44,46],dec:[15,42],decemb:[0,26,36,39],decent:27,decid:[38,41],decis:47,declar:[28,42],decreas:35,defens:28,defin:[4,6,10,11,13,17,21,27,28,30,32,33,34,35,38,42,48],definit:[28,30,31,41],degrad:47,dehalfop:[10,42,48],del_hook:27,delai:[10,15,17,28],delet:[30,42,45],deliber:44,delimit:42,deliv:42,demand:[0,4],demonstr:[6,26,42],denot:[31,42],deop:[10,42,48],depend:[27,32,33,40,42,44,48],deprec:[5,31,42],deprici:21,depth:[35,44],der:29,deriv:41,desc:[6,27],describ:[27,28,30,31,34,35],descript:[6,27,28,29,35,42,46,48],descriptivebranchnam:40,deserv:28,design:[0,2,4,19,38,46],desir:[7,27,29,30,41],despit:31,dest:[3,6,30,31,35,42,44],destin:[16,27],destroi:[0,4],detail:[3,4,6,27,30,32,42,44,46],detect:[7,21,31,37,42,44],determin:[2,3,16,27,29,30,34,37,42,44],dev:[4,30,31],devel:3,develop:[0,1,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],devleop:[],dict:[42,46],dictionari:42,did:[1,29,41],didn:[28,30,42],die:[27,29,30],died:21,differ:[1,3,4,5,10,15,21,28,31,32,35,41,42,45,46],differenti:42,diffutil:3,digest:[19,42],digit:[35,44],dinner:41,dir:[6,29],direct:[7,31,34,40,42],directli:[5,6,10,16,22,30,42],directori:[2,3,4,6,7,23,27,29,30,31,36,40,44,45],disabl:[10,17,21,29,35,37,42,44],disc:42,discard:[22,42],disclaim:[2,42],disconnect:[21,22,35,42],discontinu:47,discourag:17,discuss:[4,40],disk:[0,23,30,35,36,42],displai:[12,15,17,21,29,30,35,42,43,46],displaynam:27,dispos:42,dissect:28,distinguish:42,distribut:[0,1,4,30],distro:31,dload:23,dns:[6,14,35,42],doc:[0,3,4,5,6,21,28,31,35,39,42,46,47],document:[2,16,28,30,31,34,37,38,40,44,45],doe:[10,24,28,29,32,33,35,38,39,42,46,47,48],doesn:[12,14,17,30,39,42,45,46],doing:[19,21,28,35,42,43],domain:[1,14,34],don:[4,7,10,14,15,17,21,22,24,27,28,29,30,34,35,39,42,44,45],donat:[24,47],done:[5,22,27,29,30,31,34,40,41,42,47],donkei:30,dontkickop:10,dot:39,doubl:21,doubt:37,down:[0,3,4,15,34,42],downer:24,download:[3,4,5,7,15,23,35,36,42],dozen:28,dp_help:27,dp_log:27,dp_mode:27,dp_server:27,dp_stdout:27,dport:16,dprintf:27,drastic:[27,42],driven:42,dronepup:42,drop:[3,4,35,42],dropp:[],dst:6,due:[17,21,28,35,42,46],dump:[21,35,42],duplic:42,dupwait:35,dure:[3,11,22,27,29,30],dynam:[2,3,10,29,30,33,42],dynamicban:[10,42],dynamicexempt:[10,42],dynamicinvit:[10,42],each:[0,4,6,10,15,18,23,28,29,30,32,34,35,36,39,42,45,46,48],earlier:19,easi:[5,28,30,42,44],easier:[3,19],easiest:42,easili:[0,1,2,4,28,36,42],east:35,ebai:35,ecb:42,ecdsa:29,echo:[36,38,45],ecparam:29,eden:42,edit:[2,3,28,45],editor:[29,30],editplu:30,edu:[42,48],effect:[15,33,35,42],effici:[0,4,30,34,35,36],effort:[0,2,4,42],efnet:[4,17,21],egg_lang:35,eggdrop1:7,eggdrop:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,37,38,41,43,44,45,47,48],eggdroptest:[32,46],egggdrop:2,egghead:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,33,34,35,36,37,38,39,40,41,42,43,44,45,48],egghelp:[4,30],eight:[35,42],either:[3,4,15,16,29,30,31,32,33,34,35,37,42,44,46],element:42,elimin:29,els:[28,39,42],email:[4,29,35,42],embed:42,emerg:38,emot:46,empti:[42,46],enabl:[0,2,4,7,10,12,15,17,21,23,27,28,29,30,34,35,36,37,38,44,45,47],enclos:[10,37,42,46],encod:[42,43],encount:[30,47],encourag:[2,30,41],encpass2:41,encrypt:[2,5,6,9,19,29,31,34,36,44],end:[3,27,29,35,41,42,43],endless:10,enforc:[10,29,32,35],enforceban:10,english:[35,45],enhanc:7,enjoi:41,enlarg:3,enough:35,ensur:[27,29,30,34,41,42],enter:[3,10,15,29,31,35,39,40,41,42,44,46],entir:[30,42,46,47],entitl:48,entri:[3,4,29,30,35],env:35,environ:[16,35,36,44],eof:42,equal:42,equival:[6,21,31],equivil:[],eras:[15,42],error:[4,21,27,30,35,42,47],escap:42,especi:28,essenti:41,est:35,establish:[37,42,44],etc:[0,2,4,10,17,24,27,30,32,34,35,36,42,45,48],eth0:16,ethic:35,etiquett:4,european:35,evalu:42,even:[0,4,7,15,17,27,30,33,34,35,36,39,42,47],event:[0,4,24,27,32,34,35,46,47],eventu:19,ever:[29,30,35,42,44],everi:[0,3,4,10,15,17,21,23,27,28,29,32,33,35,37,41,42,48],everydai:35,everyon:[39,42],everyth:[3,28,42],everywher:[35,37,42],evnt:[21,42],exact:42,exactli:[15,17,27,28,42],examin:27,exampl:[2,3,4,5,7,15,16,21,27,28,29,30,31,35,39,42,44,45,46,47],exceed:35,except:[4,13,21,27,35,42,44],excess:[4,10,21],exchang:29,exclud:42,exclus:[21,42],execut:[2,3,7,27,28,29,32,42],exempt:[0,1,2,4,10,17,24,34,36,47,48],exhaust:[42,46],exist:[0,4,15,21,27,32,41,42,46,47,48],exit:[4,6,12,15,21,42],expand:[0,2,4],expans:42,expect:[6,13,35,42],experi:[3,15,28,30],experienc:3,expir:[10,17,18,21,33,35,42,44],explain:[10,42],explan:[10,30,31,42,46],explicit:38,explicitli:[5,42,44],express:42,extend:[24,36,38,42],extens:[3,30,32],extern:[16,29,35],extra:[7,35,38],extract:[30,42],f270:30,face:47,fact:[0,4,46],fail:[14,23,35,42,44],failur:[42,46],fake:42,fals:42,famili:35,familiar:[4,28],fanci:41,fancyp:28,far:15,fast:30,faster:42,fastest:[],fatal:42,fault:27,favor:[5,22],featur:[0,2,4,7,10,17,21,22,29,30,32,35,37,38,40,42,44,47,48],februari:13,feel:[4,5,27,40],few:[24,28,30,31,35,42,47],field:[21,32,35,42,44],fifth:1,fight:10,figur:[3,30],fil:42,file:[1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,36,37,41,43,44,48],file_receiv:42,file_send:42,file_send_pend:42,filearea:42,filedb:[15,42],filemask:6,filenam:[6,10,18,30,35,44],filepath:6,files:15,filesi:[2,6,35],filestat:6,filesystem:[15,42,48],fill:[35,40,44],filt:[27,42],find:[3,6,14,17,20,27,28,29,30,39,40,42,47],fine:[17,21,35,46],finger:[13,30],fingerprint:[29,35,44],finish:[4,15,30,42],finnish:35,firewal:35,first:[0,2,4,5,15,19,21,27,28,30,31,34,35,41,42,44,45,46],five:42,fix:[0,3,4,27,35,42],flag:[2,5,6,10,13,17,22,27,28,30,35,36,43],flagmask:46,flash:43,flat:42,flexibl:[42,44],flood:[0,4,10,13,18,21,34,35,36,42,48],floor:1,flud:42,flush:22,focus:[24,47],folder:7,follow:[3,4,5,10,15,17,21,24,27,30,31,34,35,36,38,40,41,42,43,44,45,46,47],foo:[28,29,42],forbid:3,forc:[3,10,12,15,19,22,28,35,37,42],forcefulli:44,forev:35,forget:42,fork:[31,40],form:[0,4,27,28,42,43],format:[7,21,27,29,30,31,35,41,42,43,46],forward:18,found:[2,4,27,35,42,46],foundat:1,four:[10,28,32,35,37,42,43],fourth:28,fprint:[35,44],fragil:42,franklin:1,free:[1,2,5,27],freebsd:37,freeli:[0,4],freenod:21,french:35,frequent:[4,30],fresh:35,fri:42,friend:[10,48],frim:27,from:[0,1,2,3,4,5,6,7,10,15,16,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,37,39,41,43,44,45,46,47,48],front:[10,28,30,31,42,47],ftp:[5,30],full:[3,4,5,24,30,37,42,44,46,47],fuller:1,fulli:[5,35,42,47],fun:[3,47],func:27,func_nam:27,func_tabl:27,function_to_cal:27,further:[29,42],futur:[3,17,29,30,41,42],fwd:18,gain:[0,4,41,48],game:[0,2,4,24,47],garbag:27,gatewai:[24,46,47],gave:30,gayteen:0,gcc:3,geneer:4,gener:[0,1,3,4,19,24,28,29,30,38,41,42,44,47],genkei:29,genrsa:35,geo:28,german:35,get:[6,7,10,21,22,23,27,28,31,32,35,39,48],geteggdrop:[2,4,30],getinfo:42,getop:10,gif:15,git:[2,3,30,40],github:[2,4,30],give:[3,4,10,15,21,28,30,34,35,36,39,41,42,48],given:[4,14,15,16,30,42,46],global:[2,12,16,17,21,22,27,28,33,34,46,48],globalflag:42,gmt:[35,42],gnu:[0,1,3,4,11],goe:[3,10,29,33,34,39,42,44],going:[0,4,15,21,28,31,32,42],gone:[17,42],goober:42,good:[0,15,21,24,28,30,35,42,47,48],got:42,gpl:[0,4],grab:42,grain:28,grant:[29,36,44,47],graphic:44,greater:42,gree:28,greet:[0,2,4,10,28,32],greetmsg:28,greetscript:28,grep:29,ground:35,group:[15,16,35,38,42],grown:0,gseen:[6,20],guarante:[17,32],guess:17,gui:46,guid:[2,3,28,30,31],gunzip:30,guppi:42,gzip:[11,42],had:[3,5,10,34,35,42,47],haha:4,halfop:[10,42,48],hand:[28,35,42],handi:30,handl:[28,29,33,35,41,44,46],handshak:42,hang:[6,14],happen:[28,30,33,35,42],hard:[28,35],harder:28,hardwar:[0,4],has:[0,1,2,4,5,10,14,15,17,21,28,29,30,31,32,33,34,35,36,37,41,42,44,46,47,48],hash:[2,5,19,30],hasn:21,hate:48,have:[0,1,3,4,5,6,9,10,12,15,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,36,37,39,41,42,44,45,46,47,48],haven:30,head:35,header:[2,4,27,28,31,44],heaven:3,held:46,hello:[17,21,29,30,35,36,42],help:[0,3,13,21,27,28,29,30,33,34,35,37,39,42,43,48],helper:3,henc:[7,27,42],here:[2,4,10,13,14,15,17,18,21,23,28,29,30,33,34,35,42,45,46],herself:4,hidden:[15,30,36],hide:[6,37,42],high:45,higher:[17,19,22,23,30,44],highest:42,highli:[3,21,30],highlight:48,him:1,himself:4,hint:28,his:[21,30],histor:[29,42],histori:46,hit:42,hold:[22,42],hole:35,home:[3,15,16,29,30,44],hook:27,hook_5minut:27,hook_backup:27,hook_daili:27,hook_di:27,hook_hourli:27,hook_idl:27,hook_load:27,hook_minut:27,hook_num:27,hook_pre_rehash:27,hook_read_userfil:27,hook_rehash:27,hook_secondli:27,hook_userfil:27,hope:[30,47],hopefulli:[3,42],hors:30,host:[0,2,4,10,16,21,24,28,33,34,35,44,46,48],hostmask:[28,29,33,34,36,41],hostnam:[6,10,14,29,35,37],hosttarget:[24,46],hour:[6,25,27,33,35,42],hourli:[18,27,35],how:[0,3,6,10,13,14,15,18,21,22,24,28,29,30,31,33,34,35,42,44,45,46,47],howev:[4,7,13,21,29,31,32,35,41,42,44,45],htgt:46,html:[4,37],http:[2,4,6,20,25,30,32,38],hub:[4,22,30,34,35,41,44],hubbot:31,hubcap:48,humor:29,hup:42,hurt:5,iconfig:[3,7,30],idea:[28,30,40],ideal:[41,47],ident:[2,6,7,17,21,29,35,37,41,42],identd:[16,30],identifi:[29,35,41,42,48],idl:[10,27,42],idx:27,ignor:[0,4,13,21,22,28,34,35,36,42,46],ill:42,imag:4,immedi:[21,30,32,41,42],imperson:16,implement:[6,7,16,31,32,35,38,40,41,42,47],implementatino:[],impli:[1,27],importantli:28,improv:[0,4],inact:[10,23],inc:1,incess:0,includ:[0,2,3,4,7,17,25,27,30,31,33,35,36,37,41,42,44,46,47],incom:[15,35,42],increas:[32,35,41],incred:[30,42],independ:7,indic:[21,27,30,42,46],infeas:[24,47],infin:35,infinit:15,info:[3,4,10,12,17,27,30,35],inform:[0,2,3,4,5,6,10,15,25,27,28,29,30,32,34,35,37,38,42,44],infrastructur:44,ing:[17,24,47],init:[21,35,42],init_serv:21,initi:[27,28,30,37,38,42,44],input:42,insecur:10,insensit:42,insert:[10,43],insid:[28,35],instal:[0,4,5,28,29,31,35],instanc:[10,32],instantli:21,instead:[1,4,5,10,15,16,17,22,24,30,35,41,42,44,45,47,48],instruct:[7,30,41],integ:[10,42],integr:2,intend:[3,33,42],intens:21,intent:[24,47],intention:28,interact:[3,4,6,16,17,35,42,44,47],intercept:42,interchang:[31,37],interest:4,interfac:[2,24,42,47],intern:[21,32,35,42,46],internet:[0,4,42,44],interpret:[3,37,42,43],interv:42,introduc:[4,30,42],invalid:42,invers:43,invit:[0,2,4,10,17,24,34,36,38,47],invite:42,invok:42,involv:29,invt:42,ipaddress:42,iptabl:16,ipv4:[30,35,37],ipv4address:42,ipv6:[2,30,35,36,42],ipv6address:42,irc:[0,4,6,15,16,21,24,28,29,30,32,33,34,35,36,37,38,39,42,43,45,46,48],ircawai:42,ircd:[17,21,42],ircii:[23,42],ircnet:[4,10,17,21],ircop:[10,17],ircu2:17,ircv3:[2,32,36,42,45],isn:[6,15,21,22,25,30,33,42],isol:34,isop:10,isoptest:10,isp:30,isset:32,issu:[4,5,16,24,30,32,35,40,42,44,46,47],issuer:44,issupport:32,istn:10,isupport:32,ital:42,item:42,its:[1,2,4,7,10,15,16,17,19,21,22,24,28,29,30,32,34,35,36,40,42,45,47],itself:[15,27,28,29,35,42],itsself:[],j9irk4vs28b0obz9easys4w2ystji3u:47,jan:[42,44],janitor:[15,48],januari:[1,8,9,12,18,20,23,25,42],jkp:30,job:[3,4,29,44],john:1,join:[2,6,10,12,17,18,24,28,30,31,33,35,36,38,39,42,46,47,48],jpk:35,jul:7,juli:0,jump:[21,34,44],jun:45,june:16,jupe:42,just:[0,3,4,5,6,14,15,17,19,22,27,29,30,32,34,35,39,41,42,45,46,47],karma:40,keep:[2,4,10,15,21,23,30,35,47],kei:[2,3,10,17,24,28,29,35,41,46,47],kept:[33,35],keyout:[29,44],keypair:[29,31],kick:[10,17,21,32,35,42,45,48],kicker:42,kiddi:35,kill:[30,42],killer:5,kilobyt:[15,35],kind:42,know:[17,18,21,24,27,28,32,33,34,35,42,45,47],knowledg:0,known:[21,29,35,41,42],kreativrauschen:[6,20],kvirc:44,lag:[35,39],lame:[10,17,34,35,42],lamer:35,lameshar:34,lamest:[10,30,34,35,43],lamestbot:[3,10,18,21,30,34,35,42,43],lang:45,languag:[28,35,36,45],larg:[2,15,17,21,35],larger:[28,41],last:[0,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,30,33,34,35,37,38,39,42,43,44,45,46,48],lastli:42,laston:42,late:42,later:[1,3,6,9,18,19,25,28,30,35,42,44],latest:[4,5,30],launch:30,layer:[29,31],lazi:17,leaf:[34,35,41,44],learn:[17,29,30,35,36,42],least:[4,17,27,30,33,35],leav:[10,21,30,35,39,42,47],left:[17,42],legal:[2,4],len:21,length:[17,21,27,41,42,44],less:[13,39,42],let:[4,6,10,14,18,27,28,30,34,35,36,42],letter:[4,35,48],level:[11,16,29,32,35,48],libera:[2,4,5,21,27,28,29,30],librari:[28,41,44],libssl:[4,30,31],licens:[0,1,4],lieu:42,life:[18,30],light:47,like:[0,1,4,6,9,10,13,15,17,19,27,28,29,30,35,36,37,39,40,41,42,44,46,47,48],limbo:35,limit:[2,6,10,15,17,21,34,37],lindex:42,line:[2,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,34,35,36,41,42,44,45,46,47],link:[0,2,3,4,5,6,7,15,22,23,27,35,36,38,41,44,45],linux:37,list:[0,4,6,10,14,15,19,21,22,24,25,27,28,29,30,31,32,34,35,36,38,39,44,46,47],listen:[29,30,34,35,37,44],liter:[27,42],littl:[3,5,15,24,30,34,45],llama:34,llamabot:[30,35],load:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,34,35,41,42,47],loadmodul:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,35,41,47],lobster:41,local:[15,28,30,35,39,40,42,44],localfil:6,locat:[2,4,23,28,29,31,35,44],log:[0,2,4,10,19,24,27,30,32,40,41,42,47],logfil:[25,27,30,35,45],logfilenam:35,logflag:35,logic:42,login:[30,35,41,46],logmod:27,logsiz:35,longer:[3,5,15,17,19,27,30,31,42],look:[0,4,5,6,10,20,25,26,28,29,31,32,35,36,41,42,44,47],lookup:[14,35,37,42],lose:10,lost:42,lot:[5,17,28,30,32],low:[21,23],lower:21,lowercas:21,lsa:15,luck:[30,47],lurk:2,mac:37,machin:[3,4,16,30,35],macro:27,made:[0,1,3,4,5,10,22,40,42,44,47],magic:28,mai:[1,4,5,10,11,15,16,17,23,28,30,34,35,37,38,42,45,46,47],main:[7,28,30,31,32,39],maintain:[2,16,30,32,45,46],mainten:48,major:[27,30,42],make:[0,2,3,4,5,6,7,10,13,15,19,21,22,24,27,28,29,30,31,35,37,38,40,42,44,45,47],makefil:[3,27],making_modulenam:27,man:35,manag:[2,4,6,15,24,31,47],mandatori:42,mani:[4,5,10,14,15,17,21,27,29,30,31,34,35,42],manipul:[2,35],manpag:35,manual:[4,29,34,35,37,42,44,46],mar:37,march:[33,43,48],mark:[15,36,42,48],mask:[15,21,28,35,46],masquerad:35,master:[15,29,30,33,34,35,42,43,48],match:[1,2,10,15,17,27,28,33,35,41,44,46],math:42,matter:[1,14,28,29],max:[15,17,18,21,23,35],maxdepth:[],maxim:35,maximum:[10,14,15,17,18,21,23,35,41,42,44],maxsend:14,mayb:[28,35],mco:[35,42],mcobx:30,md5:[6,9],mean:[15,17,21,28,29,32,33,34,35,36,37,41,42,44,46],meaning:[24,42,47],meaningless:48,measur:21,mechan:29,meet:44,mem:42,member:[10,27,32],memberlist:42,memori:[27,42],mention:27,meridian:35,messag:[4,10,21,27,28,30,32,35,36,38,39,41,43,45,46],method:[4,6,9,16,17,19,24,28,30,31,41,45,47],midnight:35,might:[4,17,23,27,35,42,44],migrat:5,militari:35,milk:48,min:35,miniatur:39,minimum:[0,10,42,46],minor:[27,42],minu:10,minut:[4,10,17,23,27,29,30,33,35],mirc:[21,42],misc:[35,42],miscellan:2,misnom:42,miss:[4,30,32,42],mix:[10,17],mkcoblx:35,mkdir:6,mnnrrpp:42,mnot:22,mnt:30,moc:42,mod:[3,6,7,20,24,27,35,42,46],mode:[4,5,10,13,17,21,24,27,29,32,33,35,36,38,47],mode_proc:42,mode_proc_fix:42,modechang:42,moder:[24,29,46,47],modern:[16,41],modes_per_line_max:17,modif:[5,30,42],modifi:[2,6,14,17,28,32,35,42],modul:[0,2,4,30,32,34,36,41,47],modular:2,module_clos:[],module_depend:27,module_entri:27,module_expmem:[],module_find:27,module_load:27,module_nam:27,module_regist:27,module_renam:27,module_report:[],module_start:[],module_t:[],module_undepend:27,module_unload:27,modulenam:[7,27],moment:[17,30,31],monitor:[4,29,33,36,38],month:[35,42],moo:42,more:[3,4,5,6,13,15,17,20,27,28,29,30,31,34,35,36,38,40,41,42,44],moreov:35,most:[0,2,4,5,16,17,21,27,28,29,30,31,35,36,39,42,46,47],mostli:[24,42,47],motd:[35,43],mount:23,move:[3,4,15,21,30,42,47],mpj:42,mrlame:[30,35],mrslame:[30,35],msg:[4,6,17,20,21,29,30,35,36,39,41,46],msgid:46,msgm:[21,42],much:[2,3,24,27,30,39,42],multi:30,multipl:[0,2,4,16,28,30,34,35,36,42,46],must:[1,2,3,4,10,14,16,17,21,23,27,29,30,31,32,34,35,41,42,44,46],mydir:15,myownevent123:42,myproc:42,mytag:42,myvar:45,myword:17,name:[3,4,6,8,15,21,27,28,29,30,31,32,35,46],nano:30,nat:[16,35,37],natur:46,nearli:7,necessari:[10,31],necessarili:42,need:[0,3,4,10,14,16,17,21,27,28,29,30,31,32,34,35,37,41,42,44,46,47,48],needal:42,needop:42,neg:[14,35,42],negcach:14,negoti:[42,44],net:[1,3,17,21,24,30,32,38],netbsd:37,nethack:48,netsplit:[16,17,35,36,42],network:[0,2,4,17,21,35,42,43],never:[4,5,10,35,42],new_module_nam:27,newer:[5,30],newhandl:42,newidx:42,newnick:42,newus:[30,35],next:[5,10,15,21,27,28,30,31,35,42],nfree:27,nice:27,nicebot:30,nick:[10,17,21,25,28,29,30,35,48],nicknam:[6,21,28,29,30,32,35,43,45,46,48],nickserv:[2,44],nist256p:29,nkch:42,nmalloc:27,no_irc:[6,21],nobodi:[15,28],node:[29,44],nodesynch:10,noemail:4,non:[3,10,14,16,17,21,27,29,33,34,42,44,47],none:[8,9,10,12,14,18,19,20,21,23,26,42],noout:29,noqueu:42,nor:16,normal:[0,4,6,13,14,15,16,21,27,28,31,35,42,44,45,46,47],notabl:47,notat:35,notc:42,notcproc:42,note:[2,3,6,7,9,10,14,17,19,21,22,27,29,30,32,34,35,41,44,46,47],notebox:42,notefil:[18,42],notepad:30,noth:[27,35,42,47],notic:[2,13,15,28,34,35,42,47],notif:42,notifi:[18,21,30,35,36,38,42],nots:1,nov:34,novemb:[22,38],novic:[0,4],now:[3,5,15,16,17,28,29,30,31,34,35,37,41,42,46,48],ntik:42,number:[2,10,15,17,18,19,21,23,24,27,30,31,34,35,41,42,44,46,47,48],numer:[29,31,42],nxdomain:14,oauth:47,obtain:[2,31,44],obvious:[33,42],occur:[17,28,42],occurr:27,octal:35,octob:[10,19,21,35],off:[10,16,17,21,30,34,35,39,42],offer:[30,31,32,46,47],offici:[2,4],offlin:42,offset:35,often:[4,6,14,29,35,46],oident:16,oidentd:16,okai:35,old:[6,19,21,30],old_module_nam:27,older:[4,37,42],oldest:[2,42],oldhandl:42,omin:28,omit:[42,44],onc:[4,10,15,17,19,21,28,29,30,40,42],one:[4,10,15,16,17,21,27,28,29,30,31,33,34,35,36,39,40,41,42,44,45],ones:[14,22,34,37,42],onjoin:18,onli:[3,4,5,6,7,10,15,16,17,18,20,21,22,25,26,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],onlin:[6,15,18,29,32],opchar:17,open:[16,29,35,39,40,42,44],openbsd:37,openssl:[2,3,4,19,29,30,31,35,44],oper:[4,13,21,28,35,37,42,43],opped:[10,42,48],opping:[0,4],oppos:42,ops:[10,32,42,48],optim:[6,21],optino:38,option:[1,3,4,7,10,15,16,19,21,29,30,35,44,47],order:[4,14,28,32,35,41,42,44,46],ordinari:[42,44],org:[2,4,5,6,25,28,30,31,34,35,42],origin:[1,21,30,40,42],oss:16,other:[0,1,4,6,9,10,14,15,16,17,18,19,21,22,27,28,29,30,31,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48],otherdir:3,otherwis:[3,4,12,15,28,32,33,34,35,37,41,42,44,46],our:[30,34,42],ousterhout:1,out:[0,3,4,23,25,28,29,30,34,35,39,41,42,44],outform:29,outgo:[35,42,45],output:[2,3,27,29,31,41,43,45,46],outsid:[19,31,35],over:[15,21,24,27,28,30,35,37,42,44,45,47],overal:32,overhead:7,overrid:[22,37,44],overridden:17,overwrit:[16,30,42],overwritten:[5,35,42],own:[1,7,15,16,21,22,28,29,30,31,38,42,44,45,47],owner:[4,10,30,35,39,42,48],p_tcl_hash_list:27,packag:[1,3,4,30,31],pad:42,page:[30,40],pai:[5,32,42],pain:[23,30],pair:[29,31,32,42,44,46],paragraph:3,paramet:42,paranoid:[22,35],pars:42,part:[0,4,21,24,28,35,36,42,44,45,47],parti:[2,5,12,30,34,35,36,42,44,48],particular:[5,29,35],partproc:42,partylin:[2,4,6,12,30,31,32,34,35,37,41,42,44,45,46,47,48],pass:[28,29,30,32,37,39,41,46],passiv:34,passthru:35,password:[5,6,9,17,19,21,22,29,30,34,35,36,39,41,44,47],past:[1,4,27,35],patch:[2,37,42],path:[2,3,15,16,30,31,42,44],pathnam:42,patient:15,pbk:41,pbkdf2:[2,5,6,41],peer:[21,35,44],pem:[29,35],penalti:21,pend:[6,10],peopl:[4,10,15,16,17,18,21,22,28,30,35,36,39,42,43,48],per:[17,42,46],percent:43,perfect:32,perform:[0,3,4,5,10,30,42,48],perhap:30,period:[6,14,30,42],perm:35,perman:[10,33,35,42],permiss:[4,35,41],permit:42,perorm:2,persist:30,person:[4,28,30,35,42],phew:30,phrase:42,physic:34,pick:42,pictur:5,pid:[30,35,42],pidfil:35,piec:[3,28],ping:13,pipe:34,pl1:42,place:[1,3,5,7,10,15,17,28,30,33,35,42,44,47],plain:[29,35,44],plaintext:[29,42,44],plan:[4,28,42],platform:[0,4,24,42,47],pleas:[4,5,6,7,9,10,16,19,21,31,35,38,42],plu:[10,21,35,42,44],pmsg:28,point:[3,6,21,26,30,34,35,42],pointer:[1,3,4,36,43],popul:46,popular:[0,4,5,30,35],port:[1,5,14,16,21,22,29,30,31,34,35,37,44],portabl:42,portion:[3,7,10,42],portrang:35,posit:[27,35],posix:42,possibl:[3,10,13,15,21,29,31,35,37,38,39,42,44,46],potenti:[5,16,28,42,46],pour:40,power:[4,36],practic:[41,42],pre:[42,44],preced:[30,42,44],prefer:[35,37,44],prefix:[5,17,21,28,31,35,39,44,46,47],preinit:42,prematur:30,prepar:34,prepend:35,prerehash:42,prerequisit:2,prerestart:42,prerout:16,present:[2,6,28,29,32,37,42,46,47],preserv:30,pretend:47,pretendnet:31,pretti:[0,39],preval:29,prevent:[0,4,10,17,18,24,29,30,34,37,42,47],previou:[1,3,4,5,19,30,42,47],previous:[5,30,42],primari:[21,35],prime256v1:29,prime:35,printf:27,prior:[3,29,30,32,41,44],prioriti:42,privat:[18,22,28,29,30,31,35,39,42,44],privatekei:[29,31,35,44],privileg:[0,4,16,48],privmsg:[10,28,29,42],probabl:[21,29,30,31,42],problem:[30,35,37],proc:[21,27,28,46],proce:42,procedur:[2,22,32,46,48],process:[0,3,4,5,11,15,16,23,29,30,34,41,42,44],procnam:[28,42,46],produc:[35,42],program:[0,2,4,16,29,30],progress:15,prohibit:35,project:[2,40,47],prompt:[3,4,32],promptli:30,proper:[37,42],properli:[5,30,31,34,35],protect:[0,2,3,4,10,19,21,29,30,33,35,41,42,44,48],protectfriend:10,protecthalfop:10,protectop:10,protocol:[31,35,38,42,44],prove:30,provid:[0,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,27,29,30,35,37,38,40,42,44,46,47],pseudo:42,pub:[4,5,21,29,32,42],pubkei:29,publicli:25,publish:35,pubm:[21,42],pull:[4,40,41],punish:[10,42,48],purpos:[0,1,6,25,26,34,35,42],push:[40,42],put:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,35,42,44],putlog:[21,27,28],putquick:21,putserv:[10,28,29],putti:29,pwd:[6,30],quakenet:[4,21],qualifi:35,quann:[6,20],queri:[14,16,32,37],question:[4,29],queu:[15,21,42],queue:[21,27],quick:[2,27,30,35],quicker:30,quickli:[2,35],quiet:[21,35,48],quit:[4,6,21,30,35,42],quot:[42,46],quota:35,raid:[24,47],rais:[10,21],ram:35,rand_max:42,random:[10,21,34,42],rang:[30,35],rate:21,rather:[5,42,44],raw:[32,35,44],rawt:42,rcvd:42,reach:[17,21,35],react:[28,32],read:[0,2,3,4,6,7,16,27,28,29,30,31,35,42,43,47],readabl:42,readm:[2,3],readonli:27,real:[21,27,29,42],realli:[28,30,35,45],realnam:[21,42],reason:[4,27,29,30,34,35],reboot:[16,29],receiv:[14,15,21,23,29,34,42,46],recent:[4,30,42,44],recev:[],recipi:42,recogn:[17,21,29,48],recom:[],recommend:[4,5,10,23,27,30,41,42,45,46],recompil:[17,30],reconnect:[22,42],record:[2,22,27,32,36,48],redirect:16,reduc:[27,46],refer:[27,28,31,35,42],refin:28,reflect:[5,42],refresh:[42,46],regardless:42,regist:[2,10,29],regular:[10,42,44],regularli:36,rehash:[7,27,28,29,35],reiniti:42,reject:[21,34,35],rejn:42,rejoin:[30,42],rel:[14,27,30,42],relai:[0,4,34,35],relat:[1,6,10,28,37,42],releas:[0,1,30,41,42],relev:[4,27,30],reli:[29,42],reliabl:[32,42,46],relink:34,relinquish:42,reload:29,rem_builtin:27,rem_tcl_command:27,rem_tcl_int:27,rem_tcl_str:27,remain:[10,33,42],remaind:[15,46],rememb:[10,28,29,30],remind:35,remot:[15,34,35,42,43],remotebotnam:42,remov:[5,10,15,19,27,29,30,33,36,37,41,45,46,47],renam:[2,15,27,30,35,42],render:[5,24,47],repeat:[4,32,42],replac:[10,21,27,29,35,42,43,47],repli:[6,13,14,16,17,32,35,42],replic:[46,47],repo:40,report:[6,15,25,27,30,45],repositori:[4,30],repres:[42,46],req:[29,35,44],request:[0,4,5,7,10,13,15,17,21,30,32,33,35,37,38,40,42,44,45,47],requir:[2,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,35,41,44,46],reread:42,resend:[14,42],reserv:[30,35,39],reset:42,resolut:35,resolv:[6,14,35,42],resourc:27,respect:[14,37,42,43],respond:[10,30,42],respons:[21,32,42],rest:[3,27,34,35,41,42,46],restart:[2,3,4,5,7,28,30,35],restrict:[1,15,16,21,35,42,43,47],result:[21,32,33,35,37,42],resum:42,resync:22,retain:42,retri:23,retriev:[6,18],retrydelai:14,reus:[5,42],reveng:10,revengebot:10,revers:[41,42],revert:42,review:[29,31],revis:[0,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,35,37,38,39,42,43,44,45,46,48],revok:[21,35],rfc1459:[38,42],rfc2812:38,rfc:[17,21,24,42,47],rfc_compliant:42,rich:[0,4,30],right:[6,15,16,26,28,30,42],rijndael:19,risk:[1,21],rizon:21,rmdir:6,rmst:46,robei:[1,3,4,36,43,48],robot:36,roomsstat:24,roomstat:[24,47],root:[15,16],round:[19,41],rout:[16,42],routin:[17,35,42],rsa:35,rule:30,run:[2,3,4,5,7,10,16,21,27,28,29,30,31,32,34,35,41,43,44,46],s_client:44,safe:[19,29,30,31,41,47],sai:[4,10,15,28,31,34,42],said:[28,34,42],sake:47,salt:[28,41],same:[0,3,4,5,7,10,11,16,17,27,28,30,32,34,35,38,41,42,43,44,45,46],sampl:[10,30,47],sane:21,sanitycheck:35,sasl:[2,30,36,38],save:[5,6,10,11,12,22,34,35,36,41],scan:30,scenario:[31,32,34],schat:[35,44],schedul:42,scheme:1,scope:31,screen:[4,40,43],script:[0,2,3,4,7,10,21,29,30,33,36,37,42,45,46,47,48],scripter:34,sdcc:44,sdebug:3,seamless:41,seamlessli:19,search:[27,29,42],sec:35,second:[4,10,13,14,17,21,23,27,28,35,45],secondli:42,secret:10,section:[5,10,17,21,24,28,30,34,35,42,47],secur:[0,2,4,6,9,19,29,30,34,35,36,41,42],see:[0,2,3,4,5,6,10,15,17,21,24,25,27,28,29,30,31,32,34,35,37,39,40,41,42,43,46],seen:[2,6,10,32,35,42],selecet:42,select:[4,30,35,36,40,42],self:[2,21,31,35,44],send:[4,6,11,15,17,18,21,22,23,27,28,30,32,34,37,42,45,46],sender:42,sens:[0,4],sensit:41,sent:[6,15,17,22,25,29,32,35,38,39,42,44,46,48],separ:[3,7,21,30,34,35,36,37,38,42,45,46],septemb:14,seri:[30,42,44],serv:35,server:[2,5,6,7,10,13,14,15,16,17,19,24,25,27,29,30,35,36,37,38,44,45,46,47],serverlist:42,serverop:10,serverror:21,servic:[6,10,16,24,29,32,42,44,47],servivc:42,session:[4,37,38],set:[0,1,2,3,4,5,6,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,31,32,33,34,36,38,39,41,43,45,46,47,48],setcap:16,setnam:[36,38],setup:[4,6,7,30,35],seven:[10,42],sever:[0,4,13,27,30,31,38,42,45],sexystuff:28,sha1:44,sha1sum:29,sha256:19,shall:35,share:[0,2,4,6,10,11,23,27,35,36,42],sharebot:[34,35,42],sharefail:23,she:42,shell:[0,3,4,16,29,30,35,42],shorter:10,should:[1,3,4,5,10,12,13,14,15,17,19,21,22,24,27,28,29,30,34,35,37,39,41,42,44,46,47],shouldn:16,show:[4,6,10,15,25,28,34,35,42],shown:[15,30,35],shutdown:42,shutdownreason:42,side:[35,42,44,47],sidenot:31,sighup:42,sigil:42,sigkil:42,sign:[21,29,31,35,42,43,44,47],signal:42,signific:[4,6],significantli:[32,46],signoff:42,sigquit:42,sigterm:42,silent:35,simialar:[],similar:[4,10,29,30,35,39,40,42,45],similarli:46,simpl:[4,27,28,29,30,42],simpli:[4,5,29,30,31,38,42,47],simplifi:42,simul:[35,42],simultan:[15,23,42],sinc:[0,3,5,17,30,34,35,36,37,42,44,45],singl:[16,17,29,42,46],sit:[0,4,10,35,41],site:[6,48],situat:[32,34],six:42,size:[15,23,27,35,42],skim:4,skip:[30,42],slash:[30,39],slave:34,slennox:30,slow:[15,30,35],slower:35,small:[3,23,34,45],smaller:3,smile:3,snapshot:[2,30],snowbot:15,snt:29,sock:[27,35],socket:[16,27,31,42,44],softwar:[0,1,2,4],solut:41,some:[0,4,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,30,32,33,34,35,36,37,38,42,44,45,47,48],someircnetwork:35,someon:[4,10,17,28,30,31,42,46],someth:[4,28,30,40,42,47],sometim:[4,21,30],somewher:[3,35],song:42,soon:[10,42],sort:[0,4,33],sound:28,sourc:[1,3,4,5,6,7,27,28,31,35,40,42,44,45],space:[0,23,35,38,42],spawn:0,spec:32,special:[34,42],specif:[6,10,14,16,17,19,21,24,30,34,37,38,42,44,46,47,48],specifi:[10,14,15,16,18,21,22,27,29,30,33,35,36,37,41,42,44,46],spectrum:[24,47],spent:[30,42],split:[10,17,37,39,42,43],splt:42,spoiler:47,spoken:42,spoof:16,spread:35,squar:37,squelch:21,src:[3,7,17,27],ssh:30,ssl:[2,3,4,5,21,29,30,31,36,42],sslcert:[3,31,35,44],sslinc:44,ssllib:44,sslport:44,sslsilent:[3,44],sssss:[],stabil:23,stabl:[2,4,30],stack:[17,37,42],stackabl:[],stage:27,stai:42,stall:42,stand:[0,4,30],standard:[14,16,17,23,27,28,38,42,44,47,48],start:[2,3,5,6,9,16,19,21,26,28,29,34,35,38,39,41,42,43,46,47],starttl:44,startup:[2,41,42],stat:6,state:[4,42],statement:42,statist:[6,15,25],statu:[0,2,4,10,24,27,31,35,45,46,47],status:32,statuslog:10,stb:21,stdio:27,stdlib:27,stdout:27,stealth:[30,35],step:[2,3,5,27,30,47],stick:33,sticki:[33,42],still:[1,4,5,10,15,22,30,31,32,35,36,42,47],stone:21,stop:[0,10,15,17,27,29,42,46],stopnethack:[10,48],storag:[6,12,41],store:[5,6,10,12,15,18,24,25,28,30,32,34,41,42,46,47],str_dir:27,str_protect:27,stream:[24,47],street:1,strftime:35,string:[2,17,27,28,29,35,41,46,47],strong:35,strongli:[2,4,30],stuff:[2,4,27,28,30,35,42],style:[33,42],sub:[15,42],subdirectori:[15,42],subject:44,sublist:42,submit:[2,42],subscrib:[46,47],subsequ:42,substitut:[2,35],succeed:42,success:[27,30,42],successfulli:[4,27,42,46],sudo:[16,30],suffic:28,suffici:31,suffix:[7,35],suggest:[5,27],suit:[16,30],suitabl:46,sum:28,summar:21,sun:35,sundai:42,supplant:42,supplementari:32,suppli:35,support:[0,2,3,4,5,6,8,10,11,14,16,17,18,21,22,23,29,30,31,33,35,36,42,45,47],sure:[4,10,27,28,30,31,34,35,42,47],symbol:[31,42],synchron:44,syntax:[5,29,35,44,48],sys:27,system:[2,3,7,14,15,16,27,30,35,36,37,42,43,44],systemctl:29,systemd:[3,4],tab:27,tabl:[27,38,42],tag:[15,36,38,46],tail:29,take:[3,4,5,6,15,19,21,25,28,30,35,41,42,44],taken:[27,42],takeov:17,talk:[28,31,32,36,39],talli:27,tar:[4,7,30],tarbal:[0,30],target:46,task:[0,2,4,34],tcl:[0,1,2,3,4,6,10,11,21,27,28,30,33,35,36,37,44,45,47],tcl_cmd:27,tcl_int:27,tcl_string:27,tclsh:4,tcltk:4,tcp:[2,16,37],team:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],technic:47,techniqu:45,tell:[15,28,29,30,31,32,34,35,42,47],telnet:[2,29,30,34,36,37,39,41,42,43,44],temp:42,templat:40,temporari:[10,23,25,33,35],ten:29,term:[2,28,31,42],termin:[4,5,42],test:[28,30,48],text:[4,10,21,27,29,35,43,44,45,46,48],textfil:2,than:[4,10,13,15,17,30,31,35,41,42,44],thank:4,thee:[29,42],thei:[0,3,4,5,7,10,12,13,17,18,21,22,27,28,29,30,31,32,33,34,35,41,42,44,46],them:[0,1,3,4,5,7,10,12,13,14,15,17,18,21,22,23,27,28,29,30,31,34,35,36,37,38,41,42,45,47,48],themselv:[17,30,34,42,45],therebi:[45,47],therefor:[6,17,30,35,42],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47,48],thing:[3,4,6,24,26,27,28,29,34,35,42,47],think:[40,48],third:[28,34],thorough:[27,29,31,47],those:[1,3,7,11,15,21,27,28,29,30,42,45,46,47],though:[15,21,28,30,42,44],thr:35,three:[21,29,32,33,34,35,42],through:[4,10,15,21,24,28,31,36,37,38,39,42,47,48],throughout:27,thse:[],thu:[16,28,32,37,41,42],tidi:27,ties:42,till:[],time:[0,3,4,10,14,15,16,17,19,22,23,28,29,30,31,32,33,34,35,36,38,39,41,43,44,45,47],timeout:[6,14,21,23,35,46],timestamp:[35,42],timezon:35,tip:[2,42],titl:48,tiwtch:6,tls:[42,44],tmi:46,tmp:[23,42],toctre:[],todai:42,togeth:[0,2,4,21,28,34,35,36,38,42],token:47,told:28,ton:24,too:[15,17,21,23,27,35,42],tool:[3,30],top:[3,4,28,40,42],topc:42,topic:47,total:[10,27,36,42],tout:42,toward:28,trace:21,track:[2,3,15,24,27,29,42,47],tradit:[24,37,45,46,47],tradition:16,traffic:[3,35,45],trail:27,transfer:[2,6,7,11,15,22,30,34,35,37,42,44,48],transit:[19,41,42],transmit:21,transpar:35,transport:31,treat:[42,47],tree:[0,4,30],tri:[27,35,42],trick:[28,45],trigger:[10,21,27,28,32,42,46],troubl:[14,35],troubleshoot:[4,30],truncat:46,trust:[4,35,48],ttl:14,turbo:[23,30],turn:[10,16,21,35,42],tutori:[2,31],twcmd:[24,47],twice:42,twitch:[2,6,36],twith:46,two:[4,6,17,22,28,30,32,33,34,35,41,42,44,45],type:[3,4,6,7,10,12,17,21,24,27,28,29,30,31,32,33,34,35,36,37,38,39,44],typic:[15,24,35,36,39,42,47],typo:42,ubuntu:31,ufl:42,ugli:15,uglyman:15,uhost:[28,42],uid:[35,44],umod:21,unabl:[17,30,34,37,42,47],unaccess:36,unavail:[21,35],unban:[10,35,42],unbind:[17,35,45,46],uncertainti:46,uncom:[29,31,35,41],under:[0,4,30,36,42],underli:42,underlin:[42,43],undernet:[4,17,21,42],understand:[35,42],understood:21,unexpect:42,unfortun:29,unhid:6,unimport:35,unintend:46,uniqu:[35,42,46],univers:35,unix:[0,3,15,16,30,36],unknown:42,unld:42,unless:[17,21,28,30,33,35,42],unlik:[3,36],unlimit:34,unlink:[23,35],unload:[27,42],unoffici:37,unpack:0,unreach:34,unrealircd:[17,42],unreli:[24,46,47],unrest:0,unset:42,unshar:[6,48],unstick:33,unsticki:33,unstuck:42,unsur:30,untar:5,until:[7,10,15,33,35,42],unzip:[5,30],updat:[4,5,19,27,30,32,35,36,41,42,46],upgrad:[2,41,44],uplink:42,upload:[15,30,36,42,45],upon:[0,4,46,48],upper:14,uptim:[2,6],url:[35,42],usa:1,usabl:[6,15,35],usag:[2,4,6,27,35,42],use:[0,1,3,4,5,6,7,9,10,12,13,14,15,16,17,19,21,22,23,27,28,29,30,31,33,34,35,37,39,41,42,43,44,45,46,47,48],used:[0,2,4,10,11,13,15,19,21,27,28,29,30,31,33,34,35,36,37,39,41,42,43,44,45,46,47,48],useful:[1,4,10,23,30,34,42,44,45],useless:[5,24,47],user:[0,2,3,4,5,6,7,9,10,11,12,13,16,17,18,19,20,21,22,23,24,27,28,30,31,32,33,35,36,37,39,40,41,43,44,45,46,47],userban:10,userexempt:10,userfil:[0,2,4,5,6,9,10,11,19,22,23,27,29,30,34,35,41,42,45],userflag:17,userhost:46,userinfo1:35,userinfo:[13,42],userinvit:10,userlist:[6,17,20,22],usernam:[16,29,30,35,46,47],usernotic:[24,46],userst:[24,47],uses:[3,6,17,21,23,27,28,29,30,31,33,35,41,42,44,47,48],using:[1,3,4,6,7,9,10,15,16,17,19,21,27,28,29,30,33,34,35,37,41,42,44,45,46,47],usrntc:46,usst:46,usual:[4,29,30,31,33,37,40,41,42,44,47],utc:35,util:3,utim:28,vagu:30,vali:42,valiant:[0,4],valid:[3,10,21,27,34,35,36,42,44],valis0:42,valu:[10,13,14,17,21,24,27,28,35,41,43,44,46,47],vari:[42,48],variabl:[2,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,32,35,37,43,46],variable_nam:27,varieti:[0,4],variou:[1,27,30,33,35,42],verbos:42,veri:[4,6,16,20,21,28,35],verif:[21,35,44],verifi:[21,29,35,44],version:[0,1,2,3,4,5,13,17,25,27,28,37,38,43,44,46],vertic:42,vhost4:[30,35,37],vhost6:[30,35,37],vhost:[30,35,37],via:[2,3,4,6,11,16,17,20,22,27,28,29,30,32,33,34,35,36,37,38,39,41,43,44,46,47],video:42,view:[5,7,19,29,30,36,42,46],viewer:46,vim:30,vip:[46,47],virtual:35,visibl:42,visit:[5,47],vista:37,voic:[0,2,4,10,29,42,48],wai:[1,3,16,21,24,27,28,29,30,31,32,33,34,35,39,41,42,44,47],wait:[6,14,15,17,21,23,30,32,35,42],walk:31,wall:42,wallop:[35,42],want:[0,3,4,6,10,12,14,15,17,18,21,23,27,28,29,30,34,35,37,42,44,45],war:0,warm:40,warn:[4,16,28,42],warranti:1,washalfop:48,wasn:42,wasop:[10,17,48],wasoptest:10,watch:[39,46],web:[2,6,24,35,46],webpag:2,websit:30,week:42,weekdai:42,welcom:28,well:[1,24,28,29,30,31,32,35,41,42,44,47],were:[1,16,17,30,33,34,35,37,41,42,47],west:35,wget:30,what:[0,1,2,5,6,10,15,17,21,25,28,29,30,35,38,39,41,42],whatev:[1,3,28,35,36,42,43],when:[3,4,6,7,9,10,12,15,16,17,21,22,27,28,29,30,32,33,35,37,39,41,42,44,46,47],whenev:[21,27,32,34,42,44],where:[4,6,10,14,15,18,21,27,28,29,30,31,32,35,36,41,42,44,46],wherea:42,wherev:37,whether:[35,37,42],whew:28,which:[3,5,6,10,12,14,15,16,21,22,27,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],whichev:33,whisper:[24,46],whitespac:42,who:[10,15,17,21,28,30,32,35,39,42,48],whoi:[29,35],whole:27,whose:[33,42],whox:[36,42],why:[28,30,42],wide:[39,44],width:43,wild:42,wildcard:[10,28,29,42,46],window:[2,29,37],wise:[4,35],wish:[3,5,7,16,17,25,27,30,33,34,35,42,46],within:[6,15,27,30,31,33,35,38,42],without:[0,2,4,5,6,9,10,13,19,27,28,29,30,31,34,35,36,38,41,42,44],wizard:31,won:[6,10,22,27,28,30,33,34,35,42,44,46],woobi:[2,3,6,27],word:[15,17,29,30,42,46,47],work:[3,5,6,10,13,15,19,20,22,27,28,29,30,33,34,35,37,38,40,41,42,44,45,46],workaround:[24,32],world:[0,2,4,31,35],worri:24,worth:3,would:[4,5,13,28,29,30,31,32,34,35,42,43,44,46,47],wouldn:35,write:[1,2,6,7,26,30,35,41,42,47],written:[0,27,30,42,47],wrote:28,wspm:46,wspr:46,wth:[],www:[2,4,6,20],x509:[29,35,44],xfer:[23,48],xtra:42,xvf:30,xxd:29,year:[0,4,30,35,42],yes:[28,31,42],yesterdai:35,yet:[4,21,30,35,42],yoru:29,you:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48],you_want_to_export:27,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,39,40,41,42,44,47],yourbot:45,yourbranchnam:40,yourconfig:3,youreggdrop:29,youreggdropconfignameher:29,yourself:[7,29,30,40,41,44],yourusernam:40,yyyymmdd:35,zero:42,zip:30,zomg:[],zxvf:30},titles:["About Eggdrop","Boring legal stuff","Eggdrop, an open source IRC bot","Installing Eggdrop","README","Upgrading Eggdrop","Modules included with Eggdrop","Eggdrop Module Information","Assoc Module","Blowfish Module","Channels Module","Compress Module","Console Module","CTCP Module","DNS Module","Filesys Module","Ident Module","IRC Module","Notes Module","PBKDF2 Module","Seen Module","Server Module","Share Module","Transfer Module","Twitch Module","Uptime Module","Woobie Module","Writing an Eggdrop Module","Writing an Eggdrop Script","Common First Steps","Setting Up Eggdrop","Enabling TLS Security on Eggdrop","Account tracking in Eggdrop","Bans, Invites, and Exempts","Botnet Sharing and Linking","Eggdrop Core Settings","Eggdrop Features","IPv6 support","IRCv3 support","The Party Line","Patching Eggdrop","Encryption/Hashing","Eggdrop Tcl Commands","Textfile Substitutions","TLS support","Advanced Tips","Eggdrop Twitch Tcl Commands","Twitch","Users and Flags"],titleterms:{"default":45,"function":[27,47],"int":42,"new":42,"return":42,"short":30,"static":7,"super":30,Adding:34,DNS:14,TLS:[31,44],The:[30,39],Using:[32,34],about:[0,37,38,44],account2nick:42,account:[32,42],accounttrack:42,add:[29,42],addbot:42,addchanrec:42,addit:[27,31],address:42,addus:42,advanc:[35,45],api:24,arg1:42,arg2:42,arg:[42,46],argn:42,assign:29,assoc:[8,42],authent:[29,44],auto:4,automat:29,background:41,backup:42,ban:[33,42],banlist:42,banmask:42,base64:42,basic:35,best:32,bind:[42,46],block:42,blowfish:9,boot:42,bore:1,bot:[2,15,34,42],botattr:42,botflag:34,botishalfop:42,botisop:42,botisvoic:42,botlist:42,botnam:42,botnet:[5,31,34,35,44],botnick:42,botonchan:42,botport:42,bottre:34,callev:42,can:[2,7],cancel:15,cap:[38,42],capabl:[32,38],certif:44,chan:[42,46],chanban:42,chandname2nam:42,chanexempt:42,chanflag:42,chang:[5,42],chaninvit:42,chanlist:42,channame2dnam:42,channel:[10,15,29,42,46],chansettyp:42,charact:42,chat4:37,chat6:37,chat:37,chattr:42,check:32,chhandl:42,clear:15,clearqueu:42,cmd:46,command:[4,5,24,42,45,46],comment:42,common:29,commun:31,compil:7,compress:[11,42],compressfil:42,config:[5,15,30,42,45,47],configur:[29,30,31,41],configurearg:42,connect:[31,42],consol:[12,35,42],control:42,core:35,count:42,countus:42,creator:42,crontab:29,ctcp:[13,37],ctime:42,cygwin:3,dcc:[35,42,44],dccbroadcast:42,dccdumpfil:42,dcclist:42,dccputchan:42,dccsend:42,dccsimul:42,dccuse:42,decrypt:42,delchanrec:42,delhost:42,deludef:42,delus:42,desc:[15,42],descript:15,dest:15,destin:42,determin:32,develop:4,die:42,dir:[15,42],directori:[15,35,42],disclaim:47,dname:42,dnslookup:42,docker:4,document:[4,5],download:30,dst:15,dumpfil:42,durat:42,dynam:7,echo:42,edit:[30,47],effort:32,eggdrop:[0,2,3,4,5,6,7,27,28,29,30,31,32,35,36,40,42,46],enabl:[31,32,41,42],encpass:42,encrypt:[41,42],entri:42,erasenot:42,event:42,exampl:34,execut:35,exempt:[33,42],exemptlist:42,exemptmask:42,extend:32,extra:42,featur:36,file:[5,15,30,31,35,42,45,47],filemask:15,filenam:[15,42],filepath:15,fileresend:42,filesend:42,filesi:[15,42],filestat:15,find:2,findus:42,first:29,flag:[15,29,34,42,46,48],flushmod:42,formatstr:42,from:42,ftp:4,gener:31,get:[2,4,15,30,42],getaccount:42,getchan:42,getchanhost:42,getchanidl:42,getchaninfo:42,getchanjoin:42,getchanmod:42,getdccawai:42,getdccidl:42,getdesc:42,getdir:42,getfil:42,getfileq:42,getfilesendtim:42,getflag:42,getlink:42,getown:42,getpwd:42,getudef:42,getus:42,git:4,github:40,global:42,hand2idx:42,hand2nick:42,handl:42,handlen:42,handonchan:42,haschanrec:42,hash:41,help:[2,4],helpfil:42,hide:15,histori:30,host:[29,42],hostmask:42,hostnam:42,how:[2,4,5,7],hybrid:41,ident:16,idx2hand:42,idx:42,ignorelist:42,includ:6,info:42,inform:[7,31],instal:[2,3,7,30,37,44],interfac:41,invit:[33,42],invitelist:42,invitemask:42,ipv6:37,irc:[2,17,31,44,47],ircnick:42,ircv3:38,isawai:42,isban:42,isbansticki:42,isbotnick:42,ischanban:42,ischanexempt:42,ischaninvit:42,ischanjup:42,iscompress:42,isdynam:42,isexempt:42,isexemptsticki:42,ishalfop:42,isidentifi:42,isignor:42,isinvit:42,isinvitesticki:42,isircbot:42,isjup:42,islink:42,ismod:46,isop:42,ispermban:42,ispermexempt:42,isperminvit:42,isset:42,istl:42,isupport:42,isvip:46,isvoic:42,join:[29,32],jump:42,keep:45,kei:[31,42,44],keyword:42,killassoc:42,killban:42,killchanban:42,killchanexempt:42,killchaninvit:42,killdcc:42,killexempt:42,killignor:42,killinvit:42,killtim:42,killutim:42,languag:42,lastbind:42,legal:1,level:42,lifetim:42,limit:[24,42,47],line:[4,39],link:[34,42],list:42,listen:[31,42],listnot:42,loadchannel:42,loadhelp:42,loadmodul:[7,42],localfil:15,locat:30,log:[29,35,45],logfil:42,make:34,manipul:42,mask:42,maskhost:42,masktyp:42,match:42,matchaddr:42,matchattr:42,matchban:42,matchcidr:42,matchexempt:42,matchinvit:42,matchstr:42,md5:42,messag:42,method:29,minut:42,miscellan:42,mkdir:[15,42],mode:42,modifi:45,modul:[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,35,42],modular:45,module_clos:27,module_expmem:27,module_report:27,module_start:27,module_t:27,monitor:42,more:2,msg:42,must:5,myip:42,name:42,need:7,newban:42,newchanban:42,newchanexempt:42,newchaninvit:42,newer:29,newexempt:42,newignor:42,newinvit:42,newnam:42,nick2hand:42,nick:[42,46],nicknam:[15,42],nickserv:29,note:[18,42],notic:4,notifi:32,numberlist:42,numvers:42,obtain:4,old:[29,42],oldnam:42,onchan:42,onchansplit:42,onelin:42,onlin:42,open:2,optim:15,option:42,output:42,own:[],parti:39,partylin:[15,24,29],pass:42,passwdok:42,password:42,patch:40,path:35,pattern:42,pbkdf2:19,pend:15,permiss:29,port:42,pre:[2,4,31],prefix:42,prepar:31,prerequisit:30,proc:42,procedur:42,protect:31,pushmod:42,putallbot:42,putbot:42,putcmdlog:42,putdcc:42,puthelp:42,putkick:42,putlog:42,putloglev:42,putnow:42,putquick:42,putserv:42,putxferlog:42,pwd:15,queue:42,queuesiz:42,quick:[3,4],quit:15,rand:42,raw:42,read:5,readm:4,reason:42,record:[34,42],refreshchan:42,regist:47,rehash:42,reload:42,reloadhelp:42,remov:42,renam:45,renudef:42,req:42,requir:[3,27,32,42],requisit:[2,4,31],resetban:42,resetchan:42,resetchanidl:42,resetchanjoin:42,resetconsol:42,resetexempt:42,resetinvit:42,restart:[29,42],rfcequal:42,rmdir:[15,42],roomstat:46,sasl:29,save:42,savechannel:42,script:[5,28,32,35,44],second:42,secur:[31,44],seen:20,self:45,sendnot:42,server:[21,31,32,42],serveraddress:42,set:[29,30,35,37,42,44],setchan:42,setchaninfo:42,setdccawai:42,setdesc:42,setflag:42,setlink:42,setown:42,setpwd:42,setudef:42,setup:15,setus:42,share:[15,22,34],show:30,snapshot:4,socklist:42,solo:41,some:2,sourc:[2,15,30],src:42,ssl:[35,44],stackabl:42,start:[4,30],starttl:42,startup:[3,4],stat:15,statu:[32,42],step:29,stickban:42,stickexempt:42,stickinvit:42,still:7,storenot:42,str:42,strftime:42,string1:42,string2:42,string:[42,45],strip:42,stripcod:42,stuff:1,submit:40,substitut:43,support:[32,37,38,44],system:[4,29],systemd:29,tag:[32,42],tagmsg:42,target:42,tcl:[5,24,32,41,42,46],tcp:42,telnet:35,term:34,text:42,textfil:43,thing:2,time:42,timer:42,timerid:[],timernam:42,tip:45,tlsstatu:42,topic:42,track:32,traffic:42,transfer:23,twcmd:46,twitch:[24,46,47],twitchmod:46,twitchvip:46,type:[42,46],unam:42,unbind:42,uncompressfil:42,unhid:15,unixtim:42,unlink:42,unloadhelp:42,unloadmodul:42,unshar:15,unstickban:42,unstickexempt:42,unstickinvit:42,upgrad:[4,5],uptim:[25,42],usag:[15,37,38,41,44],use:[],user:[15,29,34,42,48],userlist:42,userport:42,userst:46,utim:42,validchan:42,valididx:42,validus:42,valu:42,variabl:[42,45],version:[30,42],via:[40,42],washalfop:42,wasop:42,web:47,what:[4,7,27,34],where:2,whom:42,whox:32,why:[],window:3,without:7,woobi:26,write:[27,28],you:2,your:45}}) \ No newline at end of file +Search.setIndex({"docnames": ["about/about", "about/legal", "index", "install/install", "install/readme", "install/upgrading", "modules/included", "modules/index", "modules/internals", "modules/mod/assoc", "modules/mod/blowfish", "modules/mod/channels", "modules/mod/compress", "modules/mod/console", "modules/mod/ctcp", "modules/mod/dns", "modules/mod/filesys", "modules/mod/ident", "modules/mod/irc", "modules/mod/notes", "modules/mod/pbkdf2", "modules/mod/seen", "modules/mod/server", "modules/mod/share", "modules/mod/transfer", "modules/mod/twitch", "modules/mod/uptime", "modules/mod/woobie", "modules/writing", "tutorials/firstscript", "tutorials/firststeps", "tutorials/module", "tutorials/setup", "tutorials/tlssetup", "using/accounts", "using/bans", "using/botnet", "using/core", "using/features", "using/ipv6", "using/ircv3", "using/partyline", "using/patch", "using/pbkdf2info", "using/tcl-commands", "using/text-sub", "using/tls", "using/tricks", "using/twitch-tcl-commands", "using/twitchinfo", "using/users"], "filenames": ["about/about.rst", "about/legal.rst", "index.rst", "install/install.rst", "install/readme.rst", "install/upgrading.rst", "modules/included.rst", "modules/index.rst", "modules/internals.rst", "modules/mod/assoc.rst", "modules/mod/blowfish.rst", "modules/mod/channels.rst", "modules/mod/compress.rst", "modules/mod/console.rst", "modules/mod/ctcp.rst", "modules/mod/dns.rst", "modules/mod/filesys.rst", "modules/mod/ident.rst", "modules/mod/irc.rst", "modules/mod/notes.rst", "modules/mod/pbkdf2.rst", "modules/mod/seen.rst", "modules/mod/server.rst", "modules/mod/share.rst", "modules/mod/transfer.rst", "modules/mod/twitch.rst", "modules/mod/uptime.rst", "modules/mod/woobie.rst", "modules/writing.rst", "tutorials/firstscript.rst", "tutorials/firststeps.rst", "tutorials/module.rst", "tutorials/setup.rst", "tutorials/tlssetup.rst", "using/accounts.rst", "using/bans.rst", "using/botnet.rst", "using/core.rst", "using/features.rst", "using/ipv6.rst", "using/ircv3.rst", "using/partyline.rst", "using/patch.rst", "using/pbkdf2info.rst", "using/tcl-commands.rst", "using/text-sub.rst", "using/tls.rst", "using/tricks.rst", "using/twitch-tcl-commands.rst", "using/twitchinfo.rst", "using/users.rst"], "titles": ["About Eggdrop", "Boring legal stuff", "Eggdrop, an open source IRC bot", "Installing Eggdrop", "README", "Upgrading Eggdrop", "Modules included with Eggdrop", "Eggdrop Module Information", "Eggdrop Bind Internals", "Assoc Module", "Blowfish Module", "Channels Module", "Compress Module", "Console Module", "CTCP Module", "DNS Module", "Filesys Module", "Ident Module", "IRC Module", "Notes Module", "PBKDF2 Module", "Seen Module", "Server Module", "Share Module", "Transfer Module", "Twitch Module", "Uptime Module", "Woobie Module", "How to Write an Eggdrop Module", "Writing an Eggdrop Script", "Common First Steps", "Writing a Basic Eggdrop Module", "Setting Up Eggdrop", "Enabling TLS Security on Eggdrop", "Account tracking in Eggdrop", "Bans, Invites, and Exempts", "Botnet Sharing and Linking", "Eggdrop Core Settings", "Eggdrop Features", "IPv6 support", "IRCv3 support", "The Party Line", "Patching Eggdrop", "Encryption/Hashing", "Eggdrop Tcl Commands", "Textfile Substitutions", "TLS support", "Advanced Tips", "Eggdrop Twitch Tcl Commands", "Twitch", "Users and Flags"], "terms": {"last": [0, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 32, 35, 37, 39, 40, 41, 44, 45, 46, 47, 48, 50], "revis": [0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 35, 37, 39, 40, 41, 44, 45, 46, 47, 48, 50], "juli": 0, "27": [0, 12, 17, 23, 40], "2010": [0, 11, 15, 22, 37, 39, 40, 45, 46], "wa": [0, 2, 8, 20, 25, 29, 31, 32, 36, 40, 43, 44, 46, 48, 49], "creat": [0, 3, 4, 8, 16, 17, 23, 28, 29, 30, 31, 32, 35, 37, 42, 43, 44, 46, 47, 49], "around": [0, 4, 25, 33, 39, 44, 49], "decemb": [0, 27, 38, 41], "1993": [0, 38], "help": [0, 3, 8, 14, 22, 28, 29, 30, 31, 32, 35, 36, 37, 39, 41, 44, 45, 50], "stop": [0, 11, 16, 18, 28, 30, 44, 48], "incess": 0, "war": 0, "gayteen": 0, "It": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 16, 18, 22, 26, 28, 30, 32, 34, 36, 37, 38, 39, 41, 44, 48, 49], "spawn": 0, "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 16, 17, 18, 19, 20, 22, 23, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 41, 43, 45, 46, 47, 48, 49, 50], "anoth": [0, 8, 11, 16, 18, 19, 22, 23, 28, 32, 36, 37, 44, 45, 48], "bot": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 29, 30, 32, 33, 35, 37, 38, 39, 40, 41, 43, 45, 46, 47, 48, 49, 50], "process": [0, 3, 4, 5, 12, 16, 17, 24, 30, 32, 36, 43, 44, 46], "being": [0, 4, 11, 16, 18, 22, 33, 34, 38, 39, 44, 48], "written": [0, 28, 31, 32, 44, 49], "time": [0, 3, 4, 11, 15, 16, 17, 18, 20, 23, 24, 29, 30, 32, 33, 34, 35, 36, 37, 38, 40, 41, 43, 45, 46, 47, 49], "call": [0, 3, 4, 8, 28, 29, 30, 36, 37, 44, 48], "unrest": 0, "The": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 14, 15, 16, 17, 20, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 40, 43, 44, 46, 47, 48, 49, 50], "purpos": [0, 1, 6, 8, 26, 27, 31, 36, 37, 44], "answer": [0, 7, 14, 17, 22, 29], "request": [0, 4, 5, 7, 11, 14, 16, 18, 22, 32, 34, 35, 37, 39, 40, 42, 44, 46, 47, 49], "other": [0, 1, 4, 6, 8, 10, 11, 15, 16, 17, 18, 19, 20, 22, 23, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "first": [0, 2, 4, 5, 8, 16, 20, 22, 28, 29, 31, 32, 33, 36, 37, 43, 44, 46, 47, 48], "public": [0, 1, 4, 29, 30, 31, 33, 37, 44, 46, 47, 50], "releas": [0, 1, 32, 43, 44], "version": [0, 1, 2, 3, 4, 5, 8, 14, 18, 26, 28, 29, 31, 39, 40, 45, 46, 48], "0": [0, 4, 8, 11, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 28, 29, 30, 31, 32, 36, 37, 39, 40, 41, 43, 44, 46, 47, 48], "6": [0, 5, 8, 11, 18, 30, 32, 37, 39, 44], "sinc": [0, 3, 5, 18, 32, 36, 37, 38, 39, 44, 46, 47], "ha": [0, 1, 2, 4, 5, 8, 11, 15, 16, 18, 22, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 44, 46, 48, 49, 50], "grown": 0, "what": [0, 1, 2, 5, 6, 8, 11, 16, 18, 22, 26, 29, 30, 31, 32, 37, 40, 41, 43, 44], "you": [0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], "have": [0, 1, 3, 4, 5, 6, 8, 10, 11, 13, 16, 18, 19, 20, 22, 23, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50], "befor": [0, 4, 8, 11, 15, 17, 18, 19, 22, 23, 24, 28, 30, 31, 32, 34, 36, 37, 44, 49], "i": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], "world": [0, 2, 4, 33, 37], "": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 16, 17, 18, 21, 22, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 41, 43, 45, 46, 47, 48, 49, 50], "most": [0, 2, 4, 5, 17, 18, 22, 28, 29, 30, 32, 33, 37, 38, 41, 44, 48, 49], "popular": [0, 4, 5, 32, 37], "internet": [0, 4, 44, 46], "relai": [0, 4, 36, 37], "chat": [0, 2, 4, 6, 8, 14, 22, 30, 32, 36, 37, 38, 41, 44, 46, 48, 49], "irc": [0, 4, 6, 8, 16, 17, 22, 25, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 48, 50], "freeli": [0, 4], "distribut": [0, 1, 4, 31, 32], "under": [0, 4, 31, 32, 38, 44], "gnu": [0, 1, 3, 4, 8, 12, 31], "gener": [0, 1, 3, 4, 8, 20, 25, 29, 30, 31, 32, 40, 43, 44, 46, 49], "licens": [0, 1, 4, 31], "gpl": [0, 4, 31], "featur": [0, 2, 4, 7, 11, 18, 22, 23, 30, 32, 34, 37, 39, 40, 42, 44, 46, 49, 50], "rich": [0, 4, 32], "program": [0, 2, 4, 17, 30, 31, 32], "design": [0, 2, 4, 20, 40, 48], "easili": [0, 1, 2, 4, 29, 38, 44], "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24, 28, 29, 30, 31, 32, 33, 35, 37, 38, 39, 41, 43, 44, 45, 46, 47, 48, 49, 50], "expand": [0, 2, 4], "upon": [0, 4, 48, 50], "both": [0, 4, 11, 22, 24, 33, 34, 36, 39, 43, 44, 46], "novic": [0, 4], "advanc": [0, 2, 4, 6, 21, 29, 38], "user": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49], "varieti": [0, 4], "hardwar": [0, 4], "softwar": [0, 1, 2, 4, 31], "platform": [0, 4, 25, 44, 49], "an": [0, 3, 4, 5, 6, 7, 8, 10, 11, 15, 16, 17, 18, 20, 22, 24, 25, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49], "sit": [0, 4, 11, 37, 43], "channel": [0, 2, 4, 5, 6, 8, 9, 13, 18, 21, 22, 23, 25, 28, 29, 32, 34, 35, 36, 37, 38, 41, 45, 47, 49, 50], "perform": [0, 3, 4, 5, 8, 11, 31, 32, 44, 50], "autom": [0, 2, 4], "task": [0, 2, 4, 8, 36], "while": [0, 4, 5, 11, 17, 25, 32, 34, 35, 37, 41, 43, 44, 49], "look": [0, 4, 5, 6, 8, 11, 21, 26, 27, 29, 30, 31, 33, 34, 37, 38, 43, 44, 46, 49], "just": [0, 3, 4, 5, 6, 8, 15, 16, 18, 20, 23, 28, 30, 31, 32, 34, 36, 37, 41, 43, 44, 47, 48, 49], "like": [0, 1, 4, 6, 8, 10, 11, 14, 16, 18, 20, 28, 29, 30, 31, 32, 37, 38, 39, 41, 42, 43, 44, 46, 48, 49, 50], "normal": [0, 4, 6, 14, 15, 16, 17, 22, 28, 29, 33, 37, 44, 46, 47, 48, 49], "some": [0, 4, 5, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 28, 31, 32, 34, 35, 36, 37, 38, 39, 40, 44, 46, 47, 49, 50], "function": [0, 1, 2, 4, 6, 7, 8, 20, 25, 31, 32, 36, 37, 39, 43, 44, 47, 48], "includ": [0, 2, 3, 4, 7, 8, 18, 26, 28, 31, 32, 33, 35, 37, 38, 39, 43, 44, 46, 48, 49], "protect": [0, 2, 3, 4, 11, 20, 22, 30, 32, 35, 37, 43, 44, 46, 50], "abus": [0, 2, 4], "allow": [0, 3, 4, 5, 6, 7, 11, 12, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 29, 30, 31, 32, 34, 36, 37, 38, 43, 44, 46, 47, 49], "privileg": [0, 4, 17, 50], "gain": [0, 4, 43, 50], "op": [0, 2, 4, 11, 18, 25, 34, 36, 38, 43, 44, 49, 50], "voic": [0, 2, 4, 11, 30, 44, 50], "statu": [0, 2, 4, 11, 25, 28, 31, 33, 37, 47, 48, 49], "log": [0, 2, 4, 11, 20, 25, 28, 31, 32, 34, 42, 43, 44, 49], "event": [0, 4, 25, 28, 31, 34, 36, 37, 48, 49], "provid": [0, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 28, 30, 31, 32, 37, 39, 40, 42, 44, 46, 48, 49], "inform": [0, 2, 3, 4, 5, 6, 8, 11, 16, 26, 28, 29, 30, 31, 32, 34, 36, 37, 39, 40, 44, 46], "host": [0, 2, 4, 11, 17, 22, 25, 29, 35, 36, 37, 46, 48, 50], "game": [0, 2, 4, 25, 49], "etc": [0, 2, 4, 8, 11, 18, 25, 28, 32, 34, 36, 37, 38, 44, 47, 50], "One": [0, 4, 29, 34, 44], "make": [0, 2, 3, 4, 5, 6, 7, 11, 14, 16, 20, 22, 23, 25, 28, 29, 30, 32, 33, 37, 39, 40, 42, 44, 46, 47, 49], "stand": [0, 4, 32], "out": [0, 3, 4, 8, 24, 26, 29, 30, 31, 32, 36, 37, 41, 43, 44, 46], "modul": [0, 4, 8, 32, 34, 36, 38, 43, 49], "tcl": [0, 1, 2, 3, 4, 6, 11, 12, 22, 28, 29, 32, 35, 37, 38, 39, 46, 47, 49], "script": [0, 2, 3, 4, 7, 8, 11, 22, 30, 31, 32, 35, 38, 39, 44, 47, 48, 49, 50], "support": [0, 2, 3, 4, 5, 6, 9, 11, 12, 15, 17, 18, 19, 22, 23, 24, 30, 32, 33, 35, 37, 38, 44, 47, 49], "With": [0, 4, 6, 16, 31, 36, 37, 43, 44, 46], "can": [0, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], "almost": [0, 4, 32, 35, 50], "ani": [0, 1, 2, 3, 4, 5, 7, 13, 16, 17, 18, 19, 22, 23, 25, 28, 29, 30, 31, 32, 35, 37, 38, 41, 43, 44, 46, 48, 49, 50], "want": [0, 3, 4, 6, 8, 11, 13, 15, 16, 18, 19, 22, 24, 28, 29, 30, 31, 32, 36, 37, 39, 44, 46, 47], "thei": [0, 3, 4, 5, 7, 8, 11, 13, 14, 18, 19, 22, 23, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 43, 44, 46, 48], "do": [0, 4, 8, 11, 13, 16, 17, 18, 20, 22, 26, 29, 30, 31, 32, 34, 36, 37, 38, 44, 45, 47, 48, 49], "anyth": [0, 4, 16, 29, 30, 31, 32, 36, 37, 41, 44, 48], "prevent": [0, 4, 11, 18, 19, 25, 30, 32, 36, 39, 44, 49], "flood": [0, 4, 11, 14, 19, 22, 36, 37, 38, 44, 50], "greet": [0, 2, 4, 11, 29, 34], "ban": [0, 2, 4, 11, 18, 25, 36, 37, 38, 49, 50], "advertis": [0, 4, 44], "also": [0, 2, 3, 4, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 43, 44, 45, 46, 47, 48, 49, 50], "link": [0, 2, 3, 4, 5, 6, 7, 16, 23, 24, 28, 31, 37, 38, 40, 43, 46, 47], "multipl": [0, 2, 4, 8, 17, 29, 31, 32, 36, 37, 38, 44, 48], "togeth": [0, 2, 4, 22, 29, 36, 37, 38, 40, 44], "form": [0, 4, 28, 29, 44, 45], "botnet": [0, 2, 3, 4, 6, 9, 11, 13, 16, 22, 26, 32, 38, 39, 41, 43, 44, 47, 50], "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50], "each": [0, 4, 6, 11, 16, 19, 24, 29, 30, 32, 34, 36, 37, 38, 41, 44, 47, 48, 50], "secur": [0, 2, 4, 6, 10, 20, 30, 32, 37, 38, 43, 44], "control": [0, 2, 4, 18, 22, 29, 30, 36, 37, 38, 46, 49, 50], "effici": [0, 4, 32, 36, 37, 38], "even": [0, 4, 7, 16, 18, 28, 31, 32, 35, 36, 37, 38, 41, 44, 49], "across": [0, 4, 36, 40, 42, 44, 47], "network": [0, 2, 4, 18, 22, 37, 44, 45], "share": [0, 2, 4, 6, 11, 12, 24, 28, 37, 38, 44], "list": [0, 4, 6, 8, 11, 15, 16, 20, 22, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 46, 48, 49], "exempt": [0, 1, 2, 4, 11, 18, 25, 36, 38, 49, 50], "invit": [0, 2, 4, 11, 18, 25, 36, 38, 40, 49], "ignor": [0, 4, 8, 14, 22, 23, 29, 36, 37, 38, 44, 48], "userfil": [0, 2, 4, 5, 6, 10, 11, 12, 20, 23, 24, 28, 30, 32, 36, 37, 43, 44, 47], "enabl": [0, 2, 4, 7, 11, 13, 16, 18, 22, 24, 28, 29, 30, 32, 36, 37, 38, 39, 40, 46, 47, 49], "same": [0, 3, 4, 5, 7, 8, 11, 12, 17, 18, 28, 29, 32, 34, 36, 37, 40, 43, 44, 45, 46, 47, 48], "access": [0, 4, 17, 22, 28, 29, 30, 32, 38, 41, 43, 44, 46, 48, 49, 50], "everi": [0, 3, 4, 11, 16, 18, 22, 24, 28, 29, 30, 34, 35, 37, 39, 43, 44, 50], "your": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 46, 49], "see": [0, 2, 3, 4, 5, 6, 8, 11, 16, 18, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 41, 42, 43, 44, 45, 48], "doc": [0, 3, 4, 5, 6, 22, 29, 31, 33, 37, 41, 44, 48, 49], "set": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 29, 33, 34, 35, 36, 38, 40, 41, 43, 45, 47, 48, 49, 50], "up": [0, 2, 3, 4, 5, 6, 16, 22, 26, 28, 29, 33, 34, 36, 37, 41, 43, 44, 49], "alwai": [0, 3, 4, 11, 32, 34, 35, 44], "improv": [0, 4], "adjust": [0, 4, 18], "becaus": [0, 4, 8, 17, 22, 28, 29, 37, 44, 47, 48, 49], "ar": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "bug": [0, 3, 4, 29, 32, 42], "fix": [0, 3, 4, 28, 37, 44], "ad": [0, 2, 3, 4, 5, 7, 8, 20, 22, 23, 25, 28, 29, 32, 34, 37, 38, 39, 40, 43, 44, 46, 48, 49], "demand": [0, 4], "them": [0, 1, 3, 4, 5, 7, 11, 13, 14, 15, 16, 18, 19, 22, 23, 24, 28, 29, 30, 32, 33, 36, 37, 38, 39, 40, 43, 44, 47, 49, 50], "actual": [0, 4, 8, 16, 28, 29, 33, 37, 41, 44], "sens": [0, 4], "In": [0, 4, 5, 8, 15, 28, 30, 31, 32, 33, 34, 36, 37, 44, 46, 49], "fact": [0, 4, 48], "exist": [0, 4, 8, 16, 22, 28, 31, 34, 43, 44, 48, 49, 50], "sever": [0, 4, 14, 28, 32, 33, 40, 44, 47], "year": [0, 4, 32, 37, 44], "v0": [0, 4, 44], "7": [0, 4, 11, 32, 39, 44], "9": [0, 2, 4, 6, 7, 8, 11, 12, 20, 22, 24, 26, 30, 32, 34, 36, 37, 40, 43, 44, 45, 46, 48], "final": [0, 4, 8, 29, 30, 32, 37, 43], "go": [0, 3, 4, 6, 16, 22, 26, 29, 30, 32, 33, 34, 44], "1": [0, 1, 3, 4, 5, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 43, 44, 46, 48, 49], "part": [0, 4, 8, 22, 25, 29, 31, 37, 38, 44, 46, 47, 49], "tree": [0, 4, 32], "A": [0, 2, 4, 5, 11, 17, 29, 30, 31, 34, 36, 37, 38, 40, 41, 44, 45, 46, 48, 50], "valiant": [0, 4], "effort": [0, 2, 4, 44], "been": [0, 1, 4, 5, 16, 18, 22, 28, 35, 37, 38, 44, 48], "made": [0, 1, 3, 4, 5, 11, 23, 31, 42, 44, 46, 49], "chase": [0, 4], "down": [0, 3, 4, 16, 36, 44], "destroi": [0, 4], "To": [0, 3, 4, 5, 7, 8, 29, 30, 31, 32, 33, 34, 37, 39, 41, 42, 44, 46, 47, 48], "need": [0, 3, 4, 8, 11, 15, 17, 18, 22, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 43, 44, 46, 48, 49, 50], "sort": [0, 4, 35], "unix": [0, 3, 16, 17, 32, 38], "account": [0, 2, 4, 17, 19, 28, 30, 32, 38, 40, 42, 43, 49], "pretti": [0, 41], "good": [0, 16, 22, 25, 29, 32, 37, 44, 49, 50], "knowledg": 0, "how": [0, 3, 6, 8, 11, 14, 15, 16, 19, 22, 23, 25, 29, 30, 31, 32, 33, 35, 36, 37, 44, 46, 47, 48, 49], "compil": [0, 2, 3, 4, 28, 31, 32, 33, 37, 39, 44, 46], "read": [0, 2, 3, 4, 6, 7, 17, 28, 29, 30, 32, 33, 37, 44, 45, 49], "dcc": [0, 2, 4, 6, 8, 16, 21, 22, 24, 28, 30, 31, 32, 36, 38, 39, 41, 43, 47], "absolut": [0, 33, 44, 50], "minimum": [0, 11, 31, 44, 48], "5": [0, 4, 8, 11, 22, 23, 28, 29, 32, 37, 39, 44, 45], "mb": 0, "disk": [0, 24, 32, 37, 38, 44], "space": [0, 24, 37, 40, 44], "tarbal": [0, 32], "4": [0, 3, 4, 8, 11, 15, 22, 28, 29, 30, 31, 32, 33, 36, 37, 39, 44], "unpack": 0, "cannot": [0, 28, 32, 34, 43, 44, 50], "without": [0, 2, 4, 5, 6, 10, 11, 14, 20, 28, 29, 30, 31, 32, 33, 36, 37, 38, 40, 43, 44, 46], "instal": [0, 4, 5, 29, 30, 33, 37], "shell": [0, 3, 4, 17, 30, 32, 37, 44], "copyright": [0, 1, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "c": [0, 1, 2, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "1999": [0, 3, 4, 7, 35, 36, 42, 44, 45, 47], "2022": [], "egghead": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "develop": [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50], "team": [0, 1, 2, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "eggdrop": [1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 35, 39, 40, 43, 45, 46, 47, 49, 50], "robei": [1, 3, 4, 38, 45, 50], "pointer": [1, 3, 4, 8, 31, 38, 45], "As": [1, 16, 20, 29, 32, 33, 40, 44, 46, 49], "januari": [1, 9, 10, 13, 19, 21, 24, 26, 44], "1997": [1, 3, 4, 38, 45], "accord": [1, 44, 50], "There": [1, 3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 29, 30, 31, 33, 34, 35, 37, 39, 43, 45, 46, 49, 50], "should": [1, 3, 4, 5, 8, 11, 13, 14, 15, 16, 18, 20, 22, 23, 25, 28, 29, 30, 31, 32, 36, 37, 39, 41, 43, 44, 46, 48, 49], "copi": [1, 2, 5, 7, 16, 24, 28, 31, 32, 44], "file": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 38, 39, 43, 45, 46, 50], "If": [1, 3, 4, 5, 6, 7, 8, 11, 13, 16, 17, 18, 20, 21, 22, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 46, 47, 48], "write": [1, 2, 6, 7, 27, 32, 37, 43, 44, 49], "free": [1, 2, 5, 28, 31], "foundat": [1, 31], "inc": [1, 31], "51": 1, "franklin": 1, "street": 1, "fifth": 1, "floor": 1, "boston": [1, 31], "ma": [1, 31], "02110": 1, "1301": 1, "usa": [1, 31], "3": [1, 8, 11, 14, 15, 16, 18, 22, 24, 30, 31, 32, 33, 34, 36, 37, 40, 44], "28": [1, 10, 20], "all": [1, 5, 6, 7, 8, 11, 14, 15, 16, 18, 20, 22, 23, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 49, 50], "chang": [1, 2, 6, 8, 10, 11, 16, 18, 20, 22, 23, 25, 29, 31, 32, 33, 36, 37, 38, 40, 41, 42, 46, 48, 49], "sourc": [1, 3, 4, 5, 6, 7, 8, 28, 29, 31, 33, 37, 42, 44, 46, 47], "code": [1, 2, 3, 4, 7, 8, 28, 29, 44], "relat": [1, 6, 11, 29, 31, 39, 44], "still": [1, 4, 5, 11, 16, 23, 31, 32, 33, 34, 37, 38, 44, 49], "did": [1, 30, 43], "past": [1, 4, 28, 31, 37], "previou": [1, 3, 4, 5, 20, 32, 44, 49], "0m": 1, "were": [1, 17, 18, 32, 35, 36, 37, 39, 43, 44, 49], "differ": [1, 3, 4, 5, 11, 16, 22, 29, 31, 33, 34, 37, 43, 44, 47, 48], "scheme": 1, "mai": [1, 4, 5, 11, 12, 16, 17, 18, 24, 29, 32, 36, 37, 39, 40, 44, 47, 48, 49], "option": [1, 3, 4, 7, 11, 16, 17, 20, 22, 30, 31, 32, 37, 46, 49], "those": [1, 3, 7, 12, 16, 22, 28, 29, 30, 31, 32, 44, 47, 48, 49], "instead": [1, 4, 5, 11, 16, 17, 18, 23, 25, 32, 36, 37, 43, 44, 46, 47, 49, 50], "packag": [1, 3, 4, 32, 33], "bless": 1, "For": [1, 2, 3, 5, 7, 8, 16, 22, 30, 31, 32, 33, 36, 37, 39, 40, 41, 43, 44, 46, 47, 48, 49], "bear": 1, "date": [1, 4, 31, 32, 34, 37, 44], "later": [1, 3, 6, 8, 10, 19, 20, 26, 29, 31, 32, 37, 44, 46], "choic": [1, 22, 29], "must": [1, 2, 3, 4, 8, 11, 15, 17, 18, 22, 24, 28, 30, 31, 32, 33, 34, 36, 37, 43, 44, 46, 48], "match": [1, 2, 8, 11, 16, 18, 28, 29, 31, 35, 37, 43, 46, 48], "net": [1, 3, 18, 22, 25, 32, 34, 40], "blowfish": [1, 2, 5, 6, 20, 28, 37, 43, 44], "abov": [1, 4, 11, 18, 20, 28, 29, 30, 38, 44, 45], "restrict": [1, 16, 17, 22, 37, 44, 45, 49], "origin": [1, 8, 22, 32, 42, 44], "chri": 1, "fuller": 1, "place": [1, 3, 5, 7, 11, 16, 18, 29, 31, 32, 35, 37, 44, 46, 49], "him": 1, "domain": [1, 15, 36], "variou": [1, 8, 28, 32, 35, 37, 44], "well": [1, 8, 25, 29, 30, 31, 32, 33, 34, 37, 43, 44, 46, 49], "contain": [1, 3, 4, 5, 29, 32, 34, 36, 37, 39, 44, 46, 48], "could": [1, 8, 22, 29, 36, 37, 39, 42, 43, 44, 46, 49], "port": [1, 5, 15, 17, 22, 23, 30, 32, 33, 36, 37, 39, 46], "applic": [1, 37, 44], "john": 1, "ousterhout": 1, "wai": [1, 3, 17, 22, 25, 28, 29, 30, 32, 33, 34, 35, 36, 37, 41, 43, 44, 46, 49], "affili": [1, 49], "its": [1, 2, 4, 7, 11, 16, 17, 18, 20, 22, 23, 25, 29, 30, 31, 32, 34, 36, 37, 38, 42, 44, 47, 49], "own": [1, 7, 16, 17, 22, 23, 29, 30, 31, 32, 33, 40, 44, 46, 47, 49], "nots": 1, "warranti": [1, 31], "impli": [1, 28, 31], "whatev": [1, 3, 29, 37, 38, 44, 45], "risk": [1, 22], "matter": [1, 8, 15, 29, 30], "put": [1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 32, 37, 44, 46], "built": [2, 17, 44, 47], "assist": [2, 32, 34, 46], "manag": [2, 4, 6, 16, 25, 33, 49], "oldest": [2, 44], "activ": [2, 11, 17, 31, 32, 34, 35, 41, 44, 46], "maintain": [2, 17, 32, 34, 47, 48], "via": [2, 3, 4, 6, 12, 17, 18, 21, 23, 28, 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 46, 48, 49], "abil": [2, 7, 17, 33, 34, 36, 38, 44], "run": [2, 3, 4, 5, 7, 11, 17, 22, 28, 29, 30, 31, 32, 33, 34, 36, 37, 43, 45, 46, 48], "join": [2, 6, 8, 11, 13, 18, 19, 25, 29, 31, 32, 33, 35, 37, 38, 40, 41, 44, 48, 49, 50], "perorm": 2, "obtain": [2, 33, 46], "larg": [2, 16, 18, 22, 37], "number": [2, 11, 16, 18, 19, 20, 22, 24, 25, 28, 31, 32, 33, 36, 37, 43, 44, 46, 48, 49, 50], "integr": 2, "current": [2, 4, 6, 7, 8, 10, 16, 18, 19, 20, 25, 28, 30, 32, 34, 36, 37, 38, 41, 44, 45, 46, 48], "ircv3": [2, 34, 38, 44, 47], "capabl": [2, 37, 38, 44, 47, 49], "tl": [2, 3, 4, 5, 8, 30, 32, 37, 44], "ipv6": [2, 32, 37, 38, 44], "twitch": [2, 6, 38], "much": [2, 3, 8, 25, 28, 32, 41, 44], "project": [2, 42, 49], "http": [2, 4, 6, 21, 26, 32, 34, 40], "github": [2, 4, 32], "com": [2, 4, 5, 6, 21, 22, 29, 30, 32, 36, 37, 43, 44, 46], "egggdrop": 2, "clone": [2, 4, 11, 32], "git": [2, 3, 32, 42], "altern": [2, 4, 17, 22, 32, 33, 36, 37, 44, 46], "stabl": [2, 4, 32], "snapshot": [2, 32], "locat": [2, 4, 24, 29, 30, 33, 37, 46], "geteggdrop": [2, 4, 32], "addit": [2, 4, 5, 8, 17, 22, 32, 37, 44, 46, 48], "found": [2, 4, 8, 28, 37, 44, 48], "offici": [2, 4], "webpag": 2, "www": [2, 4, 6, 21], "org": [2, 4, 5, 6, 26, 29, 32, 33, 36, 37, 44], "requir": [2, 4, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 32, 37, 43, 46, 48], "header": [2, 4, 28, 29, 33, 46], "present": [2, 6, 29, 30, 34, 39, 44, 48, 49], "system": [2, 3, 7, 15, 16, 17, 28, 32, 37, 38, 39, 44, 45, 46], "strongli": [2, 4, 32], "encourag": [2, 32, 43], "openssl": [2, 3, 4, 20, 30, 32, 33, 37, 46], "commun": [2, 28, 36, 41, 42, 44], "guid": [2, 3, 29, 32, 33], "quickli": [2, 37], "here": [2, 4, 11, 14, 15, 16, 18, 19, 22, 24, 29, 30, 31, 32, 35, 36, 37, 44, 47, 48], "lurk": 2, "libera": [2, 4, 5, 22, 28, 29, 30, 32], "readm": [2, 3], "notic": [2, 14, 16, 29, 36, 37, 44, 49], "quick": [2, 28, 32, 37], "startup": [2, 8, 43, 44], "upgrad": [2, 43, 46], "command": [2, 3, 6, 8, 11, 13, 16, 17, 18, 21, 22, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 46, 49, 50], "line": [2, 3, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 43, 44, 46, 47, 48, 49], "auto": [2, 3, 36, 50], "start": [2, 3, 5, 6, 10, 17, 20, 22, 27, 29, 30, 36, 37, 40, 41, 43, 44, 45, 48, 49], "document": [2, 8, 17, 29, 32, 33, 36, 39, 40, 42, 46, 47], "cygwin": [2, 39], "window": [2, 30, 39], "v1": [2, 23, 24, 29, 44, 45, 46, 48], "core": [2, 3, 6, 7, 8, 18, 19, 22, 28, 29, 31, 44, 47], "execut": [2, 3, 7, 28, 29, 30, 34, 44], "path": [2, 3, 16, 17, 32, 33, 44, 46], "basic": [2, 4, 6, 7, 21, 29, 32], "consol": [2, 4, 6, 11, 28, 38, 41], "directori": [2, 3, 4, 6, 7, 24, 28, 30, 32, 33, 38, 42, 46, 47], "telnet": [2, 30, 32, 36, 38, 39, 41, 43, 44, 45, 46], "ssl": [2, 3, 4, 5, 22, 30, 32, 33, 36, 38, 44], "parti": [2, 5, 13, 32, 36, 37, 38, 44, 46, 50], "flag": [2, 5, 6, 8, 11, 14, 18, 23, 28, 29, 31, 32, 37, 38, 45], "term": [2, 29, 31, 33, 44], "exampl": [2, 3, 4, 5, 7, 8, 16, 17, 22, 28, 29, 30, 31, 32, 33, 37, 41, 44, 46, 47, 48, 49], "bottre": 2, "botflag": [2, 23], "record": [2, 23, 28, 31, 34, 38, 50], "certif": [2, 3, 22, 30, 33, 37, 44], "authent": [2, 34, 43, 44, 49], "usag": [2, 4, 6, 28, 37, 44], "ctcp": [2, 6, 11, 22, 30, 32, 37, 44, 46], "chat4": 2, "chat6": 2, "kei": [2, 3, 11, 18, 25, 29, 30, 37, 43, 48, 49], "cap": [2, 28, 34, 38, 49], "track": [2, 3, 16, 25, 28, 30, 44, 49], "server": [2, 5, 6, 7, 11, 14, 15, 16, 17, 18, 20, 25, 26, 28, 30, 31, 32, 37, 38, 39, 40, 46, 47, 48, 49], "check": [2, 4, 5, 8, 11, 22, 28, 29, 30, 31, 33, 37, 43, 44, 46, 48], "determin": [2, 3, 17, 28, 30, 32, 36, 39, 44, 46], "best": [2, 3, 6, 17, 32, 36, 44, 48], "encrypt": [2, 5, 6, 10, 20, 30, 33, 36, 38, 46], "hash": [2, 5, 20, 32], "background": [2, 4, 29], "interfac": [2, 25, 44, 49], "disclaim": [2, 44], "regist": [2, 8, 11, 30, 31], "edit": [2, 3, 8, 29, 31, 47], "config": [2, 3, 4, 6, 7, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 30, 33, 34, 35, 36, 37, 39, 43, 45, 46], "web": [2, 6, 25, 37, 48], "ui": [2, 48], "limit": [2, 6, 8, 11, 16, 18, 22, 36, 39], "tip": [2, 44], "renam": [2, 16, 28, 32, 37, 44], "keep": [2, 4, 11, 16, 22, 24, 32, 37, 49], "self": [2, 22, 33, 37, 46], "modifi": [2, 6, 15, 18, 29, 31, 34, 37, 44], "default": [2, 3, 4, 11, 12, 15, 16, 18, 22, 24, 30, 32, 33, 34, 35, 37, 43, 44, 46], "string": [2, 8, 18, 28, 29, 30, 37, 43, 48, 49], "modular": 2, "variabl": [2, 5, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 28, 29, 34, 37, 39, 45, 48], "textfil": 2, "substitut": [2, 37], "output": [2, 3, 28, 30, 31, 33, 43, 45, 47, 48], "manipul": [2, 37], "note": [2, 3, 6, 7, 8, 10, 11, 15, 18, 20, 22, 23, 28, 30, 31, 32, 34, 36, 37, 43, 46, 48, 49], "assoc": [2, 6], "compress": [2, 6, 30], "filesi": [2, 6, 37], "miscellan": 2, "global": [2, 8, 13, 17, 18, 22, 23, 28, 29, 31, 35, 36, 48, 50], "bind": [2, 17, 18, 22, 25, 28, 29, 34, 37, 47, 49], "procedur": [2, 23, 34, 48, 50], "tcp": [2, 17, 39], "connect": [2, 4, 5, 6, 15, 16, 17, 22, 25, 28, 30, 32, 36, 37, 39, 41, 46, 49, 50], "charact": [2, 11, 16, 22, 32, 36, 37, 39, 43], "patch": [2, 39, 44], "submit": [2, 44], "prerequisit": 2, "super": 2, "short": [2, 28, 30, 39, 46], "configur": [2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 37, 39, 42, 44, 46], "common": [2, 22, 32, 33, 36, 37, 40, 46, 50], "step": [2, 3, 5, 28, 32, 49], "partylin": [2, 4, 6, 8, 13, 32, 33, 34, 36, 37, 39, 43, 44, 46, 47, 48, 49, 50], "automat": [2, 3, 4, 5, 8, 13, 17, 22, 32, 34, 35, 36, 37, 38, 39, 43, 44, 46, 49, 50], "restart": [2, 3, 4, 5, 7, 29, 32, 37], "nickserv": [2, 46], "sasl": [2, 32, 38, 40], "export": [2, 8, 47], "dynam": [2, 3, 11, 30, 32, 35, 44], "static": [2, 3, 8, 11, 28, 30, 31, 44], "dn": [2, 6, 37, 44], "ident": [2, 6, 7, 18, 22, 30, 37, 39, 43, 44], "pbkdf2": [2, 5, 6, 43], "seen": [2, 6, 11, 34, 37, 44], "transfer": [2, 6, 7, 12, 16, 23, 32, 36, 37, 39, 44, 46, 50], "woobi": [2, 3, 6, 28, 31], "uptim": [2, 6], "intern": [2, 22, 34, 37, 44, 48], "tabl": [2, 28, 31, 40, 44], "creation": [2, 30, 34], "stackabl": 2, "ht_stackabl": [2, 31], "trigger": [2, 11, 22, 28, 29, 31, 34, 44, 48], "handler": 2, "summari": 2, "bore": [2, 4], "legal": [2, 4], "stuff": [2, 4, 28, 29, 32, 37, 44], "had": [3, 5, 8, 11, 36, 37, 44, 49], "littl": [3, 5, 16, 25, 32, 36, 47], "experi": [3, 16, 29, 32], "THE": 3, "now": [3, 5, 8, 16, 17, 18, 29, 30, 31, 32, 33, 36, 37, 39, 43, 44, 48, 50], "experienc": 3, "more": [3, 4, 5, 6, 8, 14, 16, 18, 21, 28, 29, 30, 31, 32, 33, 36, 37, 38, 40, 42, 43, 44, 46], "cours": [3, 8, 29, 36, 37, 44], "autoconfigur": 3, "thing": [3, 4, 6, 25, 27, 28, 29, 30, 36, 37, 44, 49], "easier": [3, 20], "type": [3, 4, 6, 7, 8, 11, 13, 18, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 46], "figur": [3, 32], "correctli": [3, 44], "try": [3, 4, 6, 7, 21, 22, 26, 28, 29, 30, 32, 34, 37, 48], "find": [3, 6, 15, 18, 21, 28, 29, 30, 32, 41, 42, 44, 49], "which": [3, 5, 6, 8, 11, 13, 15, 16, 17, 22, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 41, 43, 44, 45, 46, 47, 48, 50], "either": [3, 4, 8, 16, 17, 30, 31, 32, 33, 34, 35, 36, 37, 39, 44, 46, 48], "iconfig": [3, 7, 32], "everyth": [3, 8, 29, 44], "mod": [3, 6, 7, 21, 25, 28, 37, 44, 48], "choos": [3, 7, 30, 32, 37, 38, 49], "forc": [3, 11, 13, 16, 20, 23, 29, 37, 39, 44], "otherwis": [3, 4, 13, 16, 29, 34, 35, 36, 37, 39, 43, 44, 46, 48], "makefil": [3, 28], "better": [3, 4, 6, 21, 30, 32, 37], "possibl": [3, 11, 14, 16, 22, 30, 33, 36, 37, 39, 40, 41, 44, 46, 48], "debug": [3, 26, 28, 29, 37, 44, 46, 48], "sdebug": 3, "give": [3, 4, 11, 16, 22, 29, 32, 36, 37, 38, 41, 43, 44, 50], "detail": [3, 4, 6, 8, 28, 31, 32, 34, 44, 46, 48], "highli": [3, 22, 32], "unlik": [3, 38], "crash": [3, 4, 8, 44], "take": [3, 4, 5, 6, 16, 20, 22, 26, 29, 31, 32, 37, 43, 44, 46], "longer": [3, 5, 16, 18, 20, 28, 32, 33, 44], "enlarg": 3, "binari": [3, 33], "bit": [3, 16, 25, 29, 32, 33, 37, 44, 46, 49], "worth": 3, "somewher": [3, 37], "accomplish": 3, "enter": [3, 11, 16, 30, 33, 37, 41, 42, 43, 44, 46, 48], "home": [3, 16, 17, 30, 32, 46], "e": [3, 6, 8, 9, 10, 11, 18, 20, 28, 30, 32, 36, 37, 44, 45, 50], "dest": [3, 6, 32, 33, 37, 44, 46], "otherdir": 3, "full": [3, 4, 5, 8, 25, 32, 39, 44, 46, 48, 49], "8": [3, 5, 8, 11, 15, 20, 22, 31, 32, 36, 37, 39, 43, 44, 46], "intend": [3, 8, 35, 44], "traffic": [3, 37, 47], "between": [3, 6, 11, 16, 19, 22, 23, 31, 33, 34, 36, 37, 39, 44], "sslcert": [3, 33, 37, 46], "Or": [3, 33, 44], "non": [3, 11, 15, 17, 18, 22, 28, 30, 35, 36, 44, 46, 49], "interact": [3, 4, 6, 17, 18, 31, 37, 44, 46, 49], "sslsilent": [3, 46], "info": [3, 4, 11, 13, 18, 28, 32, 37], "follow": [3, 4, 5, 8, 11, 16, 18, 22, 25, 28, 31, 32, 33, 36, 37, 38, 40, 42, 43, 44, 45, 46, 47, 48, 49], "complet": [3, 4, 11, 16, 23, 32, 38, 44, 46, 50], "m": [3, 4, 11, 22, 32, 37, 39, 43, 44, 45, 47, 48, 50], "lamestbot": [3, 11, 19, 22, 32, 36, 37, 44, 45], "conf": [3, 7, 17, 30, 32, 40, 44, 46], "when": [3, 4, 6, 7, 10, 11, 13, 16, 17, 18, 22, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 41, 43, 44, 46, 48, 49], "futur": [3, 18, 30, 32, 43, 44], "drop": [3, 4, 37, 44], "chmod": [3, 37], "u": [3, 5, 8, 28, 29, 30, 31, 36, 37, 44, 45, 50], "x": [3, 5, 7, 8, 11, 14, 31, 32, 33, 37, 39, 44, 50], "my": [3, 5, 37, 39, 46, 50], "name": [3, 4, 6, 8, 9, 16, 22, 28, 29, 30, 31, 32, 33, 34, 37, 48], "abl": [3, 6, 11, 16, 18, 22, 32, 34, 37, 41, 43, 44], "prompt": [3, 4, 34], "work": [3, 5, 6, 8, 11, 14, 16, 20, 21, 23, 28, 29, 30, 31, 32, 35, 36, 37, 39, 40, 42, 43, 44, 46, 47, 48], "top": [3, 4, 29, 42, 44], "correct": [3, 8, 31, 33, 37, 43], "advis": [3, 22, 24], "crontab": [3, 4, 44], "so": [3, 4, 6, 7, 8, 10, 16, 17, 18, 20, 26, 29, 30, 31, 32, 34, 35, 37, 38, 39, 43, 44, 48], "machin": [3, 4, 17, 32, 37], "goe": [3, 11, 30, 35, 36, 41, 44, 46], "heaven": 3, "forbid": 3, "helper": 3, "systemd": [3, 4], "entri": [3, 4, 8, 30, 32, 37], "add": [3, 4, 5, 7, 8, 11, 17, 18, 25, 28, 29, 31, 32, 33, 34, 36, 37, 38, 43, 49], "job": [3, 4, 30, 46], "autobotchk": [3, 4, 30], "yourconfig": 3, "smile": 3, "tool": [3, 32], "prior": [3, 30, 32, 34, 43, 46], "interpret": [3, 31, 39, 44, 45], "devel": 3, "autoconf": 3, "gcc": 3, "util": 3, "diffutil": 3, "small": [3, 24, 36, 47], "piec": [3, 29, 31], "separ": [3, 7, 8, 22, 32, 36, 37, 38, 39, 40, 44, 47, 48], "smaller": 3, "download": [3, 4, 5, 7, 16, 24, 37, 38, 44], "src": [3, 7, 8, 18, 28], "extens": [3, 32, 34], "dure": [3, 12, 23, 28, 30, 32], "valid": [3, 11, 22, 28, 36, 37, 38, 44, 46], "compat": [3, 5, 40, 44, 48, 49], "rest": [3, 28, 31, 36, 37, 43, 44, 48], "wish": [3, 5, 7, 17, 18, 26, 28, 32, 35, 36, 37, 44, 48], "paragraph": 3, "2": [3, 8, 11, 14, 18, 22, 30, 31, 32, 33, 34, 36, 37, 39, 40, 43, 44, 46], "after": [3, 4, 8, 11, 17, 18, 22, 28, 29, 30, 34, 35, 37, 44, 46, 47, 49], "move": [3, 4, 16, 22, 32, 44, 49], "appropri": [3, 5, 32, 36, 37, 40, 42, 43], "onli": [3, 4, 5, 6, 7, 8, 11, 16, 17, 18, 19, 21, 22, 23, 26, 27, 29, 30, 32, 34, 35, 36, 37, 39, 41, 43, 44, 45, 46, 47, 48, 50], "portion": [3, 7, 11, 44], "end": [3, 28, 30, 31, 37, 43, 44, 45], "point": [3, 6, 8, 22, 27, 31, 32, 36, 37, 44], "hopefulli": [3, 44], "IT": [3, 4], "fun": [3, 49], "pleas": [4, 5, 6, 7, 10, 11, 17, 20, 22, 33, 37, 40, 44], "least": [4, 18, 28, 31, 32, 35, 37], "skim": 4, "ask": [4, 18, 30, 32, 41, 44, 46], "question": [4, 30], "ve": [4, 16, 32, 35, 36, 41], "never": [4, 5, 11, 37, 44], "successfulli": [4, 28, 44, 48], "sure": [4, 11, 28, 29, 32, 33, 36, 37, 44, 49], "select": [4, 32, 37, 38, 42, 44], "n": [4, 5, 11, 30, 31, 36, 37, 41, 44, 45, 50], "owner": [4, 8, 11, 32, 37, 41, 44, 50], "wise": [4, 37], "100": [4, 18, 48], "power": [4, 38], "TO": 4, "someon": [4, 11, 18, 29, 32, 33, 44, 48], "trust": [4, 37, 50], "about": [4, 6, 25, 26, 28, 29, 30, 31, 37, 44, 47, 49], "older": [4, 39, 44], "frequent": [4, 32], "where": [4, 6, 8, 11, 15, 16, 19, 22, 28, 29, 30, 32, 33, 34, 37, 38, 43, 44, 46, 48], "might": [4, 18, 24, 28, 37, 44, 46], "two": [4, 6, 18, 23, 29, 31, 32, 34, 35, 36, 37, 43, 44, 46, 47], "method": [4, 6, 10, 17, 18, 20, 25, 29, 32, 33, 43, 47, 49], "come": [4, 6, 18, 22, 30, 32, 42, 44], "imag": 4, "latest": [4, 5, 32], "pub": [4, 5, 22, 30, 31, 34, 44], "cv": 4, "base": [4, 32, 34, 37, 43, 44], "interest": 4, "veri": [4, 6, 17, 21, 22, 29, 37], "updat": [4, 5, 20, 28, 32, 34, 37, 38, 43, 44, 48], "pull": [4, 42, 43], "recent": [4, 32, 44, 46], "BE": 4, "warn": [4, 17, 29, 44], "branch": [4, 42], "consid": [4, 32, 34, 35, 37, 41, 44], "haha": 4, "signific": [4, 6], "repositori": [4, 32], "simpli": [4, 5, 30, 32, 33, 40, 44, 49], "tar": [4, 7, 32], "archiv": 4, "gz": [4, 32], "hub": [4, 23, 32, 36, 37, 43, 46], "_": [4, 34, 45], "mani": [4, 5, 11, 15, 16, 18, 22, 28, 30, 31, 32, 33, 36, 37, 44], "tclsh": 4, "given": [4, 8, 15, 16, 17, 32, 36, 44, 48], "exit": [4, 6, 13, 16, 22, 44], "howev": [4, 7, 14, 22, 30, 33, 34, 37, 43, 44, 46, 47], "often": [4, 6, 15, 30, 37, 48], "o": [4, 11, 14, 18, 25, 32, 33, 36, 37, 39, 44, 48, 49, 50], "usual": [4, 30, 31, 32, 33, 35, 39, 42, 43, 44, 46, 49], "someth": [4, 8, 29, 32, 42, 44, 49], "similar": [4, 11, 30, 31, 32, 37, 41, 42, 44, 47], "dev": [4, 32, 33], "tk": 4, "tcltk": 4, "html": [4, 39], "recommend": [4, 5, 11, 24, 28, 32, 43, 44, 47, 48], "order": [4, 15, 29, 31, 34, 37, 43, 44, 46, 48], "data": [4, 11, 23, 28, 33, 43, 44], "libssl": [4, 32, 33], "finish": [4, 8, 16, 32, 44], "simpl": [4, 28, 29, 30, 31, 32, 44], "new": [4, 5, 7, 20, 25, 29, 30, 31, 32, 34, 37, 38, 39, 40, 41, 42, 43, 46, 47, 49], "repeat": [4, 34, 44], "defin": [4, 6, 8, 11, 12, 14, 18, 22, 28, 29, 32, 34, 35, 36, 37, 40, 44, 50], "through": [4, 11, 16, 22, 25, 29, 33, 38, 39, 40, 41, 44, 49, 50], "sometim": [4, 22, 32], "mode": [4, 5, 11, 14, 18, 22, 25, 28, 30, 34, 35, 37, 38, 40, 49], "let": [4, 6, 8, 11, 15, 19, 28, 29, 32, 36, 37, 38, 44], "avail": [4, 8, 11, 16, 20, 26, 28, 30, 31, 32, 33, 37, 38, 39, 41, 44, 49], "t": [4, 6, 7, 8, 10, 11, 13, 15, 16, 17, 18, 20, 22, 23, 25, 26, 28, 29, 30, 31, 32, 35, 36, 37, 41, 44, 45, 46, 47, 48, 50], "don": [4, 7, 11, 15, 16, 18, 22, 23, 25, 28, 29, 30, 31, 32, 36, 37, 41, 44, 46, 47], "termin": [4, 5, 8, 44], "session": [4, 39, 40], "troubleshoot": [4, 32], "issu": [4, 5, 17, 25, 32, 34, 37, 42, 44, 46, 48, 49], "show": [4, 6, 8, 11, 16, 26, 29, 36, 37, 44], "10": [4, 8, 11, 18, 30, 32, 36, 37, 44], "second": [4, 11, 14, 15, 18, 22, 24, 28, 29, 31, 37, 47], "screen": [4, 42, 45], "clear": [4, 6, 8, 42, 44, 46, 48, 49], "one": [4, 8, 11, 16, 17, 18, 22, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 41, 42, 43, 44, 46, 47], "person": [4, 29, 32, 37, 44], "introduc": [4, 32, 44], "himself": 4, "herself": 4, "ll": [4, 29, 30, 31, 32, 34, 37, 43, 44, 46], "h": [4, 8, 18, 28, 33, 36, 37, 44, 50], "quit": [4, 6, 22, 32, 37, 44], "v": [4, 8, 11, 18, 30, 37, 44, 45, 50], "peopl": [4, 11, 16, 17, 18, 19, 22, 23, 29, 32, 37, 38, 41, 44, 45, 50], "except": [4, 14, 22, 28, 37, 44, 46], "onc": [4, 11, 16, 18, 20, 22, 29, 30, 32, 36, 42, 44], "along": [4, 16, 31], "manual": [4, 30, 36, 37, 39, 44, 46, 48], "oper": [4, 14, 22, 29, 37, 39, 44, 45], "reason": [4, 28, 30, 32, 36, 37], "monitor": [4, 30, 35, 38, 40], "boot": [4, 8, 37], "b": [4, 11, 16, 18, 25, 29, 30, 36, 37, 42, 44, 45, 49, 50], "minut": [4, 11, 18, 24, 28, 30, 32, 35, 37], "attempt": [4, 5, 11, 17, 18, 22, 25, 33, 34, 35, 36, 37, 44, 46, 49], "geneer": 4, "setup": [4, 6, 7, 32, 37], "would": [4, 5, 14, 29, 30, 32, 33, 34, 36, 37, 44, 45, 46, 48, 49], "noemail": 4, "botchk": [4, 30, 32], "send": [4, 6, 12, 16, 18, 19, 22, 23, 24, 28, 29, 32, 34, 36, 39, 44, 47, 48], "email": [4, 30, 37, 44], "sai": [4, 11, 16, 29, 33, 36, 44], "we": [4, 5, 8, 18, 25, 28, 29, 30, 31, 32, 33, 36, 44, 49], "re": [4, 11, 17, 18, 22, 24, 29, 30, 32, 33, 34, 35, 37, 39, 41, 44, 49], "feel": [4, 5, 28, 42], "miss": [4, 32, 34, 44], "yet": [4, 22, 31, 32, 37, 44], "thank": 4, "discuss": [4, 42], "dalnet": [4, 18, 22], "efnet": [4, 18, 22], "egghelp": [4, 32], "ircnet": [4, 11, 18, 22], "quakenet": [4, 22], "undernet": [4, 18, 22, 44], "plan": [4, 29, 44], "familiar": [4, 29], "etiquett": 4, "capit": [4, 50], "letter": [4, 37, 50], "color": [4, 44], "bold": [4, 44, 45, 50], "excess": [4, 11, 22], "msg": [4, 6, 18, 21, 22, 30, 31, 32, 37, 38, 41, 43, 48], "permiss": [4, 37, 43], "than": [4, 8, 11, 14, 16, 18, 32, 33, 37, 43, 44, 46], "text": [4, 11, 22, 28, 30, 31, 37, 45, 46, 47, 48, 50], "state": [4, 44], "relev": [4, 28, 32], "error": [4, 22, 28, 32, 37, 44, 49], "messag": [4, 11, 22, 28, 29, 31, 32, 34, 37, 38, 40, 41, 43, 45, 47, 48], "easi": [5, 29, 32, 44, 46], "pictur": 5, "reus": [5, 44], "visit": [5, 49], "newer": [5, 32], "backup": [5, 28], "chan": [5, 8, 11, 18, 29, 30, 31, 32, 47], "save": [5, 6, 11, 12, 13, 23, 36, 37, 38, 43], "overwritten": [5, 37, 44], "hurt": 5, "another": 5, "next": [5, 8, 11, 16, 22, 28, 29, 31, 32, 33, 36, 37, 44], "view": [5, 7, 20, 30, 32, 38, 44, 48], "pai": [5, 34, 44], "particular": [5, 30, 31, 37], "attent": [5, 22, 34, 44], "section": [5, 8, 11, 18, 22, 25, 29, 31, 32, 36, 37, 44, 49], "Then": [5, 30, 32, 46], "previous": [5, 32, 44], "unzip": [5, 32], "untar": 5, "These": [5, 12, 18, 28, 32, 34, 35, 36, 37, 39, 45, 46, 48, 50], "NOT": [5, 29, 32, 34, 36, 37, 44, 48], "rather": [5, 44, 46], "killer": 5, "directli": [5, 6, 11, 17, 23, 31, 32, 44], "affect": [5, 11, 25, 37, 38, 39, 44, 49], "modif": [5, 32, 44], "migrat": 5, "suggest": [5, 28], "deprec": [5, 33, 44], "password": [5, 6, 10, 18, 20, 22, 23, 30, 32, 36, 37, 38, 41, 43, 46, 49], "favor": [5, 23], "big": [5, 24, 44, 47], "done": [5, 8, 23, 28, 30, 31, 32, 33, 36, 42, 43, 44, 49], "carelessli": 5, "potenti": [5, 17, 29, 44, 48], "render": [5, 25, 49], "store": [5, 6, 11, 13, 16, 19, 25, 26, 29, 32, 34, 36, 43, 44, 48, 49], "useless": [5, 25, 49], "properli": [5, 31, 32, 33, 36, 37], "switch": [5, 28, 32, 34, 37, 44, 46, 47], "syntax": [5, 8, 30, 37, 46, 50], "6667": [5, 22, 32, 44, 49], "3rd": [5, 8], "remov": [5, 11, 16, 20, 28, 30, 31, 32, 35, 38, 39, 43, 47, 48, 49], "ftp": [5, 32], "fulli": [5, 37, 44, 49], "explicitli": [5, 44, 46], "prefix": [5, 8, 18, 22, 29, 33, 36, 37, 41, 46, 48, 49], "advantag": [5, 32, 47], "chaddr": [5, 36], "lot": [5, 8, 18, 29, 32, 34], "backward": [5, 40], "reflect": [5, 44], "cancel": [6, 44], "cd": [6, 8, 28, 31, 32, 44], "cp": 6, "dst": 6, "desc": [6, 28], "descript": [6, 28, 29, 30, 37, 44, 48, 50], "filestat": 6, "stat": 6, "get": [6, 7, 8, 11, 22, 23, 24, 28, 29, 33, 34, 37, 41, 50], "filenam": [6, 11, 19, 32, 37, 46], "nicknam": [6, 8, 22, 29, 30, 32, 34, 37, 45, 47, 48, 50], "hide": [6, 39, 44], "ln": 6, "filepath": 6, "localfil": 6, "l": [6, 11, 18, 22, 30, 34, 36, 37, 50], "filemask": 6, "mkdir": 6, "dir": [6, 30], "mv": 6, "pend": [6, 11], "pwd": [6, 32], "rm": [6, 32], "rmdir": 6, "optim": [6, 8, 22], "unhid": 6, "unshar": [6, 50], "api": [6, 31], "md5": [6, 10], "anymor": [6, 10, 20, 37], "won": [6, 11, 23, 28, 29, 32, 35, 36, 37, 44, 46, 48], "specif": [6, 11, 15, 17, 18, 20, 22, 25, 31, 32, 36, 39, 40, 44, 46, 48, 49, 50], "therefor": [6, 18, 32, 37, 44], "amount": [6, 37], "bandwidth": [6, 12], "storag": [6, 13, 43], "repli": [6, 14, 15, 17, 18, 34, 37, 44], "d": [6, 11, 14, 16, 28, 30, 31, 32, 33, 36, 37, 42, 44, 47, 50], "expect": [6, 14, 37, 44], "load": [6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 36, 37, 43, 44, 49], "asynchron": [6, 15, 44], "avoid": [6, 8, 15, 30], "long": [6, 11, 15, 19, 22, 23, 35, 37, 44, 45, 48], "period": [6, 15, 32, 44], "hang": [6, 15], "wait": [6, 15, 16, 18, 22, 24, 32, 34, 37, 44], "hostnam": [6, 11, 15, 30, 37, 39], "resolv": [6, 15, 37, 44], "timeout": [6, 15, 22, 24, 37, 48], "area": [6, 16, 37, 44, 47, 50], "within": [6, 16, 28, 32, 33, 35, 37, 40, 44], "usabl": [6, 16, 37], "onlin": [6, 16, 19, 30, 34], "retriev": [6, 19], "userlist": [6, 18, 21, 23], "gseen": [6, 21], "g": [6, 8, 21, 28, 32, 36, 37, 44, 50], "quann": [6, 21], "kreativrauschen": [6, 21], "Not": [6, 22, 30, 40], "equival": [6, 22, 33], "old": [6, 20, 22, 32], "no_irc": [6, 22], "servic": [6, 11, 17, 25, 30, 34, 44, 46, 49], "implement": [6, 7, 8, 17, 33, 34, 37, 40, 42, 43, 44, 49], "tiwtch": 6, "report": [6, 16, 26, 28, 32, 47], "statist": [6, 16, 26], "contest": 6, "site": [6, 50], "hour": [6, 26, 28, 35, 37, 44], "isn": [6, 16, 22, 23, 26, 32, 35, 44], "again": [6, 16, 26, 28, 31, 35, 36, 37, 43, 44, 48], "sent": [6, 16, 18, 23, 26, 30, 34, 37, 40, 41, 44, 46, 48, 50], "demonstr": [6, 27, 44], "right": [6, 8, 16, 17, 27, 29, 32, 44], "jul": 7, "25": [7, 11, 22, 37, 48], "2016": 7, "independ": 7, "main": [7, 29, 32, 33, 34, 41], "desir": [7, 8, 28, 30, 31, 32, 43], "extra": [7, 37, 40], "overhead": 7, "bloat": 7, "enhanc": 7, "instruct": [7, 32, 43], "direct": [7, 33, 36, 42, 44], "un": [7, 18, 35, 37, 44], "format": [7, 22, 28, 30, 32, 33, 37, 43, 44, 45, 48], "modulenam": [7, 28], "eggdrop1": 7, "folder": 7, "suffix": [7, 37], "rehash": [7, 28, 29, 30, 37], "ye": [7, 29, 30, 33, 44], "detect": [7, 22, 33, 39, 44, 46], "yourself": [7, 30, 32, 42, 43, 46], "until": [7, 11, 16, 35, 37, 44], "henc": [7, 28, 44], "nearli": 7, "who": [8, 11, 16, 18, 22, 29, 32, 34, 37, 41, 44, 50], "understand": [8, 31, 37, 44], "alreadi": [8, 11, 22, 28, 29, 31, 32, 33, 34, 36, 37, 43, 44, 49], "suitabl": [8, 48], "illustr": 8, "handl": [8, 29, 30, 31, 35, 37, 43, 46, 48], "snippet": 8, "alter": [8, 16, 38, 44, 49], "breviti": 8, "simplic": 8, "initi": [8, 28, 29, 32, 39, 40, 44, 46], "symbol": [8, 33, 44], "extern": [8, 17, 30, 37], "p_tcl_bind_list": [8, 31], "h_dcc": 8, "param": 8, "const": [8, 28], "char": [8, 28, 31, 37, 44], "length": [8, 18, 22, 28, 43, 44, 46], "tclhash": 8, "int": [8, 28, 31], "intfunc": 8, "return": [8, 18, 28, 31, 34, 43, 48], "aka": [8, 37], "tcl_bind_list_t": 8, "add_bind_t": [8, 31], "builtin_dcc": 8, "doe": [8, 11, 25, 29, 30, 34, 35, 37, 40, 41, 44, 48, 49, 50], "explain": [8, 11, 36, 44], "happen": [8, 29, 32, 35, 37, 44], "arbitrari": [8, 44], "argument": [8, 16, 18, 29, 30, 39, 44, 48], "import": [8, 28, 29, 30, 32, 34, 37, 41, 44], "That": [8, 25, 29, 32, 36, 44, 50], "mean": [8, 16, 18, 22, 29, 30, 31, 34, 35, 36, 37, 38, 39, 43, 44, 46, 48], "mask": [8, 16, 22, 29, 31, 37, 48], "test": [8, 29, 32, 50], "proc1": 8, "proc2": 8, "overwrit": [8, 17, 32, 44], "proc": [8, 22, 28, 29, 48], "myproc": [8, 44], "arg": [8, 28, 31], "putlog": [8, 22, 28, 29, 31], "Of": [8, 36, 37], "far": [8, 16], "against": [8, 11, 16, 20, 22, 29, 31, 32, 43, 44, 48], "receiv": [8, 15, 16, 22, 24, 30, 31, 36, 44, 48], "accept": [8, 16, 23, 25, 31, 33, 36, 37, 44, 46, 49], "check_tcl_dcc": 8, "cmd": [8, 37, 44], "idx": [8, 28, 31], "struct": [8, 31], "flag_record": [8, 31], "fr": [8, 31], "fr_global": [8, 31], "fr_chan": [8, 31], "11": [8, 44], "get_user_flagrec": 8, "con_chan": 8, "egg_snprintf": 8, "sizeof": [8, 31], "ld": 8, "sock": [8, 28, 37], "tcl_setvar": [8, 31], "interp": [8, 31], "_dcc1": 8, "nick": [8, 11, 18, 22, 26, 29, 30, 31, 32, 37, 50], "_dcc2": 8, "_dcc3": 8, "check_tcl_bind": [8, 31], "match_parti": 8, "bind_use_attr": 8, "bind_has_builtin": 8, "snip": 8, "temporari": [8, 11, 24, 26, 35, 37], "pass": [8, 29, 30, 31, 32, 34, 39, 41, 43, 48], "callback": [8, 34], "socket": [8, 17, 28, 33, 44, 46], "id": [8, 44], "putdcc": 8, "respond": [8, 11, 32, 44], "back": [8, 22, 29, 32, 37, 39, 42, 43, 44, 47], "depend": [8, 28, 34, 35, 42, 44, 46, 50], "caller": 8, "pars": [8, 44], "atr": 8, "match_typ": 8, "matchtyp": 8, "result": [8, 22, 34, 35, 37, 39, 44], "bind_nomatch": 8, "tm": 8, "tm_last": 8, "check_bind_match": 8, "continu": [8, 32, 44], "tc": 8, "suffic": [8, 29], "check_bind_flag": 8, "hit": [8, 44], "tcl_eval": 8, "procnam": [8, 29, 44, 48], "grab": [8, 44], "trigger_bind": 8, "func_nam": [8, 28], "suppli": [8, 37], "case": [8, 15, 20, 22, 29, 31, 32, 34, 37, 44], "uniqu": [8, 37, 44, 48], "identifi": [8, 30, 37, 43, 44, 50], "unsur": [8, 32], "wildcard": [8, 11, 29, 30, 44, 48], "exact": [8, 44], "tclegg": 8, "describ": [8, 28, 29, 32, 33, 36, 37], "AND": [8, 20, 32, 44], "bind_stack": [8, 31], "add_builtin": [8, 28], "cmd_t": [8, 28, 31], "null": [8, 28, 31], "mycmd": 8, "tcl_name": 8, "void": [8, 28, 31], "cc": [8, 28], "p": [8, 11, 17, 30, 32, 36, 37, 44, 50], "1024": [8, 16, 17, 24, 31, 32], "cd_tcl_cmd": 8, "tclcmd": 8, "func": [8, 28], "bindtyp": 8, "funcnam": 8, "h_raw": 8, "324": 8, "got324": 8, "raw": [8, 34, 37, 46], "cmd_boot": 8, "cdata": 8, "add_cd_tcl_cmd": 8, "bind_bind_entri": 8, "context": [8, 28], "suppos": 8, "typic": [8, 16, 25, 37, 38, 41, 44, 49], "tcl_command": 8, "tcl_putdcc": 8, "clientdata": 8, "tcl_interp": 8, "irp": [8, 31], "argc": 8, "argv": [8, 31], "f": [8, 11, 31, 36, 37, 44, 45, 48, 50], "okai": [8, 37], "verifi": [8, 22, 30, 37, 46], "count": [8, 22], "badarg": [8, 31], "hand": [8, 29, 37, 44], "macro": [8, 28, 31], "saniti": 8, "checkvalid": [8, 31], "findidx": 8, "atoi": 8, "tcl_appendresult": [8, 31], "invalid": [8, 44], "tcl_error": [8, 31], "tcl_resetresult": 8, "tcl_ok": [8, 31], "oppos": [8, 44], "userrec": [8, 31], "know": [8, 18, 19, 22, 25, 28, 29, 34, 35, 36, 37, 44, 47, 49], "valu": [8, 11, 14, 15, 18, 22, 25, 28, 29, 37, 43, 45, 46, 48, 49], "els": [8, 29, 31, 41, 44], "par": [8, 31], "associ": [8, 25, 34, 44, 49], "gbuildin_dcc": 8, "annot": 8, "gdb": 8, "backtrac": 8, "thommei": 8, "0x55e8bd8a49b0": 8, "0x55e8be6a0010": 8, "614": 8, "0x55e8bd8aec90": 8, "8977024": 8, "flags_udef": 8, "chanrec": [8, 18, 44], "0x55e8bd8aeae0": 8, "0x55e8bd8a4a10": 8, "0x55e8bbf002d0": 8, "0x55e8bd59b1c0": 8, "0x55e8bd7e3e00": 8, "678": 8, "0x55e8be642fa0": 8, "0x55e8be9f6bd0": 8, "0x55e8be7d9020": 8, "0x0": 8, "usr": 8, "lib": 8, "x86_64": 8, "linux": [8, 39], "libtcl8": 8, "lastbind": 8, "0x55e8bd5efda0": 8, "0x55e8bbf4112b": 8, "0x55e8bd5efd40": 8, "742": 8, "0x55e8bd5eecb0": 8, "0x7ffcf3f9dac1": 8, "0x7ffcf3f9d100": 8, "80": 8, "942": 8, "brkt": 8, "0x7ffcf3f9dac6": 8, "974": 8, "udef_glob": 8, "udef_chan": 8, "dcc_chat": 8, "buf": [8, 18], "1068": 8, "2002": [9, 13, 14, 19, 21, 24, 26, 35, 41, 45, 50], "none": [9, 10, 11, 13, 15, 19, 20, 21, 22, 24, 27, 44], "loadmodul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 37, 43, 49], "2000": [9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 27, 37, 38, 43], "2003": [10, 23, 29], "octob": [11, 20, 22, 37], "chanfil": [11, 32, 47], "expir": [11, 18, 19, 22, 35, 37, 44, 46], "enforc": [11, 30, 34, 37], "chanmod": [11, 30], "mix": [11, 18], "endless": 11, "insert": [11, 45], "below": [11, 16, 17, 23, 25, 28, 29, 32, 37, 43, 44, 48], "idl": [11, 28, 44], "kick": [11, 18, 22, 34, 37, 44, 47, 50], "disabl": [11, 18, 22, 30, 37, 39, 44, 46], "stopnethack": [11, 50], "de": [11, 34, 44], "anyon": [11, 35, 44], "serverop": 11, "seven": [11, 44], "turn": [11, 17, 22, 37, 44], "off": [11, 17, 18, 22, 32, 36, 37, 41, 44], "isoptest": 11, "wasoptest": 11, "split": [11, 18, 39, 41, 44, 45], "isop": 11, "wasop": [11, 18, 50], "bitch": 11, "reveng": 11, "punish": [11, 44, 50], "bad": [11, 44, 50], "four": [11, 29, 34, 37, 39, 44, 45], "deop": [11, 44, 50], "k": [11, 18, 22, 37, 44, 50], "specifi": [11, 15, 16, 17, 19, 22, 23, 28, 30, 32, 35, 37, 38, 39, 43, 44, 46, 48], "19": [11, 44], "correspond": [11, 30, 35, 44], "replac": [11, 22, 28, 30, 37, 44, 45, 49], "20": [11, 16, 18, 25, 30, 37, 44], "29": [11, 44], "30": [11, 16, 18, 24, 30, 43, 44], "39": [11, 44], "120": [11, 22, 44], "60": [11, 16, 19, 22, 37, 44], "aop": 11, "delai": [11, 16, 18, 29], "maximum": [11, 15, 16, 18, 19, 22, 24, 31, 37, 43, 44, 46], "autoop": 11, "autohalfop": 11, "autovoic": [11, 50], "No": [11, 23, 30, 33, 44, 49], "y": [11, 14, 33, 37, 50], "random": [11, 22, 36, 44], "putserv": [11, 29, 30], "privmsg": [11, 29, 30, 44], "lamest": [11, 32, 36, 37, 45], "me": [11, 50], "co": 11, "lame": [11, 18, 36, 37, 44], "enclos": [11, 31, 39, 44, 48], "brace": 11, "shorter": 11, "getop": 11, "botnetop": 11, "unban": [11, 37, 44], "rais": [11, 22], "15": [11, 37, 43, 44, 45], "constitut": [11, 22, 37], "integ": [11, 44], "plu": [11, 22, 37, 44, 46], "minu": 11, "front": [11, 29, 32, 33, 44, 49], "enforceban": 11, "dynamicban": [11, 44], "necessari": [11, 33], "rememb": [11, 29, 30, 32], "userban": 11, "dynamicexempt": [11, 44], "remain": [11, 35, 44], "userexempt": 11, "dynamicinvit": [11, 44], "userinvit": 11, "soon": [11, 44], "insecur": 11, "halfop": [11, 44, 50], "protectop": 11, "protecthalfop": 11, "dehalfop": [11, 44, 50], "protectfriend": 11, "statuslog": 11, "total": [11, 28, 38, 44], "member": [11, 28, 34], "regular": [11, 44, 46], "sampl": [11, 31, 32, 49], "01": [11, 18, 44], "40": [11, 30], "istn": 11, "friend": [11, 50], "revengebot": 11, "secret": 11, "cycl": [11, 22, 37], "dontkickop": 11, "instanc": [11, 34], "attack": [11, 20, 43], "inact": [11, 24], "leav": [11, 22, 32, 37, 41, 44, 49], "lose": 11, "nodesynch": 11, "fight": 11, "chanserv": 11, "ircop": [11, 18], "perman": [11, 35, 37, 44], "explan": [11, 32, 33, 44, 48], "nt": [11, 32], "chanset": [11, 30, 36], "2004": [12, 18], "level": [12, 17, 30, 31, 34, 37, 50], "gzip": [12, 44], "autosav": 13, "doesn": [13, 15, 18, 31, 32, 41, 44, 47, 48], "displai": [13, 16, 18, 22, 30, 31, 32, 37, 44, 45, 48], "februari": 14, "12": [14, 44], "behavior": [14, 18, 35, 37, 39, 44], "ping": 14, "less": [14, 41, 44], "finger": [14, 32], "userinfo": [14, 44], "septemb": 15, "26": [15, 32, 46, 50], "troubl": [15, 37], "ones": [15, 23, 36, 39, 44], "rel": [15, 28, 32, 44], "standard": [15, 17, 18, 24, 28, 29, 40, 44, 46, 49, 50], "cach": [15, 44], "86400": 15, "respect": [15, 39, 44, 45], "ttl": 15, "upper": 15, "boundari": [15, 31], "negcach": 15, "600": [15, 18], "neg": [15, 37, 44], "nxdomain": 15, "lookup": [15, 37, 39, 44], "fail": [15, 24, 37, 44, 46], "maxsend": 15, "resend": [15, 44], "queri": [15, 17, 34, 39], "retrydelai": 15, "dec": [16, 44], "2017": 16, "mydir": 16, "root": [16, 17], "incom": [16, 37, 44], "upload": [16, 32, 38, 44, 47], "central": [16, 37], "filedb": [16, 44], "subdirectori": [16, 44], "databas": [16, 44], "max": [16, 18, 19, 22, 24, 37], "effect": [16, 35, 37, 44], "infinit": 16, "files": 16, "size": [16, 24, 28, 31, 37, 44], "kb": 16, "sub": [16, 44], "brows": 16, "tell": [16, 29, 30, 31, 32, 33, 34, 36, 37, 44, 49], "queu": [16, 22, 44], "exactli": [16, 18, 28, 29, 44], "group": [16, 17, 37, 40, 44], "master": [16, 30, 32, 35, 36, 37, 44, 45, 50], "janitor": [16, 50], "broken": [16, 29, 37, 44], "word": [16, 18, 30, 31, 32, 36, 44, 48, 49], "break": [16, 44], "comment": [16, 18, 26, 29, 32, 37, 43], "over": [16, 22, 25, 28, 29, 32, 37, 39, 44, 46, 47, 49], "client": [16, 17, 22, 25, 30, 32, 34, 37, 40, 44, 46, 49], "too": [16, 18, 22, 24, 28, 37, 44], "patient": 16, "simultan": [16, 24, 44], "remaind": [16, 48], "mark": [16, 31, 38, 44, 50], "hidden": [16, 32, 38], "lsa": 16, "gif": 16, "uglyman": 16, "nobodi": [16, 29], "local": [16, 29, 32, 37, 41, 42, 44, 46], "snowbot": 16, "ugli": 16, "shown": [16, 32, 37], "kilobyt": [16, 37], "progress": 16, "eras": [16, 44], "remot": [16, 36, 37, 44, 45], "By": [16, 18, 20, 22, 24, 30, 34, 36, 37, 44, 46, 49], "clean": 16, "slow": [16, 32, 37], "db": 16, "itself": [16, 28, 29, 30, 31, 37, 44], "though": [16, 22, 29, 32, 44, 46], "tag": [16, 38, 40, 48], "filesystem": [16, 44, 50], "june": 17, "2019": 17, "oident": 17, "act": [17, 28, 37, 38, 44, 46], "daemon": [17, 37], "tradition": 17, "113": 17, "usernam": [17, 30, 32, 37, 48, 49], "custom": [17, 22, 29, 30, 34, 38, 44, 46], "oidentd": 17, "nor": 17, "thu": [17, 29, 34, 39, 43, 44], "modern": [17, 43], "oss": 17, "sudo": [17, 32], "setcap": 17, "cap_net_bind_servic": 17, "ep": 17, "imperson": 17, "iptabl": 17, "rout": [17, 44], "destin": [17, 28], "nat": [17, 37, 39], "prerout": 17, "eth0": 17, "dport": 17, "j": [17, 28, 36, 37, 44, 50], "redirect": 17, "addition": [17, 32, 34, 44], "caus": [17, 31, 32, 36, 44, 47], "bound": [17, 37, 44], "netsplit": [17, 18, 37, 38, 44], "reboot": [17, 30], "conflict": 17, "suit": [17, 31, 32], "singl": [17, 18, 30, 44, 48], "environ": [17, 37, 38, 46], "spoof": 17, "open": [17, 30, 31, 37, 41, 42, 44, 46], "builtin": [17, 44], "identd": [17, 32], "shouldn": 17, "begin": [17, 29, 39, 44], "august": 18, "21": [18, 32], "bounc": 18, "reach": [18, 22, 31, 37], "45": 18, "left": [18, 31, 44], "unless": [18, 22, 29, 32, 35, 37, 44], "overridden": 18, "unabl": [18, 32, 36, 39, 44, 49], "learn": [18, 30, 31, 32, 37, 38, 44], "themselv": [18, 32, 36, 44, 47], "userflag": 18, "hello": [18, 22, 30, 32, 37, 38, 44], "afterward": [18, 37], "1500": 18, "180": 18, "200": [18, 41], "byte": [18, 22, 24, 28, 31, 44], "unbind": [18, 37, 47, 48], "myword": 18, "addhost": 18, "takeov": 18, "occur": [18, 29, 44], "due": [18, 22, 29, 37, 44, 48], "blindli": 18, "ing": [18, 25, 49], "guess": 18, "discourag": 18, "opchar": 18, "recogn": [18, 22, 30, 50], "fine": [18, 22, 37, 48], "unrealircd": [18, 44], "lazi": 18, "gone": [18, 44], "At": [18, 31, 36, 37, 41, 49], "moment": [18, 32, 33], "ircd": [18, 22, 44], "per": [18, 44, 48], "stack": [18, 39, 44], "guarante": [18, 34], "although": [18, 32, 37, 44], "higher": [18, 20, 23, 24, 32, 46], "modes_per_line_max": 18, "recompil": [18, 32], "lk": 18, "354": [18, 44], "ircu2": 18, "rfc": [18, 22, 25, 44, 49], "compliant": [18, 22, 44], "1459": 18, "routin": [18, 37, 44], "notefil": [19, 44], "privat": [19, 23, 29, 30, 32, 33, 37, 41, 44, 46], "50": [19, 30, 37], "life": [19, 32], "dai": [19, 24, 37, 44, 47], "fwd": 19, "forward": 19, "address": [19, 23, 26, 32, 36, 37, 39, 46], "notifi": [19, 22, 32, 37, 38, 40, 44], "hourli": [19, 28, 37], "onjoin": 19, "2020": [20, 25, 37, 46, 48], "transit": [20, 43, 44], "safe": [20, 30, 32, 33, 43, 49], "earlier": [20, 31], "seamlessli": 20, "eventu": 20, "altogeth": 20, "outsid": [20, 31, 33, 37], "rijndael": 20, "sha256": 20, "cryptograph": [20, 43, 44], "digest": [20, 44], "algorithm": [20, 43], "round": [20, 43], "1600": 20, "brute": 20, "freenod": 22, "rizon": 22, "sane": 22, "altnick": [22, 32], "stb": 22, "unavail": [22, 37], "hi": [22, 29, 32], "primari": [22, 37], "realnam": [22, 44], "real": [22, 28, 30, 44], "field": [22, 31, 34, 37, 44, 46], "evnt": [22, 44], "init": [22, 37, 44], "init_serv": 22, "botnick": [22, 29, 30, 32, 37], "putquick": 22, "w": [22, 37, 44, 45, 50], "immedi": [22, 31, 32, 34, 43, 44], "deprici": 22, "disconnect": [22, 23, 37, 44], "7000": [22, 32, 33, 44], "2001": [22, 26, 27, 32, 37, 41], "db8": [22, 32, 37], "618": [22, 32, 37], "5c0": [22, 32, 37], "263": [22, 32, 37], "6669": [22, 32], "6697": [22, 32, 44, 46], "whenev": [22, 28, 31, 34, 36, 44, 46], "sign": [22, 30, 33, 37, 44, 45, 46, 49], "jump": [22, 31, 36, 46], "rate": 22, "transmit": 22, "lower": 22, "known": [22, 30, 37, 43, 44], "512": [22, 24], "verif": [22, 37, 46], "assum": [22, 29, 32, 33, 34, 35, 37, 44], "peer": [22, 37, 46], "alt": [22, 37], "16": [22, 37, 43, 44], "32": [22, 37], "revok": [22, 37], "instantli": 22, "low": [22, 24], "respons": [22, 34, 44], "stone": 22, "di": 22, "hasn": 22, "serverror": 22, "queue": [22, 28], "300": [22, 37], "dump": [22, 37, 44], "chunk": 22, "probabl": [22, 30, 32, 33, 44], "quiet": [22, 37, 50], "reject": [22, 36, 37], "squelch": 22, "lowercas": 22, "mirc": [22, 44], "exclus": [22, 44], "pubm": [22, 44], "msgm": [22, 44], "doubl": 22, "penalti": 22, "calcul": 22, "measur": 22, "trace": 22, "accordingli": 22, "three": [22, 30, 31, 34, 35, 36, 37, 44], "summar": 22, "cpu": [22, 37, 44], "intens": 22, "r": [22, 30, 36, 37, 44, 50], "umod": 22, "understood": 22, "indic": [22, 28, 32, 44, 48], "len": 22, "novemb": [23, 40], "resync": 23, "buffer": 23, "reconnect": [23, 44], "900": 23, "hold": [23, 44], "flush": 23, "overrid": [23, 39, 46], "mnot": 23, "paranoid": [23, 37], "discard": [23, 44], "dload": 24, "block": [24, 25, 28, 32, 45, 49], "ircii": [24, 44], "admit": 24, "turbo": [24, 32], "tmp": [24, 44], "stabil": 24, "nf": 24, "mount": 24, "pain": [24, 32], "xfer": [24, 50], "sharefail": 24, "unlink": [24, 37], "abort": [24, 32, 44, 46], "retri": 24, "april": [25, 48], "gatewai": [25, 48, 49], "stream": [25, 49], "claim": [25, 49], "certainli": [25, 32, 49], "meaning": [25, 44, 49], "intent": [25, 49], "spectrum": [25, 49], "focus": [25, 49], "raid": [25, 49], "donat": [25, 49], "userst": [25, 49], "roomstat": [25, 49], "few": [25, 29, 31, 32, 33, 37, 44, 49], "broadcast": [25, 41, 44, 48, 49], "000": [25, 41, 49], "unreli": [25, 48, 49], "moder": [25, 30, 48, 49], "mostli": [25, 44, 49], "infeas": [25, 49], "workaround": [25, 34], "tradit": [25, 39, 47, 48, 49], "extend": [25, 38, 40, 44], "downer": 25, "worri": 25, "ton": 25, "clearchat": [25, 48], "clearmsg": [25, 48], "hosttarget": [25, 48], "whisper": [25, 48], "usernotic": [25, 48], "roomsstat": 25, "twcmd": [25, 49], "ip": [26, 30, 32, 33, 37, 39], "logfil": [26, 28, 32, 37, 47], "publicli": 26, "31": [27, 37, 41, 44], "occurr": 28, "ensur": [28, 30, 32, 36, 43, 44], "module_nam": [28, 31], "making_modulenam": 28, "examin": 28, "close": [28, 44], "stdio": 28, "stdlib": 28, "sy": 28, "drastic": [28, 44], "reduc": [28, 48], "decent": 28, "throughout": 28, "refer": [28, 29, 33, 37, 44], "liter": [28, 44], "func_tabl": 28, "module_regist": [28, 31], "major": [28, 31, 32, 44], "minor": [28, 31, 44], "module_depend": [28, 31], "success": [28, 32, 44], "stage": 28, "any_other_funct": 28, "you_want_to_export": 28, "unload": [28, 31, 44], "apart": [28, 37], "tidi": 28, "thorough": [28, 30, 33, 49], "trail": 28, "garbag": 28, "module_undepend": [28, 31], "talli": 28, "memori": [28, 31, 44], "alloc": [28, 44], "dealloc": 28, "nmalloc": 28, "nfree": 28, "fault": 28, "posit": [28, 37], "resourc": 28, "dprintf": [28, 31], "printf": 28, "dp_log": 28, "dp_stdout": 28, "stdout": 28, "dp_mode": 28, "dp_server": 28, "dp_help": 28, "module_entri": 28, "module_find": 28, "search": [28, 30, 44], "module_renam": 28, "old_module_nam": 28, "new_module_nam": 28, "frim": 28, "add_hook": 28, "hook_num": 28, "del_hook": 28, "hook": 28, "hook_secondli": 28, "hook_minut": 28, "hook_5minut": 28, "hook_hourli": 28, "hook_daili": 28, "hook_read_userfil": 28, "hook_userfil": 28, "hook_pre_rehash": 28, "hook_rehash": 28, "hook_idl": 28, "whole": 28, "hook_backup": 28, "hook_load": 28, "hook_di": 28, "die": [28, 30, 32], "module_unload": 28, "module_load": 28, "tri": [28, 37, 44], "add_tcl_command": 28, "tcl_cmd": [28, 31], "tab": 28, "rem_tcl_command": 28, "function_to_cal": 28, "add_tcl_int": 28, "tcl_int": 28, "rem_tcl_int": 28, "variable_nam": 28, "readonli": 28, "add_tcl_str": 28, "tcl_string": 28, "rem_tcl_str": 28, "str_dir": 28, "constantli": 28, "append": [28, 31, 44], "str_protect": 28, "p_tcl_hash_list": 28, "rem_builtin": 28, "displaynam": 28, "convers": [28, 41, 46], "taken": [28, 44], "auch": 28, "filt": [28, 44], "noth": [28, 37, 44, 49], "logmod": 28, "nice": 28, "mention": 28, "realli": [29, 31, 32, 37, 47], "idea": [29, 32, 42], "busi": 29, "annoi": 29, "intention": 29, "definit": [29, 32, 33, 43], "languag": [29, 37, 38, 47], "especi": 29, "librari": [29, 31, 43, 46], "bottom": 29, "greetscript": 29, "author": [29, 33, 37, 46], "geo": 29, "gree": 29, "pmsg": 29, "greetmsg": 29, "welcom": 29, "uhost": [29, 44], "whew": 29, "ok": 29, "importantli": [29, 31], "wrote": 29, "credit": [29, 44], "contact": [29, 37], "hard": [29, 37], "larger": [29, 43], "harder": 29, "why": [29, 32, 44], "And": [29, 31], "omin": 29, "dissect": 29, "action": [29, 30, 33, 37, 44], "react": [29, 34], "toward": 29, "refin": 29, "foo": [29, 30, 31, 44], "aol": [29, 43], "sum": 29, "hostmask": [29, 30, 35, 36, 38, 43], "told": 29, "declar": [29, 31, 44], "said": [29, 31, 36, 44], "magic": 29, "awesom": 29, "sexystuff": 29, "third": [29, 31, 36], "fourth": 29, "trick": [29, 47], "didn": [29, 32, 44], "talk": [29, 31, 33, 34, 38, 41], "bodi": 29, "true": 29, "deserv": 29, "insid": [29, 37], "challeng": [29, 30], "mayb": [29, 37], "fancyp": 29, "sound": 29, "hint": 29, "utim": 29, "dozen": 29, "defens": 29, "grain": 29, "salt": [29, 43], "further": [30, 44], "IN": 30, "OR": [30, 44], "putti": 30, "listen": [30, 32, 36, 37, 39, 46], "3183": 30, "whoi": [30, 37], "chattr": [30, 50], "grant": [30, 38, 46, 49], "numer": [30, 33, 44], "chaninfo": [30, 36], "involv": 30, "snt": 30, "histor": [30, 44], "reli": [30, 44], "ten": 30, "commonli": [30, 33, 37, 44], "humor": 30, "youreggdropconfignameher": 30, "review": [30, 33], "youreggdrop": 30, "editor": [30, 32], "thee": [30, 44], "systemctl": 30, "botnam": [30, 36], "reload": 30, "acknowledg": 30, "confus": [30, 44], "unfortun": 30, "consult": [30, 39, 40, 46], "uncom": [30, 33, 37, 43], "layer": [30, 33], "becom": [30, 32, 37, 44], "preval": 30, "elimin": 30, "cloak": 30, "ever": [30, 32, 37, 44, 46], "appear": [30, 32, 36, 37, 44, 48], "mechan": 30, "plain": [30, 37, 46], "plaintext": [30, 44, 46], "exchang": 30, "ecdsa": 30, "nist256p": 30, "keypair": [30, 33], "pair": [30, 33, 34, 44, 46, 48], "ecparam": 30, "genkei": 30, "prime256v1": 30, "pem": [30, 37], "fingerprint": [30, 36, 37, 46], "ec": 30, "noout": 30, "conv_form": 30, "grep": 30, "tail": 30, "tr": 30, "xxd": 30, "base64": 30, "On": [30, 32, 33, 35, 36], "pubkei": 30, "req": [30, 37, 46], "x509": [30, 37, 46], "node": [30, 46], "keyout": [30, 46], "crt": [30, 37, 46], "yoru": 30, "outform": 30, "der": 30, "sha1sum": 30, "cut": 30, "f1": 30, "privatekei": [30, 33, 36, 37, 46], "cert": [30, 36, 37, 46], "onto": 31, "wherea": [31, 44], "our": [31, 32, 36, 44], "redistribut": 31, "publish": [31, 37], "hope": [31, 32, 49], "merchant": 31, "fit": 31, "FOR": 31, "59": [31, 44], "templ": 31, "330": 31, "02111": 31, "1307": 31, "necessarili": [31, 44], "undef": 31, "server_func": 31, "export_scop": 31, "woobie_start": 31, "woobie_expmem": 31, "woobie_report": 31, "global_func": 31, "woobie_t": 31, "108": 31, "woobie_clos": 31, "dosen": [], "log_cmd": 31, "print": 31, "cmd_woobi": 31, "mywoobi": 31, "scope": [31, 33], "tutori": [31, 33], "echo": [31, 38, 40, 47], "tcl_echom": 31, "stdvar": 31, "strcmp": 31, "llama": [31, 36], "illeg": 31, "input": [31, 44], "paramt": [], "paramet": [31, 44], "exceed": [31, 37], "style": [31, 35, 44], "quset": 31, "mytcl": 31, "echom": 31, "newli": 31, "certain": [31, 35, 37, 38, 39, 44, 45, 48, 50], "condit": 31, "met": 31, "h_woob": 31, "woobie_2char": 31, "del_bind_t": 31, "woobie_3char": 31, "bar": [31, 44], "moo": [31, 44], "boilerpl": 31, "check_tcl_bindnam": 31, "check_tcl_woobi": 31, "userhost": [31, 48], "snprintf": 31, "_woob1": 31, "_woob2": 31, "match_mask": 31, "bind_exec_log": 31, "encount": [31, 32, 49], "perhap": 32, "websit": 32, "slennox": 32, "incredibli": [32, 44], "page": [32, 42], "prove": 32, "debian": [32, 33], "apt": [32, 33], "wget": 32, "commadlin": 32, "zxvf": 32, "seri": [32, 44, 46], "multi": 32, "comfort": 32, "spent": [32, 44], "appli": [32, 35, 37, 43, 50], "daili": [32, 44], "chanc": 32, "commandlin": 32, "checkout": [32, 42], "skip": [32, 44], "commerci": 32, "problem": [32, 37, 39], "box": [32, 37], "isp": 32, "curl": 32, "ssh": 32, "haven": 32, "gunzip": 32, "xvf": 32, "extract": [32, 44], "slash": [32, 41], "brief": 32, "fast": 32, "botdir": 32, "cooldud": 32, "delet": [32, 44, 47], "rf": 32, "handi": 32, "zip": 32, "notepad": 32, "editplu": 32, "nano": 32, "vim": 32, "offer": [32, 33, 34, 48, 49], "quicker": 32, "nicebot": 32, "entir": [32, 44, 48, 49], "carefulli": [32, 44], "vagu": 32, "preserv": 32, "llamabot": [32, 37], "login": [32, 37, 43, 48], "vhost4": [32, 37, 39], "vhost": [32, 37, 39], "ipv4": [32, 37, 39], "ie": [32, 43, 44, 46], "vhost6": [32, 37, 39], "5254": 32, "dead": 32, "b33f": 32, "1337": 32, "f270": 32, "captur": [32, 44, 47], "mcobx": 32, "jkp": 32, "donkei": 32, "hors": 32, "3333": [32, 36, 37], "65535": [32, 37], "49152": 32, "rang": [32, 37], "reserv": [32, 37, 41], "basi": 32, "stealth": [32, 37], "scan": 32, "newus": [32, 37], "mrlame": [32, 37], "mrslame": [32, 37], "addus": 32, "rejoin": [32, 44], "aren": [32, 37, 44, 47, 48], "preced": [32, 44, 46], "backslash": 32, "rule": 32, "prematur": 32, "phew": 32, "cross": 32, "gave": 32, "promptli": 32, "kill": [32, 44], "pid": [32, 37, 44], "mnt": 32, "launch": 32, "persist": 32, "luck": [32, 49], "walk": 33, "scenario": [33, 34, 36], "sidenot": 33, "despit": 33, "anachron": 33, "interchang": [33, 39], "transport": 33, "protocol": [33, 37, 40, 44, 46], "appreci": 33, "fork": [33, 42], "ubuntu": 33, "distro": 33, "denot": [33, 44], "pretendnet": 33, "suffici": 33, "z": [33, 50], "wizard": 33, "5555": [33, 36, 37], "hubbot": [33, 36], "perfect": 34, "status": 34, "accur": [34, 44, 48], "alert": [34, 49], "deauthent": 34, "spec": 34, "isupport": 34, "005": [34, 40, 44], "eggdroptest": [34, 48], "beerbot": 34, "tn": 34, "announc": 34, "issupport": 34, "isset": 34, "reliabl": [34, 44, 48], "significantli": [34, 48], "increas": [34, 37, 43], "accuraci": 34, "supplementari": 34, "attach": [34, 44, 48], "overal": 34, "situat": [34, 36], "cover": [34, 35, 36], "march": [35, 45, 50], "07": [35, 50], "clarifi": 35, "sticki": [35, 44], "unsticki": 35, "stick": 35, "attribut": [35, 36, 44, 50], "kept": [35, 37], "obvious": [35, 44], "unstick": 35, "whose": [35, 44], "whichev": 35, "consist": [36, 38, 41, 44], "leaf": [36, 37, 43, 46], "assign": [36, 37, 44], "aggress": 36, "passiv": 36, "physic": 36, "bota": 36, "botb": 36, "botc": 36, "sharebot": [36, 37, 44], "slave": 36, "botattr": 36, "isol": 36, "unlimit": 36, "4444": [36, 37], "thoroughli": 36, "special": [36, 44], "relink": 36, "scripter": 36, "prepar": 36, "lameshar": 36, "hp": [36, 37], "beldin": 36, "pipe": 36, "he": [36, 44], "unreach": 36, "auth": [36, 37, 46], "fprint": [36, 37, 46], "sha1": [36, 46], "0and": 36, "intead": [], "qualifi": 37, "admin": [37, 45], "lamer": 37, "someircnetwork": 37, "timezon": 37, "est": 37, "timestamp": [37, 44], "alphabet": 37, "european": 37, "utc": 37, "cet": 37, "offset": 37, "coordin": 37, "univers": 37, "gmt": [37, 44], "west": 37, "prime": 37, "meridian": 37, "east": 37, "23": [37, 44], "env": 37, "tz": 37, "everywher": [37, 39, 44], "99": [37, 41], "virtual": 37, "outgo": [37, 44, 47], "prefer": [37, 39, 46], "resolut": 37, "famili": 37, "addlang": [37, 44], "english": [37, 47], "egg_lang": 37, "danish": 37, "french": 37, "finnish": 37, "german": 37, "chatter": 37, "24": [37, 39, 44], "logfilenam": 37, "yesterdai": 37, "48": 37, "concurr": [37, 43], "infin": 37, "decreas": 37, "logsiz": 37, "550": 37, "fill": [37, 42, 46], "quota": 37, "ram": 37, "hole": 37, "care": [37, 44, 49], "logflag": 37, "misc": [37, 44], "wallop": [37, 44], "eight": [37, 44], "belong": 37, "mco": [37, 44], "jpk": 37, "min": 37, "sec": 37, "man": 37, "strftime": 37, "forev": 37, "digit": [37, 46], "month": [37, 44], "fresh": 37, "militari": 37, "03": [37, 44], "00": [37, 44, 45], "am": [37, 50], "midnight": 37, "04may2000": 37, "produc": [37, 44], "yyyymmdd": 37, "manpag": 37, "mkcoblx": 37, "pidfil": 37, "motd": [37, 45], "banner": [37, 45], "perm": 37, "0600": 37, "octal": 37, "remind": 37, "rw": 37, "0400": 37, "0200": 37, "0660": 37, "0440": 37, "0220": 37, "0666": 37, "0444": 37, "0222": 37, "kiddi": 37, "head": 37, "unimport": 37, "deal": [37, 44, 50], "maxim": 37, "1025": 37, "prepend": 37, "whether": [37, 39, 44], "prohibit": 37, "sanitycheck": 37, "bogu": 37, "ground": 37, "wouldn": 37, "anywai": 37, "thr": 37, "firewal": 37, "sun": 37, "barr": 37, "ebai": 37, "3666": 37, "behind": 37, "passthru": 37, "127": 37, "192": [37, 44], "168": [37, 44], "255": 37, "172": 37, "transpar": 37, "masquerad": 37, "portrang": 37, "url": [37, 44], "birthdai": 37, "userinfo1": 37, "moreov": 37, "simul": [37, 44], "ethic": 37, "dk": [37, 44], "dupwait": 37, "spread": 37, "lag": [37, 41], "cidr": [37, 44], "notat": 37, "genrsa": 37, "4096": [37, 46], "rsa": 37, "strong": 37, "enough": 37, "schat": [37, 46], "conveni": 37, "cipher": [37, 44, 46], "side": [37, 44, 46, 49], "365": 37, "depth": [37, 46], "chain": [37, 46], "shall": 37, "capath": [37, 46], "cafil": [37, 46], "ca": 37, "colon": [37, 39], "comma": [37, 41, 44], "silent": 37, "adh": 37, "anonym": 37, "dh": 37, "uid": [37, 46], "chfinger": 37, "slower": 37, "everydai": 37, "limbo": 37, "serv": 37, "alltool": 37, "robot": 38, "regularli": 38, "awai": [38, 40, 44], "chghost": [38, 40], "setnam": [38, 40], "whox": [38, 44], "unaccess": 38, "combin": [38, 44], "mar": 39, "2021": [39, 40, 44, 47], "establish": [39, 44, 46], "freebsd": 39, "netbsd": 39, "openbsd": 39, "mac": 39, "proper": [39, 44], "vista": 39, "xp": 39, "unoffici": 39, "wherev": 39, "squar": 39, "bracket": 39, "doubt": 39, "Their": 39, "began": 40, "rfc1459": [40, 44], "rfc2812": 40, "compris": 40, "decid": [40, 43], "emerg": 40, "optino": 40, "assumpt": 40, "explicit": 40, "302": [40, 44], "miniatur": 41, "watch": [41, 48], "999": 41, "wide": [41, 46], "anywher": [41, 44], "dot": 41, "apostroph": 41, "everyon": [41, 44], "contribut": 42, "think": [42, 50], "repo": 42, "click": [42, 49], "button": [42, 49], "descriptivebranchnam": 42, "confirm": [42, 44], "push": [42, 44], "yourusernam": 42, "yourbranchnam": 42, "templat": 42, "pour": 42, "cold": [42, 43], "bask": 42, "warm": 42, "karma": 42, "crytopgraphi": 43, "content": [43, 44, 48], "sensit": 43, "practic": [43, 44], "crypto": 43, "solut": 43, "deriv": 43, "revers": [43, 44], "seamless": 43, "enjoi": 43, "beverag": 43, "chpass": 43, "consider": 43, "ideal": [43, 49], "essenti": 43, "fanci": 43, "lobster": 43, "dinner": 43, "encpass2": 43, "pbk": 43, "exhaust": [44, 48], "categori": 44, "vertic": 44, "faster": 44, "bypass": 44, "caution": 44, "lieu": 44, "negoti": [44, 46], "dict": [44, 48], "mytag": 44, "baa": 44, "flat": 44, "servivc": 44, "botfl": 44, "botaddr": 44, "laston": 44, "xtra": 44, "visibl": 44, "counterpart": 44, "empti": [44, 48], "filearea": 44, "remotebotnam": 44, "globalflag": 44, "channelflag": 44, "subsequ": 44, "botaddress": 44, "ipaddress": 44, "ipv4address": 44, "ipv6address": 44, "behav": 44, "getinfo": 44, "unstuck": 44, "jupe": 44, "sublist": 44, "zero": 44, "differenti": 44, "abcdechannel": 44, "got": 44, "modechang": 44, "refresh": [44, 48], "fragil": 44, "notif": 44, "offlin": 44, "behalf": 44, "selecet": 44, "compon": 44, "duplic": 44, "element": 44, "bywho": 44, "ag": 44, "reset": 44, "reread": 44, "memberlist": 44, "lost": 44, "ntik": 44, "serverlist": 44, "ex": 44, "goober": 44, "ON": 44, "forget": 44, "reiniti": 44, "coupl": 44, "throw": 44, "99999": 44, "greater": 44, "equal": 44, "she": 44, "mpj": 44, "pj": 44, "moc": 44, "mp": 44, "configfil": 44, "omit": [44, 46], "boldfac": 44, "video": 44, "underlin": [44, 45], "ansi": 44, "ctrl": 44, "bell": 44, "ordinari": [44, 46], "ital": 44, "intercept": 44, "item": 44, "uplink": 44, "botnetnick": 44, "file_receiv": 44, "file_send": 44, "file_send_pend": 44, "readabl": 44, "lindex": 44, "six": 44, "blank": 44, "mandatori": 44, "permit": 44, "regardless": 44, "failur": [44, 48], "kind": 44, "succeed": 44, "pathnam": 44, "temp": 44, "resum": 44, "bitchx": 44, "five": 44, "jp": 44, "34": 44, "04": 44, "06": 44, "08": [44, 45], "interv": 44, "secondli": 44, "repres": [44, 48], "jan": [44, 46], "1970": 44, "convert": 44, "week": 44, "804600": 44, "vari": [44, 50], "posix": 44, "portabl": 44, "fri": 44, "aug": 44, "55": 44, "1973": 44, "rand_max": 44, "2147483647": 44, "underli": 44, "pseudo": 44, "relinquish": 44, "deliv": 44, "notebox": 44, "caught": 44, "encod": [44, 45], "ascii": 44, "64": 44, "ecb": 44, "cbc": 44, "pick": 44, "fatal": 44, "wasn": 44, "128": 44, "pre": [44, 46], "myownevent123": 44, "todai": 44, "couldn": 44, "17": 44, "insensit": 44, "simplifi": 44, "rfc_compliant": 44, "mem": 44, "exclud": 44, "cleartext": 44, "vali": 44, "valis0": 44, "crappi": 44, "math": 44, "ufl": 44, "edu": [44, 50], "eu": 44, "pl1": 44, "1010201": 44, "mnnrrpp": 44, "nn": 44, "rr": 44, "pp": 44, "437": 44, "expans": 44, "quot": [44, 48], "highest": 44, "prioriti": 44, "danger": 44, "logic": 44, "proce": 44, "easiest": 44, "build": 44, "ti": 44, "lastli": 44, "ov": 44, "mn": 44, "unknown": 44, "fil": 44, "phrase": 44, "spoken": 44, "notc": 44, "breach": 44, "notcproc": 44, "partproc": 44, "signoff": 44, "possibli": [44, 48], "twice": 44, "rawt": 44, "topc": 44, "kicker": 44, "newnick": 44, "typo": 44, "18": 44, "guppi": 44, "mode_proc": 44, "stai": 44, "mode_proc_fix": 44, "ctcr": 44, "embed": 44, "supplant": 44, "368": 44, "unexpect": 44, "chon": 44, "chof": 44, "recipi": 44, "rcvd": 44, "invok": 44, "dronepup": 44, "eden": 44, "wild": 44, "bcst": 44, "disc": 44, "splt": 44, "Be": 44, "awar": 44, "fals": 44, "alarm": 44, "fake": 44, "rejn": 44, "needop": 44, "needal": 44, "flud": 44, "wall": 44, "sender": 44, "chjn": 44, "chpt": 44, "0000": 44, "9999": 44, "schedul": 44, "var": 44, "pad": 44, "unld": 44, "nkch": 44, "oldhandl": 44, "newhandl": 44, "sighup": 44, "hup": 44, "sigterm": 44, "sigil": 44, "ill": 44, "sigquit": 44, "prerehash": 44, "prerestart": 44, "preinit": 44, "tout": 44, "stall": 44, "flexibl": [44, 46], "noqueu": 44, "cron": 44, "weekdai": 44, "evalu": 44, "express": 44, "delimit": 44, "whitespac": 44, "sundai": 44, "handshak": 44, "shutdownreason": 44, "shutdown": 44, "sigkil": 44, "ircawai": 44, "301": 44, "catch": 44, "invt": 44, "invite": 44, "dictionari": 44, "late": 44, "distinguish": 44, "unset": 44, "revert": 44, "statement": 44, "treat": [44, 49], "signal": 44, "verbos": 44, "affet": 44, "retain": 44, "driven": 44, "misnom": 44, "song": 44, "danc": 44, "eof": 44, "arriv": 44, "dispos": 44, "newidx": 44, "6687": 44, "escap": 44, "invers": 45, "flash": 45, "botnetcentr": 45, "percent": 45, "col": 45, "column": 45, "width": 45, "center": 45, "70": 45, "meet": 46, "autodetect": 46, "forcefulli": 46, "sslinc": 46, "ssllib": 46, "starttl": 46, "certifict": 46, "graphic": 46, "deliber": 46, "sdcc": 46, "kvirc": 46, "synchron": 46, "infrastructur": 46, "subject": 46, "s_client": 46, "sslport": 46, "issuer": 46, "jun": 47, "02": 47, "2500": 47, "high": 47, "therebi": [47, 49], "lang": 47, "techniqu": 47, "yourbot": 47, "myvar": 47, "held": 48, "natur": 48, "WILL": 48, "unintend": 48, "consequ": 48, "truncat": 48, "assur": 48, "replic": [48, 49], "vip": [48, 49], "subscrib": [48, 49], "badgui": 48, "comprehens": 48, "twith": 48, "gui": 48, "flagmask": 48, "ccht": 48, "histori": 48, "tmi": 48, "tv": [48, 49], "target": 48, "cmsg": 48, "msgid": 48, "htgt": 48, "viewer": 48, "similarli": 48, "arbitrarili": 48, "wspr": 48, "popul": 48, "wspm": 48, "rmst": 48, "emot": 48, "uncertainti": 48, "usst": 48, "usrntc": 48, "discontinu": 49, "technic": 49, "token": 49, "oauth": 49, "alphanumer": 49, "pretend": 49, "j9irk4vs28b0obz9easys4w2ystji3u": 49, "spoiler": 49, "sake": 49, "light": 49, "decis": 49, "notabl": 49, "topic": 49, "degrad": 49, "capac": 49, "face": 49, "hubcap": 50, "clemson": 50, "hate": 50, "milk": 50, "meaningless": 50, "titl": 50, "entitl": 50, "badg": 50, "q": 50, "mainten": 50, "washalfop": 50, "nethack": 50, "highlight": 50, "2023": [0, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50]}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"about": [0, 2, 39, 40, 46], "eggdrop": [0, 2, 3, 4, 5, 6, 7, 8, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 42, 44, 48], "bore": 1, "legal": 1, "stuff": 1, "an": [2, 28, 29, 30, 33], "open": 2, "sourc": [2, 16, 32], "irc": [2, 18, 33, 46, 49], "bot": [2, 16, 36, 44], "some": 2, "thing": 2, "you": 2, "can": [2, 7], "do": [2, 7, 28], "how": [2, 4, 5, 7, 28], "get": [2, 4, 16, 32, 44], "instal": [2, 3, 7, 32, 39, 46], "pre": [2, 4, 33], "requisit": [2, 4, 33], "where": 2, "find": 2, "more": 2, "help": [2, 4], "us": [2, 34, 36], "tutori": 2, "modul": [2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44], "quick": [3, 4], "startup": [3, 4], "cygwin": 3, "requir": [3, 28, 31, 34, 44], "window": 3, "readm": 4, "notic": 4, "what": [4, 7, 28, 36], "i": [4, 7, 36], "ftp": 4, "git": 4, "develop": 4, "snapshot": 4, "docker": 4, "system": [4, 30], "upgrad": [4, 5], "command": [4, 5, 25, 31, 44, 47, 48], "line": [4, 41], "auto": 4, "start": [4, 32], "document": [4, 5], "obtain": 4, "must": 5, "read": 5, "chang": [5, 44], "v1": 5, "9": 5, "config": [5, 16, 32, 44, 47, 49], "file": [5, 16, 32, 33, 37, 44, 47, 49], "script": [5, 29, 34, 37, 46], "botnet": [5, 33, 36, 37, 46], "tcl": [5, 8, 25, 31, 34, 43, 44, 48], "includ": 6, "inform": [7, 33], "ar": 7, "compil": 7, "without": 7, "dynam": 7, "static": 7, "still": 7, "need": 7, "loadmodul": [7, 44], "bind": [8, 31, 44, 48], "intern": 8, "tabl": 8, "creation": 8, "stackabl": [8, 44], "ht_stackabl": 8, "trigger": 8, "ani": 8, "c": 8, "handler": 8, "summari": 8, "assoc": [9, 44], "blowfish": 10, "channel": [11, 16, 30, 44, 48], "compress": [12, 44], "consol": [13, 37, 44], "ctcp": [14, 39], "dn": 15, "filesi": [16, 44], "setup": 16, "partylin": [16, 25, 30, 31], "usag": [16, 39, 40, 43, 46], "cancel": 16, "cd": 16, "directori": [16, 37, 44], "cp": [16, 44], "dst": 16, "desc": [16, 44], "descript": 16, "filestat": 16, "user": [16, 30, 36, 44, 50], "clear": 16, "stat": 16, "filenam": [16, 44], "nicknam": [16, 44], "hide": 16, "ln": 16, "filepath": 16, "localfil": 16, "l": [16, 44], "filemask": 16, "mkdir": [16, 44], "dir": [16, 44], "flag": [16, 30, 36, 44, 48, 50], "mv": [16, 44], "dest": 16, "pend": 16, "pwd": 16, "quit": 16, "rm": 16, "rmdir": [16, 44], "share": [16, 23, 36], "optim": 16, "unhid": 16, "unshar": 16, "ident": 17, "note": [19, 44], "pbkdf2": 20, "seen": 21, "server": [22, 33, 34, 44], "transfer": 24, "twitch": [25, 48, 49], "limit": [25, 44, 49], "api": 25, "uptim": [26, 44], "woobi": 27, "write": [28, 29, 31], "module_start": 28, "module_t": 28, "module_clos": 28, "module_expmem": 28, "module_report": 28, "addit": [28, 33], "function": [28, 49], "common": 30, "first": 30, "step": 30, "log": [30, 37, 47], "join": [30, 34], "add": [30, 44], "host": [30, 44], "assign": 30, "permiss": 30, "configur": [30, 32, 33, 43], "set": [30, 32, 37, 39, 44, 46], "automat": 30, "restart": [30, 44], "crontab": 30, "method": 30, "old": [30, 44], "systemd": 30, "newer": 30, "authent": [30, 36, 46], "nickserv": 30, "up": [30, 32], "sasl": 30, "basic": [31, 37], "header": 31, "code": 31, "ad": [31, 36], "defin": 31, "argument": 31, "call": 31, "export": 31, "prerequisit": 32, "The": [32, 41], "super": 32, "short": 32, "version": [32, 44], "histori": 32, "download": 32, "locat": 32, "edit": [32, 49], "No": 32, "show": 32, "enabl": [33, 34, 43, 44], "tl": [33, 36, 46], "secur": [33, 36, 46], "connect": [33, 44], "protect": 33, "commun": 33, "prepar": 33, "gener": 33, "kei": [33, 44, 46], "listen": [33, 44], "account": [34, 44], "track": 34, "capabl": [34, 40], "extend": 34, "notifi": 34, "whox": 34, "check": 34, "statu": [34, 44], "determin": 34, "support": [34, 39, 40, 46], "best": 34, "effort": 34, "tag": [34, 44], "ban": [35, 44], "invit": [35, 44], "exempt": [35, 44], "link": [36, 44], "term": 36, "exampl": 36, "bottre": 36, "botflag": 36, "make": 36, "record": [36, 44], "certif": [36, 46], "core": 37, "execut": 37, "path": 37, "dcc": [37, 44, 46], "telnet": 37, "advanc": [37, 47], "ssl": [37, 46], "featur": 38, "ipv6": 39, "chat": 39, "chat4": 39, "chat6": 39, "ircv3": 40, "cap": [40, 44], "parti": 41, "patch": 42, "submit": 42, "via": [42, 44], "github": 42, "encrypt": [43, 44], "hash": 43, "background": 43, "hybrid": 43, "solo": 43, "interfac": 43, "output": 44, "putserv": 44, "text": 44, "option": 44, "puthelp": 44, "putquick": 44, "putnow": 44, "onelin": 44, "putkick": 44, "nick": [44, 48], "reason": 44, "putlog": 44, "putcmdlog": 44, "putxferlog": 44, "putloglev": 44, "": 44, "dumpfil": 44, "queuesiz": 44, "queue": 44, "clearqueu": 44, "valu": 44, "req": 44, "raw": 44, "arg": [44, 48], "tagmsg": 44, "target": 44, "ip": 44, "port": 44, "password": 44, "remov": 44, "list": 44, "manipul": 44, "countus": 44, "validus": 44, "handl": 44, "findus": 44, "userlist": 44, "passwdok": 44, "pass": 44, "getus": 44, "entri": 44, "type": [44, 48], "extra": 44, "info": 44, "setus": 44, "chhandl": 44, "new": 44, "chattr": 44, "botattr": 44, "matchattr": 44, "addus": 44, "hostmask": 44, "addbot": 44, "address": 44, "botport": 44, "userport": 44, "delus": 44, "delhost": 44, "addchanrec": 44, "delchanrec": 44, "haschanrec": 44, "getchaninfo": 44, "setchaninfo": 44, "newchanban": 44, "creator": 44, "comment": 44, "lifetim": 44, "newban": 44, "newchanexempt": 44, "newexempt": 44, "newchaninvit": 44, "newinvit": 44, "stickban": 44, "banmask": 44, "unstickban": 44, "stickexempt": 44, "exemptmask": 44, "unstickexempt": 44, "stickinvit": 44, "invitemask": 44, "unstickinvit": 44, "killchanban": 44, "killban": 44, "killchanexempt": 44, "killexempt": 44, "killchaninvit": 44, "killinvit": 44, "ischanjup": 44, "isban": 44, "ispermban": 44, "isexempt": 44, "ispermexempt": 44, "isinvit": 44, "isperminvit": 44, "isbansticki": 44, "isexemptsticki": 44, "isinvitesticki": 44, "matchban": 44, "matchexempt": 44, "matchinvit": 44, "banlist": 44, "exemptlist": 44, "invitelist": 44, "newignor": 44, "killignor": 44, "ignorelist": 44, "isignor": 44, "save": 44, "reload": 44, "backup": 44, "name": 44, "savechannel": 44, "loadchannel": 44, "channame2dnam": 44, "chandname2nam": 44, "dname": 44, "isbotnick": 44, "botisop": 44, "botishalfop": 44, "botisvoic": 44, "botonchan": 44, "isop": 44, "ishalfop": 44, "wasop": 44, "washalfop": 44, "isvoic": 44, "isidentifi": 44, "isawai": 44, "isircbot": 44, "onchan": 44, "monitor": 44, "accounttrack": 44, "getaccount": 44, "nick2hand": 44, "account2nick": 44, "hand2nick": 44, "handonchan": 44, "ischanban": 44, "ischanexempt": 44, "ischaninvit": 44, "chanban": 44, "chanexempt": 44, "chaninvit": 44, "resetban": 44, "resetexempt": 44, "resetinvit": 44, "resetchanidl": 44, "resetchanjoin": 44, "resetchan": 44, "refreshchan": 44, "getchanhost": 44, "getchanjoin": 44, "onchansplit": 44, "chanlist": 44, "chanflag": 44, "getchanidl": 44, "getchanmod": 44, "jump": 44, "pushmod": 44, "mode": 44, "flushmod": 44, "topic": 44, "validchan": 44, "isdynam": 44, "setudef": 44, "int": 44, "str": 44, "renudef": 44, "oldnam": 44, "newnam": 44, "deludef": 44, "getudef": 44, "chansettyp": 44, "isupport": 44, "isset": 44, "putdcc": 44, "idx": 44, "dccbroadcast": 44, "messag": 44, "dccputchan": 44, "boot": 44, "dccsimul": 44, "hand2idx": 44, "idx2hand": 44, "valididx": 44, "getchan": 44, "setchan": 44, "resetconsol": 44, "echo": 44, "strip": 44, "putbot": 44, "putallbot": 44, "killdcc": 44, "botlist": 44, "islink": 44, "dccuse": 44, "dcclist": 44, "socklist": 44, "whom": 44, "chan": [44, 48], "getdccidl": 44, "getdccawai": 44, "setdccawai": 44, "dccdumpfil": 44, "numberlist": 44, "erasenot": 44, "listnot": 44, "storenot": 44, "from": 44, "msg": 44, "killassoc": 44, "compressfil": 44, "level": 44, "src": 44, "uncompressfil": 44, "iscompress": 44, "setpwd": 44, "getpwd": 44, "getfil": 44, "getdir": 44, "dccsend": 44, "ircnick": 44, "filesend": 44, "fileresend": 44, "setdesc": 44, "getdesc": 44, "setown": 44, "getown": 44, "setlink": 44, "getlink": 44, "getfileq": 44, "getfilesendtim": 44, "destin": 44, "getflag": 44, "setflag": 44, "miscellan": 44, "keyword": 44, "mask": 44, "proc": 44, "unbind": 44, "logfil": 44, "maskhost": 44, "masktyp": 44, "timer": 44, "minut": 44, "count": 44, "timernam": 44, "utim": 44, "second": 44, "killtim": 44, "killutim": 44, "unixtim": 44, "durat": 44, "strftime": 44, "formatstr": 44, "time": 44, "ctime": 44, "myip": 44, "rand": 44, "control": 44, "sendnot": 44, "unlink": 44, "string": [44, 47], "decrypt": 44, "base64": 44, "encpass": 44, "die": 44, "unam": 44, "dnslookup": 44, "hostnam": 44, "arg1": 44, "arg2": 44, "argn": 44, "md5": 44, "callev": 44, "event": 44, "traffic": 44, "unloadmodul": 44, "loadhelp": 44, "helpfil": 44, "unloadhelp": 44, "reloadhelp": 44, "rehash": 44, "stripcod": 44, "matchaddr": 44, "matchcidr": 44, "block": 44, "prefix": 44, "matchstr": 44, "pattern": 44, "rfcequal": 44, "string1": 44, "string2": 44, "istl": 44, "starttl": 44, "tlsstatu": 44, "global": 44, "variabl": [44, 47], "botnick": 44, "botnam": 44, "serveraddress": 44, "numvers": 44, "onlin": 44, "lastbind": 44, "isjup": 44, "handlen": 44, "configurearg": 44, "languag": 44, "return": 44, "procedur": 44, "tcp": 44, "match": 44, "charact": 44, "textfil": 45, "substitut": 45, "tip": 47, "renam": 47, "keep": 47, "self": 47, "modifi": 47, "default": 47, "modular": 47, "your": 47, "twcmd": 48, "cmd": 48, "userst": 48, "roomstat": 48, "twitchmod": 48, "twitchvip": 48, "ismod": 48, "isvip": 48, "disclaim": 49, "regist": 49, "web": 49, "ui": 49}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About Eggdrop": [[0, "about-eggdrop"], [2, null]], "Boring legal stuff": [[1, "boring-legal-stuff"]], "Eggdrop, an open source IRC bot": [[2, "eggdrop-an-open-source-irc-bot"]], "Some things you can do with Eggdrop": [[2, "some-things-you-can-do-with-eggdrop"]], "How to get Eggdrop": [[2, "how-to-get-eggdrop"]], "How to install Eggdrop": [[2, "how-to-install-eggdrop"]], "Installation Pre-requisites": [[2, "installation-pre-requisites"]], "Installation": [[2, "installation"], [32, "installation"], [39, "installation"], [46, "installation"]], "Where to find more help": [[2, "where-to-find-more-help"]], "Installing Eggdrop": [[2, null], [3, "installing-eggdrop"]], "Using Eggdrop": [[2, null]], "Tutorials": [[2, null]], "Eggdrop Modules": [[2, null]], "Quick Startup": [[3, "quick-startup"], [4, "quick-startup"]], "Cygwin Requirements (Windows)": [[3, "cygwin-requirements-windows"]], "Modules": [[3, "modules"], [5, "modules"], [37, "modules"]], "README": [[4, "readme"]], "Notice": [[4, "notice"]], "What is Eggdrop?": [[4, "what-is-eggdrop"]], "How to Get Eggdrop": [[4, "how-to-get-eggdrop"]], "FTP": [[4, "ftp"]], "Git Development Snapshot": [[4, "git-development-snapshot"]], "Docker": [[4, "docker"]], "System Pre-Requisites": [[4, "system-pre-requisites"]], "Upgrading": [[4, "upgrading"]], "Command Line": [[4, "command-line"]], "Auto-starting Eggdrop": [[4, "auto-starting-eggdrop"]], "Documentation": [[4, "documentation"], [5, "documentation"]], "Obtaining Help": [[4, "obtaining-help"]], "Upgrading Eggdrop": [[5, "upgrading-eggdrop"]], "How to Upgrade": [[5, "how-to-upgrade"]], "Must-read changes for Eggdrop v1.9": [[5, "must-read-changes-for-eggdrop-v1-9"]], "Config file changes": [[5, "config-file-changes"]], "Scripts": [[5, "scripts"], [37, "scripts"], [46, "scripts"]], "Botnet": [[5, "botnet"], [46, "botnet"]], "Tcl Commands": [[5, "tcl-commands"]], "Modules included with Eggdrop": [[6, "modules-included-with-eggdrop"]], "Eggdrop Module Information": [[7, "eggdrop-module-information"]], "What are modules?": [[7, "what-are-modules"]], "How to install a module": [[7, "how-to-install-a-module"]], "Can I compile Eggdrop without dynamic modules? (Static compile)": [[7, "can-i-compile-eggdrop-without-dynamic-modules-static-compile"]], "Do I still need to \u2018loadmodule\u2019 modules?": [[7, "do-i-still-need-to-loadmodule-modules"]], "Eggdrop Bind Internals": [[8, "eggdrop-bind-internals"]], "Bind Table Creation": [[8, "bind-table-creation"]], "Stackable Binds: HT_STACKABLE": [[8, "stackable-binds-ht-stackable"]], "Tcl Binding": [[8, "tcl-binding"]], "Triggering the Bind": [[8, "triggering-the-bind"]], "Triggering any Bind": [[8, "triggering-any-bind"]], "C Binding": [[8, "c-binding"]], "C Handler": [[8, "c-handler"]], "Summary": [[8, "summary"]], "Assoc Module": [[9, "assoc-module"], [44, "assoc-module"]], "Blowfish Module": [[10, "blowfish-module"]], "Channels Module": [[11, "channels-module"]], "Compress Module": [[12, "compress-module"], [44, "compress-module"]], "Console Module": [[13, "console-module"]], "CTCP Module": [[14, "ctcp-module"]], "DNS Module": [[15, "dns-module"]], "Filesys Module": [[16, "filesys-module"], [44, "filesys-module"]], "Config file setup": [[16, "config-file-setup"]], "Partyline usage": [[16, "partyline-usage"]], ".files": [[16, "files"]], ".cancel [file] \u2026": [[16, "cancel-file-file"]], ".cd ": [[16, "cd-directory"]], ".cp ": [[16, "cp-source-dst"]], ".desc ": [[16, "desc-file-description"]], ".filestats [clear]": [[16, "filestats-user-clear"]], ".stats": [[16, "stats"]], ".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"]], ".pending": [[16, "pending"]], ".pwd": [[16, "pwd"]], ".quit": [[16, "quit"]], "rm [files] \u2026": [[16, "rm-file-files"]], ".rmdir ": [[16, "rmdir-dir"]], ".share [files] \u2026": [[16, "share-file-files"]], ".optimize": [[16, "optimize"]], ".unhide": [[16, "unhide"]], ".unshare [file] \u2026": [[16, "unshare-file-file"]], ".filesys module": [[16, "id1"]], "Ident Module": [[17, "ident"]], "IRC Module": [[18, "irc-module"]], "Notes Module": [[19, "notes-module"], [44, "notes-module"]], "PBKDF2 Module": [[20, "pbkdf2-module"]], "Seen Module": [[21, "seen-module"]], "Server Module": [[22, "server-module"]], "Share Module": [[23, "share-module"]], "Transfer Module": [[24, "transfer-module"]], "Twitch Module": [[25, "twitch-module"]], "Limitations": [[25, "limitations"]], "Tcl API": [[25, "tcl-api"]], "Partyline commands": [[25, "partyline-commands"]], "Uptime Module": [[26, "uptime-module"]], "Woobie Module": [[27, "woobie-module"]], "How to Write an Eggdrop Module": [[28, "how-to-write-an-eggdrop-module"]], "Module requirements": [[28, "module-requirements"]], "MODULE_start": [[28, "module-start"]], "MODULE_table": [[28, "module-table"]], "MODULE_close ()": [[28, "module-close"]], "MODULE_expmem": [[28, "module-expmem"]], "MODULE_report": [[28, "module-report"]], "Additional functions": [[28, "additional-functions"]], "What to do with a module?": [[28, "what-to-do-with-a-module"]], "Writing an Eggdrop Script": [[29, "writing-an-eggdrop-script"]], "Common First Steps": [[30, "common-first-steps"]], "Log on to the partyline": [[30, "log-on-to-the-partyline"]], "Common first steps": [[30, "id1"]], "Join a Channel": [[30, "join-a-channel"]], "Add a User": [[30, "add-a-user"]], "Add a Host to a User": [[30, "add-a-host-to-a-user"]], "Assign Permission Flags": [[30, "assign-permission-flags"]], "Configure Channel Settings": [[30, "configure-channel-settings"]], "Automatically restarting an Eggdrop": [[30, "automatically-restarting-an-eggdrop"]], "Crontab Method (Old)": [[30, "crontab-method-old"]], "Systemd Method (Newer Systems)": [[30, "systemd-method-newer-systems"]], "Authenticating with NickServ": [[30, "authenticating-with-nickserv"]], "Setting up SASL authentication": [[30, "setting-up-sasl-authentication"]], "Writing a Basic Eggdrop Module": [[31, "writing-a-basic-eggdrop-module"]], "Module Header": [[31, "module-header"]], "Required Code": [[31, "required-code"]], "Adding a Partyline Command": [[31, "adding-a-partyline-command"]], "Adding a Tcl Command": [[31, "adding-a-tcl-command"]], "Adding a Tcl Bind": [[31, "adding-a-tcl-bind"]], "Defining bind arguments": [[31, "defining-bind-arguments"]], "Calling the Bind": [[31, "calling-the-bind"]], "Exporting the Bind": [[31, "exporting-the-bind"]], "Setting Up Eggdrop": [[32, "setting-up-eggdrop"]], "Prerequisites": [[32, "prerequisites"]], "The super-short version": [[32, "the-super-short-version"]], "Getting the source": [[32, "getting-the-source"]], "History": [[32, "history"]], "Download locations": [[32, "download-locations"]], "Configuration": [[32, "configuration"]], "Editing the config file": [[32, "editing-the-config-file"], [49, "editing-the-config-file"]], "Starting the Eggdrop": [[32, "starting-the-eggdrop"]], "No show?": [[32, "no-show"]], "Enabling TLS Security on Eggdrop": [[33, "enabling-tls-security-on-eggdrop"]], "Pre-requisites": [[33, "pre-requisites"]], "Connecting to a TLS-enabled IRC server": [[33, "connecting-to-a-tls-enabled-irc-server"]], "Protecting Botnet Communications": [[33, "protecting-botnet-communications"]], "Configuration File Preparation - Generating Keys": [[33, "configuration-file-preparation-generating-keys"]], "Configuration File Preparation - Listening with TLS": [[33, "configuration-file-preparation-listening-with-tls"]], "Connecting to an Eggdrop listening with TLS": [[33, "connecting-to-an-eggdrop-listening-with-tls"]], "Additional Information": [[33, "additional-information"]], "Account tracking in Eggdrop": [[34, "account-tracking-in-eggdrop"]], "Required Server Capabilities": [[34, "required-server-capabilities"]], "extended-join": [[34, "extended-join"]], "account-notify": [[34, "account-notify"]], "WHOX": [[34, "whox"]], "Enabling Eggdrop Account Tracking": [[34, "enabling-eggdrop-account-tracking"]], "Checking Account-tracking Status": [[34, "checking-account-tracking-status"]], "Determining if a Server Supports Account Capabilities": [[34, "determining-if-a-server-supports-account-capabilities"]], "Best-Effort Account Tracking": [[34, "best-effort-account-tracking"]], "account-tag": [[34, "account-tag"]], "Using Accounts with Tcl Scripts": [[34, "using-accounts-with-tcl-scripts"]], "Bans, Invites, and Exempts": [[35, "bans-invites-and-exempts"]], "Botnet Sharing and Linking": [[36, "botnet-sharing-and-linking"]], "What is a botnet?": [[36, "what-is-a-botnet"]], "Terms": [[36, "terms"]], "Example bottree": [[36, "example-bottree"]], "Bot Flags": [[36, "bot-flags"]], "Adding and linking bots": [[36, "adding-and-linking-bots"]], "Secure (TLS) Links": [[36, "secure-tls-links"]], "Using botflags": [[36, "using-botflags"]], "Making bots share user records": [[36, "making-bots-share-user-records"]], "Using certificates to authenticate Eggdrops": [[36, "using-certificates-to-authenticate-eggdrops"]], "Eggdrop Core Settings": [[37, "eggdrop-core-settings"]], "Executable Path": [[37, "executable-path"]], "Basic Settings": [[37, "basic-settings"]], "Log Files": [[37, "log-files"]], "Console Settings": [[37, "console-settings"]], "File and Directory Settings": [[37, "file-and-directory-settings"]], "Botnet/Dcc/Telnet Settings": [[37, "botnet-dcc-telnet-settings"]], "Advanced Settings": [[37, "advanced-settings"]], "SSL Settings": [[37, "ssl-settings"]], "Eggdrop Features": [[38, "eggdrop-features"]], "IPv6 support": [[39, "ipv6-support"]], "About": [[39, "about"], [40, "about"], [46, "about"]], "Usage": [[39, "usage"], [40, "usage"], [43, "usage"], [46, "usage"]], "CTCP CHAT/CHAT4/CHAT6": [[39, "ctcp-chat-chat4-chat6"]], "Settings": [[39, "settings"]], "IRCv3 support": [[40, "ircv3-support"]], "Supported CAP capabilities": [[40, "supported-cap-capabilities"]], "The Party Line": [[41, "the-party-line"]], "Patching Eggdrop": [[42, "patching-eggdrop"]], "Submitting a patch via GitHub": [[42, "submitting-a-patch-via-github"]], "Encryption/Hashing": [[43, "encryption-hashing"]], "Background": [[43, "background"]], "Hybrid Configuration": [[43, "hybrid-configuration"]], "Enabling hybrid configuration": [[43, "enabling-hybrid-configuration"]], "Solo configuration": [[43, "solo-configuration"]], "Enabling solo configuration": [[43, "enabling-solo-configuration"]], "Tcl Interface": [[43, "tcl-interface"]], "Eggdrop Tcl Commands": [[44, "eggdrop-tcl-commands"]], "Output Commands": [[44, "output-commands"]], "putserv [options]": [[44, "putserv-text-options"]], "puthelp [options]": [[44, "puthelp-text-options"]], "putquick [options]": [[44, "putquick-text-options"]], "putnow [-oneline]": [[44, "putnow-text-oneline"]], "putkick [reason]": [[44, "putkick-channel-nick-nick-reason"]], "putlog ": [[44, "putlog-text"]], "putcmdlog ": [[44, "putcmdlog-text"]], "putxferlog ": [[44, "putxferlog-text"]], "putloglev ": [[44, "putloglev-flag-s-channel-text"]], "dumpfile ": [[44, "dumpfile-nick-filename"]], "queuesize [queue]": [[44, "queuesize-queue"]], "clearqueue ": [[44, "clearqueue-queue"]], "cap [arg]": [[44, "cap-ls-values-req-enabled-raw-arg"]], "tagmsg ": [[44, "tagmsg-tags-target"]], "server add [[+]port [password]]": [[44, "server-add-ip-host-port-password"]], "server remove [[+]port]": [[44, "server-remove-ip-host-port"]], "server list": [[44, "server-list"]], "User Record Manipulation Commands": [[44, "user-record-manipulation-commands"]], "countusers": [[44, "countusers"]], "validuser ": [[44, "validuser-handle"]], "finduser [-account] ": [[44, "finduser-account-value"]], "userlist [flags]": [[44, "userlist-flags"]], "passwdok ": [[44, "passwdok-handle-pass"]], "getuser [entry-type] [extra info]": [[44, "getuser-handle-entry-type-extra-info"]], "setuser [extra info]": [[44, "setuser-handle-entry-type-extra-info"]], "chhandle ": [[44, "chhandle-old-handle-new-handle"]], "chattr [changes [channel]]": [[44, "chattr-handle-changes-channel"]], "botattr [changes [channel]]": [[44, "botattr-handle-changes-channel"]], "matchattr [channel]": [[44, "matchattr-handle-flags-channel"]], "adduser [hostmask]": [[44, "adduser-handle-hostmask"]], "addbot
    [botport [userport]]": [[44, "addbot-handle-address-botport-userport"]], "deluser ": [[44, "deluser-handle"]], "delhost ": [[44, "delhost-handle-hostmask"]], "addchanrec ": [[44, "addchanrec-handle-channel"]], "delchanrec ": [[44, "delchanrec-handle-channel"]], "haschanrec ": [[44, "haschanrec-handle-channel"]], "getchaninfo ": [[44, "getchaninfo-handle-channel"]], "setchaninfo ": [[44, "setchaninfo-handle-channel-info"]], "newchanban [lifetime] [options]": [[44, "newchanban-channel-ban-creator-comment-lifetime-options"]], "newban [lifetime] [options]": [[44, "newban-ban-creator-comment-lifetime-options"]], "newchanexempt [lifetime] [options]": [[44, "newchanexempt-channel-exempt-creator-comment-lifetime-options"]], "newexempt [lifetime] [options]": [[44, "newexempt-exempt-creator-comment-lifetime-options"]], "newchaninvite [lifetime] [options]": [[44, "newchaninvite-channel-invite-creator-comment-lifetime-options"]], "newinvite [lifetime] [options]": [[44, "newinvite-invite-creator-comment-lifetime-options"]], "stickban [channel]": [[44, "stickban-banmask-channel"]], "unstickban [channel]": [[44, "unstickban-banmask-channel"]], "stickexempt [channel]": [[44, "stickexempt-exemptmask-channel"]], "unstickexempt [channel]": [[44, "unstickexempt-exemptmask-channel"]], "stickinvite [channel]": [[44, "stickinvite-invitemask-channel"]], "unstickinvite [channel]": [[44, "unstickinvite-invitemask-channel"]], "killchanban ": [[44, "killchanban-channel-ban"]], "killban ": [[44, "killban-ban"]], "killchanexempt ": [[44, "killchanexempt-channel-exempt"]], "killexempt ": [[44, "killexempt-exempt"]], "killchaninvite ": [[44, "killchaninvite-channel-invite"]], "killinvite ": [[44, "killinvite-invite"]], "ischanjuped ": [[44, "ischanjuped-channel"]], "isban [channel [-channel]]": [[44, "isban-ban-channel-channel"]], "ispermban [channel [-channel]]": [[44, "ispermban-ban-channel-channel"]], "isexempt [channel [-channel]]": [[44, "isexempt-exempt-channel-channel"]], "ispermexempt [channel [-channel]]": [[44, "ispermexempt-exempt-channel-channel"]], "isinvite [channel [-channel]]": [[44, "isinvite-invite-channel-channel"]], "isperminvite [channel [-channel]]": [[44, "isperminvite-invite-channel-channel"]], "isbansticky [channel [-channel]]": [[44, "isbansticky-ban-channel-channel"]], "isexemptsticky [channel [-channel]]": [[44, "isexemptsticky-exempt-channel-channel"]], "isinvitesticky [channel [-channel]]": [[44, "isinvitesticky-invite-channel-channel"]], "matchban [channel]": [[44, "matchban-nick-user-host-channel"]], "matchexempt [channel]": [[44, "matchexempt-nick-user-host-channel"]], "matchinvite [channel]": [[44, "matchinvite-nick-user-host-channel"]], "banlist [channel]": [[44, "banlist-channel"]], "exemptlist [channel]": [[44, "exemptlist-channel"]], "invitelist [channel]": [[44, "invitelist-channel"]], "newignore [lifetime]": [[44, "newignore-hostmask-creator-comment-lifetime"]], "killignore ": [[44, "killignore-hostmask"]], "ignorelist": [[44, "ignorelist"]], "isignore ": [[44, "isignore-hostmask"]], "save": [[44, "save"]], "reload": [[44, "reload"]], "backup": [[44, "backup"]], "getting-users": [[44, "getting-users"]], "Channel Commands": [[44, "channel-commands"]], "channel add [option-list]": [[44, "channel-add-name-option-list"]], "channel set ": [[44, "channel-set-name-options"]], "channel info ": [[44, "channel-info-name"]], "channel get [setting]": [[44, "channel-get-name-setting"]], "channel remove ": [[44, "channel-remove-name"]], "savechannels": [[44, "savechannels"]], "loadchannels": [[44, "loadchannels"]], "channels": [[44, "channels"]], "channame2dname ": [[44, "channame2dname-channel-name"]], "chandname2name ": [[44, "chandname2name-channel-dname"]], "isbotnick ": [[44, "isbotnick-nick"]], "botisop [channel]": [[44, "botisop-channel"]], "botishalfop [channel]": [[44, "botishalfop-channel"]], "botisvoice [channel]": [[44, "botisvoice-channel"]], "botonchan [channel]": [[44, "botonchan-channel"]], "isop [channel]": [[44, "isop-nickname-channel"]], "ishalfop [channel]": [[44, "ishalfop-nickname-channel"]], "wasop ": [[44, "wasop-nickname-channel"]], "washalfop ": [[44, "washalfop-nickname-channel"]], "isvoice [channel]": [[44, "isvoice-nickname-channel"]], "isidentified [channel]": [[44, "isidentified-nickname-channel"]], "isaway [channel]": [[44, "isaway-nickname-channel"]], "isircbot [channel]": [[44, "isircbot-nickname-channel"]], "onchan [channel]": [[44, "onchan-nickname-channel"]], "monitor [nickname]": [[44, "monitor-command-nickname"]], "accounttracking": [[44, "accounttracking"]], "getaccount [channel]": [[44, "getaccount-nickname-channel"]], "nick2hand [channel]": [[44, "nick2hand-nickname-channel"]], "account2nicks [channel]": [[44, "account2nicks-handle-channel"]], "hand2nick [channel]": [[44, "hand2nick-handle-channel"]], "hand2nicks [channel]": [[44, "hand2nicks-handle-channel"]], "handonchan [channel]": [[44, "handonchan-handle-channel"]], "ischanban ": [[44, "ischanban-ban-channel"]], "ischanexempt ": [[44, "ischanexempt-exempt-channel"]], "ischaninvite ": [[44, "ischaninvite-invite-channel"]], "chanbans ": [[44, "chanbans-channel"]], "chanexempts ": [[44, "chanexempts-channel"]], "chaninvites ": [[44, "chaninvites-channel"]], "resetbans ": [[44, "resetbans-channel"]], "resetexempts ": [[44, "resetexempts-channel"]], "resetinvites ": [[44, "resetinvites-channel"]], "resetchanidle [nick] ": [[44, "resetchanidle-nick-channel"]], "resetchanjoin [nick] ": [[44, "resetchanjoin-nick-channel"]], "resetchan [flags]": [[44, "resetchan-channel-flags"]], "refreshchan [flags]": [[44, "refreshchan-channel-flags"]], "getchanhost [channel]": [[44, "getchanhost-nickname-channel"]], "getchanjoin ": [[44, "getchanjoin-nickname-channel"]], "onchansplit [channel]": [[44, "onchansplit-nick-channel"]], "chanlist [flags][<&|>chanflags]": [[44, "chanlist-channel-flags-chanflags"]], "getchanidle ": [[44, "getchanidle-nickname-channel"]], "getchanmode ": [[44, "getchanmode-channel"]], "jump [server [[+]port [password]]]": [[44, "jump-server-port-password"]], "pushmode [arg]": [[44, "pushmode-channel-mode-arg"]], "flushmode ": [[44, "flushmode-channel"]], "topic ": [[44, "topic-channel"]], "validchan ": [[44, "validchan-channel"]], "isdynamic ": [[44, "isdynamic-channel"]], "setudef ": [[44, "setudef-flag-int-str-name"]], "renudef ": [[44, "renudef-flag-int-str-oldname-newname"]], "deludef ": [[44, "deludef-flag-int-str-name"]], "getudefs [flag/int/str]": [[44, "getudefs-flag-int-str"]], "chansettype ": [[44, "chansettype-setting"]], "isupport get [key]": [[44, "isupport-get-key"]], "isupport isset ": [[44, "isupport-isset-key"]], "DCC Commands": [[44, "dcc-commands"]], "putdcc [-raw]": [[44, "putdcc-idx-text-raw"]], "dccbroadcast ": [[44, "dccbroadcast-message"]], "dccputchan ": [[44, "dccputchan-channel-message"]], "boot [reason]": [[44, "boot-user-bot-reason"]], "dccsimul ": [[44, "dccsimul-idx-text"]], "hand2idx ": [[44, "hand2idx-handle"]], "idx2hand ": [[44, "idx2hand-idx"]], "valididx ": [[44, "valididx-idx"]], "getchan ": [[44, "getchan-idx"]], "setchan ": [[44, "setchan-idx-channel"]], "console [channel] [console-modes]": [[44, "console-idx-channel-console-modes"]], "resetconsole ": [[44, "resetconsole-idx"]], "echo [status]": [[44, "echo-idx-status"]], "strip [+/-strip-flags]": [[44, "strip-idx-strip-flags"]], "putbot ": [[44, "putbot-bot-nick-message"]], "putallbots ": [[44, "putallbots-message"]], "killdcc ": [[44, "killdcc-idx"]], "bots": [[44, "bots"]], "botlist": [[44, "botlist"]], "islinked ": [[44, "islinked-bot"]], "dccused": [[44, "dccused"]], "dcclist [type]": [[44, "dcclist-type"]], "socklist [type]": [[44, "socklist-type"]], "whom ": [[44, "whom-chan"]], "getdccidle ": [[44, "getdccidle-idx"]], "getdccaway ": [[44, "getdccaway-idx"]], "setdccaway ": [[44, "setdccaway-idx-message"]], "connect <[+]port>": [[44, "connect-host-port"]], "listen [ip] [options [flag]]": [[44, "listen-ip-port-type-options-flag"]], "dccdumpfile ": [[44, "dccdumpfile-idx-filename"]], "notes [numberlist]": [[44, "notes-user-numberlist"]], "erasenotes ": [[44, "erasenotes-user-numberlist"]], "listnotes ": [[44, "listnotes-user-numberlist"]], "storenote ": [[44, "storenote-from-to-msg-idx"]], "assoc [name]": [[44, "assoc-chan-name"]], "killassoc ": [[44, "killassoc-chan"]], "compressfile [-level ] [target-file]": [[44, "compressfile-level-level-src-file-target-file"]], "and": [[44, "and"]], "uncompressfile [target-file]": [[44, "uncompressfile-src-file-target-file"]], "iscompressed ": [[44, "iscompressed-filename"]], "setpwd ": [[44, "setpwd-idx-dir"]], "getpwd ": [[44, "getpwd-idx"]], "getfiles ": [[44, "getfiles-dir"]], "getdirs ": [[44, "getdirs-dir"]], "dccsend ": [[44, "dccsend-filename-ircnick"]], "filesend [ircnick]": [[44, "filesend-idx-filename-ircnick"]], "fileresend [ircnick]": [[44, "fileresend-idx-filename-ircnick"]], "setdesc ": [[44, "setdesc-dir-file-desc"]], "getdesc ": [[44, "getdesc-dir-file"]], "setowner ": [[44, "setowner-dir-file-handle"]], "getowner ": [[44, "getowner-dir-file"]], "setlink ": [[44, "setlink-dir-file-link"]], "getlink ": [[44, "getlink-dir-file"]], "getfileq ": [[44, "getfileq-handle"]], "getfilesendtime ": [[44, "getfilesendtime-idx"]], "mkdir [ [channel]]": [[44, "mkdir-directory-required-flags-channel"]], "rmdir ": [[44, "rmdir-directory"]], "mv ": [[44, "mv-file-destination"]], "cp ": [[44, "cp-file-destination"]], "getflags ": [[44, "getflags-dir"]], "setflags [ [channel]]": [[44, "setflags-dir-flags-channel"]], "Miscellaneous Commands": [[44, "miscellaneous-commands"]], "bind [proc-name]": [[44, "bind-type-flags-keyword-mask-proc-name"]], "unbind ": [[44, "unbind-type-flags-keyword-mask-proc-name"]], "binds [type/mask]": [[44, "binds-type-mask"]], "logfile [ ]": [[44, "logfile-modes-channel-filename"]], "maskhost [masktype]": [[44, "maskhost-nick-user-host-masktype"]], "timer [count [timerName]]": [[44, "timer-minutes-tcl-command-count-timername"]], "utimer [count [timerName]]": [[44, "utimer-seconds-tcl-command-count-timername"]], "timers": [[44, "timers"]], "utimers": [[44, "utimers"]], "killtimer ": [[44, "killtimer-timername"]], "killutimer ": [[44, "killutimer-timername"]], "unixtime": [[44, "unixtime"]], "duration ": [[44, "duration-seconds"]], "strftime [time]": [[44, "strftime-formatstring-time"]], "ctime ": [[44, "ctime-unixtime"]], "myip": [[44, "myip"]], "rand ": [[44, "rand-limit"]], "control ": [[44, "control-idx-command"]], "sendnote ": [[44, "sendnote-from-to-bot-message"]], "link [via-bot] ": [[44, "link-via-bot-bot"]], "unlink [comment]": [[44, "unlink-bot-comment"]], "encrypt ": [[44, "encrypt-key-string"]], "decrypt ": [[44, "decrypt-key-encrypted-base64-string"]], "encpass ": [[44, "encpass-password"]], "die [reason]": [[44, "die-reason"]], "unames": [[44, "unames"]], "dnslookup [[arg1] [arg2] \u2026 [argN]]": [[44, "dnslookup-ip-address-hostname-proc-arg1-arg2-argn"]], "md5 ": [[44, "md5-string"]], "callevent ": [[44, "callevent-event"]], "traffic": [[44, "traffic"]], "modules": [[44, "modules"]], "loadmodule ": [[44, "loadmodule-module"]], "unloadmodule ": [[44, "unloadmodule-module"]], "loadhelp ": [[44, "loadhelp-helpfile-name"]], "unloadhelp ": [[44, "unloadhelp-helpfile-name"]], "reloadhelp": [[44, "reloadhelp"]], "restart": [[44, "restart"]], "rehash": [[44, "rehash"]], "stripcodes ": [[44, "stripcodes-strip-flags-string"]], "matchaddr
    ": [[44, "matchaddr-hostmask-address"]], "matchcidr
    ": [[44, "matchcidr-block-address-prefix"]], "matchstr ": [[44, "matchstr-pattern-string"]], "rfcequal ": [[44, "rfcequal-string1-string2"]], "status [type]": [[44, "status-type"]], "istls ": [[44, "istls-idx"]], "starttls ": [[44, "starttls-idx"]], "tlsstatus ": [[44, "tlsstatus-idx"]], "Global Variables": [[44, "global-variables"]], "botnick": [[44, "botnick"]], "botname": [[44, "botname"]], "server": [[44, "server"]], "serveraddress": [[44, "serveraddress"]], "version": [[44, "version"]], "numversion*": [[44, "numversion"]], "uptime": [[44, "uptime"]], "server-online": [[44, "server-online"]], "lastbind": [[44, "lastbind"]], "isjuped": [[44, "isjuped"]], "handlen": [[44, "handlen"]], "config": [[44, "config"]], "configureargs": [[44, "configureargs"]], "language": [[44, "language"]], "Binds": [[44, "binds"], [48, "binds"]], "Stackable binds": [[44, "stackable-binds"]], "Removing a bind": [[44, "removing-a-bind"]], "Flag Masks": [[44, "flag-masks"]], "Bind Types": [[44, "bind-types"], [48, "bind-types"]], "Return Values": [[44, "return-values"]], "Control Procedures": [[44, "control-procedures"]], "TCP Connections": [[44, "tcp-connections"]], "Match Characters": [[44, "match-characters"]], "Textfile Substitutions": [[45, "textfile-substitutions"]], "TLS support": [[46, "tls-support"]], "IRC": [[46, "irc"]], "Secure DCC": [[46, "secure-dcc"]], "Keys, certificates and authentication": [[46, "keys-certificates-and-authentication"]], "SSL/TLS Settings": [[46, "ssl-tls-settings"]], "Advanced Tips": [[47, "advanced-tips"]], "Renaming commands": [[47, "renaming-commands"]], "Keeping Logs": [[47, "keeping-logs"]], "Self-logging": [[47, "self-logging"]], "Modifying Default Strings": [[47, "modifying-default-strings"]], "Modularizing Your Config File": [[47, "modularizing-your-config-file"]], "Variables in Your Config": [[47, "variables-in-your-config"]], "Eggdrop Twitch Tcl Commands": [[48, "eggdrop-twitch-tcl-commands"]], "Commands": [[48, "commands"]], "twcmd [arg]": [[48, "twcmd-chan-cmd-arg"]], "userstate ": [[48, "userstate-channel"]], "roomstate ": [[48, "roomstate-channel"]], "twitchmods ": [[48, "twitchmods-channel"]], "twitchvips ": [[48, "twitchvips-channel"]], "ismod [channel]": [[48, "ismod-nick-channel"]], "isvip [channel]": [[48, "isvip-nick-channel"]], "Flags": [[48, "flags"]], "Twitch": [[49, "twitch"]], "Disclaimer": [[49, "disclaimer"]], "Registering with Twitch": [[49, "registering-with-twitch"]], "Twitch web UI functions": [[49, "twitch-web-ui-functions"]], "Twitch IRC limitations": [[49, "twitch-irc-limitations"]], "Users and Flags": [[50, "users-and-flags"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/doc/html/tutorials/firstscript.html b/doc/html/tutorials/firstscript.html index fb00cb559..6426d7e44 100644 --- a/doc/html/tutorials/firstscript.html +++ b/doc/html/tutorials/firstscript.html @@ -1,34 +1,29 @@ - + - + - - - Writing an Eggdrop Script — Eggdrop 1.9.4 documentation - - - - - - - + + + + Writing an Eggdrop Script — Eggdrop 1.9.5 documentation + + + + + - + @@ -39,13 +34,13 @@ +

    Copyright (C) 2003 - 2023 Eggheads Development Team

    + +
    @@ -250,7 +244,7 @@

    Writing an Eggdrop Script previous | - next
    @@ -260,9 +254,9 @@

    Writing an Eggdrop Script

    diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index 902477ae6..124977a47 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -1,30 +1,25 @@ - + - + - - - Common First Steps — Eggdrop 1.9.4 documentation - - - - - - - + + + + Common First Steps — Eggdrop 1.9.5 documentation + + + + + @@ -309,9 +303,9 @@

    Setting up SASL authentication
    diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html new file mode 100644 index 000000000..95b33b42a --- /dev/null +++ b/doc/html/tutorials/module.html @@ -0,0 +1,369 @@ + + + + + + + + + Writing a Basic Eggdrop Module — Eggdrop 1.9.5 documentation + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    + +
    +

    Writing a Basic Eggdrop Module

    +

    An Eggdrop module is a piece of C code that can be loaded (or unloaded) onto the core Eggdrop code. A module differs from a Tcl script in that modules must be compiled and then loaded, whereas scripts can be edited and loaded directly. Importantly, a module can be written to create new Eggdrop-specific Tcl commands and binds that a user can then use in a Tcl script. For example, the server module loaded by Eggdrop is what creates the “jump” Tcl command, which causes tells the Eggdrop to jump to the next server in its server list.

    +

    There are a few required functions a module must perform in order to properly work with Eggdrop

    +
    +

    Module Header

    +

    A module should include license information. This tells other open source users how they are allowed to use the code. Eggdrop uses GPL 2.0 licensing, and our license information looks like this:

    +
    /*
    +* This program is free software; you can redistribute it and/or
    +* modify it under the terms of the GNU General Public License
    +* as published by the Free Software Foundation; either version 2
    +* of the License, or (at your option) any later version.
    +*
    +* This program is distributed in the hope that it will be useful,
    +* but WITHOUT ANY WARRANTY; without even the implied warranty of
    +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +* GNU General Public License for more details.
    +*
    +* You should have received a copy of the GNU General Public License
    +* along with this program; if not, write to the Free Software
    +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    +*/
    +
    +
    +
    +
    +

    Required Code

    +

    For this section, you don’t necessarily need to understand what it is doing, but this code is required for a module to function. If you want to learn more about this, check out How to Write an Eggdrop Module

    +

    You’ll next want to name your module:

    +
    #define MODULE_NAME "woobie"
    +
    +
    +

    Declare your own function tables (again, you don’t need to understand this part; you just need to copy/paste it):

    +
    #undef global
    +static Function *global = NULL, *server_funcs = NULL;
    +EXPORT_SCOPE char *woobie_start();
    +
    +
    +

    Next are two memory-related functions used by the core Eggdrop .status and .module commands:

    +
    static int woobie_expmem()
    +{
    +  int size = 0;
    +
    +  return size;
    +}
    +
    +static void woobie_report(int idx, int details)
    +{
    +  if (details) {
    +    int size = woobie_expmem();
    +
    +    dprintf(idx, "    Using %d byte%s of memory\n", size,
    +            (size != 1) ? "s" : "");
    +  }
    +}
    +
    +
    +

    This function is called when Eggdrop loads the module:

    +
    char *woobie_start(Function *global_funcs)
    +{
    +  global = global_funcs;
    +
    +  /* Register the module. */
    +  module_register(MODULE_NAME, woobie_table, 2, 1);
    +  /*                                            ^--- minor module version
    +   *                                         ^------ major module version
    +   *                           ^-------------------- module function table
    +   *              ^--------------------------------- module name
    +   */
    +
    +  if (!module_depend(MODULE_NAME, "eggdrop", 108, 0)) {
    +    module_undepend(MODULE_NAME);
    +    return "This module requires Eggdrop 1.8.0 or later.";
    +  }
    +
    +
    +

    This next function is used to unload the module:

    +
    static char *woobie_close()
    +{
    +  module_undepend(MODULE_NAME);
    +  return NULL;
    +}
    +
    +
    +

    This creates a function table that is exported to Eggdrop. In other words, these are commands that are made available to the Eggdrop core and other modules. At minimum, the following functions must be exported:

    +
    static Function woobie_table[] = {
    +  (Function) woobie_start,
    +  (Function) woobie_close,
    +  (Function) woobie_expmem,
    +  (Function) woobie_report,
    +};
    +
    +
    +

    At this point, you should have a module that compiles and can be loaded by Eggdrop- but doesn’t really do anything yet. We’ll change that in the next section!

    +
    +
    +

    Adding a Partyline Command

    +

    A partyline command function accepts three arguments- a pointer to the user record of the user that called the command; the idx the user was on when calling the command; and a pointer to the arguments appended to the command. A command should immediately log that it was called to the LOG_CMDS log level, and then run its desired code. This simple example prints “WOOBIE” to the partyline idx of the user that called it:

    +
    static int cmd_woobie(struct userrec *u, int idx, char *par)
    +{
    +  putlog(LOG_CMDS, "*", "#%s# woobie", dcc[idx].nick);
    +  dprintf(idx, "WOOBIE!\n");
    +  return 0;
    +}
    +
    +
    +

    If you add partyline commands, you need to create a table which links the new command name to the function it should call. This can be done like so:

    +
    static cmd_t mywoobie[] = {
    +  /* command  flags  function     tcl-name */
    +  {"woobie",  "",    cmd_woobie,  NULL},
    +  {NULL,      NULL,  NULL,        NULL}  /* Mark end. */
    +};
    +
    +
    +

    The tcl-name field can be a name for a Tcl command that will also call the partyline command, or it can be left as NULL.

    +
    +
    +

    Adding a Tcl Command

    +

    Eggdrop uses the Tcl C API library to interact with the Tcl interpreter. Learning this API is outside the scope of this tutorial, but this example Tcl command will echo the provided argument:

    +
    static int tcl_echome STDVAR {
    +  BADARGS(2, 2, " arg");
    +
    +  if (strcmp(argv[1], "llama") {
    +    Tcl_AppendResult(irp, "You said: ", argv[1], NULL);
    +    return TCL_OK;
    +  } else {
    +    Tcl_AppendResult(irp, "illegal word!");
    +    return TCL_ERROR;
    +  }
    +}
    +
    +A few notes on this example. BADARGS is a macro that checks the input provided to the Tcl command. The first argument BADARGS accepts is the minimum number of parameters the Tcl command must accept (including the command itself). The second argument is the maximum number of parameters that BADARGS will accept. The third argument is the help text that will be displayed if these boundaries are exceeded. For example, BADARGS(2, 4, " name ?date? ?place?") requires at least one argument to be passed, and a maximum of three arguments. Eggdrop code style is to enclose optional arguments between qusetion marks in the help text.
    +
    +
    +

    Similar to adding a partyline command, you also have to create a function table for a new Tcl command:

    +
    static tcl_cmds mytcl[] = {
    +  {"echome",           tcl_echome},
    +  {NULL,                   NULL}   /* Required to mark end of table */
    +};
    +
    +
    +

    And now the newly-created Tcl command ‘echome’ is available for use in a script!

    +
    +
    +

    Adding a Tcl Bind

    +

    A Tcl bind is a command that is activated when a certain condition is met. With Eggdrop, these are usually linked to receiving messages or other IRC events. To create a bind, you must first register the bind type with Eggdrop when the module is loaded (you added the woobie_start() and woobie_close functions earlier, you still need all that earlier code in here as well):

    +
    static p_tcl_bind_list H_woob;
    +
    +...
    +
    +char *woobie_start(Function *global_funcs)
    +{
    +  ...
    +  H_woob = add_bind_table("woobie", HT_STACKABLE, woobie_2char);
    +}
    +
    +
    +

    And then remove the binds when the module is unloaded:

    +
    static char *woobie_close()
    +{
    +  ...
    +  del_bind_table(H_woob);
    +}
    +
    +
    +

    Here, “woobie” is the name of the bind (similar to the PUB, MSG, JOIN types of binds you already see in tcl-commands.doc). HT_STACKABLE means you can have multiple binds of this type. “woobie_2char” defines how many arguments the bind will take, and we’ll talk about that next.

    +
    +

    Defining bind arguments

    +

    The following code example defines a bind that will take two arguments:

    +
    static int woobie_2char STDVAR
    +{
    +  Function F = (Function) cd;
    +
    +  BADARGS(3, 3, " nick chan");
    +
    +  CHECKVALIDITY(woobie_2char);
    +  F(argv[1], argv[2]);
    +  return TCL_OK;
    +}
    +
    +
    +

    And this example defines a bind that will take three arguments:

    +
    static int woobie_3char STDVAR
    +{
    +  Function F = (Function) cd;
    +
    +  BADARGS(4, 4, " foo bar moo");
    +
    +  CHECKVALIDITY(woobie_3char);
    +  F(argv[1], argv[2], argv[3]);
    +  return TCL_OK;
    +}
    +
    +
    +

    Like before, BADARGS still checks that the number of arguments passed is correct, and outputs help text if it is not. The rest is boilerplate code to pass the arguments when the bind is called.

    +
    +
    +

    Calling the Bind

    +

    To call the bind, Eggdrop coding style it to name that function “check_tcl_bindname”. So here, whenever we reach a point in code that should trigger the bind, we’ll call check_tcl_woobie() and pass the arguments we defined- in this case, two arguments that woobie_2char was created to handle. Here is some sample code:

    +
    check_tcl_woobie(chan, nick);
    +
    +
    +static int check_tcl_woobie(char *chan, char *nick, char *userhost) {
    +  int x;
    +  char mask[1024];
    +  struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 };
    +
    +  snprintf(mask, sizeof mask, "%s %s!%s",
    +                                chan, nick, userhost);
    +  Tcl_SetVar(interp, "_woob1", nick ? (char *) nick : "", 0);
    +  Tcl_SetVar(interp, "_woob2", chan, 0);
    +  x = check_tcl_bind(H_woob, mask, &fr, " $_woob1 $_woob2",
    +        MATCH_MASK | BIND_STACKABLE);
    +  return (x == BIND_EXEC_LOG);
    +}
    +
    +
    +

    Now that we have encountered a condition that triggers the bind, we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with check_tcl_bind(), called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options.

    +
    +
    +
    +

    Exporting the Bind

    +

    Do we need to do this?

    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index 43e995a17..128c388a9 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -1,30 +1,25 @@ - + - + - - - Setting Up Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Setting Up Eggdrop — Eggdrop 1.9.5 documentation + + + + +
    diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index fe5a6bd35..85c65a339 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -1,30 +1,25 @@ - + - + - - - Enabling TLS Security on Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Enabling TLS Security on Eggdrop — Eggdrop 1.9.5 documentation + + + + +

-

Eggdrop Modules

+

Eggdrop Modules

-

About Eggdrop

+

About Eggdrop

-

Tutorials

+

Tutorials

-

Eggdrop Modules

+

Eggdrop Modules

-

About Eggdrop

+

About Eggdrop

-

Tutorials

+

Tutorials

-

Eggdrop Modules

+

Eggdrop Modules

-

About Eggdrop

+

About Eggdrop

  • About Eggdrop
  • Boring legal stuff
  • @@ -102,47 +99,43 @@

    Search

    -
    -

    Patching Eggdrop

    +
    +

    Patching Eggdrop

    Eggdrop is an open source project that depends on contributions of its users- like you! If you come across a feature you’d like to see implemented, find a bug, or think the documentation could be made more clear, you can open an issue on GitHub to discuss your ideas, and then submit a Pull Request to implement it!

    -
    -

    Submitting a patch via GitHub

    +
    +

    Submitting a patch via GitHub

    To create a patch via github:

      -
    1. Fork the eggdrop git repo by logging in to your GitHub account and +

    2. Fork the eggdrop git repo by logging in to your GitHub account and clicking the fork button at the top of the screen. Follow the -directions it provides to configure your local repo.

      -
    3. -
    4. Enter the local directory and create a new branch for your patch:

      +directions it provides to configure your local repo.

    5. +
    6. Enter the local directory and create a new branch for your patch:

      git checkout -b <DescriptiveBranchName>
       
    7. -
    8. Make your changes

      -
    9. -
    10. Once you confirm your patch works, push the changes back to your +

    11. Make your changes

    12. +
    13. Once you confirm your patch works, push the changes back to your GitHub repo - this is usually done by something similar to:

      git push origin <DescriptiveBranchName>
       
    14. -
    15. Create a pull request by clicking on the “Pull Request” button on +

    16. Create a pull request by clicking on the “Pull Request” button on your GitHub page. Select the appropriate branches (usually eggheads/eggdrop/develop -and yourUserName/eggdrop/YourBranchName)

      -
    17. -
    18. Fill in the Pull Request template and submit

      -
    19. -
    20. Pour yourself a cold one and bask in the warm feeling of contributing -to the open source community! Karma++!

      -
    21. +and yourUserName/eggdrop/YourBranchName)

      +
    22. Fill in the Pull Request template and submit

    23. +
    24. Pour yourself a cold one and bask in the warm feeling of contributing +to the open source community! Karma++!

    -

    Copyright (C) 1999 - 2022 Eggheads Development Team

    -
    -
    +

    Copyright (C) 1999 - 2023 Eggheads Development Team

    + + +
    @@ -167,9 +160,9 @@

    Submitting a patch via GitHub
    diff --git a/doc/html/using/pbkdf2.html b/doc/html/using/pbkdf2.html index 03f4cfc9a..17c073be0 100644 --- a/doc/html/using/pbkdf2.html +++ b/doc/html/using/pbkdf2.html @@ -188,7 +188,7 @@

    Tcl Interface + - + - - - Encryption/Hashing — Eggdrop 1.9.4 documentation - - - - - - - + + + + Encryption/Hashing — Eggdrop 1.9.5 documentation + + + + + @@ -218,9 +218,9 @@

    Tcl Interface
    diff --git a/doc/html/using/tcl-commands.html b/doc/html/using/tcl-commands.html index e91d30b1e..68fbadb4d 100644 --- a/doc/html/using/tcl-commands.html +++ b/doc/html/using/tcl-commands.html @@ -1,30 +1,25 @@ - + - + - - - Eggdrop Tcl Commands — Eggdrop 1.9.4 documentation - - - - - - - + + + + Eggdrop Tcl Commands — Eggdrop 1.9.5 documentation + + + + +