diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml deleted file mode 100644 index 485733521..000000000 --- a/.github/workflows/ccpp.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: C/C++ CI - -on: - pull_request: - branches: - - develop - -jobs: - build: - name: compile test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: install dependencies - run: sudo apt-get install tcl tcl-dev openssl libssl-dev - - name: configure - run: ./configure - - name: make config - run: make config - - name: make - run: make - - name: make install - run: make install diff --git a/.github/workflows/configure_flags.yml b/.github/workflows/configure_flags.yml deleted file mode 100644 index 60a8c07bb..000000000 --- a/.github/workflows/configure_flags.yml +++ /dev/null @@ -1,41 +0,0 @@ -on: - workflow_dispatch: - inputs: - name: - description: 'Test configure flags' - -jobs: - configure-nosslflag: - name: Configure, --disable-tls - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get install tcl tcl-dev - - run: ./configure --disable-tls - - run: make config - - run: make - - run: make install - - - configure-noipv6: - name: Configure, --disable-ipv6 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get install tcl tcl-dev - - run: ./configure --disable-ipv6 - - run: make config - - run: make - - run: make install - - - configure-notdns: - name: Configure, --disable-tdns - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get install tcl tcl-dev - - run: ./configure --disable-tdns - - run: make config - - run: make - - run: make install diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml new file mode 100644 index 000000000..d76a5e6c7 --- /dev/null +++ b/.github/workflows/dependencies.yml @@ -0,0 +1,96 @@ +name: Tcl/SSL Versions + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + tcl-versions: + name: Tcl Versions + strategy: + matrix: + tcl_version: [ '8.5.19', '8.6.14', '8.7a5', '9.0b2' ] + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install openssl libssl-dev + - name: Build Tcl + run: | + wget http://prdownloads.sourceforge.net/tcl/tcl${{ matrix.tcl_version }}-src.tar.gz && \ + tar xzf tcl${{ matrix.tcl_version }}-src.tar.gz && \ + cd tcl${{ matrix.tcl_version }}/unix && \ + ./configure --prefix=$HOME/tcl && \ + make -j4 && make install + - name: Build + run: ./configure --with-tcl=$HOME/tcl/lib && LD_LIBRARY_PATH=$HOME/tcl/lib make config eggdrop + ssl-version-10: + name: OpenSSL 1.0 + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - name: Build OpenSSL + run: | + wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz && tar xzf openssl-1.0.2u.tar.gz && \ + cd openssl-1.0.2u && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib && LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop + ssl-version-11: + name: OpenSSL 1.1 + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + repository: openssl/openssl + ref: 'OpenSSL_1_1_1w' + path: 'openssl' + - name: Build OpenSSL + run: | + cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib && LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop + ssl-versions-3x: + name: OpenSSL 3.x + strategy: + matrix: + ssl_version: [ '3.0', '3.1', '3.2', '3.3' ] + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: oprypin/find-latest-tag@v1 + with: + repository: openssl/openssl + releases-only: true + prefix: 'openssl-' + regex: "${{ matrix.ssl_version }}.[0-9]+" + sort-tags: true + id: openssl + - uses: actions/checkout@v4 + with: + repository: openssl/openssl + ref: ${{ steps.openssl.outputs.tag }} + path: 'openssl' + - name: Build OpenSSL + run: | + cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib64 && LD_LIBRARY_PATH=$HOME/ssl/lib64 make config eggdrop diff --git a/.github/workflows/make.yml b/.github/workflows/make.yml new file mode 100644 index 000000000..e1dc3be6b --- /dev/null +++ b/.github/workflows/make.yml @@ -0,0 +1,39 @@ +name: Eggdrop Compile + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + default-build: + name: Compile Test + strategy: + matrix: + cc: [ 'gcc', 'clang' ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install clang tcl tcl-dev openssl libssl-dev + - name: Build + env: + CC: ${{ matrix.cc }} + run: ./configure && make config && make -j4 && make install + feature-test: + name: Features + continue-on-error: true + needs: default-build + strategy: + matrix: + conf_tls: [ '', '--disable-tls' ] + conf_ipv6: [ '', '--disable-ipv6' ] + conf_tdns: [ '', '--disable-tdns' ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install tcl tcl-dev openssl libssl-dev + - name: Build + run: ./configure ${{ matrix.conf_tls }} ${{ matrix.conf_ipv6 }} ${{ matrix.conf_tdns }} && make config && make -j4 diff --git a/.github/workflows/misc.yml b/.github/workflows/misc.yml new file mode 100644 index 000000000..b6a894b30 --- /dev/null +++ b/.github/workflows/misc.yml @@ -0,0 +1,45 @@ +name: Check autotools/makedepend + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + autotools-check: + name: Check if misc/runautotools needs to be run + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install build-essential autoconf + - name: Stage configure with revision removed + run: | + for i in `find . -name configure`; do sed -i 's/From configure.ac .*//' $i; git add $i; done + - name: Run autotools + run: misc/runautotools + - name: Remove configure revision again + run: | + for i in `find . -name configure`; do sed -i 's/From configure.ac .*//' $i; done + - name: Check diff + run: | + git diff | tee .gitdiff + if [ -s .gitdiff ]; then + exit 1 + fi + makedepend-check: + name: Check if misc/makedepend needs to be run + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install build-essential autoconf tcl-dev tcl openssl libssl-dev + - name: Run makedepend + run: misc/makedepend + - name: Check diff + run: | + git diff | tee .gitdiff + if [ -s .gitdiff ]; then + exit 1 + fi diff --git a/.gitignore b/.gitignore index 52806ce03..37ee0f2d9 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ config.cache eggdrop EGGMOD.stamp mod.xlibs +__pycache__ diff --git a/AUTHORS b/AUTHORS index dc4275d08..02a5fa5f4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -104,4 +104,4 @@ See also: THANKS, doc/Versions, doc/Changes ------------------------------------------------------------------------------ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/CONTENTS b/CONTENTS index 6b5dbc606..5b622bba6 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 - 2023 Eggheads Development Team + Copyright (C) 2003 - 2024 Eggheads Development Team diff --git a/FEATURES b/FEATURES index 4de630f7e..ac5095619 100644 --- a/FEATURES +++ b/FEATURES @@ -44,4 +44,4 @@ Eggdrop Features Copyright (C) 1997 Robey Pointer -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/Makefile.in b/Makefile.in index 733e3e613..93de77211 100644 --- a/Makefile.in +++ b/Makefile.in @@ -490,6 +490,7 @@ install-doc: install-start cd doc/ && $(MAKE_INSTALL) install install-scripts: install-start - +@cd scripts/ && $(MAKE_INSTALL) install + +@cd scripts/ && $(MAKE_INSTALL) install; \ + cd ../src/mod && $(MAKE_INSTALL) install-scripts #safety hash diff --git a/NEWS b/NEWS index e6e210449..827acab07 100644 --- a/NEWS +++ b/NEWS @@ -317,4 +317,4 @@ Eggdrop v1.9.0: ________________________________________________________________________ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/README b/README index 9696eee5d..2d74900ca 100644 --- a/README +++ b/README @@ -61,7 +61,7 @@ FTP The latest Eggdrop stable source code is always located at https://geteggdrop.com. You can also download the current stable, previous stable, and development snapshot via FTP at - ftp.eggheads.org/pub/Eggdrop/source + ftp://ftp.eggheads.org/pub/eggdrop/source Git Development Snapshot diff --git a/aclocal.m4 b/aclocal.m4 index 2d798e249..748fb2969 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 - 2023 Eggheads Development Team +dnl Copyright (C) 1999 - 2024 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 @@ -20,6 +20,9 @@ dnl dnl Load tcl macros builtin(include,m4/tcl.m4) +dnl Load python macros +builtin(include,m4/python.m4) + dnl Load gnu autoconf archive macros builtin(include,m4/ax_create_stdint_h.m4) builtin(include,m4/ax_lib_socket_nsl.m4) @@ -192,12 +195,12 @@ dnl Check for a working C99 C compiler. dnl AC_DEFUN([EGG_CHECK_CC_C99], [ - if test "$ac_cv_prog_cc_c99" = no; then + if test "$ac_cv_prog_cc_c11" = no && test "$ac_cv_prog_cc_c99" = no; then cat << 'EOF' >&2 configure: error: - This C compiler does not appear to have a working C99 mode. - A working C99 C compiler is required to compile Eggdrop. + This C compiler does not appear to have a working C99/C11 mode. + A working C99/C11 C compiler is required to compile Eggdrop. EOF exit 1 @@ -313,32 +316,24 @@ AC_DEFUN([EGG_FUNC_B64_NTOP], # Check for b64_ntop. If we have b64_ntop, we assume b64_pton as well. AC_MSG_CHECKING(for b64_ntop) - AC_TRY_LINK( - [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include - ], - [b64_ntop(NULL, 0, NULL, 0);], - found_b64_ntop=yes, - found_b64_ntop=no - ) + ]], [[b64_ntop(NULL, 0, NULL, 0);]])],[found_b64_ntop=yes],[found_b64_ntop=no + ]) if test "x$found_b64_ntop" = xno; then AC_MSG_RESULT(no) AC_MSG_CHECKING(for b64_ntop with -lresolv) OLD_LIBS="$LIBS" LIBS="$LIBS -lresolv" - AC_TRY_LINK( - [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include - ], - [b64_ntop(NULL, 0, NULL, 0);], - found_b64_ntop=yes, - found_b64_ntop=no - ) + ]], [[b64_ntop(NULL, 0, NULL, 0);]])],[found_b64_ntop=yes],[found_b64_ntop=no + ]) if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" AC_MSG_RESULT(no) @@ -346,16 +341,12 @@ AC_DEFUN([EGG_FUNC_B64_NTOP], AC_MSG_CHECKING(for b64_ntop with -lnetwork) OLD_LIBS="$LIBS" LIBS="-lnetwork" - AC_TRY_LINK( - [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include - ], - [b64_ntop(NULL, 0, NULL, 0);], - found_b64_ntop=yes, - found_b64_ntop=no - ) + ]], [[b64_ntop(NULL, 0, NULL, 0);]])],[found_b64_ntop=yes],[found_b64_ntop=no + ]) if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" AC_MSG_RESULT(no) @@ -1429,22 +1420,20 @@ if test "$enable_ipv6" = "yes"; then if test "$egg_cv_var_have_in6_addr" = "yes"; then # Check for in6addr_any AC_CACHE_CHECK([for the in6addr_any constant], [egg_cv_var_have_in6addr_any], [ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include - ], [struct in6_addr i6 = in6addr_any;], - [egg_cv_var_have_in6addr_any="yes"], [egg_cv_var_have_in6addr_any="no"]) + ]], [[struct in6_addr i6 = in6addr_any;]])],[egg_cv_var_have_in6addr_any="yes"],[egg_cv_var_have_in6addr_any="no"]) ]) if test "$egg_cv_var_have_in6addr_any" = "yes"; then AC_DEFINE(HAVE_IN6ADDR_ANY, 1, [Define to 1 if you have the in6addr_any constant.]) fi # Check for in6addr_loopback AC_CACHE_CHECK([for the in6addr_loopback constant], [egg_cv_var_have_in6addr_loopback], [ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include - ], [struct in6_addr i6 = in6addr_loopback;], - [egg_cv_var_have_in6addr_loopback="yes"], [egg_cv_var_have_in6addr_loopback="no"]) + ]], [[struct in6_addr i6 = in6addr_loopback;]])],[egg_cv_var_have_in6addr_loopback="yes"],[egg_cv_var_have_in6addr_loopback="no"]) ]) if test "$egg_cv_var_have_in6addr_loopback" = "yes"; then AC_DEFINE(HAVE_IN6ADDR_LOOPBACK, 1, [Define to 1 if you have the in6addr_loopback constant.]) @@ -1530,13 +1519,10 @@ AC_DEFUN([EGG_TLS_ENABLE], [ AC_MSG_CHECKING([whether to enable TLS support]) AC_ARG_ENABLE(tls, - [ --enable-tls enable TLS support (autodetect)], - [enable_tls="$enableval"]) - AC_ARG_ENABLE(tls, - [ --disable-tls disable TLS support ], [enable_tls="$enableval"], - [enable_tls="autodetect"]) + [ --disable-tls disable TLS support ], [tls_enabled="$enableval"], + [tls_enabled="yes"]) - AC_MSG_RESULT([$enable_tls]) + AC_MSG_RESULT([$tls_enabled]) ]) @@ -1546,14 +1532,14 @@ AC_DEFUN(EGG_TLS_WITHSSL, [ save_LIBS="$LIBS" AC_ARG_WITH(sslinc, [ --with-sslinc=PATH Path to OpenSSL headers], [ - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -d "$withval"; then save_CC="$CC" save_CPP="$CPP" CC="$CC -I$withval" CPP="$CPP -I$withval" AC_CHECK_HEADERS([openssl/ssl.h openssl/x509v3.h], [sslinc="-I$withval"], [ - AC_MSG_WARN([Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files.]) + AC_MSG_ERROR([Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files.]) sslinc="" break ], [[ @@ -1567,25 +1553,25 @@ AC_DEFUN(EGG_TLS_WITHSSL, CC="$save_CC" CPP="$save_CPP" else - AC_MSG_WARN([Invalid path to OpenSSL headers. $withval is not a directory.]) + AC_MSG_ERROR([Invalid path to OpenSSL headers. $withval is not a directory.]) fi fi ]) AC_ARG_WITH(ssllib, [ --with-ssllib=PATH Path to OpenSSL libraries], [ - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -d "$withval"; then AC_CHECK_LIB(crypto, X509_digest, , [havessllib="no"], [-L$withval -lssl]) AC_CHECK_LIB(ssl, SSL_accept, , [havessllib="no"], [-L$withval -lcrypto]) if test "$havessllib" = "no"; then - AC_MSG_WARN([Invalid path to OpenSSL libs. $withval doesn't contain the required files.]) + AC_MSG_ERROR([Invalid path to OpenSSL libs. $withval doesn't contain the required files.]) else AC_SUBST(SSL_LIBS, [-L$withval]) LDFLAGS="${LDFLAGS} -L$withval" fi else - AC_MSG_WARN([You have specified an invalid path to OpenSSL libs. $withval is not a directory.]) + AC_MSG_ERROR([You have specified an invalid path to OpenSSL libs. $withval is not a directory.]) fi fi ]) @@ -1596,8 +1582,7 @@ dnl EGG_TLS_DETECT dnl AC_DEFUN([EGG_TLS_DETECT], [ - tls_enabled="no" - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -z "$SSL_INCLUDES"; then AC_CHECK_HEADERS([openssl/ssl.h openssl/x509v3.h], , [havesslinc="no"], [ #ifdef CYGWIN_HACKS @@ -1632,20 +1617,20 @@ AC_DEFUN([EGG_TLS_DETECT], break ]]) ) - if test "$enable_tls" = "yes"; then - if test "$havesslinc" = "no"; then - AC_MSG_WARN([Cannot find OpenSSL headers.]) - AC_MSG_WARN([Please specify the path to the openssl include dir using --with-sslinc=path]) - fi - if test "$havessllib" = "no"; then - AC_MSG_WARN([Cannot find OpenSSL libraries.]) - AC_MSG_WARN([Please specify the path to libssl and libcrypto using --with-ssllib=path]) - fi + if test "$havesslinc" = "no"; then + AC_MSG_WARN([Cannot find OpenSSL headers.]) + AC_MSG_WARN([Please specify the path to the openssl include dir using --with-sslinc=path]) + fi + if test "$havessllib" = "no"; then + AC_MSG_WARN([Cannot find OpenSSL libraries.]) + AC_MSG_WARN([Please specify the path to libssl and libcrypto using --with-ssllib=path]) fi AC_MSG_CHECKING([for OpenSSL]) if test "$havesslinc" = "no" || test "$havessllib" = "no"; then - AC_MSG_RESULT([no (make sure you have version 0.9.8 or higher installed)]) - LIBS="$save_LIBS" + AC_MSG_RESULT([no]) + AC_MSG_RESULT([* We tried, but couldn't find TLS libraries. If installed, please specify their paths using the configure flags above]) + AC_MSG_RESULT([* While not recommended, you can continue without TLS protection by specifying the --disable-tls configure flag]) + AC_MSG_ERROR([TLS Libraries not found]) else AC_MSG_RESULT([yes]) if test "$EGG_CYGWIN" = "yes"; then @@ -1660,7 +1645,6 @@ AC_DEFUN([EGG_TLS_DETECT], ) dnl EVP_PKEY_get1_EC_KEY: OpenSSL without EC (SunOS 5.11 Solaris 11.3 I love you Oracle) AC_CHECK_FUNCS([EVP_PKEY_get1_EC_KEY]) - tls_enabled="yes" EGG_MD5_COMPAT fi fi diff --git a/config.h.in b/config.h.in index 2e94ede45..22e26d5c8 100644 --- a/config.h.in +++ b/config.h.in @@ -2,7 +2,7 @@ /* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2023 Eggheads Development Team + * Copyright (C) 1999 - 2024 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 @@ -156,9 +156,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H -/* Define to 1 if you have the `lrand48' function. */ -#undef HAVE_LRAND48 - /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_DYLD_H @@ -174,6 +171,9 @@ /* Define to 1 if you have the `MD5_Update' function. */ #undef HAVE_MD5_UPDATE +/* Define to 1 if you have the `memset_explicit' function. */ +#undef HAVE_MEMSET_EXPLICIT + /* Define to 1 if you have the `memset_s' function. */ #undef HAVE_MEMSET_S @@ -213,12 +213,6 @@ /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT -/* Define to 1 if you have the `rand' function. */ -#undef HAVE_RAND - -/* Define to 1 if you have the `random' function. */ -#undef HAVE_RANDOM - /* Define to 1 if you have the header file. */ #undef HAVE_RLD_H @@ -293,6 +287,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H + /* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE @@ -395,10 +392,6 @@ /* Define if running on OSF/1 platform. */ #undef STOP_UAC -/* Define to 1 if you can safely include both and . This - macro is obsolete. */ -#undef TIME_WITH_SYS_TIME - /* Define this to enable SSL support. */ #undef TLS diff --git a/configure b/configure index 4fa3be30d..a59374034 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac a3274e67. +# From configure.ac 9068a673. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # @@ -13,7 +13,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (C) 1999 - 2023 Eggheads Development Team +# Copyright (C) 1999 - 2024 Eggheads Development Team ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -617,7 +617,7 @@ PACKAGE_TARNAME='eggdrop' PACKAGE_VERSION='1.9.5' PACKAGE_STRING='Eggdrop 1.9.5' PACKAGE_BUGREPORT='bugs@eggheads.org' -PACKAGE_URL='' +PACKAGE_URL='https://www.eggheads.org' ac_unique_file="src/eggdrop.h" ac_default_prefix=\${HOME}/eggdrop @@ -659,6 +659,7 @@ EGG_CROSS_COMPILING MOD_UPDIR DEST EGGVERSION +egg_with_python_config SSL_LIBS SSL_INCLUDES DEBCFLGS @@ -801,6 +802,7 @@ enable_tls with_sslinc with_ssllib enable_tdns +with_python_config ' ac_precious_vars='build_alias host_alias @@ -1454,11 +1456,11 @@ Optional Features and Packages: --with-handlen=VALUE set the maximum length a handle on the bot can be --enable-ipv6 enable IPv6 support (autodetect) --disable-ipv6 disable IPv6 support - --enable-tls enable TLS support (autodetect) --disable-tls disable TLS support --with-sslinc=PATH Path to OpenSSL headers --with-ssllib=PATH Path to OpenSSL libraries --disable-tdns disable threaded DNS core + --with-python-config=PATH Path to python-config Some influential environment variables: CC C compiler command @@ -1474,6 +1476,7 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . +Eggdrop home page: . _ACEOF ac_status=$? fi @@ -1544,7 +1547,7 @@ Copyright (C) 2021 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 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team _ACEOF exit fi @@ -2786,7 +2789,6 @@ as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" -as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H" as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H" as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" @@ -3714,13 +3716,12 @@ EOF fi - - if test "$ac_cv_prog_cc_c99" = no; then + if test "$ac_cv_prog_cc_c11" = no && test "$ac_cv_prog_cc_c99" = no; then cat << 'EOF' >&2 configure: error: - This C compiler does not appear to have a working C99 mode. - A working C99 C compiler is required to compile Eggdrop. + This C compiler does not appear to have a working C99/C11 mode. + A working C99/C11 C compiler is required to compile Eggdrop. EOF exit 1 @@ -3899,7 +3900,6 @@ then : fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 printf %s "checking for library containing strerror... " >&6; } if test ${ac_cv_search_strerror+y} @@ -6854,15 +6854,6 @@ fi fi - -# Obsolete code to be removed. -if test $ac_cv_header_sys_time_h = yes; then - -printf "%s\n" "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi -# End of obsolete code. - ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" if test "x$ac_cv_header_arpa_inet_h" = xyes then : @@ -6946,6 +6937,12 @@ if test "x$ac_cv_header_sys_time_h" = xyes then : printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default" +if test "x$ac_cv_header_time_h" = xyes +then : + printf "%s\n" "#define HAVE_TIME_H 1" >>confdefs.h + fi ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes @@ -8197,6 +8194,12 @@ if test "x$ac_cv_func_explicit_bzero" = xyes then : printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h +fi +ac_fn_c_check_func "$LINENO" "memset_explicit" "ac_cv_func_memset_explicit" +if test "x$ac_cv_func_memset_explicit" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET_EXPLICIT 1" >>confdefs.h + fi ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset" if test "x$ac_cv_func_explicit_memset" = xyes @@ -8227,24 +8230,6 @@ if test "x$ac_cv_func_memset_s" = xyes then : printf "%s\n" "#define HAVE_MEMSET_S 1" >>confdefs.h -fi -ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random" -if test "x$ac_cv_func_random" = xyes -then : - printf "%s\n" "#define HAVE_RANDOM 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "rand" "ac_cv_func_rand" -if test "x$ac_cv_func_rand" = xyes -then : - printf "%s\n" "#define HAVE_RAND 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "lrand48" "ac_cv_func_lrand48" -if test "x$ac_cv_func_lrand48" = xyes -then : - printf "%s\n" "#define HAVE_LRAND48 1" >>confdefs.h - fi ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" if test "x$ac_cv_func_snprintf" = xyes @@ -8331,6 +8316,13 @@ rm -rf conftest* # Check for b64_ntop. If we have b64_ntop, we assume b64_pton as well. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for b64_ntop" >&5 printf %s "checking for b64_ntop... " >&6; } + if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -8346,15 +8338,17 @@ b64_ntop(NULL, 0, NULL, 0); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + if test "x$found_b64_ntop" = xno; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } @@ -8363,7 +8357,14 @@ printf "%s\n" "no" >&6; } printf %s "checking for b64_ntop with -lresolv... " >&6; } OLD_LIBS="$LIBS" LIBS="$LIBS -lresolv" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8378,15 +8379,17 @@ b64_ntop(NULL, 0, NULL, 0); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -8396,7 +8399,14 @@ printf "%s\n" "no" >&6; } printf %s "checking for b64_ntop with -lnetwork... " >&6; } OLD_LIBS="$LIBS" LIBS="-lnetwork" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test "$cross_compiling" = yes +then : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8411,15 +8421,17 @@ b64_ntop(NULL, 0, NULL, 0); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -8868,7 +8880,7 @@ printf "%s\n" "ok (TEA ${TEA_VERSION})" >&6; } fi # If the user did not set CFLAGS, set it now to keep macros - # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2". + # like AC_PROG_CC and AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi @@ -10137,20 +10149,14 @@ printf %s "checking whether to enable TLS support... " >&6; } # Check whether --enable-tls was given. if test ${enable_tls+y} then : - enableval=$enable_tls; enable_tls="$enableval" -fi - - # Check whether --enable-tls was given. -if test ${enable_tls+y} -then : - enableval=$enable_tls; enable_tls="$enableval" + enableval=$enable_tls; tls_enabled="$enableval" else $as_nop - enable_tls="autodetect" + tls_enabled="yes" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_tls" >&5 -printf "%s\n" "$enable_tls" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tls_enabled" >&5 +printf "%s\n" "$tls_enabled" >&6; } save_LIBS="$LIBS" @@ -10159,7 +10165,7 @@ printf "%s\n" "$enable_tls" >&6; } if test ${with_sslinc+y} then : withval=$with_sslinc; - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -d "$withval"; then save_CC="$CC" save_CPP="$CPP" @@ -10184,8 +10190,7 @@ _ACEOF sslinc="-I$withval" else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." >&5 -printf "%s\n" "$as_me: WARNING: Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." >&2;} + as_fn_error $? "Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." "$LINENO" 5 sslinc="" break @@ -10197,8 +10202,7 @@ done CC="$save_CC" CPP="$save_CPP" else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL headers. $withval is not a directory." >&5 -printf "%s\n" "$as_me: WARNING: Invalid path to OpenSSL headers. $withval is not a directory." >&2;} + as_fn_error $? "Invalid path to OpenSSL headers. $withval is not a directory." "$LINENO" 5 fi fi @@ -10210,7 +10214,7 @@ fi if test ${with_ssllib+y} then : withval=$with_ssllib; - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -d "$withval"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X509_digest in -lcrypto" >&5 printf %s "checking for X509_digest in -lcrypto... " >&6; } @@ -10303,16 +10307,14 @@ else $as_nop fi if test "$havessllib" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL libs. $withval doesn't contain the required files." >&5 -printf "%s\n" "$as_me: WARNING: Invalid path to OpenSSL libs. $withval doesn't contain the required files." >&2;} + as_fn_error $? "Invalid path to OpenSSL libs. $withval doesn't contain the required files." "$LINENO" 5 else SSL_LIBS=-L$withval LDFLAGS="${LDFLAGS} -L$withval" fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You have specified an invalid path to OpenSSL libs. $withval is not a directory." >&5 -printf "%s\n" "$as_me: WARNING: You have specified an invalid path to OpenSSL libs. $withval is not a directory." >&2;} + as_fn_error $? "You have specified an invalid path to OpenSSL libs. $withval is not a directory." "$LINENO" 5 fi fi @@ -10320,8 +10322,7 @@ fi - tls_enabled="no" - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -z "$SSL_INCLUDES"; then for ac_header in openssl/ssl.h openssl/x509v3.h do : @@ -10508,26 +10509,28 @@ fi fi - if test "$enable_tls" = "yes"; then - if test "$havesslinc" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL headers." >&5 + if test "$havesslinc" = "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL headers." >&5 printf "%s\n" "$as_me: WARNING: Cannot find OpenSSL headers." >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&5 printf "%s\n" "$as_me: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&2;} - fi - if test "$havessllib" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL libraries." >&5 + fi + if test "$havessllib" = "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL libraries." >&5 printf "%s\n" "$as_me: WARNING: Cannot find OpenSSL libraries." >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&5 printf "%s\n" "$as_me: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&2;} - fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5 printf %s "checking for OpenSSL... " >&6; } if test "$havesslinc" = "no" || test "$havessllib" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (make sure you have version 0.9.8 or higher installed)" >&5 -printf "%s\n" "no (make sure you have version 0.9.8 or higher installed)" >&6; } - LIBS="$save_LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: * We tried, but couldn't find TLS libraries. If installed, please specify their paths using the configure flags above" >&5 +printf "%s\n" "* We tried, but couldn't find TLS libraries. If installed, please specify their paths using the configure flags above" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: * While not recommended, you can continue without TLS protection by specifying the --disable-tls configure flag" >&5 +printf "%s\n" "* While not recommended, you can continue without TLS protection by specifying the --disable-tls configure flag" >&6; } + as_fn_error $? "TLS Libraries not found" "$LINENO" 5 else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } @@ -10569,7 +10572,6 @@ then : fi - tls_enabled="yes" save_CC="$CC" save_CPP="$CPP" @@ -10635,6 +10637,26 @@ printf "%s\n" "#define EGG_TDNS 1" >>confdefs.h fi +# Check for Python + + +# Check whether --with-python-config was given. +if test ${with_python_config+y} +then : + withval=$with_python_config; + if test -d "$withval" || test -x "$withval"; then + egg_with_python_config="$withval" + else + egg_with_python_config="no" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&5 +printf "%s\n" "$as_me: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&2;} + fi + +fi + + + + # Substitute Makefile variables. @@ -11246,7 +11268,8 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to . +Eggdrop home page: ." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` diff --git a/configure.ac b/configure.ac index 6243537e6..9a5e1b7c2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,20 +1,20 @@ dnl configure.ac: this file is processed by autoconf to produce ./configure. -AC_PREREQ(2.61) -AC_INIT([Eggdrop],[1.9.5],[bugs@eggheads.org]) -AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) +AC_PREREQ([2.71]) +AC_INIT([Eggdrop],[1.9.5],[bugs@eggheads.org],[eggdrop],[https://www.eggheads.org]) +AC_COPYRIGHT([Copyright (C) 1999 - 2024 Eggheads Development Team]) AC_LANG([C]) AC_REVISION([m4_esyscmd([misc/getcommit])]) AC_CONFIG_SRCDIR(src/eggdrop.h) AC_CONFIG_AUX_DIR(misc) -AC_CONFIG_HEADER(config.h) +AC_CONFIG_HEADERS([config.h]) AC_PREFIX_DEFAULT([\${HOME}/eggdrop]) AC_PRESERVE_HELP_ORDER dnl config.h stuff AH_TOP([/* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2023 Eggheads Development Team + * Copyright (C) 1999 - 2024 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 @@ -43,13 +43,12 @@ EGG_SAVE_PARAMETERS # Check for a working C compiler AC_PROG_CC([gcc cc clang]) EGG_CHECK_CC -AC_PROG_CC_C99 EGG_CHECK_CC_C99 # These 3 need to be done before any AC_COMPILE_IFELSE()'s. -AC_AIX -AC_ISC_POSIX -AC_MINIX +AC_USE_SYSTEM_EXTENSIONS +AC_SEARCH_LIBS([strerror],[cposix]) +AC_USE_SYSTEM_EXTENSIONS # Check C compiler characteristics. EGG_CHECK_ICC @@ -92,8 +91,8 @@ EGG_CHECK_OS # Checks for header files. EGG_HEADER_STDC AC_HEADER_DIRENT -AC_HEADER_TIME -AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h locale.h netdb.h netinet/in.h stdio.h stdarg.h stddef.h sys/file.h sys/param.h sys/select.h sys/socket.h sys/time.h unistd.h wchar.h]) + +AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h locale.h netdb.h netinet/in.h stdio.h stdarg.h stddef.h sys/file.h sys/param.h sys/select.h sys/socket.h sys/time.h time.h unistd.h wchar.h]) # Checks for typedefs, structures, and compiler characteristics. @@ -113,7 +112,7 @@ AX_TYPE_SOCKLEN_T AX_CREATE_STDINT_H([eggint.h]) # Checks for functions and their arguments. -AC_CHECK_FUNCS([dprintf explicit_bzero memset_explicit explicit_memset getrandom inet_aton isascii memset_s random rand lrand48 snprintf strlcpy vsnprintf]) +AC_CHECK_FUNCS([dprintf explicit_bzero memset_explicit explicit_memset getrandom inet_aton isascii memset_s snprintf strlcpy vsnprintf]) AC_FUNC_SELECT_ARGTYPES EGG_FUNC_B64_NTOP AC_FUNC_MMAP @@ -164,6 +163,9 @@ EGG_TLS_DETECT # Threaded DNS core EGG_TDNS_ENABLE +# Check for Python +EGG_PYTHON_WITHCONFIG + # Substitute Makefile variables. EGG_SUBST_EGGVERSION diff --git a/doc/ABOUT b/doc/ABOUT index dd7301edd..615223797 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 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/AUTOSCRIPTS b/doc/AUTOSCRIPTS new file mode 100644 index 000000000..fb427f1d8 --- /dev/null +++ b/doc/AUTOSCRIPTS @@ -0,0 +1,249 @@ +Eggdrop Autoscripts + +Since it's inception, users have needed to load a Tcl script into +Eggdrop by downloading a Tcl file, editing the file to customize +settings, and then sourceing that file in the config file. In v1.10, the +Autoscripts system was added to make this process a little more +user-friendly. The autoscripts system helps by: + +- Centralizing commonly-used scripts in a single location +- Allowing scripts to be downloaded via the partyline +- Allowing script settings to be configured via the partyline +- Allowing user-written scripts to be managed by the autoscripts + system +- Providing a documented API to write autoscripts-compatible scripts + +AUTOSCRIPTS USAGE + +To view available autoscript commands, type .autoscript on the +partyline. This will open up a special Eggdrop console that doesn't +require you to prefix commands with a '.' . The following sub-commands +are available for use with script: + +remote + +This command will list scripts hosted on the Eggdrop website that are +available to be downloaded and installed on your Eggdrop. + +fetch - - + + + + + @@ -45,6 +44,7 @@

Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -99,7 +99,7 @@

    Search

    About Eggdrop Last revised: July 27, 2010

    -

    About Eggdrop¶

    +

    About Eggdrop¶

    Eggdrop was created around December 1993 to help stop the incessant wars on #gayteen. It spawned from another bot that was in the process of being @@ -144,7 +144,7 @@

    About Eggdrop

    diff --git a/doc/html/about/legal.html b/doc/html/about/legal.html index 118cf44cf..5e510d5b1 100644 --- a/doc/html/about/legal.html +++ b/doc/html/about/legal.html @@ -1,17 +1,16 @@ - - + - + Boring legal stuff — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -42,6 +41,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -94,7 +94,7 @@

    Search

    diff --git a/doc/html/index.html b/doc/html/index.html index 8237db1da..fedeb01b5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,17 +1,16 @@ - - + - + Eggdrop, an open source IRC bot — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -42,6 +41,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -94,10 +94,10 @@

    Search

    -

    Eggdrop, an open source IRC bot¶

    +

    Eggdrop, an open source IRC bot¶

    Eggdrop is a free, open source software program built to assist in managing an IRC channel. It is the world’s oldest actively-maintained IRC bot and was designed to be easily used and expanded on via it’s ability to run Tcl scripts. Eggdrop can join IRC channels and perorm automated tasks such as protecting the channel from abuse, assisting users obtain their op/voice status, provide information and greetings, host games, etc.

    -

    Some things you can do with Eggdrop¶

    +

    Some things you can do with Eggdrop¶

    Eggdrop has a large number of features, such as:

    -

    How to install Eggdrop¶

    +

    How to install Eggdrop¶

    -

    Installation Pre-requisites¶

    +

    Installation Pre-requisites¶

    Eggdrop requires Tcl (and its development header files) to be present on the system it is compiled on. It is also strongly encouraged to install openssl (and its development header files) to enable TLS-protected network communication.

    -

    Installation¶

    +

    Installation¶

    A guide to quickly installing Eggdrop can be found here.

    -

    Where to find more help¶

    +

    Where to find more help¶

    The Eggheads development team can be found lurking on #eggdrop on the Libera network (irc.libera.chat).

    Installing Eggdrop

    @@ -175,6 +175,13 @@

    Where to find more help
  • The Party Line
  • +
  • Eggdrop Autoscripts +
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -403,4 +411,4 @@

    Where to find more help - + \ No newline at end of file diff --git a/doc/html/install/install.html b/doc/html/install/install.html index ced86fd5e..2455a4844 100644 --- a/doc/html/install/install.html +++ b/doc/html/install/install.html @@ -1,17 +1,16 @@ - - + - + Installing Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -50,6 +49,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -102,14 +102,14 @@

    Search

    -

    Installing Eggdrop¶

    +

    Installing Eggdrop¶

    This is the quick install guide; if you have had little or no experience with UNIX or Eggdrop, READ THE README FILE NOW! This file is best for experienced users.

    For more information on compiling Eggdrop, see the Compile Guide in doc/COMPILE-GUIDE (and of course, the README FILE).

    -

    Quick Startup¶

    +

    Quick Startup¶

    Eggdrop uses the GNU autoconfigure scripts to make things easier.

    1. @@ -220,7 +220,7 @@

      Quick Startup -

      Cygwin Requirements (Windows)¶

      +

      Cygwin Requirements (Windows)¶

      Eggdrop requires the following packages to be added from the Cygwin installation tool prior to compiling:

      Interpreters: tcl, tcl-devel
      @@ -231,7 +231,7 @@ 

      Cygwin Requirements (Windows) -

      Modules¶

      +

      Modules¶

      Modules are small pieces of code that can either be compiled into the binary or can be compiled separately into a file. This allows for a much smaller binary.

      @@ -249,7 +249,7 @@

      Modules

      diff --git a/doc/html/install/readme.html b/doc/html/install/readme.html index b573d5f99..c1d48b064 100644 --- a/doc/html/install/readme.html +++ b/doc/html/install/readme.html @@ -1,27 +1,22 @@ - - + - + README — Eggdrop 1.9.5 documentation - - - - - - + + + + +
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/compress.html b/doc/html/modules/compress.html index f73333233..f720e6883 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/console.html b/doc/html/modules/console.html index fea12a5fd..e4128e02e 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/ctcp.html b/doc/html/modules/ctcp.html index 1f1926884..d41fe637d 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/dns.html b/doc/html/modules/dns.html index 6450379bc..a46cf62b9 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/filesys.html b/doc/html/modules/filesys.html index 9574e8bcc..715609cf0 100644 --- a/doc/html/modules/filesys.html +++ b/doc/html/modules/filesys.html @@ -332,7 +332,7 @@

    .filesys moduleSearch

    for potential ways to implement this setting. -

    Copyright (C) 2019 - 2023 Eggheads Development Team

    +

    Copyright (C) 2019 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/included.html b/doc/html/modules/included.html index 4af3d9154..2c4be443c 100644 --- a/doc/html/modules/included.html +++ b/doc/html/modules/included.html @@ -1,17 +1,16 @@ - - + - + Modules included with Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -118,12 +119,20 @@

    Search

    -

    Modules included with Eggdrop¶

    +

    Modules included with Eggdrop¶

    diff --git a/doc/html/modules/index.html b/doc/html/modules/index.html index 2fa12be11..12b535244 100644 --- a/doc/html/modules/index.html +++ b/doc/html/modules/index.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Module Information — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -104,20 +104,20 @@

    Search

    Eggdrop Module Information Last revised: Jul 25, 2016

    -

    Eggdrop Module Information¶

    +

    Eggdrop Module Information¶

    -

    What are modules?¶

    +

    What are modules?¶

    Modules are independent portions of code that are loaded separately from the main core code of Eggdrop. This allows users to only implement the features they desire without adding the extra overhead or “bloat†of those they don’t, or even write their own module to add an enhancement not currently implemented by the Eggdrop development team. For example, the transfer module provides the ability to transfer files to and from the Eggdrop, and the ident module provides the ability to run an ident server to answer ident requests.

    -

    How to install a module¶

    +

    How to install a module¶

    Please note that these are only basic instructions for compiling and installing a module. Please read any and all directions included with the module you wish to install.

    1. Download and un-tar the Eggdrop source code.

    2. Place the new module in its own directory (in the format of (modulename).mod) in src/mod.

    3. -
    4. Run ./configure (from eggdrop1.9.x/).

    5. +
    6. Run ./configure (from eggdrop-1.9.5/).

    7. Type ‘make config’ or ‘make iconfig’.

    8. Type ‘make’.

    9. Copy the compiled module file (modulename.so) into your bot’s @@ -130,12 +130,12 @@

      How to install a moduleTo view your currently loaded modules, type ‘.module’.

    -

    Can I compile Eggdrop without dynamic modules? (Static compile)¶

    +

    Can I compile Eggdrop without dynamic modules? (Static compile)¶

    Yes, you can. If the configure script detects that your system CAN’T run modules, it will setup ‘make’ to link the modules in statically for you. You can choose this option yourself by using ‘make static’. You can also try to compile dynamic modules on a static-only system by using ‘make eggdrop’.

    -

    Do I still need to ‘loadmodule’ modules?¶

    +

    Do I still need to ‘loadmodule’ modules?¶

    YES, when you compile statically, all the modules are linked into the main executable. HOWEVER, they are not enabled until you use loadmodule to enable them, hence you get nearly the same functionality with static modules as with dynamic modules.

    -

    Copyright (C) 1999 - 2023 Eggheads Development Team

    +

    Copyright (C) 1999 - 2024 Eggheads Development Team

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

    Do I still need to ‘loadmodule’ modules?

    diff --git a/doc/html/modules/internals.html b/doc/html/modules/internals.html index 3cbe25beb..c94ad6489 100644 --- a/doc/html/modules/internals.html +++ b/doc/html/modules/internals.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Bind Internals — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -107,13 +107,13 @@

    Search

    -

    Eggdrop Bind Internals¶

    +

    Eggdrop Bind Internals¶

    This document is intended for C developers who want to understand how Eggdrop’s Tcl binds or C binds work.

    For documentation purposes the “dcc†bind type is used as an example.

    It already exists and is suitable to illustrate the details of bind handling in Eggdrop.

    Note: All code snippets are altered for brevity and simplicity, see original source code for the full and current versions.

    -

    Bind Table Creation¶

    +

    Bind Table Creation¶

    The bind table is added by calling, either at module initialization or startup:

    /* Global symbol, available to other C files with
      * extern p_tcl_bind_list H_dcc;
    @@ -133,7 +133,7 @@ 

    Bind Table CreationH_dcc can be exported from core and imported into modules as any other variable or function. That should be explained in a separate document.

    -

    Stackable Binds: HT_STACKABLE¶

    +

    Stackable Binds: HT_STACKABLE¶

    HT_STACKABLE means that multiple binds can exist for the same mask.

    bind dcc - test proc1; # not stackable
     bind dcc - test proc2; # overwrites the first one, only proc2 will be called
    @@ -142,7 +142,7 @@ 

    Stackable Binds: HT_STACKABLETriggering any Bind section for details.

    -

    Tcl Binding¶

    +

    Tcl Binding¶

    After the bind table is created with add_bind_table, Tcl procs can already be registered to this bind by calling:

    bind dcc -|- test myproc
     proc myproc {args} {
    @@ -160,7 +160,7 @@ 

    Tcl Binding -

    Triggering the Bind¶

    +

    Triggering the Bind¶

    To trigger the bind and call it with the desired arguments, a function is created.

    int check_tcl_dcc(const char *cmd, int idx, const char *args) {
       struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 };
    @@ -189,7 +189,7 @@ 

    Triggering the Bindcheck_tcl_dcc can be found in the DCC parsing in src/dcc.c.

    -

    Triggering any Bind¶

    +

    Triggering any Bind¶

    check_tcl_bind is used by all binds and does the following:

    /* Generic function to call one/all matching binds
      * @param[in] tcl_bind_list_t *tl      Bind table (e.g. H_dcc)
    @@ -231,7 +231,7 @@ 

    Triggering any BindHT_STACKABLE AND check_tcl_bind must be called with BIND_STACKABLE.

    -

    C Binding¶

    +

    C Binding¶

    To create a C function that is called by the bind, Eggdrop provides the add_builtins function.

    /* Add a list of C function callbacks to a bind
      * @param[in] tcl_bind_list_t *  the bind type (e.g. H_dcc)
    @@ -266,7 +266,7 @@ 

    C Binding -

    C Handler¶

    +

    C Handler¶

    The example handler for DCC looks as follows:

    /* Typical Tcl_Command arguments, just like e.g. tcl_putdcc is a Tcl/C command for [putdcc] */
     static int builtin_dcc (ClientData cd, Tcl_Interp *irp, int argc, char *argv[]) {
    @@ -319,7 +319,7 @@ 

    C Handler -

    Summary¶

    +

    Summary¶

    In summary, this is how the dcc bind is called:

    diff --git a/doc/html/modules/irc.html b/doc/html/modules/irc.html index 868377b61..7960f9dd2 100644 --- a/doc/html/modules/irc.html +++ b/doc/html/modules/irc.html @@ -255,7 +255,7 @@

    Search

    set this to 0.
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index a52851467..0bfefacd8 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -1,17 +1,16 @@ - - + - + Assoc Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Assoc Module¶

    +

    Assoc Module¶

    This module provides assoc support, i.e. naming channels on the botnet.

    This module requires: none

    Put this line into your Eggdrop configuration file to load the assoc @@ -127,7 +128,7 @@

    Search

    loadmodule assoc
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -156,9 +157,9 @@

    Search

    diff --git a/doc/html/modules/mod/blowfish.html b/doc/html/modules/mod/blowfish.html index cad1a8540..40372bb17 100644 --- a/doc/html/modules/mod/blowfish.html +++ b/doc/html/modules/mod/blowfish.html @@ -1,17 +1,16 @@ - - + - + Blowfish Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 28, 2003

    -

    Blowfish Module¶

    +

    Blowfish Module¶

    Eggdrop can encrypt your userfile, so users can have secure passwords. Please note that when you change your encryption method later (i.e. using @@ -131,7 +132,7 @@

    Search

    loadmodule blowfish
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -161,9 +162,9 @@

    Search

    diff --git a/doc/html/modules/mod/channels.html b/doc/html/modules/mod/channels.html index 56e2e5f0a..fdf0cfdcb 100644 --- a/doc/html/modules/mod/channels.html +++ b/doc/html/modules/mod/channels.html @@ -1,27 +1,22 @@ - - + - + Channels Module — Eggdrop 1.9.5 documentation - - - - - - + + + + + -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -169,9 +170,9 @@

    Search

    diff --git a/doc/html/modules/mod/console.html b/doc/html/modules/mod/console.html index e7c98a632..6de9fce47 100644 --- a/doc/html/modules/mod/console.html +++ b/doc/html/modules/mod/console.html @@ -1,17 +1,16 @@ - - + - + Console Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Console Module¶

    +

    Console Module¶

    This module provides storage of console settings when you exit the bot or type .store on the partyline.

    This module requires: none

    @@ -142,7 +143,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -171,9 +172,9 @@

    Search

    diff --git a/doc/html/modules/mod/ctcp.html b/doc/html/modules/mod/ctcp.html index 577039b4d..915b4acbe 100644 --- a/doc/html/modules/mod/ctcp.html +++ b/doc/html/modules/mod/ctcp.html @@ -1,17 +1,16 @@ - - + - + CTCP Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: February 12, 2002

    -

    CTCP Module¶

    +

    CTCP Module¶

    This module provides the normal ctcp replies that you would expect. Without it loaded, CTCP CHAT will not work.

    This module requires: server

    @@ -154,7 +155,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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -183,9 +184,9 @@

    Search

    diff --git a/doc/html/modules/mod/dns.html b/doc/html/modules/mod/dns.html index 158605606..cfffaf7a3 100644 --- a/doc/html/modules/mod/dns.html +++ b/doc/html/modules/mod/dns.html @@ -1,17 +1,16 @@ - - + - + DNS Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: September 26, 2010

    -

    DNS Module¶

    +

    DNS Module¶

    This module provides asynchronous dns support. This will avoid long periods where the bot just hangs there, waiting for a hostname to resolve, which will often let it timeout on all other connections.

    @@ -155,7 +156,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -184,9 +185,9 @@

    Search

    diff --git a/doc/html/modules/mod/filesys.html b/doc/html/modules/mod/filesys.html index b1e78eb08..aeabce403 100644 --- a/doc/html/modules/mod/filesys.html +++ b/doc/html/modules/mod/filesys.html @@ -1,17 +1,16 @@ - - + - + Filesys Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,12 +120,12 @@

    Search

    Last revised: Dec 30, 2017

    -

    Filesys Module¶

    +

    Filesys Module¶

    This module provides an area within the bot where users can store and manage files. With this module, the bot is usable as a file server.

    This module requires: transfer

    -

    Config file setup¶

    +

    Config file setup¶

    Put this line into your Eggdrop configuration file to load the filesys module:

    loadmodule filesys
    @@ -159,9 +160,9 @@ 

    Config file setup -

    Partyline usage¶

    +

    Partyline usage¶

    -

    .files¶

    +

    .files¶

    Moves you into the file transfer sub-system, if it has been enabled on this bot. From there you can browse through the files online and use dcc file @@ -169,27 +170,27 @@

    .files

    -

    .cancel <file> [file] …¶

    +

    .cancel <file> [file] …¶

    Tells the bot to stop sending a file that is pending (either queued, waiting, or in the process of being transferred).

    -

    .cd <directory>¶

    +

    .cd <directory>¶

    Changes your current directory if possible. this works exactly like the unix command.

    -

    .cp <source> <dst>¶

    +

    .cp <source> <dst>¶

    Copies a file or group of files from one place to another.

    -

    .desc <file> <description>¶

    +

    .desc <file> <description>¶

    Changes the description for a file. if you are a master or file janitor, you can change the description for any file. @@ -201,20 +202,20 @@

    .desc <file> <description> -

    .filestats <user> [clear]¶

    +

    .filestats <user> [clear]¶

    Reports on the users upload & download statistics. Optional argument ‘clear’ clears a users upload and download statistics.

    -

    .stats¶

    +

    .stats¶

    Clears a users upload & download statistics.

    -

    .get <filename> [nickname]¶

    +

    .get <filename> [nickname]¶

    Sends you the file(s) requested, over IRC. you should get a DCC SEND notice on IRC, and have your client accept it. if @@ -231,14 +232,14 @@

    .get <filename> [nickname] -

    .hide <file> [files] …¶

    +

    .hide <file> [files] …¶

    Marks a file as hidden, so that normal users can’t see it. Only a master or file janitor using %b’lsa’%b can see hidden files.

    -

    .ln <bot:filepath> <localfile>¶

    +

    .ln <bot:filepath> <localfile>¶

    Creates a link to a file on another bot. The filepath has to be complete, like ‘/gifs/uglyman.gif’. If the bot is not @@ -249,7 +250,7 @@

    .ln <bot:filepath> <localfile> -

    .ls [filemask]¶

    +

    .ls [filemask]¶

    Displays the files in the current directory. Subdirectories are shown with “<DIR>†next to them, and other files will display @@ -260,7 +261,7 @@

    .ls [filemask] -

    .mkdir <dir> [flags [channel]]¶

    +

    .mkdir <dir> [flags [channel]]¶

    Creates a subdirectory from this one, with the given name. If flags are specified, then those flags are required to enter or @@ -270,14 +271,14 @@

    .mkdir <dir> [flags [channel]] -

    .mv <source> <dest>¶

    +

    .mv <source> <dest>¶

    Moves a file or group of files from one place to another (it can also be used to rename files).

    -

    .pending¶

    +

    .pending¶

    Gives you a listing of every file you’ve requested which is still waiting, queued, or in the process of transferring. @@ -287,31 +288,31 @@

    .pending -

    .pwd¶

    +

    .pwd¶

    Tells you what your current directory is.

    -

    .quit¶

    +

    .quit¶

    Exits the file system.

    -

    rm <file> [files] …¶

    +

    rm <file> [files] …¶

    Erase a file for good.

    -

    .rmdir <dir>¶

    +

    .rmdir <dir>¶

    Removes an existing directory, if there are no files in it.

    -

    .share <file> [files] …¶

    +

    .share <file> [files] …¶

    Marks a file as shared. This means that other bots can get the file remotely for users on their file systems. By default, @@ -319,7 +320,7 @@

    .share <file> [files] … -

    .optimize¶

    +

    .optimize¶

    Cleans up the current directory’s database. If you have a large directory with many files you may want to use this command if @@ -328,19 +329,19 @@

    .optimize -

    .unhide¶

    +

    .unhide¶

    Makes a file be not hidden any more.

    -

    .unshare <file> [file] …¶

    +

    .unshare <file> [file] …¶

    Removes the shared tag from a file.

    -

    .filesys module¶

    +

    .filesys module¶

    This module provides an area within the bot where users can store and manage files. With this module, the bot is usable as a file server.

    @@ -350,7 +351,7 @@

    .filesys module

    diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 854645660..249d7ecb5 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -1,17 +1,16 @@ - - + - + Ident Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: June 27, 2019

    -

    Ident Module¶

    +

    Ident Module¶

    This module adds Eggdrop support for the externally-provided oident service, or alternatively the ability for Eggdrop to act as its own ident daemon.

    @@ -193,7 +194,7 @@

    Search

    -

    Copyright (C) 2019 - 2023 Eggheads Development Team

    +

    Copyright (C) 2019 - 2024 Eggheads Development Team

    @@ -222,9 +223,9 @@

    Search

    diff --git a/doc/html/modules/mod/irc.html b/doc/html/modules/mod/irc.html index 7900995d7..3fa36c056 100644 --- a/doc/html/modules/mod/irc.html +++ b/doc/html/modules/mod/irc.html @@ -1,17 +1,16 @@ - - + - + IRC Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: August 21, 2004

    -

    IRC Module¶

    +

    IRC Module¶

    This module controls the bots interaction on IRC. It allows the bot to join channels, etc. You have to load this if you want your bot to come on irc.

    @@ -263,7 +264,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -292,9 +293,9 @@

    Search

    diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index 55227968f..bbdea5dbe 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -1,17 +1,16 @@ - - + - + Notes Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Notes Module¶

    +

    Notes Module¶

    This module provides support for storing of notes for users from each other. Note sending between currently online users is supported in the core, this is only for storing the notes for later retrieval.

    @@ -150,7 +151,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -179,9 +180,9 @@

    Search

    diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index 7ca50bc9d..7f6f48ac4 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -1,19 +1,18 @@ - - + - + PBKDF2 Module — Eggdrop 1.9.5 documentation - - - - - + + + + + - + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: October 28, 2020

    -

    PBKDF2 Module¶

    +

    PBKDF2 Module¶

    Eggdrop encrypts its userfile, so users can have secure passwords. Eggdrop will not start without an encryption module.

    @@ -148,7 +149,7 @@

    Search

    This module requires: none

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -168,7 +169,7 @@

    Search

    @@ -178,9 +179,9 @@

    Search

    diff --git a/doc/html/modules/mod/python.html b/doc/html/modules/mod/python.html new file mode 100644 index 000000000..66dbab2ea --- /dev/null +++ b/doc/html/modules/mod/python.html @@ -0,0 +1,274 @@ + + + + + + + + Python Module — Eggdrop 1.9.5 documentation + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    + +

    Last revised: November 03, 2023

    +
    +

    Python Module¶

    +

    This module adds a Python interpreter to Eggdrop, allowing you to run Python scripts.

    +
    +

    Loading Python¶

    +

    Put this line into your Eggdrop configuration file to load the python module:

    +
    loadmodule python
    +
    +
    +

    To load a python script from your config file, place the .py file in the scripts/ folder and add the following line to your config:

    +
    pysource scripts/myscript.py
    +
    +
    +
    +
    +

    Partyline Commands¶

    +
    +

    python <expression>¶

    +

    You can run a python command from the partyline with the .python command, such as:

    +
    .python 1 + 1
    +Python: 2
    +.python from eggdrop.tcl import putmsg; putmsg('#chan', 'Hello world!')
    +Python: None
    +
    +
    +
    +
    +

    .binds python¶

    +

    The python module extends the core .binds partyline command by adding a python mask. This command will list all binds for python scripts.

    +
    +
    +
    +

    Tcl Commands¶

    +
    +

    pysource <path/to/file>¶

    +

    The pysource command is analgous to the Tcl source command, except that it loads a Python script into Eggdrop instead of a Tcl script.

    +
    +
    +
    +

    Eggdrop Python Commands¶

    +

    The Python module is built to use the existing core Tcl commands integrated into Eggdrop via the eggdrop.tcl module. To call an existing Tcl command from Python, you can either load the entire catalog by running import eggdrop.tcl, or be more specific by from eggdrop.tcl import putserv, putlog, chanlist, etc.

    +

    Arguments to the Tcl functions are automatically converted as follows:

    +
      +
    • None is converted to an empty Tcl object (the empty string, "")

    • +
    • List and Tuple is converted to a Tcl list

    • +
    • Dict is converted to a Tcl dictionary

    • +
    • Everything else is converted to a string using the str() method

    • +
    +

    Return values from Tcl functions must be manually converted:

    +
      +
    • "" the empty string is automatically converted to None

    • +
    • everything else is returned as string

    • +
    • Tcl list as string can be converted to a Python List using parse_tcl_list

    • +
    • Tcl dictionary as string can be converted to a Python Dict using parse_tcl_list

    • +
    +

    Additionally, a few extra python commands have been created for use without these conversions:

    +
    +

    bind <arguments>¶

    +

    The python version of the bind command is used to create a bind that triggers a python function. The python bind takes the same arguments as the Tcl binds, but here each argument is passed individually. For example, a bind that would look like bind pub * !foo myproc in Tcl is written as bind("pub", "*", "!foo", myproc). For more information on Eggsrop bind argument syntax please see Bind Types. The eggdrop.tcl.bind command should not be used as it will attempt to call a Tcl proc.

    +
    +
    +

    parse_tcl_list <string>¶

    +

    When a python script calls a Tcl command that returns a list via the eggdrop.tcl module, the return value will be a Tcl-formatted list- also simply known as a string. The parse_tcl_list command will convert the Tcl-formatted list into a Python list, which can then freely be used within the Python script.

    +
    +
    +

    parse_tcl_dict <string>¶

    +

    When a python script calls a Tcl command that returns a dict via the eggdrop.tcl module, the return value will be a Tcl-formatted dict- also simply known as a string. The parse_tcl_dict command will c +onvert the Tcl-formatted dict into a Python list, which can then freely be used within the Python script.

    +
    +
    +
    +

    Config variables¶

    +

    There are also some variables you can set in your config file:

    +
    +
    +
    set allow-resync 0

    When two bots get disconnected, this setting allows them to create a +resync buffer which saves all changes done to the userfile during +the disconnect. When they reconnect, they will not have to transfer +the complete user file, but, instead, just send the resync buffer.

    +
    +
    +
    +
    +
    +

    Writing an Eggdrop Python script¶

    +

    This is how to write a python script for Eggdrop.

    +

    You can view examples of Python scripts in the exampleScripts folder included with this module.

    +
    +
    bestfriend.py¶

    This example script demonstrates how to use the parse_tcl_list() python command to convert a list returned by a Tcl command into a list that is usable by Python.

    +
    +
    greet.py¶

    This is a very basic script that demonstrates how a Python script with binds can be run by Eggdrop.

    +
    +
    imdb.py¶

    This script shows how to use an existing third-party module to extend a Python script, in this case retrieving information from imdb.com.

    +
    +
    listtls.py¶

    This script demonstrates how to use parse-tcl_list() and parse_tcl_dict() to convert a list of dicts provided by Tcl into something that is usuable by Python.

    +
    +
    urltitle.py¶

    This script shows how to use an existing third-party module to extend a Python script, in this case using an http parser to collect title information from a provided web page.

    +
    +
    +
    +

    Header section¶

    +

    An Eggdrop python script requires you to import X Y and Z, in this format.

    +
    +
    +

    Code Section¶

    +

    Normal python code works here. To run a command from the Eggdrop Tcl library, use this format.

    +

    Use this format all over.

    +
    +
    +
    +

    Writing a module for use with Eggdrop¶

    +

    This is how you import a module for use with an egg python script.

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/doc/html/modules/mod/seen.html b/doc/html/modules/mod/seen.html index da92f2fa2..762b215de 100644 --- a/doc/html/modules/mod/seen.html +++ b/doc/html/modules/mod/seen.html @@ -1,27 +1,26 @@ - - + - + Seen Module — Eggdrop 1.9.5 documentation - - - - - + + + + + - +
    @@ -367,9 +368,9 @@

    Search

    diff --git a/doc/html/modules/mod/share.html b/doc/html/modules/mod/share.html index 1e672c235..33f66f6ad 100644 --- a/doc/html/modules/mod/share.html +++ b/doc/html/modules/mod/share.html @@ -1,17 +1,16 @@ - - + - + Share Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: November 27, 2003

    -

    Share Module¶

    +

    Share Module¶

    This module provides userfile sharing support between two directly linked bots.

    This module requires: transfer, channels

    @@ -159,7 +160,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -188,9 +189,9 @@

    Search

    diff --git a/doc/html/modules/mod/transfer.html b/doc/html/modules/mod/transfer.html index 69f1f688a..eef7fe318 100644 --- a/doc/html/modules/mod/transfer.html +++ b/doc/html/modules/mod/transfer.html @@ -1,17 +1,16 @@ - - + - + Transfer Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -117,9 +118,9 @@

    Search

    -

    Last revised: January 1, 2002

    +

    Last revised: November 29, 2023

    -

    Transfer Module¶

    +

    Transfer Module¶

    The transfer module provides DCC SEND/GET support and userfile transfer support for userfile sharing.

    This module requires: none

    @@ -138,12 +139,6 @@

    Search

    but admits that may be too small. 1024 is standard these days. Set this to 0 to use turbo-dcc (recommended).

    -
    set copy-to-tmp 1

    Enable this setting if you want to copy files to a temporary location -before sending or receiving them. This might be useful for file -stability, but if your directories are NFS mounted, it’s a pain. -Setting this to 1 is not advised for big files or if you’re low on -disk space.

    -
    set xfer-timeout 30

    Set here the time (in seconds) to wait before an inactive transfer times out.

    @@ -154,7 +149,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -183,9 +178,9 @@

    Search

    diff --git a/doc/html/modules/mod/twitch.html b/doc/html/modules/mod/twitch.html index c28643a25..ee2929846 100644 --- a/doc/html/modules/mod/twitch.html +++ b/doc/html/modules/mod/twitch.html @@ -1,17 +1,16 @@ - - + - + Twitch Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: April 20, 2020

    -

    Twitch Module¶

    +

    Twitch Module¶

    This module attempts to provide connectivity with the Twitch gaming platform. While Twitch provides an IRC gateway to connect with it’s streaming service, it does not claim to (and certainly does not) follow the IRC RFC in any meaningful way. The intent of this module is not to provide the full spectrum of management functions typically associated with Eggdrop; instead it focuses around the following key functions:

    • Logging of general and Twitch-specific events (raids, blocks, bit donations)

    • @@ -133,7 +134,7 @@

      Search

    and set net-type “Twitch†in your config file.

    -

    Limitations¶

    +

    Limitations¶

    There are a few things you should know about how Twitch provides service through the IRC gateway that affects how well Eggdrop can function: * Twitch does not broadcast JOINs or PARTs for channels over 1,000 users. This renders tracking users on a channel unreliable. * Twitch does not broadcast MODE changes for moderator status. This (mostly) renders tracking the status of users infeasible. (See Tcl below section for workaround) @@ -142,7 +143,7 @@

    Limitations -

    Tcl API¶

    +

    Tcl API¶

    That last section was a little bit of a downer, but don’t worry, we added a TON of functionality to the Tcl API. This module adds binds for the following Twitch events:

    • CLEARCHAT

    • @@ -155,13 +156,13 @@

      Tcl API -

      Partyline commands¶

      +

      Partyline commands¶

      This module adds the following commands to the partyline: * userstate - Lists current userstate on a channel * roomsstate - Lists current roomstate for a channel * twcmd - Issues a traditional Twitch web interface command to the Twitch server (/ban, /block, /host, etc)

      -

      Copyright (C) 2020 - 2023 Eggheads Development Team

      +

      Copyright (C) 2020 - 2024 Eggheads Development Team

    @@ -192,9 +193,9 @@

    Partyline commands
    diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index 971d5676d..c84f8e9ef 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -1,17 +1,16 @@ - - + - + Uptime Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Uptime Module¶

    +

    Uptime Module¶

    This module reports uptime statistics to http://uptime.eggheads.org. Go look and see what your uptime is! It takes about 9 hours to show up, so if your bot isn’t listed, try again later.

    @@ -135,7 +136,7 @@

    Search

    loadmodule uptime
     
    -

    Copyright (C) 2001 - 2023 Eggheads Development Team

    +

    Copyright (C) 2001 - 2024 Eggheads Development Team

    @@ -164,9 +165,9 @@

    Search

    diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index 53d098b1a..4c175976a 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -1,17 +1,16 @@ - - + - + Woobie Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: December 31, 2001

    -

    Woobie Module¶

    +

    Woobie Module¶

    This is for demonstrative purposes only. If you are looking for starting point in writing modules, woobie is the right thing.

    This module requires: none

    @@ -128,7 +129,7 @@

    Search

    loadmodule woobie
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -157,9 +158,9 @@

    Search

    diff --git a/doc/html/modules/notes.html b/doc/html/modules/notes.html index d09c2e6ae..b30055d74 100644 --- a/doc/html/modules/notes.html +++ b/doc/html/modules/notes.html @@ -147,7 +147,7 @@

    Search

    any notes. -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/pbkdf2.html b/doc/html/modules/pbkdf2.html index 7cbf42856..a5222aa20 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

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

    Search

    loadmodule seen
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

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

    Search

    Eggdrop is 32. -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/share.html b/doc/html/modules/share.html index 593929171..f4d98cce5 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/transfer.html b/doc/html/modules/transfer.html index 325d7a271..6fbdcc0cd 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

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

    Partyline commandsSearch

    loadmodule uptime
     
    -

    Copyright (C) 2001 - 2023 Eggheads Development Team

    +

    Copyright (C) 2001 - 2024 Eggheads Development Team

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

    Search

    loadmodule woobie
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index 7789198fa..66b823642 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -1,17 +1,16 @@ - - + - + How to Write an Eggdrop Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -101,7 +101,7 @@

    Search

    -

    How to Write an Eggdrop Module¶

    +

    How to Write an Eggdrop Module¶

    Note: This is for a simple module of 1 source file.

      @@ -143,7 +143,7 @@

      Search

    -

    Module requirements¶

    +

    Module requirements¶

    In most modules, all functions/variables (except global and MODULE_start) should be static. This will drastically reduce the size of modules on decent systems.

    @@ -152,7 +152,7 @@

    Module requirements -

    MODULE_start¶

    +

    MODULE_start¶

    char *MODULE_start(Function *func_table)
     
     This function is called when the module is first loaded. There are
    @@ -189,7 +189,7 @@ 

    MODULE_start -

    MODULE_table¶

    +

    MODULE_table¶

    static Function *MODULE_table = {
            MODULE_start,
            MODULE_close,
    @@ -206,7 +206,7 @@ 

    MODULE_table -

    MODULE_close ()¶

    +

    MODULE_close ()¶

    static char *MODULE_close ()
     
     This is called when the module is unloaded. Apart from tidying any
    @@ -226,7 +226,7 @@ 

    MODULE_close () -

    MODULE_expmem¶

    +

    MODULE_expmem¶

    static int MODULE_expmem ()
     
     This should tally all memory you allocate/deallocate within the module
    @@ -236,7 +236,7 @@ 

    MODULE_expmem -

    MODULE_report¶

    +

    MODULE_report¶

    static void MODULE_report (int idx)
     
     This should provide a relatively short report of the module's status
    @@ -247,7 +247,7 @@ 

    MODULE_report -

    Additional functions¶

    +

    Additional functions¶

    void *nmalloc(int j);
     
     This allocates j bytes of memory.
    @@ -387,7 +387,7 @@ 

    Additional functions

    -

    What to do with a module?¶

    +

    What to do with a module?¶

    If you have written a module and feel that you wish to share it with the rest of the Eggdrop community, find us in #eggdrop on Libera. Make sure you @@ -423,9 +423,9 @@

    What to do with a module?

    diff --git a/doc/html/objects.inv b/doc/html/objects.inv index e31c384a3..f7c8aaf3d 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 8eb843f1b..423788fbf 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -1,17 +1,16 @@ - - + Search — Eggdrop 1.9.5 documentation - - + + - - - + + + @@ -44,6 +43,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -147,9 +147,9 @@

    Search

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

    Exporting the Bind¶

    +

    Exporting the Bind¶

    Do we need to do this?

    @@ -356,9 +428,9 @@

    Exporting the Bind
    diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index 128c388a9..a2107bad6 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -1,17 +1,16 @@ - - + - + Setting Up Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -105,10 +105,10 @@

    Search

    -

    Setting Up Eggdrop¶

    +

    Setting Up Eggdrop¶

    This guide was based off perhaps the most helpful Eggdrop website ever written, egghelp.org by slennox. As happens with life, slennox has moved on and no longer updates it, but the information here is still incredibly useful. We have updated his setup page here and hope it will continue to prove useful to our users

    -

    Prerequisites¶

    +

    Prerequisites¶

    Make sure Tcl AND it’s dev packages are installed on your system. On Debian-based systems, this is done with:

    sudo apt-get install tcl tcl-dev
     
    @@ -119,12 +119,13 @@

    Prerequisites -

    The super-short version¶

    +

    The super-short version¶

    You can read the Installation section for a more detailed explanation of these steps.

      -
    1. Download the latest stable Eggdrop release to your shell via FTP, or simply type wget geteggdrop.com -O eggdrop-1.9.5.tar.gz

    2. -
    3. From the commadline of your shell, type tar zxvf eggdrop-1.9.5.tar.gz

    4. -
    5. Type cd eggdrop-1.9.5

    6. +
    7. Download the current version of Eggdrop to your shell via FTP, or simply type: wget geteggdrop.com -O eggdrop-1.9.5.tar.gz

    8. +
    9. Next, from the commandline of the shell, ensure you are in the same directory that you downloaded the tar file into

    10. +
    11. Type: tar zxvf eggdrop-1.9.5.tar.gz

    12. +
    13. Type: cd eggdrop-1.9.5

    14. Type ./configure

    15. Type make config

    16. Type make

    17. @@ -135,42 +136,42 @@

      The super-short version

    -

    Getting the source¶

    +

    Getting the source¶

    -

    History¶

    -

    The current supported version of Eggdrop is the 1.9.x tree. The 1.8 and 1.6 series, while still popular, are no longer supported by the developers.

    -

    The most current version of Eggdrop, and the one appropriate for most users, is the current 1.9 series. It added many features such as SASL support, multi-ip listening, and a new password hashing module. It is the most complete, feature-rich, and functional version of Eggdrop. If you’re just starting out with Eggdrop, you should use 1.9.5

    -

    Prior to that, the 1.8 series added several major features, to include IPv6 support and SSL/TLS connections. 1.6.21, which is now over 10 years old, was the last release of the 1.6 series and is still used by users who have become comfortable with that version and may have spent much time applying their own modifications to make it work the way they want, and therefore don’t wish to move to a newer version. The majority of Tcl scripts out there were written for 1.6 bots, but those scripts usually work on 1.8 and 1.9 bots as well.

    +

    History¶

    +

    The current supported version of Eggdrop is the 1.9.x tree. Only the current major version (1.9.x) is supported; earlier major versions are not.

    +

    The most current version of Eggdrop, and the one appropriate for most users, is the current 1.9 series. It added many features such as SASL support, multi-ip listening, and a new password hashing module. It is the most complete, feature-rich, and functional version of Eggdrop. If you’re just starting out with Eggdrop, you should use 1.9.5.

    +

    Prior to that, the 1.8 series added several major features, to include IPv6 support and SSL/TLS connections. 1.6.21, which is now over 10 years old, was the last release of the 1.6 series. Because Eggdrop remained at the 1.6.21 patchlevel for several years it is still often run by users who have become comfortable with that version and don’t wish to move to a newer version- however, it is getting harder and harder to continue running 1.6 bots on modern Linux systems. Tcl scripts written for bots as far back as the 1.6 series generally work on all later versions of Eggdrop as well, so if you haven’t already- upgrade!

    The 1.9 Eggdrop tree is currently under active development and the most recent changes are available in daily snapshots for users to download for testing. While the development snapshot will contain the most current, up-to-date features of Eggdrop, it is not yet considered stable and users stand a higher chance of encountering bugs during use. If you do use it and find a bug, it is highly encouraged to report it via the Eggheads GitHub issues page.

    -

    Download locations¶

    -

    The developers distribute Eggdrop via two main methods: FTP, and GitHub. For FTP, it is packaged in tarball format (with the .tar.gz filename extension), with the version number in the filename. The Eggdrop 1.9.5 source, for example, would be named eggdrop-1.9.5.tar.gz.

    -

    The Eggheads FTP is a repository for the current version of Eggdrop, as well as the most current development snapshot and previous stable releases.

    -

    Eggdrop also maintains a GitHub page where you can download the development snapshot or a stable version, via either git commandline or by downloading a tarball. To download via git, type git clone https://github.com/eggheads/eggdrop.git, then cd eggdrop. This gives you the development version. To switch to the most recent stable version, type git checkout stable/1.9. You can then skip to step 4 in the Installation section below.

    +

    Download locations¶

    +

    The developers distribute Eggdrop via two main methods: FTP, and GitHub. For FTP, it is packaged in tarball format (with the .tar.gz filename extension), with the version number in the filename. The Eggdrop 1.9.5 source, for example, would be named eggdrop-1.9.5.tar.gz.

    +

    The Eggheads FTP is a repository for the current version of Eggdrop, as well as the most current development snapshot and previous stable releases.

    +

    Eggdrop also maintains a GitHub page where you can download the development snapshot or a stable version, via either git commandline or by downloading a tarball. To download via git, type git clone https://github.com/eggheads/eggdrop.git, then cd eggdrop. This gives you the development version. To switch to the most recent stable version, type git checkout stable/1.9. You can then skip to step 4 in the Installation section below.

    -

    Installation¶

    +

    Installation¶

    Installing Eggdrop is a relatively simple process provided your shell has the required tools for successful compilation. On most commercial shell accounts which allow Eggdrop bots you won’t have any problems with installation, but on some private boxes or a shell on your ISP you may experience errors during compilation.

    -

    Below is a step by step guide to the installation process. These instructions apply to 1.9 bots. It assumes you will be installing eggdrop-1.9.5.tar.gz, so just change the numbers if you are installing another version.

    +

    Below is a step by step guide to the installation process. These instructions apply to 1.9 bots. It assumes you will be installing eggdrop-1.9.5.tar.gz, so just change the numbers if you are installing another version.

      -
    1. Put the Eggdrop source on your shell using one of the specified download locations, either by downloading the eggdrop-1.9.5.tar.gz file to your system then uploading it to the shell via FTP, or downloading it directly to the shell via the shell’s FTP client, git, wget, or curl. You don’t need to put the .tar.gz file in its own directory (it’ll be done automatically in the next step).

    2. -
    3. SSH to the shell (if you haven’t already), and type tar zxvf eggdrop-1.9.5.tar.gz (if this doesn’t work, try gunzip eggdrop-1.9.5.tar.gz then tar xvf eggdrop-1.9.5.tar). This will extract the Eggdrop source into its installation directory, named ‘eggdrop-1.9.5’.

    4. -
    5. Type cd eggdrop-1.9.5 switch to the directory the Eggdrop source was extracted to.

    6. +
    7. Put the Eggdrop source on your shell using one of the specified download locations, either by downloading the current version of Eggdrop to your local system and then uploading it to the shell via FTP, or downloading it directly to the shell via the shell’s FTP client, git, wget, or curl. You don’t need to put the .tar.gz file in its own directory (it’ll be done automatically in the next step).

    8. +
    9. SSH to the shell (if you haven’t already), and type tar zxvf eggdrop-1.9.5.tar.gz (if this doesn’t work, try gunzip eggdrop-1.9.5.tar.gz then tar xvf eggdrop-1.9.5.tar). This will extract the Eggdrop source into its installation directory, named eggdrop-1.9.5.

    10. +
    11. Type cd eggdrop-1.9.5 switch to the directory the Eggdrop source was extracted to.

    12. Type ./configure (that’s a period followed by a slash followed by the word ‘configure’). This makes sure the shell has all the right tools for compiling Eggdrop, and helps Eggdrop figure out how to compile on the shell.

    13. When configure is done, type make config. This sets up which modules are to be compiled. For a more efficient installation, you can use make iconfig to select the modules to compile, but if you’re not sure just use make config.

    14. Type make. This compiles the Eggdrop. The process takes a brief moment on fast systems, longer on slow systems.

    15. Type make install DEST=~/botdir. This will install Eggdrop into a directory named ‘botdir’ in your home directory. You can change ‘botdir’ to anything you like. Note that in some cases you may need to specify the full path, e.g. make install DEST=/home/cooldude/botdir, using the ~ character in make install won’t always work. You can get the full path by typing pwd.

    16. -
    17. You can safely delete the installation directory named ‘eggdrop-1.9.5’ (to do this, type cd ~ then rm -rf eggdrop-1.9.5) that was created previously, although some people may find it handy to keep that directory for performing additional or future installations of the same version without recompiling.

    18. +
    19. You can safely delete the installation directory named eggdrop-1.9.5 (to do this, type cd ~ then rm -rf eggdrop-1.9.5) that was created previously, although some people may find it handy to keep that directory for performing additional or future installations of the same version without recompiling.

    That’s it! Eggdrop is now installed into its own directory on the shell. It’s time to edit the configuration files to make Eggdrop work the way you want it to.

    -

    Configuration¶

    +

    Configuration¶

    You will need to edit the configuration file before you can start up your Eggdrop. You can find the example configuration file in the directory you extracted the Eggdrop source to, under the name ‘eggdrop.conf’. If you downloaded Eggdrop to your system, you can unzip the tarball (.tar.gz) file to its own directory using 7-Zip or a similar program, and view the example config file, botchk file, and all the documentation files locally. You can use Notepad to edit these files, although it’s sometimes desirable to use an editor that supports the Unix file format such as EditPlus. To edit the file once it is on your shell, a program such as ‘nano’ or ‘vim’ is recommended.

    -

    Editing the config file¶

    +

    Editing the config file¶

    Eggdrop comes with two versions of the configuration file- eggdrop.conf and eggdrop-basic.conf. While it is recommended that users edit a copy of eggdrop.conf to take advantage of all the features Eggdrop has to offer, using eggdrop-basic.conf to start will be a quicker path for some. Still, it is recommended that you come back to the full config file at some point to see what you are missing.

    It is first recommended to rename the sample config to something other than “eggdrop.confâ€. Giving it the name of the bot’s nick (e.g. NiceBot.conf) is quite common. In the config file, you set up the IRC servers you want the bot to use and set Eggdrop’s options to suit your needs. Eggdrop has many options to configure, and editing the configuration file can take some time. I recommend you go over the entire config file to ensure the bot will be configured properly for your needs. All of the options in the config file have written explanations - be sure to read them carefully. Some of them can be a little bit vague, though.

    To comment out a line (prevent the bot from reading that line), you can add a ‘#’ in front of a line. When you come to a line that you need to edit, one popular option is to comment out the original and add your new line right below it. This preserves the original line as an example. For example:

    @@ -250,14 +251,14 @@

    Editing the config file

    -

    Starting the Eggdrop¶

    +

    Starting the Eggdrop¶

    Phew! Now that you’ve compiled, installed, and configured Eggdrop, it’s time to start it up. Switch to the directory to which you installed the bot, cross your fingers, and type ./eggdrop -m <config> (where <config> is the name you gave to the config file). Eggdrop should start up, and the bot should appear on IRC within a few minutes. The -m option creates a new userfile for your bot, and is only needed the first time you start your Eggdrop. In future, you will only need to type ./eggdrop <config> to start the bot. Make sure you take the time to read what it tells you when you start it up!

    Once your bot is on IRC, it’s important that you promptly introduce yourself to the bot. Msg it the ‘hello’ command you specified in the config file, e.g. /msg <botnick> hello. This will make you the bot’s owner. Once that’s done, you need to set a password using /msg <botnick> pass <password>. You can then DCC chat to the bot.

    Now that your Eggdrop is on IRC and you’ve introduced yourself as owner, it’s time to learn how to use your Eggdrop!

    -

    No show?¶

    +

    No show?¶

    If your bot didn’t appear on IRC, you should log in to the shell and view the bot’s logfile (the default in the config file is “logs/eggdrop.logâ€). Note that logfile entries are not written to disk immediately unless quick-logs is enabled, so you may have to wait a few minutes before the logfile appears, or contains messages that indicate why your bot isn’t showing up.

    -

    Additionally, you can kill the bot via the command line (kill pid, the pid is shown to you when you started the bot or can be viewed by running ps x) and then restart it with the -mnt flag, which will launch you directly into the partyline, to assist with troubleshooting. Note that if you use the -nt flag, the bot will not persist and you will kill it once you quit the partyline.

    +

    Additionally, you can kill the bot via the command line (kill pid, the pid is shown to you when you started the bot or can be viewed by running ps x) and then restart it with the -mnt flag, which will launch you directly into the partyline, to assist with troubleshooting. Note that if you use the -t flag, the bot will not persist and you will kill it once you quit the partyline.

    If you’re still unsure what the problem is, try asking in #eggdrop on Libera, and be sure to include any relevant information from the logfile. Good luck!

    @@ -289,9 +290,9 @@

    No show?

    diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index 85c65a339..b36d8a40c 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -1,17 +1,16 @@ - - + - + Enabling TLS Security on Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -103,11 +103,11 @@

    Search

    -

    Enabling TLS Security on Eggdrop¶

    +

    Enabling TLS Security on Eggdrop¶

    There are several ways TLS encryption can protect communication between your Eggdrop and the world. This guide will walk you through a few common scenarios and how to properly set up TLS protection.

    Sidenote: Despite SSL (Secure Socket Layer) encryption being deprecated and no longer secure, the term “SSL†is a bit of an anachronism and still commonly used interchangeably with TLS (Transport Layer Security). If you see the term “SSL†used to describe a secure connection method, to include with within Eggdrop’s own documentation and configuration files, it is probably safe to assume it is actually referring to the secure TLS protocol. If you talk to someone and they use the term “SSL†be sure to correct them, we’re sure they will definitely appreciate it :)

    -

    Pre-requisites¶

    +

    Pre-requisites¶

    Your server must have OpenSSL (or an equivalent fork) installed. Most commonly this is done through your OS’s package manager. Both the main package as well as the development headers must be installed. On a Debian/Ubuntu distro, this can be done by running:

    apt-get install openssl libssl-dev
     
    @@ -127,7 +127,7 @@

    Pre-requisites -

    Connecting to a TLS-enabled IRC server¶

    +

    Connecting to a TLS-enabled IRC server¶

    Many, if not most, IRC servers offer connection ports that add TLS protection around the data. Eggdrop uses a ‘+’ symbol in front of the port to denote a port as a TLS-enabled port. To add a server in the config file that supports TLS, add it as normal but simply prefix the port with a ‘+’. For example, if irc.pretendNet.org says it offers TLS on port 7000, you would add it to your configuration file as:

    server add irc.pretendNet.org +7000
     
    @@ -135,10 +135,10 @@

    Connecting to a TLS-enabled IRC server -

    Protecting Botnet Communications¶

    +

    Protecting Botnet Communications¶

    Eggdrop has the ability to protect botnet (direct bot to bot) communications with TLS.

    -

    Configuration File Preparation - Generating Keys¶

    +

    Configuration File Preparation - Generating Keys¶

    If an Eggdrop is going to listen/accept connections on a TLS port (more on that in a moment), it must have a public/private certificate pair generated and configured. For most users, a self-signed certificate is sufficient for encryption (a certificate signed by a certificate authority would be more secure, but obtaining one is outside the scope of this tutorial. However, the implementation of a signed keypair is no different than a self-signed pair). To generate a self-signed key pair, enter the Eggdrop source directory (the directory you first compiled Eggdrop from, usually named eggdrop-X.Y.Z) and type:

    make sslcert
     
    @@ -147,7 +147,7 @@

    Configuration File Preparation - Generating Keys -

    Configuration File Preparation - Listening with TLS¶

    +

    Configuration File Preparation - Listening with TLS¶

    Now you need to tell Eggdrop to accept TLS connections. As an example, to listen with TLS on port 5555 on all available IPs, add to the config file:

    listen +5555 all
     
    @@ -155,7 +155,7 @@

    Configuration File Preparation - Listening with TLS(There are numerous ways to format the listen command; read the config file and documentation for other alternatives)

    -

    Connecting to an Eggdrop listening with TLS¶

    +

    Connecting to an Eggdrop listening with TLS¶

    To connect to a bot listening with TLS, prefix the port number with a ‘+’. For example:

    .+bot HubBot 1.2.3.4 +5555
     
    @@ -164,7 +164,7 @@

    Connecting to an Eggdrop listening with TLS -

    Additional Information¶

    +

    Additional Information¶

    For additional information and a more thorough explanation of Eggdrop’s TLS implementation, please read the TLS docs

    @@ -195,9 +195,9 @@

    Additional Information

    diff --git a/doc/html/using/accounts.html b/doc/html/using/accounts.html index 7528db7c6..fdb89efa9 100644 --- a/doc/html/using/accounts.html +++ b/doc/html/using/accounts.html @@ -1,17 +1,16 @@ - - + - + Account tracking in Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -105,26 +105,26 @@

    Search

    -

    Account tracking in Eggdrop¶

    +

    Account tracking in Eggdrop¶

    In Eggdrop 1.9.3, Eggdrop added the ability to associate nicknames with the service accounts they are logged into. It is IMPORTANT to note that Eggdrop’s ability to do this is dependent on an IRC server’s implementation of three features- the IRCv3 extended-join capability, the IRCv3 account-notify capability, and WHOX support. All three of these features must be supported by the server and, in the case of extended-join and account-notify, requested by Eggdrop in order for Eggdrop to maintain “perfect†association between nicknames and account statuses.

    -

    Required Server Capabilities¶

    +

    Required Server Capabilities¶

    You’re going to see this repeated a lot- the IRC server must support three features in order for Eggdrop to accurately associate accounts with nicknames. These three features allow Eggdrop to always know the current association between an account and a nickname by getting account statuses of users already on a channel when it joins, new users joining a channel, and users who authenticate while on a channel.

    -

    extended-join¶

    +

    extended-join¶

    extended-join is an IRCv3-defined capability that adds the account name of a user to the JOIN message sent by the IRC server, alerting clients that a new member has joined a channel. Enabling this capability allows Eggdrop to immediately determine the account name associated with a user joining a channel

    -

    account-notify¶

    +

    account-notify¶

    account-notify is an IRCv3-defined capability that sends a message to a channel when a member of the channel either authenticates or deauthenticates from their account. Enabling this capability allows Eggdrop to immediately associate an account to a channel member when they authenticate or deauthenticate.

    -

    WHOX¶

    +

    WHOX¶

    ‘WHOX <https://ircv3.net/specs/extensions/whox>`_ is a server feature that allows a client to request custom fields to be returned in a WHO response. If a server supports this capability, Eggdrop sends a WHOX query to the server when it joins a channel, allowing it to immediately determine accounts associated with channel members when Eggdrop joins a channel.

    -

    Enabling Eggdrop Account Tracking¶

    +

    Enabling Eggdrop Account Tracking¶

    By default, the Eggdrop config file will attempt to enable all the capabilities required for account tracking. There are two settings to pay attention to

    # To request the account-notify feature via CAP, set this to 1
     set account-notify 1
    @@ -136,7 +136,7 @@ 

    Enabling Eggdrop Account Tracking -

    Checking Account-tracking Status¶

    +

    Checking Account-tracking Status¶

    While Eggdrop is running, join the partyline and type .status. If account-tracking is enabled (both the server supports and Eggdrop has requested), you’ll see this line

    Loaded module information:
       #eggdroptest        : (not on channel)
    @@ -155,24 +155,24 @@ 

    Checking Account-tracking Status -

    Determining if a Server Supports Account Capabilities¶

    +

    Determining if a Server Supports Account Capabilities¶

    A server announces the capabilities it supports via a CAP request. If you have Tcl enabled on the partyline (or via a raw message from a client), you can send .tcl cap ls and see if the extended-join and account-notify capabilities are supported by the server. If they are not listed, the server does not support it.

    A server announces if it supports WHOX via its ISUPPORT (005) announcement. If you have Tcl enabled on the partyline, you can send .tcl issupport isset WHOX and if it returns ‘1’, WHOX is supported by the server.

    -

    Best-Effort Account Tracking¶

    +

    Best-Effort Account Tracking¶

    If a server only supports some, but not all, of the required capabilities, Eggdrop will switch to ‘best effort’ account tracking. This means Eggdrop will update account statuses whenever it sees account information, but in this mode Eggdrop cannot guarantee that all account associations are up to date.

    If a server does not support extended-join, Eggdrop will not be able to determine the account associated with a user when they join. Eggdrop can update this information by sending a WHOX to the server.

    If a server does not support account-notify, Eggdrop will not be able to determine the account associated with a user if they authenticate/deauthenticate from their account after joining a channel. Eggdrop can update this information by sending a WHOX to the server.

    If a server does not support WHOX, Eggdrop will not be able to determine the accounts associated with users already on a channel before Eggdrop joined. There is no reliable way to update this information.

    One workaround to significantly increase the accuracy of account tracking for scripts in a ‘best effort’ scenario would be to issue a WHOX query (assuming the server supports it), wait for the reply from the server, and then query for the account information.

    -

    account-tag¶

    +

    account-tag¶

    One supplementary capability that can assist a best-effort account tracking scenario is the IRCv3-defined account-tag capability. The account-tag capability attaches a tag with the account name associated with the user sending a command. Enabling this capability allows Eggdrop to update its account tracking every time a user talks in channel, sets a mode, sends a kick, etc. While still not able to offer the same level of accuracy as enabling the “main three†account tracking features, it can increase the overall accuracy of the account list. Additionally, binds that react to user activity (pub, kick, mode, etc) containing account-tag will update the internal account list prior to executing the associated callback, so looking up the account name in the callback can be considered accurate.

    -

    Using Accounts with Tcl Scripts¶

    +

    Using Accounts with Tcl Scripts¶

    The Eggdrop Tcl ACCOUNT bind is triggered whenever an existing account record stored by Eggdrop is modified, such as a user de/authenticating to their account while in a channel, or information such as an account-tag being seen that updates an existing user. However, the ACCOUNT bind will NOT be triggered for the creation of a new user record, such as a user joining a channel. The bind is triggered for every channel the user is seen on- this means if a user is present with Eggdrop on four channels, the bind will be executed four times, each time with a different channel variable being passed to the associated Tcl procedure. Additionally, in a best-effort account tracking situation, Eggdrop will update the account associated with a user on all channels, not just the channel the event is seen on (and thus resulting in a bind trigger for each channel the user is on).

    In order to trigger Tcl script events to cover all instances where a user logs in, you need to pair an ACCOUNT bind with a JOIN bind. This will allow you to execute account-based events when a user joins as well as if they authenticate after joining.

    @@ -204,9 +204,9 @@

    Using Accounts with Tcl Scripts

    diff --git a/doc/html/using/autoscripts.html b/doc/html/using/autoscripts.html index 3ba14a633..fc9c81e2e 100644 --- a/doc/html/using/autoscripts.html +++ b/doc/html/using/autoscripts.html @@ -1,17 +1,16 @@ - - + - + - Eggdrop Autoscripts — Eggdrop 1.9.4 documentation - - - - - + Eggdrop Autoscripts — Eggdrop 1.9.5 documentation + + + + + @@ -19,7 +18,7 @@