eggdrop1.6.19/ 0000775 0000764 0000764 00000000000 11002271750 012261 5 ustar guppy guppy eggdrop1.6.19/NEWS 0000664 0000764 0000764 00000017547 10755654146 013020 0 ustar guppy guppy $Id: NEWS,v 1.36 2008-02-16 21:40:54 guppy Exp $
News
Last revised: April 16, 2003
_________________________________________________________________
News
What's new? First, read the following documents:
INSTALL
README
doc/BOTNET
doc/UPDATES1.6
doc/tcl-commands.doc
All of these documents combined will fill you in on the latest changes to
Eggdrop in version 1.6.x. All files, with the exception of UPDATES1.6, are
also available in html format in doc/html/.
A lot of things have changed in this version, so at a minimum, read the
UPDATES1.6 text file. UPDATES shows what's been added and fixed along the
way.
If you are upgrading from a pre-1.6 version of Eggdrop:
1. Before you start the bot for the first time, BACKUP your userfile.
2. DON'T USE YOUR OLD CONFIG FILE. MAKE A NEW ONE!
_________________________________________________________________
Changes made to Eggdrop 1.6.x from Eggdrop1.4.x:
!CHANNELS
Support for IRCnet !channels was added to Eggdrop. This might still be
a bit buggy. We appreciate bug reports!
+/-NODESYNCH
This new channel setting replaces the old 'allow-desync' config file
setting. It is useful if you use some type of ChanServ or if you don't
care about your channel being desynched.
ASYNCHRONOUS DNS MODULE
Eggdrop 1.6 is shipped with a new module, the dns module. It replaces
those old dns-lookups performed by Eggdrop which could halt the whole bot
during a timeout. We also added a new Tcl command, 'dnslookup', so scripts
can now use DNS functions asynchronously, too. See doc/settings/mod.dns
for more information.
COMPRESS MODULE
A new module called compress was introduced to Eggdrop. It provides
gzip support to Eggdrop (via Tcl commands) and enables compressed
userfile transfer. See doc/settings/mod.compress for more information.
SHARE MODULE
The share module has a new setting now (override-bots) which allows
hub bots to override the leaf bots' bot settings (botaddress, telnet
port, and password). Please note that this won't work with a version
1.4 or below bot. See doc/settings/mod.share for more information.
TRANSFER / FILESYS MODULES
The filesys and transfer modules have changed completely. Both can now
handle unlimited filename lengths and description sizes. Incomplete
downloads from the bot can also now be resumed. The db format of the
filesys module was changed to remove the limits imposed by the old
format. There's nothing special for you to do, as the old db is
automatically converted to the new format when you first access it.
You won't be able to downgrade to older versions after this, so you
may want to make a backup first. See doc/settings/mod.transfer and
doc/settings/mod.filesys for more information.
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. See doc/settings/mod.uptime
for more information.
DCC COMMANDS
* ".nick" was renamed to ".handle". ".nick" will still be kept up to
version 1.8.
* ".chnick" was renamed to ".chhandle". ".chnick" will still be kept up
to version 1.8.
* ".binds" now supports wildcards.
* ".halfop" and ".dehalfop" have been added.
* The 'optimise' file system command was renamed to 'optimize'. The old
command will still be kept up to version 1.8.
* Eggdrop now counts all of the traffic which it generates and receives
through IRC, the botnet, scripts, and dcc. You can access these
statistics via the dcc command ".traffic". Please note that the counter
gets reset every time a restart is done.
* ".modules" now works locally as well as remotely.
CHANNEL MODES
Support for IRCnet negative limits and DALnet's +R, +M, and +c channel
modes has been added. Eggdrop now also supports halfops (+h).
DOCUMENTATION
A lot has happened to the documentation; nearly every file was changed,
so take a look at them. Also, we have discovered html, and full html
documentation is available now in doc/html. Additionally, all possible
settings for Eggdrop are documented in doc/settings.
CONFIG FILES
* To support longer nicknames, as some IRC servers do, a new 'nick-len'
setting was added.
* Eggdrop uses strftime now to support different logfile suffixes. The
new config file setting is 'logfile-suffix'.
* A new 'pidfile' setting was added to allow you to specify the name
of Eggdrop's pid file.
* The 'strict-servernames' setting was removed.
PENALTY CALCULATION
Eggdrop calculates penalty points on IRCnet now, so it won't flood
itself off anymore. This feature also works on EFnet and Undernet, and
should work on other networks as well.
TCL COMMANDS
* The 'chnick' command was renamed to 'chhandle'. The use of 'chnick' is
deprecated. 'chnick' is still accessible if you load compat.tcl.
* All three commands to add data to the queues (puthelp, putserv and
putquick) now support the '-next' parameter which pushes data to the
front of the queue.
* A command to calculate md5 checksums, 'md5', was added.
* To support the new asynch dns module, the command 'dnslookup' was added.
* Four new commands regarding exempts/invites were added: stickexempt,
unstickexempt, stickinvite, and unstickinvite.
* A new 'wasop' command was added to check if a user had op before a
mode change.
* 'washalfop', 'ishalfop', and 'botishalfop' have been added.
* Three new Tcl commands were added as part of the compress module:
compressfile, uncompressfile, and iscompressed.
* A new command to check whether the bot's nick is juped was
added (isjuped).
* The fileresend command was added to support mIRC's dcc resume feature.
* A new bind type called 'NEED' was added which triggers when the bot
needs op, unban, limit, key, or invite.
* LOST and TOUT bind types were added.
* Two new commands, 'channame2dname' and 'chandname2name', were added to
allow scripts to support !channels.
* A new evnt type, loaded, was added.
* The 'setudef', 'renudef', and 'deludef' commands were added to allow
for user-defined channel settings.
* A 'traffic' command was added which returns a list of sublists
containing information about the bot's traffic usage in bytes.
* The CTCP bind type now supports wildcards.
* A 'handlen' variable was added (set to the value of the HANDLEN define
in eggdrop.h. 'nick-len' was also renamed to 'nicklen' (the old variable
will remain until version 1.8.
* The 'channel get' command was added to allow channel settings to be
easily retrieved.
* The 'server' variable now contains the server's realname instead of its
serverlist entry regardless of the 'strict-servernames' setting.
* The 'serveraddress' variable was added, which contains the server's
serverlist address and port.
* The 'onchan', 'botonchan', 'botisvoice', 'botisop', 'onchansplit',
'isop', 'isvoice', and 'handonchan' commands no longer require an
argument.
* Added a "stripcodes" command to remove control codes/etc from strings.
For more information about changed or added Tcl commands, see
doc/tcl-commands.doc.
TRAFFIC ACCOUNTING
Eggdrop now counts all of the traffic which it generates and receives
through IRC, the botnet, scripts, and dcc. You can access these statistics
via the dcc command '.traffic'. Please note that the counter gets reset
every time a restart is done.
________________________________________________________________________
Copyright (C) 1997 Robey Pointer
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/README 0000664 0000764 0000764 00000060767 10755654146 013203 0 ustar guppy guppy $Id: README,v 1.46 2008-02-16 21:40:54 guppy Exp $
Readme
Last revised: June 5, 2002
_________________________________________________________________
Readme
Please at least SKIM this document before asking questions. In fact, READ IT
if you've never successfully set up an Eggdrop bot before. PLEASE! READ IT!
Contents
0. Important notice
1. What is Eggdrop?
2. How do I get Eggdrop?
2a. How to get the latest version of Eggdrop via CVS
3. Quick startup
4. Upgrading
4a. Upgrading from a pre-1.3 version to 1.6
4b. Upgrading from an older 1.3/1.4/1.5/1.6 version to a newer one
5. Command line
6. Frequently Asked Questions
6a. What do I do if I get the error "User file not found"?
6b. My Eggdrop won't run; It just says "Can't find your hostname!"
6c. What the Heck is Tcl?
6d. My bot dies and the last entry in the logfile is "Received terminate
signal". What does that mean and can I prevent it?
6e. Someone else set up a bot I don't like. Are there any backdoors I
can use to take their bot down?
6f. What are modules?
6g. Can I compile Eggdrop without dynamic modules?
6g1. Do I still need to "loadmodule" modules?
6h. Where can I get a pre-compiled Eggdrop for my computer?
6i. I get "Makefile:3 : invalid operator" or some such thing when I
try to "make".
6j. When I "tclsh scripts/weed c" It barfs chunks at me
and dies.
6k. I get "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or
"eggdrop: error in loading shared libraries / libtcl8.1.so: cannot
open shared object file: No such file or directory" when I try to
start my bot.
6l. I get a whole pile of "unresolved symbol 'Tcl_AppendResult'" (or
some other symbol) when I try to load a module.
7. Setting up a crontab
7a. Setting up a crontab using autobotchk
8. Boring legal stuff
9. Mailing list
10. Documentation
11. Obtaining help
_________________________________________________________________
(0) NOTICE
Please read this file carefully before trying to set up Eggdrop. Also,
make SURE that you select your +n (owner) users wisely! They have 100%
access to your bot and account! ONLY GIVE THIS POWER TO SOMEONE YOU
TRUST COMPLETELY!!
(1) WHAT IS EGGDROP?
Eggdrop is the World's most popular Internet Relay Chat (IRC) bot; it is
freely distributable under the GNU General Public License (GPL). Eggdrop
is a feature rich program designed to be easily used and expanded upon by
both novice and advanced IRC users on a variety of hardware and software
platforms.
An IRC bot is a program that sits on an IRC channel and preforms automated
tasks while looking just like a normal user on the channel. Some of these
functions include protecting the channel from abuse, allowing privileged
users to gain op or voice status, logging channel events, providing
information, hosting games, etc.
One of the features that makes Eggdrop stand out from other bots is module
and Tcl scripting support. With scripts and modules, you can make the bot
preform almost any task you want. They can do anything from preventing
floods to greeting users and banning advertisers from channels.
You can also link multiple Eggdrop bots together to form a botnet. This
can allow bots to op each other securely, control floods efficiently, and
even link channels across multiple IRC networks. It also allows the
Eggdrops share user lists, ban lists, exempt/invite lists, and ignore
lists with other bots if userfile sharing is enabled. This allows users
to have the same access on every bot on your botnet. It also allows the
bots to distribute tasks such as opping and banning users. See doc/BOTNET
for information on setting up a botnet.
Eggdrop is always being improved and adjusted because there are bugs to
be fixed and features to be added (if the users demand them, and they make
actually sense). In fact, it existed for several years as v0.7 - v0.9
before finally going 1.0. This version of Eggdrop is part of the 1.6 tree.
A valiant effort has been made to chase down and destroy bugs.
This README file contains information about how to get Eggdrop, command
line options for Eggdrop, what you may need to do when upgrading from
older versions, a list of frequently asked questions, how to set up a
crontab, some boring legal stuff, info about the mailing list (a great
place to ask questions, and a good place to report bugs, too), some basics
about CVS usage, and some channels where you might get help with Eggdrop.
(2) HOW TO GET EGGDROP
Before you can compile Eggdrop, you need to have Tcl installed on your
system. Most systems should have Tcl on them by now -- you can check by
trying the command "tclsh". If it works, you will be given a "%" prompt,
and you can type "exit" to exit the program. This means Tcl is installed
on your system. If tclsh doesn't load, then Tcl probably isn't on your
system, and you will need to install it. The best ftp site for Tcl is
ftp://tcl.activestate.com/pub/tcl/.
Tcl comes with the most distributions of Linux. HOWEVER, the one that comes
on Slackware 3.0 is goofed up and you'll have to re-install it for yourself
to get it working.
Currently, the 1.6 tree of Eggdrop is developed at eggheads.org. You can
get the latest version of Eggdrop from the following url:
http://www.geteggdrop.com
You might try www.eggheads.org for help and information.
(2a) CVS USAGE
You can obtain the VERY LATEST version of Eggdrop, that is still under
development, by using CVS. CVS means 'Concurrent Versions System' and is
a tool for developers to always keep source code up to date. Try 'man cvs'
on your shell for more information about CVS.
This is intended only for users that know a good bit about Eggdrop. Be
aware that the versions of Eggdrop that you get via CVS are still being
developed, and may be buggy. The Eggheads Development Team will in NO WAY
take any responsibility for whatever might happen to you or your shell if
you use a CVS version of Eggdrop.
To obtain Eggdrop over CVS, do as follows:
1. Log into your shell.
2. Type: 'export
CVSROOT=:pserver:anonymous@cvs.eggheads.org:/usr/local/cvsroot'.
3. Type 'cvs login'.
4. Press when prompted for a password.
5. In your home dir, type 'cvs checkout eggdrop1.6'
6. In ~/eggdrop1.6, you should have a copy of the latest CVS version
of Eggdrop.
Notes:
o You can 'cvs logout', but you don't need to.
o You don't need to go through this whole process every time. If you
want to get a CVS version of Eggdrop at a later time, you can just
'cd ~/eggdrop1.6' and type 'cvs update -CdAP'.
o If you experience errors when using 'export', you might be using tclsh
as a shell. If so, try using the command 'setenv' instead of 'export':
setenv CVSROOT :pserver:anonymous@cvs.eggheads.org:/usr/local/cvsroot
(3) QUICK STARTUP
Please see the 'INSTALL' file AFTER you finish reading this file.
(4) UPGRADING
(4a) UPGRADING FROM A PRE-1.3 VERSION TO 1.6
#### BACK UP YOUR USERFILE ####
We can't stress this enough. If you are upgrading and you have even a
slight possibility of downgrading again later, you will HAVE to back up
your userfile, or you will lose it. v1.3 of Eggdrop radically changed a
lot of things.
There are many major changes between v0.9, v1.0, v1.1 and v1.6, so PAY
ATTENTION to this part if you have a v0.9, 1.0 or 1.1 bot currently. If
you're just starting out, you can skip this section.
If you run share bots, you will need to upgrade them all at the same time
because of the new userfile format. Older bots will be able to link in,
but will not get or send a userfile. MAKE A NEW CONFIG FILE from the
example; there are some radical changes.
If you are upgrading from 0.9/1.0 to 1.6, just redo the whole thing.
Absolutely everything has changed, including the userfile and config file
formats.
If you are upgrading from 1.1/1.2 to 1.6, you will likely want to redo
the config file, as much as changed. BACK UP! You will need to run 'tclsh
scripts/weed/ c' to convert your userfile from v3 (1.1/1.2) to
v4 (1.3/1.4/1.5/1.6).
(4b) UPGRADING FROM AN OLDER 1.3/1.4/1.5/1.6 VERSION TO A NEWER 1.6 VERSION
If you followed the 'INSTALL' file and did a 'make install' (or 'make
install DEST="path"') after 'make', this will be pretty easy. Just upload
the new eggdrop1.6.x.tar.gz file to your home dir on your shell, gunzip
and untar it, and type 'cd ~/eggdrop1.6.x'. Next, type './configure',
'make config' or 'make iconfig', then 'make'. Then, kill the bot ('.die'
on the party line), and 'make install' to the same directory your bot
is currently in. After that, you can just restart your bot. You may wish
to delete the old Eggdrop executable and modules as well, especially if
you have limited disk space.
You should read through the new eggdrop.conf file for all of the new
options in Eggdrop 1.6.x if you are upgrading from 1.3.x or 1.4.x. You
can copy and paste any of these settings into you current conf file if
you do not want to use the default settings.
(5) COMMAND LINE
Eggdrop has some command-line options -- not many, because most things
should be defined through the config file. However, sometimes you may
want to start up the bot in a different mode, and the command-line
options let you do that. Basically, the command line for Eggdrop is:
% eggdrop [options] [config-file]
The options available are:
-n: Don't background. Normally, Eggdrop will move itself into the
background when you start it up, meaning you'll get another shell
prompt, and you can do other things while the bot is running. With
-n, you won't return to the shell prompt until the bot exits (which
won't normally happen until it's killed). By default, -n will send
all log entries to the console.
-nt: Don't background, use terminal. This is just like -n, except that
instead of seeing log entries, your console will simulate a DCC
chat with the bot.
-nc: Don't background, show channel info. This is just like -n, except
that instead of seeing log entries, every 10 seconds your screen
will clear and you will see the current channel status, sort of
like "top".
-m: Create userfile. If you don't have a userfile, this will make Eggdrop
create one and give owner status to the first person that introduces
himself or herself to it. You'll need to do this when you first set
up your bot.
-h: Show help.
-v: Show version info, then quit.
Most people never use any of the options except -m, and you usually only
need to use that once.
(6) FREQUENTLY ASKED QUESTIONS (or "Why doesn't this thing work?")
6a. WHAT DO I DO IF I GET THE ERROR "USER FILE NOT FOUND"?
1. Run Eggdrop with the "-m" option (i.e. "eggdrop -m eggdrop.conf").
2. Go to IRC and send "hello" to your bot (i.e. "/msg mybot hello").
3. You will become an owner on your bot. You can leave the bot running
(nobody else will become an owner if they say "hello"), but in the
future, don't use the "-m" option when running the bot.
6b. MY EGGDROP WON'T RUN; IT JUST SAYS "CAN'T FIND YOUR HOSTNAME!"
Your machine is set up strangely, and Eggdrop can't figure out its
network hostname. You can get around this by setting the my-ip setting
in the config file correctly.
6c. WHAT THE HECK IS Tcl?
Tcl is a scripting language written by John Ousterhout. It's much better
than most "built-in" script languages (like the one in ircII) and is
meant to be linked with anything needing a scripting language, so I
linked it with Eggdrop. The file "tcl-commands.doc" in the doc directory
contains a list of additional Tcl commands provided by Eggdrop. There
are also several example scripts in the scripts/ directory, and one in
the doc directory called first_script.txt. Hundreds of scripts floating
around on the ftp/web sites if you like working by example (which is
typically the best way).
6d. MY BOT DIES, AND THE LAST ENTRY IN THE LOGFILE IS "RECEIVED TERMINATE
SIGNAL". WHAT DOES THAT MEAN, AND CAN I PREVENT IT?
There's nothing you can do to prevent it. It means the system
administrator is killing the Eggdrop process. Most of the time, it's an
automatic thing that happens when the system is being rebooted, so it's
harmless. If you have a crontab running, the bot will get restarted when
the system is back online. Occasionally, the system administrator will
kill the bot manually. For example, if he/she doesn't want bots running
on the system.
6e. SOMEONE ELSE SET UP A BOT I DON'T LIKE. ARE THERE ANY BACKDOORS I CAN
USE TO TAKE THEIR BOT DOWN?
No, there have never been any backdoors and there never will be, so
please stop asking. Every once in a while, someone finds a way to
exploit a bug in Eggdrop, but we fix these bugs as soon as we find out
about them. If you want to bring down someone else's bot, you will not
have my/our help.
6f. WHAT ARE MODULES?
Modules are a way of adding extra features to the bot, much like Tcl
scripts, without requiring the bot to be recompiled. See doc/MODULES
for more information.
6g. CAN I COMPILE EGGDROP WITHOUT DYNAMIC MODULES?
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'.
6g1. 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.
6h. WHERE CAN I GET A PRE-COMPILED EGGDROP FOR MY COMPUTER?
It is HIGHLY recommended AGAINST using pre-compiled Eggdrops from
un-trusted sources. Eggdrop has been a regular target for hacking and
crashing. Distribution of pre-compiled (binary) versions of Eggdrop are
the easiest way for hackers to provide you with the easiest (and most
dangerous) way of gaining access to, not only your bot, but to your
computer account directly. Don't advertise your pre-compiled Eggdrop
binary sites on the Eggdrop list either. =P
6i. I GET 'Makefile:3 :invalid operator' OR SOME-SUCH-THING WHEN I TRY
TO 'make'.
Try 'gmake'.
6j. WHEN I 'tclsh scripts/weed c' IT BARFS CHUNKS AT ME AND
DIES. :(
Upgrade your Tcl. You are probably using Tcl 7.5 or earlier. Some of the
commands in weed require Tcl7.6 to run, so either upgrade it or remove
the offending lines from you userfile manually (those starting with '.'
generally) and accept the loss of that data.
6k. I GET "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or
"eggdrop: error in loading shared libraries libtcl8.1.so: \
cannot open shared object file: No such file or directory" WHEN I TRY
TO START MY BOT.
'./configure' is looking in the wrong place for Tcl; it looks like it
compiled with one version of Tcl and tries to load another. Maybe your
sysadmin upgraded Tcl and didn't tell you. In that case, you should just
need to recompile your bot.
Maybe, when upgrading, he didn't clean the old version of Tcl and
'./configure' is looking for the files in the wrong places, or trying
to use different versions of tcl.h and libtcl*. Smack your admin and
have him install Tcl properly. ;)
You can also try:
./configure --with-tcllib=
--with-tclinc=
This will tell configure where to look for the Tcl files.
Try looking for libtcl by:
ls /usr/lib/libtcl*
ls /usr/local/lib/libtcl*
Try looking for tcl.h by:
ls /usr/include/tcl.h
ls /usr/local/include/tcl.h
If everything else fails, try to install Tcl to your home dir ;)
(Suggested by dw@Undernet, dw@lixom.nu)
6l. I GET A WHOLE PILE OF "Unresolved symbol 'Tcl_AppendResult'" (OR SOME
OTHER SYMBOL) WHEN I TRY TO LOAD A MODULES.
POSSIBILITY A: See section 6k.
POSSIBILITY B:
Some of the standard libraries have been compiled for static linking
only on your machine, you have 3 options:
1. If it's your own machine, recompile Tcl using dynamic linking by
using './configure --enable-shared' when you configure Tcl (not
the bot) and then remake, and reinstall.
2. If it's not your machine, you may have to resort to 'make static'
and 'make install DEST="path"' to make and install your bot.
3. If you are of a more aggressive sense of mind, go beat the
stuffing out of your admin for having lame static libraries. :)
(7) SETTING UP A CRONTAB
Eggdrop has become more stable with time, thanks mostly to people
reporting bug details and helping find places where it crashes. However,
there are still a -few- places where things aren't perfect. Few, if any,
things in life are.
Also, most systems go down from time to time. These things cause your bot
to disappear from IRC, and you have to restart it.
Eggdrop comes with a shell script called 'botchk' that will help keep the
bot online. It will make the machine check every ten minutes to make sure
your bot is still running. To use it, you have to add a line to your
crontab. First, edit 'botchk' and change the directory and command line
parameters so that it will be able to start up your bot. Then, add this
line to your crontab:
0,10,20,30,40,50 * * * * /home/mydir/botchk
If you don't want to get e-mails from cron, use this:
0,10,20,30,40,50 * * * * /home/mydir/botchk >/dev/null 2>&1
Naturally, you need to change the path to the correct path for botchk. If
you've never used crontab before, here is a simple way to add that line:
1. Create a new file called 'mycron' and put the above line into it.
2. From your shell prompt, type '% crontab mycron'.
That will create a new crontab entry for you with a line that runs botchk
every ten minutes. Botchk will then restart the bot when necessary (and
send you email informing you).
(7a) SETTING UP A CRONTAB USING AUTOBOTCHK
Included with your Eggdrop is an Eggdrop utility called 'autobotchk'.
Using autobotchk is probably the fastest way of creating your botchk and
crontabbing it with just a few required steps:
1. Type 'cp scripts/autobotchk ..'.
2. Type './autobotchk '.
This will hopefully crontab your bot using the default setup. If you want
a list of autobotchk options, type './autobotchk'. An example with options
would be:
./autobotchk -noemail -5
This would setup crontab to run the botchk every 5 minutes and also to
not send you e-mail saying that it restarted your bot.
(8) BORING LEGAL STUFF
The Eggdrop bot is Copyright (C) by Robey Pointer. As of January, 1997,
Eggdrop is distributed according to the GNU General Public License. There
should be a copy of this license in the file 'COPYING'. If not, write to
the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
As of Eggdrop 1.3.28, all changes made by the Eggheads Development Team to
the Eggdrop source code and any related files are Copyright (C) by Eggheads
Development Team. The source code will still be distributed according to
the GNU General Public License as Robey Pointer did in the past.
Releases previous to 1.0m were made using a different licensing scheme.
You may, at your option, use the GNU General Public License on those
versions (instead of the license packaged with them) with my blessing.
For any versions bearing a copyright date of 1997 or later, you have
no choice -- you must use the GNU General Public License.
The files "match.c", "net.c", and "blowfish.c" are exempt from the above
restrictions. "match.c" is original code by Chris Fuller (email:
crf@cfox.bchs.uh.edu) and has been placed by him into the public domain.
"net.c" is by me, and I [Robey Pointer] also choose to place it in the
public domain. "blowfish.c" is by various sources and is in the public
domain as well. All 3 files contain useful functions that could easily
be ported to other applications.
Tcl is by John Ousterhout and is in no way affiliated with Eggdrop. It
likely has its own set of copyrights and whatnots.
There is no warranty, implied or whatever. You use this software at your
own risk, no matter what purpose you put it to.
(9) MAILING LIST
There are currently a couple of mailing lists about Eggdrop.
eggheads@eggheads.org is the one relevant for posts about Eggdrop 1.4 and
up (suggestions, help, etc).
To subscribe to the eggheads mailing list, send e-mail to
eggheads-request@eggheads.org. In the body of the message, put "subscribe
eggheads". You can also go to the following url:
http://scrambled.eggheads.org/mailman/listinfo/eggheads
### DO NOT SEND ROBEY EMAIL ABOUT EGGDROP! ###
Robey is no longer developing the Eggdrop code, so don't bother e-mailing
him. If you have a serious problem, email the eggheads mailing list and
it will get to the coders.
Please, before posting to this list, see what things are like. When you do
post, read over your post for readability, spelling, and grammar mistakes.
Obviously, we're all human (or are we?) and we all make mistakes (heck,
look at this document! ;).
Open discussion and debate is integral to change and progress. Don't flame
others over mere form (grammar and spelling), or even substantive issues
for that matter. Please read and follow the mailing list rules.
The eggheads@eggheads.org mailing list is not dedicated to those all too
common questions we have all seen on other lists... For example:
o "Why does my bot say this: Please edit your config file."
o "How do I telnet my bot?"
o "Where do I get Eggdrop for windows??????"
Technical questions, your thoughts or suggestions on new features being
added to Eggdrop, things that should be removed or fixed, amazing problems
that even stump the guru's, etc. are what we want to see here.
Bug reports should be sent to bugs@eggheads.org. Please read and fill out
the BUG-REPORT file in the doc directory.
DO NOT SEND HTML E-MAILS TO ANY OF THE EGGHEADS.ORG MAILING LISTS. ANYONE
CAUGHT SENDING HTML E-MAILS TO ONE OF THESE LISTS WILL BE REMOVED
IMMEDIATELY!
(10) DOCUMENTATION
We're trying to keep the documentation up to date. If you feel that
anything is missing here or that anything should be added, etc, please
e-mail bugs@eggheads.org about it. Thank you.
(11) OBTAINING HELP
You can obtain help with Eggdrop in the following IRC channels:
Undernet - #eggdrop, #eggies
EFnet - #egghelp, #eggfaq
IRCnet - #eggdrop
DALnet - #eggdrop, #botcentral
FreeNode - #eggdrop, #egghelp
QuakeNet - #eggdrop.support
If you plan to ask questions in any of the above channels, you should be
familiar with and follow IRC etiquette.
o Don't type using CAPITAL letters, colors, or bold.
o Don't use "!" and "?" excessively.
o Don't /msg people without their permission.
o Don't repeat or paste large amounts of text to the channel.
If there are any other serious Eggdrop related channels that should be
added to the above list, please let us know.
________________________________________________________________________
Copyright (C) 1997 Robey Pointer
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/scripts/ 0000775 0000764 0000764 00000000000 11002272213 013743 5 ustar guppy guppy eggdrop1.6.19/scripts/notes2.tcl 0000664 0000764 0000764 00000016067 07371410274 015712 0 ustar guppy guppy #
# notes2.tcl - v2.1.1 - released by MHT
# - a bind apart script from #TSF
# - for eggdrop 1.3.15+
#
# $Id: notes2.tcl,v 1.6 2001-11-05 04:08:28 guppy Exp $
#
####
#
# history:
# --------
# 2.0.0 - first release for 1.3.14+mht series
# (get notesat2.tcl for 1.1.5 series)
#
# 2.0.2 - Message bug corrected: "erased notes; left." is better.
# - Corrected weird switch tcl syntax, bug found by Islandic.
# It's so different from C (I hate tcl!).
# - Desactivated message "I don't know you", boring me !
# - No more logs for notes-indexing on join :-)
#
# 2.0.3 - Corrected invalid idx bug, if user quits before receiving
# his notes check.
#
# 2.1.0 - Improved protocol to avoid idx mistake for multiple connected users.
# Backward compatibility is kept, but price is that idx mistake occurs
# if a multiple connected user quits before receiving notes check.
# Generally never happens, except in case of 'Chriphil's syndrome' ;-p
# - Added missing 'You don't have that many messages.'
#
# 2.1.1 - fixed a couple of small bugs pertaining to $nick being used instead of
# $botnet-nick (found by takeda, fixed by guppy)
#
####
# Check your notes on every shared bot of the hub.
#
# .notes [bot|all] index
# .notes [bot|all] read <#|all>
# .notes [bot|all] erase <#|all>
#
# # may be numbers and/or intervals separated by ;
# ex: .notes erase 2-4;8;16-
# .notes noBOTy read all
#
########
unbind dcc - notes *dcc:notes
bind dcc - notes *dcc:notes2
bind chon - * *chon:notes2
bind bot - notes2: *bot:notes2
bind bot - notes2reply: *bot:notes2reply
########
proc n2_notesindex {bot handle idx} {
global nick botnet-nick
switch "([notes $handle])" {
"(-2)" { putbot $bot "notes2reply: $handle Notefile failure. $idx" }
#"-1" { putbot $bot "notes2reply: $handle I don't know you. $idx" }
"(-1)" { return 0 }
"(0)" { putbot $bot "notes2reply: $handle You have no messages. $idx" }
default {
putbot $bot "notes2reply: $handle ### You have the following notes waiting: $idx"
set index 0
foreach note [notes $handle "-"] {
if {($note != 0)} {
incr index
set sender [lindex $note 0]
set date [strftime "%b %d %H:%M" [lindex $note 1]]
putbot $bot "notes2reply: $handle %$index. $sender ($date) $idx"
}
}
putbot $bot "notes2reply: $handle ### Use '.notes ${botnet-nick} read' to read them. $idx"
}
}
return 1
}
########
proc n2_notesread {bot handle idx numlist} {
if {($numlist == "")} { set numlist "-" }
switch "([notes $handle])" {
"(-2)" { putbot $bot "notes2reply: $handle Notefile failure. $idx" }
#"(-1)" { putbot $bot "notes2reply: $handle I don't know you. $idx" }
"(-1)" { return 0 }
"(0)" { putbot $bot "notes2reply: $handle You have no messages. $idx" }
default {
set count 0
set list [listnotes $handle $numlist]
foreach note [notes $handle $numlist] {
if {($note != 0)} {
set index [lindex $list $count]
set sender [lindex $note 0]
set date [strftime "%b %d %H:%M" [lindex $note 1]]
set msg [lrange $note 2 end]
incr count
putbot $bot "notes2reply: $handle $index. $sender ($date): $msg $idx"
} else {
putbot $bot "notes2reply: $handle You don't have that many messages. $idx"
}
}
}
}
return 1
}
########
proc n2_noteserase {bot handle idx numlist} {
switch [notes $handle] {
"(-2)" { putbot $bot "notes2reply: $handle Notefile failure. $idx" }
#"(-1)" { putbot $bot "notes2reply: $handle I don't know you. $idx" }
"(-1)" { return 0 }
"(0)" { putbot $bot "notes2reply: $handle You have no messages. $idx" }
default {
set erased [erasenotes $handle $numlist]
set remaining [notes $handle]
if {($remaining == 0) && ($erased == 0)} {
putbot $bot "notes2reply: $handle You have no messages. $idx"
} elseif {($remaining == 0)} {
putbot $bot "notes2reply: $handle Erased all notes. $idx"
} elseif {($erased == 0)} {
putbot $bot "notes2reply: $handle You don't have that many messages. $idx"
} elseif {($erased == 1)} {
putbot $bot "notes2reply: $handle Erased 1 note, $remaining left. $idx"
} else {
putbot $bot "notes2reply: $handle Erased $erased notes, $remaining left. $idx"
}
}
}
return 1
}
########
proc *bot:notes2 {handle idx arg} {
if {(![matchattr $handle s])} {
return
}
set nick [lindex $arg 0]
set cmd [lindex $arg 1]
set num [lindex $arg 2]
set idx [lindex $arg 3]
if {($num == "") || ($num == "all")} { set num "-" }
switch $cmd {
"silentindex" { set ret 0; n2_notesindex $handle $nick $idx }
"index" { set ret [n2_notesindex $handle $nick $idx] }
"read" { set ret [n2_notesread $handle $nick $idx $num] }
"erase" { set ret [n2_noteserase $handle $nick $idx $num] }
default { set ret 0 }
}
if {($num == "-")} { set num "" }
if {($ret == 1)} { putcmdlog "#$nick@$handle# notes $cmd $num" }
}
########
proc *bot:notes2reply {handle idx arg} {
# verify that idx is valid (older scripts do not provide idx)
set idx [lindex $arg end]
if {([valididx $idx]) && ([idx2hand $idx] == [lindex $arg 0])} {
set reply [lrange $arg 1 [expr [llength $arg]-2]]
} else {
set idx [hand2idx [lindex $arg 0]]
set reply [lrange $arg 1 end]
}
if {($idx == -1)} { return }
if {([string range $reply 0 0] == "%")} {
set reply " [string range $reply 1 end]"
}
putidx $idx "($handle) $reply"
}
########
proc *chon:notes2 {handle idx} {
putallbots "notes2: $handle silentindex $idx"
return 0
}
########
proc *dcc:notes2 {handle idx arg} {
global nick botnet-nick
if {$arg == ""} {
putidx $idx "Usage: notes \[bot|all\] index"
putidx $idx " notes \[bot|all\] read <#|all>"
putidx $idx " notes \[bot|all\] erase <#|all>"
putidx $idx " # may be numbers and/or intervals separated by ;"
putidx $idx " ex: notes erase 2-4;8;16-"
putidx $idx " notes ${botnet-nick} read all"
} else {
set bot [string tolower [lindex $arg 0]]
set cmd [string tolower [lindex $arg 1]]
set numlog [string tolower [lindex $arg 2]]
set num $numlog
if {($num == "")} { set num "-" }
if {($bot != "all") && ([lsearch [string tolower [bots]] $bot] < 0)} {
if {($cmd != "index") && ($cmd != "read") && ($cmd != "erase")} {
if {($bot == [string tolower $nick])} {
return [*dcc:notes $handle $idx [lrange $arg 1 end]]
} else {
return [*dcc:notes $handle $idx $arg]
}
} else {
putidx $idx "I don't know any bot by that name."
return 0
}
} elseif {($cmd != "index") && ($cmd != "read") && ($cmd != "erase")} {
putdcc $idx "Function must be one of INDEX, READ, or ERASE."
} elseif {$bot == "all"} {
#*dcc:notes $handle $idx [lrange $arg 1 end]
putallbots "notes2: $handle $cmd $num $idx"
} else {
putbot $bot "notes2: $handle $cmd $num $idx"
}
putcmdlog "#$handle# notes@$bot $cmd $numlog"
}
}
########
putlog "Notes 2.1.0 - Released by MHT "
####
eggdrop1.6.19/scripts/help/ 0000775 0000764 0000764 00000000000 11002271500 014671 5 ustar guppy guppy eggdrop1.6.19/scripts/help/userinfo.help 0000664 0000764 0000764 00000011563 10055242243 017414 0 ustar guppy guppy %{help=chemail}%{+m}
### %bchemail%b [email address]
Sets the email address for a user. This info isn't really used by
the bot for any reason except to display. If you don't specify an
email address, the bot will show you the user's email address it
currently has set for the user (if any).
### %bchemail%b none
clears a user's email address.
%{help=churl}%{+m}
### %bchurl%b [url address]
Sets the url address for a user's web site. This info isn't really
used by the bot for any reasons except to display. If you don't
specify an url address, the bot will show you the user's url address
it currently has set for the user (if any).
### %bchurl%b none
clears a user's url address.
%{help=chbf}%{+m}
### %bchbf%b [boyfriend]
Sets the boyfriend for a user. This info isn't really used by the
for any reasons except to display. If you don't specify a boyfriend,
the bot will show you the user's boyfriend it currently has set for
the user (if any).
### %bchbf%b none
clears a user's boyfriend.
%{help=chgf}%{+m}
### %bchgf%b [girlfriend]
Sets the girlfriend for a user. This info isn't really used by the
bot for any reasons except to display. If you don't specify a
girlfriend, the bot will show you the user's girlfriend it currently
has set for the user (if any).
### %bchgf%b none
clears a user's girlfriend.
%{help=chirl}%{+m}
### %bchirl%b [real life name]
Sets the 'In Real Life' name for a user. This info isn't really
used by the bot for any reasons except to display. If you don't
specify an 'In Real Life' name, the bot will show you the user's
'In Real Life' name it currently has set for the user (if any).
### %bchirl%b none
clears a user's 'In Real Life' name.
%{help=chdob}%{+m}
### %bchdob%b [date of birth]
Sets the date of birth for a user. This info isn't really used
by the bot for any reasons except to display. If you don't specify
the date of birth, the bot will show you the user's date of birth
it currently has set for the user (if any).
### %bchdob%b none
clears a user's date of birth.
%{help=email}
### %bemail%b [email address]
sets your email address. this data isn't really used by the bot,
but it will show up if someone does a %b'whois'%b on you. if you
don't specify an email address, the bot will show you the email
address it currently has set for you (if any).
### %bemail none%b
clears your email address.
%{help=url}
### %burl%b [url site address]
sets your url address. this data isn't really used by the bot,
but it will show up if someone does a %b'whois'%b on you. if you
don't specify an url address, the bot will show you the url
address it currently has set for you (if any).
### %burl none%b
clears your url address.
%{help=bf}
### %bbf%b [boyfriend]
sets your boyfriend. this data isn't really used by the bot, but
it will show up if someone does a %b'whois'%b on you. it's also
used by the seen script. if you don't specify a boyfriend, the bot
will show you the boyfriend it currently has set for you (if any).
### %bbf none%b
clears your boyfriend.
%{help=gf}
### %bgf%b [girlfriend]
sets your girlfriend. this data isn't really used by the bot, but
it will show up if someone does a %b'whois'%b on you. it's also
used by the seen script. if you don't specify a girlfriend, the bot
will show you the girlfriend it currently has set for you (if any).
### %bgf none%b
clears your girlfriend.
%{help=irl}
### %birl%b [irl]
sets your 'in real life' name. this data isn't really used by the
bot, but it will show up if someone does a %b'whois'%b on you. if
you don't specify a 'in real life' name, the bot will show you the
'in real life' name it currently has set for you (if any).
### %birl none%b
clears your 'in real life' name.
%{help=dob}
### %bdob%b [date of birth]
sets your date of birth. this data isn't really used by the bot,
but it will show up if someone does a %b'whois'%b on you. if you
don't specify a date of birth, the bot will show you your date of
birth it currently has set for you (if any).
### %bdob none%b
clears your date of birth. (woah, no more showing ID ;)
%{help=showfields}%{+m}
### %bshowfields%b
shows currently loaded user info fields.
%{help=userinfo}%{+m}
### %buserinfo script%b
this nifty little script lets you define arbitrary strings for each
user that they can set themselves or a master can set. the default
script contains the entries URL, BF (boyfriend), GF (girlfriend),
IRL (in real life name), EMAIL, and DOB (date of birth). each entry
has a '.' command for users and a '.ch' command for
masters, also there is a /msg command to change each one. for a
complete list of currently loaded user info fields type '.showfields'.
eggdrop1.6.19/scripts/help/cmd_resolve.help 0000664 0000764 0000764 00000001450 07414537566 020102 0 ustar guppy guppy %{help=resolve}
### %bresolve%b
Attempts to resolve a hostname or ipaddress using the dns module;
however, in order for this command to work the best you should
load the dns module. This command is completely asynchronous so it
will not stop you from doing other things in the partyline while
trying to resolve an address.
see also: dns
%{help=dns}
### %bdns%b
Attempts to resolve a hostname or ipaddress using the dns module;
however, in order for this command to work the best you should
load the dns module. This command is completely asynchronous so it
will not stop you from doing other things in the partyline while
trying to resolve an address.
see also: resolve
%{help=all}
### %bcmd_resolve.tcl%b commands
%b dns resolve%b
%{-}
eggdrop1.6.19/scripts/help/msg/ 0000775 0000764 0000764 00000000000 11002271500 015457 5 ustar guppy guppy eggdrop1.6.19/scripts/help/msg/userinfo.help 0000664 0000764 0000764 00000003373 07371410274 020212 0 ustar guppy guppy %{help=email}
%b/MSG%b %B %bEMAIL%b
This will set your email address. It's shown when
someone does a WHOIS on you (see HELP WHOIS). If
you don't specify a email address, the bot will show
you the email address it currently has set for you (if any).
%b/MSG%b %B %bEMAIL%b none
This clears your email address.
%{help=url}
%b/MSG%b %B %bURL%b
This will set your url address. If you don't specify a
url address, the bot will show you the url address it
currently has set for you (if any).
%b/MSG%b %B %bURL%b none
This clears your url address.
%{help=bf}
%b/MSG%b %B %bBF%b
This will set your boyfriend. some scripts (such as seen)
use this information. If you don't specify a boyfriend,
the bot will show you the boyfriend it currently has set
for you (if any).
%b/MSG%b %B %bBF%b none
This clears your boyfriend.
%{help=gf}
%b/MSG%b %B %bGF%b
This will set your girlfriend. some scripts (such as seen)
use this information. If you don't specify a girlfriend,
the bot will show you the girlfriend it currently has set
for you (if any).
%b/MSG%b %B %bGF%b none
This clears your girlfriend.
%{help=irl}
%b/MSG%b %B %bIRL%b
This will set your real name. just for the information
of others :). If you don't specify a real name, the bot will
show you the real name it currently has set for you (if any).
%b/MSG%b %B %bIRL%b none
This clears your real name.
%{help=dob}
%b/MSG%b %B %bDOB%b
This will set your date of birth. now now, be honest :)
If you don't specify a date of birth, the bot will show
you the date of birth it currently has set for you (if any).
%b/MSG%b %B %bDOB%b none
This clears your date of birth.
eggdrop1.6.19/scripts/action.fix.tcl 0000664 0000764 0000764 00000001466 10755654156 016550 0 ustar guppy guppy # action.fix.tcl
#
# Copyright (C) 2002 - 2008 Eggheads Development Team
#
# Tothwolf 25May1999: cleanup
# Tothwolf 04Oct1999: changed proc names slightly
# poptix 07Dec2001: handle irssi (and some others) "correct" messages for DCC CTCP
#
# $Id: action.fix.tcl,v 1.11 2008-02-16 21:41:02 guppy Exp $
# Fix for mIRC dcc chat /me's:
bind filt - "\001ACTION *\001" filt:dcc_action
bind filt - "CTCP_MESSAGE \001ACTION *\001" filt:dcc_action2
proc filt:dcc_action {idx text} {
return ".me [string trim [join [lrange [split $text] 1 end]] \001]"
}
proc filt:dcc_action2 {idx text} {
return ".me [string trim [join [lrange [split $text] 2 end]] \001]"
}
# Fix for telnet session /me's:
bind filt - "/me *" filt:telnet_action
proc filt:telnet_action {idx text} {
return ".me [join [lrange [split $text] 1 end]]"
}
eggdrop1.6.19/scripts/weed 0000775 0000764 0000764 00000053312 07373557216 014652 0 ustar guppy guppy #! /bin/sh
# This trick is borrowed from Tothwolf's Wolfpack \
# Search for tclsh[0-9].[0-9] in each valid dir in PATH \
for dir in $(echo $PATH | sed 's/:/ /g'); \
do \
if test -d $dir; \
then \
files=$(/bin/ls $dir | egrep '^tclsh[0-9]\.[0-9]$'); \
if test "$files" != ""; \
then \
versions="${versions:+$versions }$(echo $files | sed 's/tclsh//g')"; \
fi; \
fi; \
done; \
for ver in $versions; \
do \
tmpver=$(echo $ver | sed 's/\.//g'); \
if test "$lasttmpver" != ""; \
then \
if test "$tmpver" -gt "$lasttmpver"; \
then \
lastver=$ver; \
lasttmpver=$tmpver; \
fi; \
else \
lastver=$ver; \
lasttmpver=$tmpver; \
fi; \
done; \
exec tclsh$lastver "$0" "$@"
#
# $Id: weed,v 1.8 2001-11-11 20:24:46 guppy Exp $
#
# weed out certain undesirables from an eggdrop userlist
# try just typing 'tclsh weed' to find out the options
# Robey Pointer, November 1994
#
# :
# I did a few bug fixes to the original weed script, things changed...
#
# when specifying other weed options they would unset the User() field and
# a maxlast weed would try and weed again and cause the script to stop due
# to User() being already unset (array nonexistant)
#
# when loadUserFile encountered an xtra field it would try and use the $info
# variable, which was supposed to be $xtra (something overlooked when the
# line was cut and pasted -- I hate it when that happens)
#
# changed the formatting of the saved weed file to match more closely to
# eggdrop 0.9tp (so this may cause incompatibilities), but when a hostmask
# field exactly matched 40 characters it would save it with no spaces after
# it and eggdrop would reject the user record. I know I could have easily
# changed one character, but I couldn't help myself.
# 5 march 1996
#
# :
# upgrade for v2 userfiles
# :
# fixed xtra field from getting truncated
# :
# stopped it from mangling channel ban lists
# :
# upgrade for v3 userfiles
# :
# added an option to remove users from unwanted channels
# :
# upgrade for v4 userfiles, with v3 converter
# :
# fixed bug "list element in braces followed by X instead of space"
# (the use of "lrange" where you aren't sure if it's a list is bad)
# fixed --CONSOLE item not being included, creating "user" --CONSOLE
# :
# two more improper occurrences of "lrange" removed
#
gcc -c -O2 -fno-strength-reduce -I.. -DHAVE_CONFIG_H filedb.c
filedb.c: In function `filedb_update':
filedb.c:209: `DIR' undeclared (first use this function)
filedb.c:209: (Each undeclared identifier is reported only once
filedb.c:209: for each function it appears in.)
filedb.c:209: `dir' undeclared (first use this function)
filedb.c:209: parse error before `*'
filedb.c:217: warning: assignment makes pointer from integer without a cast
filedb.c:218: `name' undeclared (first use this function)
filedb.c:218: dereferencing pointer to incomplete type
filedb.c:220: dereferencing pointer to incomplete type
filedb.c:220: dereferencing pointer to incomplete type
filedb.c:224: dereferencing pointer to incomplete type
filedb.c:224: dereferencing pointer to incomplete type
filedb.c:225: dereferencing pointer to incomplete type
filedb.c:230: `s' undeclared (first use this function)
filedb.c:231: `st' undeclared (first use this function)
filedb.c:232: `fdb' undeclared (first use this function)
filedb.c:232: `where' undeclared (first use this function)
filedb.c:237: `fdb1' undeclared (first use this function)
filedb.c:253: warning: assignment makes pointer from integer without a cast
make: The error code from the last command is 1.
The configure script didn't detect that this particular system
had dirent.h and sys/dir.h. The solution is to add -DHAVE_DIRENT_H
-DHAVE_SYS_DIR_H to the Makefile's CFLGS line:
gcc -c -O2 -fno-strength-reduce -I.. -DHAVE_CONFIG_H -DHAVE_DIRENT_H -DHAVE_SYS_DIR_H net.c
net.c: In function `sockread':
net.c:390: `fd_set' undeclared (first use this function)
net.c:390: (Each undeclared identifier is reported only once
net.c:390: for each function it appears in.)
net.c:390: parse error before `fd'
net.c:396: `fd' undeclared (first use this function)
make: The error code from the last command is 1.
Again, this seems that one of configure's components (sed, awk,
or something along those lines) is broken, and configure failed to
detect that this system needed sys/select.h. The solution is to add
-DHAVE_SYS_SELECT_H to the Makefile's CFLGS line:
cc -s -o eggdrop chan.o chanprog.o chanset.o cmds.o dcc.o dccutil.o
filedb.o fileq.o files.o gotdcc.o hash.o main.o match.o mem.o misc.o
mode.o msgcmds.o msgnotice.o net.o tandcmd.o tandem.o tcl.o tclhash.o
userrec.o users.o -L/home2/f/foster/lib -ltcl7.5 -lm
0706-317 ERROR: Unresolved or undefined symbols detected:
Symbols in error (followed by references) are dumped to the load map.
The -bloadmap:<filename> option will create a load map.
.ldclose
.ldopen
.ldnshread
make: 1254-004 The error code from the last command is 8.
Apparently, what is happening is a library called ld is required.
Either configure doesn't know it is needed, it simply can't find
it, or maybe this is a unique case. The solution is to have ld linked in
with the final binary.
Edit your Makefile and find the line that looks something like this:
This seems to be caused by a non-ELF Tcl library binary, and the compiler
doesn't seem to like it. Download and install Tcl in your home directory
using the steps in E. Tcl Detection and Installation
in the Compile Guide above.
First
Undefined Referenced
Symbol In file
socket net.o
gethostbyname net.o
accept net.o
bind net.o
setsockopt net.o
gethostbyaddr net.o
getsockname net.o
gethostname net.o
listen net.o
connect net.o
ld: fatal: Symbol referencing errors. No output written to eggdrop
This seems to be caused by a few libraries not being detected by the
auto-configure script; it is relatively easy to fix. Edit your Makefile.
Note that yours may be slightly different than this one when it comes to
the Tcl library, but here is the way it probably is:
If you receive file descriptor or bad interpreter errors when
attempting to run the configure script, try running 'sh
configure' or 'bash configure' instead of
'./configure'. This problem seems to show up on many AIX
machines.
This is caused by a bug in FreeBSD (and possibly other BSDs as well).
A simple 'cd .', or changing to a different directory and then
changing back, usually fixes this.
People on IRC are recognized by the bot according to their
nick!user@host. That is, if I am on IRC as:
*** Robey is robey@hubcap.clemson.edu (i hate milk)
Eggdrop will identify me according to
"Robey!robey@hubcap.clemson.edu" and not only by my nickname.
then Eggdrop will identify me according to
"ikaney@uk.defiant.org" and not by my nickname. I can change
nicknames at will and it won't forget me.
Eggdrop does not have access levels like some bots. There are no
meaningless numbers or titles. Instead, each user has "flags"
that entitle them to certain privileges. Think of a flag as a badge. Any
user can have any number of flags -- you can have no flags, or you can
have all of them. Some flags are good, some are bad. Each flag is
identified by a letter. A channel flag applies only to a specific channel,
and a global flag applies to all channels. The standard global flags
are:
n (owner)
user has absolute control. Only give this flag to people you
trust completely.
m (master)
user has access to almost every feature of the bot.
t (botnet-master)
user has access to all features dealing with the botnet.
a (auto-op)
user is opped automatically upon joining a channel.
o (op)
user has op access to all of the bot's channels.
y (auto-halfop)
user is halfopped automatically upon joining a channel.
l (halfop)
user has halfop access to all of the bot's channels.
g (auto-voice)
user is voiced automatically upon joining a channel.
v (voice)
user gets +v automatically on +autovoice channels.
f (friend)
user is not punished for flooding, etc.
p (party)
user has access to the partyline.
q (quiet)
user does not get voice on +autovoice channels.
r (dehalfop)
user cannot gain halfops on any of the bot's channels.
d (deop)
user cannot gain ops on any of the bot's channels.
k (auto-kick)
user is kicked and banned automatically.
x (xfer)
user has access to the file transfer area of the bot (if it
exists) and can send and receive files to/from the bot.
j (janitor)
user can perform maintenance in the file area of the bot (if
it exists) -- like a "master" of the file area. Janitors
have complete access to the filesystem.
c (common)
this marks a user who is connecting from a public site from
which any number of people can use IRC. The user will now be
recognized by NICKNAME.
b (bot)
user is a bot.
w (wasop-test)
user needs wasop test for +stopnethack procedure.
z (washalfop-test)
user needs washalfop test for +stopnethack procedure.
e (nethack-exempt)
user is exempted from stopnethack protection.
u (unshared)
user record is not sent to other bots.
h (highlight)
use bold text in help/text files.
All global flags other then u, h, b, c, x, j, and p are also channel-
specific flags. Flags are set with the chattr command. The syntax for
this command is:
chattr <nickname> [attributes] [channel]
There are also 26 global user-defined flags and 26 channel user-defined
flags. These are used by scripts, and their uses very depending on the
script that uses them.
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.
Information sent to the server includes the bot's uptime,
botnet-nick, server, version, and IP address. This information is
stored in a temporary logfile for debugging purposes only. The only
publicly available information will be the bot's botnet-nick,
version and uptime. If you do not wish for this information to be sent,
comment out the 'loadmodule uptime' line in your bot's
config file.
These %-variables can be inserted into help files, the banner, the
MOTD, and other text files.There are four variables that can be used to
format text:
%b
display bold
%v
display inverse
%_
display underline
%f
display flashing via telnet; bold underline via irc
These variables will be interpreted by Eggdrop and replaced by their
respective values:
%B
bot's nickname (i.e. "LamestBot")
%V
current Eggdrop version (i.e. "eggdrop v1.6.19")
%E
long form of %V (i.e. "Eggdrop v1.6.19 (C) 1997 Robey Pointer
(C) 2008 Eggheads Development Team")
%C
channels the bot is on (i.e. "#lamest,
#botnetcentral")
%A
whatever is set in the config file by 'set admin'
%n
whatever is set in the config file by 'set network'
%T
the current time (i.e. "15:00")
%N
the current user's nickname (i.e. "Robey")
%U
the current operating system the bot is on
%%
a percent sign ("%")
You can also encode messages which can only be read by people with
certain flags:
%{+m}some text%{-}
Only masters would see this.
%{+A}some text%{-}
Only people with the user flag +A see this.
%{+b}some text%{-}
This is only displayed to users doing a remote '.motd'
from another bot.
eggdrop1.6.19/doc/html/app-weird.html 0000664 0000764 0000764 00000006333 10755654152 016574 0 ustar guppy guppy
Eggdrop Documentation: Weird Messages That Get Logged
Weird Messages That Get Logged
Shown below are some messages that Eggdrop might log from time to time
that may seem a bit strange and have meanings which may not be obvious
(!) timer drift -- spun N minutes
This is caused by one of several known things...
Your bot could have been swapped out of memory for a while, or for
some reason the computer could have stopped letting the bot run. Once
a minute, Eggdrop does a few maintenance things, including counting
down any active Tcl timers. If for some reason, several minutes pass
without Eggdrop being able to do this, it logs this message to let
you know what happened. It's generally a bad thing, because it means
that the system your bot is on is very busy, and the bot can hardly
keep track of the channel very well when it gets swapped out for
minutes at a time.
On some systems (at least Linux), if the DNS your bot is using to
lookup hostnames is broken and *very* slow in responding (this can
occur if the DNS server's uplink doesn't exist), then you
will get 4-5 minute timer drifts continuously. This can be fixed by
loading the dns module.
The clock on your machine has just been changed. It may have been
running behind by several minutes and was just corrected.
(!) killmember(Nickname) -> nonexistant
We have yet to track this down. It's a mildly bad thing, however.
It means the bot just got informed by the server that someone left the
channel -- but the bot has no record of that person ever being ON the
channel.
This is not an Eggdrop bug, at least not most of the time. This is a
bug in all but perhaps the very latest ircd systems. It's not
uncommon during netsplits and other joins for the server to lose track
of killed or collided join notices. Also, in some servers, it is
possible to specify non-standard characters, such as carret symbols,
which get falsely interpreted as capital letters.
When converted to lowercase, these symbols fail to get processed,
and joins are not reported, although parts are.
Put this line into your Eggdrop configuration file to load the
CTCP module:
loadmodule ctcp
There are also some variables you can set in your config
file:
set ctcp-mode 0
Set here how the ctcp module should answer ctcps. There are 3
possible operating modes:
0
Normal behavior is used.
1
The bot ignores all ctcps, except for CHAT and PING
requests by users with the +o flag.
2
Normal behavior is used, however the bot will not answer
more than X ctcps in Y seconds (defined by 'set
flood-ctcp').
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.
eggdrop1.6.19/doc/MODULES 0000664 0000764 0000764 00000037411 10755654150 014104 0 ustar guppy guppy $Id: MODULES,v 1.34 2008-02-16 21:40:56 guppy Exp $
Eggdrop Module Information
Last revised: March 04, 2003
_____________________________________________________________________
Eggdrop Module Information
The purpose of this document is to show you how to download, install, create,
and submit modules.
Contents:
1. What are modules?
2. Why use modules?
3. How to install a module
4. Modules included with Eggdrop
5. Programming modules
6. What to do with a finished module
1. What are modules?
Modules are portions of code which are loaded separately to the bot itself
and provide extra services. For example, the filesys module provides the
entire file system.
2. Why use modules?
Modules allow C coders to add their own enhancements to the bot while
keeping them optional and without increasing the size of the Eggdrop core.
3. 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. Run ./configure (from eggdrop1.6.x/).
4. Type 'make config' or 'make iconfig'.
5. Type 'make'.
6. Copy the compiled module file (modulename.so) into your bot's
modules folder.
7. Add 'loadmodule modulename' to your eggdrop.conf file (do not
add the .so suffix).
8. Rehash or restart your bot.
To view your currently loaded modules, type '.module'.
4. Modules included with Eggdrop
assoc This module provides assoc support, i.e. naming channels on the
botnet.
blowfish Eggdrop can encrypt your userfile, so users can have secure
passwords. Please note that when you change your encryption
method later (i.e. using other modules like a md5 module),
you can't use your current userfile anymore. Eggdrop will not
start without an encryption module.
channels This module provides channel related support for the bot.
Without it, you won't be able to make the bot join a channel
or save channel specific userfile information.
compress This module provides provides support for file compression. This
allows the bot to transfer compressed user files and, therefore,
save a significant amount of bandwidth.
console This module provides storage of console settings when you exit
the bot or type .store on the partyline.
ctcp This module provides the normal ctcp replies that you'd expect.
Without it loaded, CTCP CHAT will not work.
dns 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.
filesys 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.
irc This module provides basic IRC support for your bot. You have to
load this if you want your bot to come on IRC.
notes 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.
seen This module provides very basic seen commands via msg, on channel
or via dcc. This module works only for users in the bot's
userlist. If you are looking for a better and more advanced seen
module, try the gseen module by G'Quann. You can find it at
http://www.visions-of-fantasy.de/gseen.mod/.
server This module provides the core server support. You have to load
this if you want your bot to come on IRC. Not loading this is
equivalent to the old NO_IRC define.
share This module provides userfile sharing support between two
directly linked bots.
transfer The transfer module provides DCC SEND/GET support and userfile
transfer support for userfile sharing.
uptime This module reports uptime statistics to the uptime contest
web site at 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. See doc/settings/mod.uptime
for more information, including details on what information is
sent to the uptime server.
wire This module provides all the standard .wire partyline commands.
It is an encrypted partyline communication tool, compatible with
wire.tcl.
woobie This is for demonstrative purposes only. If you are looking for
starting point in writing modules, woobie is the right thing.
5. Programming modules
WARNING: This section is very likely to be out of date.
Note: This is for a simple module of 1 source file. If you're doing a
multiple source file module, you shouldn't need to read this anyway.
1. Create a src/mod/MODULE.mod directory in your Eggdrop directory (where
MODULE is the module name) and cd to it.
2. Copy the file `Makefile' from src/mod/woobie.mod and replace all
occurrences of `woobie' with your module name. This should ensure
that your module gets compiled.
3. Next, you want to create a file called MODULE.c (MODULE is the module
name again).
4. You MUST include the following in your source code:
a. #define MODULE_NAME "module-name"
This should be defined to the same name you will be using when you load
your module.
b. #define MAKING_MODULENAME
MODULENAME is the name of your module (MODULE_NAME), but in all caps.
c. #include "../module.h"
This provides access to Eggdrop's global function table. Examine
src/mod/module.h closely to find a list of functions available.
d. #include any other standard c header files you might need. Note that
stdio.h, string.h, stdlib.h, and sys/types.h are already included.
e. Function *global;
This variable provides access to all the Eggdrop functions; without it,
you can't call any Eggdrop functions (the module won't even load).
5. Every module must also have the following functions:
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.
Throughout step 5, MODULE refers to the module name. Note that
"MODULE_NAME" should literally be "MODULE_NAME".
a. char *MODULE_start(Function *func_table)
This function is called when the module is first loaded. There are
several things that need to be done in this function:
global = func_table;
This allows you to make calls to the global function table.
module_register(MODULE_NAME, MODULE_table, MAJOR, MINOR);
This records details about the module for other modules and Eggdrop
itself to access. MAJOR and MINOR are ints, where MAJOR is the
module's major version number and MINOR is a minor version number.
MODULE_table is a function table (see below).
module_depend(MODULE_NAME, "another-module", MAJOR, MINOR);
This lets Eggdrop know that your module NEEDS "another-module" of
major version 'MAJOR' and at least minor version 'MINOR' to run,
and hence should try to load it if it's not already loaded. This
will return 1 on success, or 0 if it can't be done (at which stage
you should return an error).
Any other initialization stuff you desire should also be included in
this function. See below for various things you can do.
You also will need to return a value. Returning NULL implies the
module loaded successfully. Returning a non-NULL STRING is an error
message. The module (and any other dependant modules) will stop
loading and an error will be returned.
b. static Function *MODULE_table = {
MODULE_start,
MODULE_close,
MODULE_expmem,
MODULE_report,
any_other_functions,
you_want_to_export
};
This is a table of functions which any other module can access. The
first 4 functions are FIXED. You MUST have them; they provide important
module information.
c. static char *MODULE_close ()
This is called when the module is unloaded. Apart from tidying any
relevant data (I suggest you be thorough, we don't want any trailing
garbage from modules), you MUST do the following:
module_undepend(MODULE_NAME);
This lets Eggdrop know your module no longer depends on any other
modules.
Return a value. NULL implies success; any non-NULL STRING implies
that the module cannot be unloaded for some reason, and hence the
bot should not unload it (see the blowfish module for an example).
d. static int MODULE_expmem ()
This should tally all memory you allocate/deallocate within the module
(using nmalloc, nfree, etc) in bytes. It's used by memory debugging to
track memory faults, and it is used by .status to total up memory usage.
e. static void MODULE_report (int idx)
This should provide a relatively short report of the module's status
(for the module and status commands).
These functions are available to modules. MANY more available functions
can be found in src/mod/module.h.
void *nmalloc(int j);
This allocates j bytes of memory.
void nfree(void *a);
This frees an nmalloc'd block of memory.
Context;
Actually a macro -- records the current position in execution (for
debugging). Using Context is no longer recommended, because it uses
too many resources and a core file provides much more information.
void dprintf(int idx, char *format, ...)
This acts like a normal printf() function, but it outputs to
log/socket/idx.
idx is a normal dcc idx, or if < 0 is a sock number.
Other destinations:
DP_LOG - send to log file
DP_STDOUT - send to stdout
DP_MODE - send via mode queue to the server
DP_SERVER - send via normal queue to the server
DP_HELP - send via help queue to server
const module_entry *module_find(char *module_name, int major, int minor);
Searches for a loaded module (matching major, >= minor), and returns
info about it.
Members of module_entry:
char *name; - module name
int major; - real major version
int minor; - real minor version
Function *funcs; - function table (see above)
void module_rename(char *old_module_name, char *new_module_name)
This renames a module frim old_module_name to new_module_name.
void add_hook(int hook_num, Function *funcs)
void del_hook(int hook_num, Function *funcs)
These are used for adding or removing hooks to/from Eggdrop code that
are triggered on various events. Valid hooks are:
HOOK_SECONDLY - called every second
HOOK_MINUTELY - called every minute
HOOK_5MINUTELY - called every 5 minutes
HOOK_HOURLY - called every hour (hourly-updates minutes past)
HOOK_DAILY - called when the logfiles are switched
HOOK_READ_USERFILE - called when the userfile is read
HOOK_USERFILE - called when the userfile is written
HOOK_PRE_REHASH - called just before a rehash
HOOK_REHASH - called just after a rehash
HOOK_IDLE - called whenever the dcc connections have been
idle for a whole second
HOOK_BACKUP - called when a user/channel file backup is done
HOOK_LOADED - called when Eggdrop is first loaded
HOOK_DIE - called when Eggdrop is about to die
char *module_unload (char *module_name);
char *module_load (char *module_name);
Tries to load or unload the specified module; returns 0 on success, or
an error message.
void add_tcl_commands(tcl_cmds *tab);
void rem_tcl_commands(tcl_cmds *tab);
Provides a quick way to create and remove a table of Tcl commands. The
table is in the form of:
{char *func_name, Function *function_to_call}
Use { NULL, NULL } to indicate the end of the list.
void add_tcl_ints(tcl_ints *);
void rem_tcl_ints(tcl_ints *);
Provides a quick way to create and remove a table of links from C
int variables to Tcl variables (add_tcl_ints checks to see if the Tcl
variable exists and copies it over the C one). The format of table is:
{char *variable_name, int *variable, int readonly}
Use {NULL, NULL, 0} to indicate the end of the list.
void add_tcl_strings(tcl_strings *);
void rem_tcl_strings(tcl_strings *);
Provides a quick way to create and remove a table of links from C
string variables to Tcl variables (add_tcl_ints checks to see if the
Tcl variable exists and copies it over the C one). The format of table
is:
{char *variable_name, char *string, int length, int flags}
Use {NULL, NULL, 0, 0} to indicate the end of the list. Use 0 for
length if you want a const string. Use STR_DIR for flags if you want a
'/' constantly appended; use STR_PROTECT if you want the variable set
in the config file, but not during normal usage.
void add_builtins(p_tcl_hash_list table, cmd_t *cc);
void rem_builtins(p_tcl_hash_list table, cmd_t *cc);
This adds binds to one of Eggdrop's bind tables. The format of the
table is:
{char *command, char *flags, Function *function, char *displayname}
Use {NULL, NULL, NULL, NULL} to indicate the end of the list.
This works EXACTLY like the Tcl 'bind' command. displayname is what Tcl
sees this function's proc name as (in .binds all).
function is called with exactly the same args as a Tcl binding is with
type conversion taken into account (e.g. idx's are ints). Return values
are much the same as Tcl bindings. Use int 0/1 for those which require
0/1, or char * for those which require a string (auch as filt). Return
nothing if no return value is required.
void putlog (int logmode, char *channel, char *format, ...)
Adds text to a logfile (determined by logmode and channel). This text
will also output to any users' consoles if they have the specified
console mode enabled.
6. 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, upload it to the incoming directory on
incoming.eggheads.org (/incoming/modules/1.6). Place a nice descriptive
text (modulename.desc) with it, and it'll make its way to the modules
directory on ftp.eggheads.org. Don't forget to mention in your text file
which version Eggdrop the module is written for.
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/PATCH-HOWTO 0000664 0000764 0000764 00000010373 10755654150 014527 0 ustar guppy guppy $Id: PATCH-HOWTO,v 1.11 2008-02-16 21:40:56 guppy Exp $
Patch Howto
Last revised: July 23, 2004
_____________________________________________________________________
Patch Howto
The purpose of this document is to show you what a patch is and how you
can create, apply, download, and submit a patch.
Contents:
1. Terms
2. Applying a patch
3. Creating and submitting a patch
4. Downloading a patch
1. Terms
The following are some common terms used in this document:
Patch
A patch is an update to the source code of a program (here Eggdrop).
Be careful, every patch is designed for a special Eggdrop version
and cannot be applied on every bot!
2. Applying a patch
To apply a patch to an Eggdrop, you have to first obtain the Eggdrop
source code. You should always keep a tar.gz archive with the source of
your current Eggdrop on your shell. In the next step, you have to change
to your source directory (i.e.: /home/user/eggdrop1.6.19/) and type
the following command:
patch -p1 < ../path.to.the/patch
Once this is complete, execute the following command:
find . -name "*.rej" -print
If it returns a list with filenames ending with .rej extension, then the
patch didn't apply properly. Ensure that the patch is intended for your
version and that you have the original source. You should also try to
re-download the patch to ensure that the patch is not corrupted.
If you get an error such as this:
|Index: Makefile.in
|===================================================================
|RCS file: /usr/local/cvsroot/eggdrop1.6/Makefile.in,v
|retrieving revision 1.38
|diff -u -r1.38 Makefile.in
|--- Makefile.in 17 Jun 2004 05:43:28 -0000 1.38
|+++ Makefile.in 23 Jul 2004 21:58:23 -0000
--------------------------
File to patch:
Then you should try using a different '-p' option. Try -p0 first, and then
-p2, -p3, etc.
If the patch applied properly, the only thing left to do is to recompile
your Eggdrop and install the new modules and binaries.
3. Creating and submitting a patch
If you fixed a bug and/or changed something in Eggdrop's source code, it
would be really nice to let the dev team know about it, so we can
possibly apply it to next release of Eggdrop.
There are several steps to submit a patch to the eggdev team:
1. Create a directory with original source tree and one with modified
source tree.
2. Run the following:
diff -urN eggdrop1.6.original eggdrop1.6.modified > patchname.patch
DO NOT add any other diff options.
3. Send an e-mail to patches@eggheads.org with the patch attached. The
body should contain a detailed description of what you changed and
why you changed it. Don't forget to include the Eggdrop version for
which your patch was created.
It helps if you include the major release number that the patch is
for in the subject line. For the 1.6.x series, the subject line should
look like this:
PATCH1.6: my-patch-filename.patch
You should also include the nick/handle/name you would like to be used
in the UPDATES1.6 file (if applicable).
Never modify src/patch.h or one of the UPDATES files. We will do it. If
your patch includes changes related to autotools (./configure, etc), do
NOT run autoconf, autoheader, etc; we will do this as well.
Also, please don't add credit lines all over the source when patching.
Patch contributors will receive credit in UPDATES1.6 and ChangeLog.
CVS diff's are also perfectly fine (and actually, prefered, as the patch
will be against the most current version of Eggdrop). To create a CVS
diff, simply make the changes in your currently checked-out copy of the
Eggdrop source, and then run:
cvs diff -R -uN > patchname.patch
4. Downloading a patch
Many patches for Eggdrop 1.6.x can be found at the following location:
ftp://ftp.eggheads.org/pub/eggdrop/patches/1.6
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/BUG-REPORT 0000664 0000764 0000764 00000007175 10100627612 014411 0 ustar guppy guppy =====================================================================
Eggheads Eggdrop 1.6 Bug Report Form
=====================================================================
By reporting bugs, you help to improve the quality of Eggdrop which
naturally results in a more stable bot. The more information you
provide, the easier and more likely it is for the dev team to fix the
bug. Please add everything that you think is important, in addition
to the information requested in this form. Thanks.
NOTE: First check http://www.eggheads.org/bugzilla/ to see if the
bug you want to report is already fixed. Also, please upgrade
to the latest eggdrop version to see if the bug is fixed before
reporting.
Instructions:
[1] Please complete as many fields as possible.
[2] Email the completed report to: bugs@eggheads.org
DO NOT SEND HTML E-MAIL TO THE LISTS.
=====================================================================
1) INFORMATION ABOUT YOUR EGGDROP
1.1) Eggdrop version:
1.6.__
1.2) Make type:
( ) dynamic
( ) static
( ) debug
( ) sdebug
1.3) List of any options passed to ./configure:
1.4) List of patches and/or modules you use:
=====================================================================
2) INFORMATION ABOUT TCL
2.1) Tcl library version:
( ) 7.0
( ) 7.1
( ) 7.2
( ) 7.3
( ) 7.4
( ) 7.5
( ) 7.6
( ) 8.0
( ) 8.1
( ) 8.2
( ) 8.3
( ) 8.4
( ) 8.5
( ) Other - Which? ____
2.2) Tcl library patchlevel: ___
eg; p1, p2, etc for Tcl versions up to 8.0p2
or the 3rd part of the version number for 8.0.3 and newer
2.3) Tcl scripts used:
[ ] alltools
[ ] sentinel
[ ] getops
[ ] others - Please mention all others:
=====================================================================
3) INFORMATION ABOUT THE OS
3.1) OS type:
( ) BeOS
( ) BSD/OS
( ) Cygwin
( ) Darwin/Mac OS X
( ) Dell SVR4
( ) FreeBSD
( ) HP-UX
( ) IRIX
( ) Linux
( ) Lynx
( ) NetBSD
( ) NeXT
( ) OpenBSD
( ) OSF/Tru64
( ) QNX
( ) SINIX
( ) Solaris/SunOS
( ) Ultrix
( ) Other - Which? _____________
3.2) OS Version/Release: _____________
=====================================================================
4) BUG DETAILS
4.1) The logged last context (example: Last context: userent.c/973 []):
4.2) If the bot wrote to the file DEBUG, copy the text -contents- of
that file here (NOTE: It should be about 20 lines of info, but it
could be a few lines more):
4.3) Your comments and a description of the bug:
4.4) Can you cause the bug condition to repeat? If so, please outline
step by step what causes the error:
4.5) Do you have ideas on what is wrong that causes this error?
Please list them:
4.6) Do you have ideas on how to correct it? Please list them:
4.7) Other comments?
4.8) If the bot dumped a 'core' file when it crashed, it would be *very*
useful if you could paste gdb's output during the following steps:
First call gdb
$ gdb eggdrop -c core
and then enter 'bt' on gdb's command line:
(gdb) bt
Keep your core file for at least one week, so that the dev team
can ask for further information if needed. However, don't send
us the core file unless we ask for it.
NOTE: If this is a bug you can reproduce, please compile with
make debug and follow the above step. It can greatly help
find and fix the bug.
=====================================================================
End of bug report form - Thank you for helping us improve Eggdrop.
eggdrop1.6.19/doc/man1/ 0000775 0000764 0000764 00000000000 11002271500 013653 5 ustar guppy guppy eggdrop1.6.19/doc/man1/eggdrop.1 0000664 0000764 0000764 00000014456 10755654153 015425 0 ustar guppy guppy .\" To view: groff -man -Tascii eggdrop.1
.\"
.\" Copyright (C) 1999 - 2008 Eggheads Development Team
.\"
.\" This file is free software; you can redistribute it and/or modify it
.\" under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful, but
.\" WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
.\" General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program; if not, write to the Free Software
.\" Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
.\"
.\" As a special exception to the GNU General Public License, if you
.\" distribute this file as part of a program that contains a
.\" configuration script generated by Autoconf, you may include it under
.\" the same distribution terms that you use for the rest of that program.
.\"
.\" Originally by Robey Pointer, redone by rtc
.\" * 1999-11-08 rtc A line wasn't displayed
.\" * 2000-10-07 Fabian Updated and slightly re-organized.
.\" * 2004-08-08 Wcc Updated.
.\"
.\" $Id: eggdrop.1,v 1.21 2008-02-16 21:40:59 guppy Exp $
.TH eggdrop 1 "August 2004" "Eggheads Development Team" "IRC Tools"
.SH NAME
eggdrop \- an IRC bot
.SH SYNOPSIS
.B eggdrop
.RB [ options ]
.RB [ config-file ]
.SH DESCRIPTION
.B Eggdrop
is the World's most popular Internet Relay Chat (IRC) bot; it is freely
distributable under the GNU General Public License (GPL). Eggdrop
is a feature rich program designed to be easily used and expanded upon by both
novice and advanced IRC users on a variety of hardware and software platforms.
.PP
An IRC bot is a program that sits on an IRC channel and preforms automated
tasks while looking just like a normal user on the channel. Some of these
functions include protecting the channel from abuse, allowing privileged
users to gain op or voice status, logging channel events, providing
information, hosting games, etc.
.PP
One of the features that makes Eggdrop stand out from other bots is module and
Tcl scripting support. With scripts and modules, you can make the bot preform
almost any task you want. They can do anything from preventing floods to greeting
users and banning advertisers from channels.
.PP
You can also link multiple Eggdrop bots together to form a botnet. This can
allow bots to op each other securely, control floods efficiently, and even
link channels across multiple IRC networks. It also allows the Eggdrops share
user lists, ban lists, exempt/invite lists, and ignore lists with other bots
if userfile sharing is enabled. This allows users to have the same access on
every bot on your botnet. It also allows the bots to distribute tasks such as
opping and banning users. See doc/BOTNET for information on setting up a botnet.
.PP
Eggdrop needs a config file to run. For an example, have a look at
.B eggdrop.conf
which is distributed with Eggdrop.
.SH OPTIONS
.TP
.B \-h
Display a list of command-line options.
.TP
.B \-n
Don't background. Normally, Eggdrop will move itself into the background when
you start it up, meaning you'll get another shell prompt, and you can do other
things while the bot is running. With \-n, you won't return to the shell prompt
until the bot exits (which won't normally happen until it's killed). By default,
\-n will send all log entries to the console.
.TP
.B \-nt
Don't background, use terminal. This is just like \-n, except that instead of
seeing log entries, your console will simulate a DCC chat with the bot.
.TP
.B \-nc
Don't background, show channel info. This is just like \-n, except that instead
of seeing log entries, every 10 seconds your screen will clear and you will see
the current channel status, sort of like "top".
.TP
.B \-m
Create userfile. If you don't have a userfile, this will make Eggdrop create
one and give owner status to the first person that introduces himself or
herself to it. You'll need to do this when you first set up your bot.
.TP
.B \-v
Show version info, then quit.
.SH SIGNALS
.TP
.B SIGCHLD
This signal is ignored by Eggdrop and can be used to determine whether it's
running or not.
.TP
.B SIGTERM
Depending on die-on-sigterm being set to 0 or 1 in the config file,
Eggdrop will save its user and channel file and/or die.
.TP
.B SIGHUP
Depending on die-on-sighup being set to 0 or 1 in the config file,
Eggdrop will rehash (reload its config file) or die.
.SH "ENVIRONMENT VARIABLES"
.TP
.B EGG_LANG
This variable can be set to the language in which you want Eggdrop to speak
to you. It defaults to English, but German, French, Finnish, and Danish
are supported, too.
.TP
.B EGG_LANGDIR
Specifies the directory where all your language files are stored.
The default is ./language.
.SH "SEE ALSO"
irc(1),
ircII(1),
tclsh(1),
ircd(8)
.PP
There is extensive
.B online documentation.
Once you get the bot running, open a DCC chat with it, and type:
.B .help
.PP
In addition, the files in the \fBdoc/\fR directory provide \fBdetailed
information\fR about how Eggdrop works and how to use it.
.SH AUTHORS
Written by Robey Pointer, the Eggheads Development Team and various
others. See the \fBdoc/AUTHORS\fR file for all who contributed and the
.B doc/UPDATES1.6
file for further details.
.SH "REPORTING BUGS"
See \fBdoc/BUG-REPORT\fR.
.PP
Bugs can either be reported directly to BugZilla, at
\fBhttp://bugzilla.eggheads.org\fR, or via e-mail to <\fBbugs@eggheads.org\fR>.
.SH COPYRIGHT
Copyright (C) 1997 Robey Pointer
.br
Copyright (C) 1999 - 2008 Eggheads Development Team
.PP
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
.PP
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
.PP
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place - Suite 330, Boston, MA 02111-1307, USA.
.\" end of man page
eggdrop1.6.19/doc/TEXT-SUBSTITUTIONS 0000664 0000764 0000764 00000003522 10755654150 015651 0 ustar guppy guppy $Id: TEXT-SUBSTITUTIONS,v 1.10 2008-02-16 21:40:56 guppy Exp $
Textfile Substitutions
Last revised: March 08, 2002
_____________________________________________________________________
Textfile Substitutions
These %-variables can be inserted into help files, the banner, the MOTD,
and other text files. There are four variables that can be used to format
text:
%b display bold
%v display inverse
%_ display underline
%f display flashing via telnet; bold underline via IRC
These variables will be interpreted by Eggdrop and replaced by their
respective values:
%B bot's nickname (i.e. "LamestBot")
%V current Eggdrop version (i.e. "eggdrop v1.6.19")
%E long form of %V (i.e. "Eggdrop v1.6.19 (C) 1997 Robey Pointer (C) 2008 Eggheads Development Team")
%C channels the bot is on (i.e. "#lamest, #botnetcentral")
%A whatever is set in the config file by 'set admin'
%n whatever is set in the config file by 'set network'
%T the current time (i.e. "15:00")
%N the current user's nickname (i.e. "Robey")
%U the current operating system the bot is running on
%% a percent sign ("%")
You can also encode messages which can only be read by people
with certain flags:
%{+m}
Only masters would see this.
%{-}
%{+A}
Only people with the user flag A see this.
%{-}
%{+b}
This is only displayed to users doing a remote '.motd' from another bot.
%{-}
%{+|m}
Only channel masters would see this.
%{-}
Other variables:
%{cols=N} start splitting output into N columns
%{cols=N/W} same as above, but use a screen width of W
%{end} end columnated or restricted (i.e. %{+m}) block
%{center} center the following text (70 columns)
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/KNOWN-PROBLEMS 0000664 0000764 0000764 00000002176 10755654150 015111 0 ustar guppy guppy $Id: KNOWN-PROBLEMS,v 1.20 2008-02-16 21:40:56 guppy Exp $
Known Problems
Last revised: April 16, 2003
_____________________________________________________________________
Known Problems
Things that are broken, but aren't getting fixed anytime soon:
* Non-working alarm(10) in Linux (calls to gethostbyaddr/name() have
blocked for long periods when bind/named doesn't resolve quickly, and
the alarm does not interrupt it).
Note: This should now work if you use the dns module.
* High-bit characters are being filtered from channel names. This is a
fault of the Tcl interpreter, and not Eggdrop. The Tcl interpreter
filters the characters when it reads a file for interpreting. Update
your Tcl to version 8.1 or higher.
* Version 8.1 of Tcl doesn't support unicode characters, for example, è.
If those characters are handled in a script as text, you run into errors.
Eggdrop can't handle these errors at the moment.
_____________________________________________________________________
Copyright (C) 2003 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/PARTYLINE 0000664 0000764 0000764 00000004233 10755654150 014337 0 ustar guppy guppy $Id: PARTYLINE,v 1.12 2008-02-16 21:40:56 guppy Exp $
The Party Line
Last revised: December 31, 2001
_____________________________________________________________________
The Party Line
The most important way you will communicate with your bot is through
the party line. The party line is accessible via DCC chat or telnet.
It's pretty much just a miniature, lag-less IRC (see doc/BOTNET), but
it also consists of a console through which you can watch channel
activity and give commands.
To enter the party line, DCC chat or open a telnet connection to your
bot. It should ask for your password if you've set one. If you don't
have one set, use the /msg PASS command to set one.
The party line is actually split up into 200,000 "channels". The console
is available from each channel, but you can only talk to people who are
on your current channel (just like IRC). Channel 0 is the main party
line, while others are typically reserved for private conversations.
Channels 1-99,999 are botnet wide chat channels and any user joining
that channel anywhere on the botnet will be able to chat with you.
Channels *0-*99,999 are local channels (only people on the bot you
are on can chat with you on these channels).
Console commands start with a dot (.), similar to the slash (/) used
for IRC commands. At any time, you can type ".help all" to get a list
of all possible commands. To find out what a command does, use ".help
". For example: ".help channel".
When you're on the party line, anything you type that doesn't start with
a dot (.), a comma (,), or an apostrophe (') is considered to be
broadcast to everyone else, just like talking on a channel. A message
prefixed with a comma goes only to other bot owners (+n). A message
prefixed with an apostrophe is sent to all users on the local bot only.
You can change channels with the ".chat" command or even leave all
channels with ".chat off".
_____________________________________________________________________
Copyright (C) 2002 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/TRICKS 0000664 0000764 0000764 00000004022 10755654150 013763 0 ustar guppy guppy $Id: TRICKS,v 1.7 2008-02-16 21:40:56 guppy Exp $
Eggdrop Tricks
Last revised: December 08, 2003
_____________________________________________________________________
Eggdrop Tricks
Here are some little tricks that you may or may not know about, which aren't
documented in other areas.
- You can rename a built-in command by binding over it. To rename '.status'
to '.report', you'd do:
unbind dcc - status *dcc:status
bind dcc m report *dcc:status
The first line removes the built-in binding on '.status', and the second
line binds '.report' to the built-in status function.
- If you don't want your logfiles to be deleted after two days and don't
want the bot to create a new logfile each new day, then set 'keep-all-logs'
to 0 and 'switch-logfiles-at' to 2500 in your bot's config file to make it
keeping one logfile all the time. This is not recommended on high traffic
channels.
- You can modify Eggdrop's output in the partyline, kick messages, and other
texts by editing core.english.lang in the language directory.
- You can export parts of your config file to separate files. For example,
if you have several config files which differ from themselves only by
the nickname and the used servers, you can export them to an own file
and link it with the 'source' Tcl command, similar to a script. The
advantage of this is that you have to edit/upload only the small file
instead of the big one. This technique is also useful if you want to
maintain the same channel settings, etc accross your botnet.
- You can use variables in your config file, since it's really just a normal
Tcl file. For example, you can set 'userfile' and 'chanfile' to
"yourbot.user" and "yourbot.chan" using the following method:
set myvar "yourbot"
set userfile "$myvar.user"
set chanfile "$myvar.chan"
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/UPDATES1.6 0000664 0000764 0000764 00000206137 11002271652 014315 0 ustar guppy guppy $Id: UPDATES1.6,v 1.642 2008-02-18 22:25:33 guppy Exp $
Eggdrop Changes (since v1.6.0)
_____________________________________________________________________
Eggdrop Changes
UPDATES files from versions previous to Eggdrop v1.6.0 can be found at:
ftp://ftp.eggheads.org/pub/eggdrop/UPDATES/
1.6.19 (18 April 2008):
- Update the recommended TCL version to 8.5
* Patch by: guppy
- Updated Copyright dates
- added [sL] and thommey to the AUTHORS file
* Patch by: guppy
- load blowfish by default
* Patch by: guppy
- added a TCL to handle the PONG : junk on some EFnet servers
* Patch by: [sL], guppy
- add a simple TCL to handle the PASS junk on some Undernet
servers
* Patch by: guppy
- add support for chanmode +T
* Patch by: Thomas "thommey" Sader
- CTCP parsing was broken by the servmsg.c buffer overflow patch
* Patch by: Thomas "thommey" Sader
- Fixed a couple of typos in the FEATURES file.
* Patch by: Tomas Szaniszlo
- Fixed two buffer overflows in servmsg.c (CVE-2007-2807).
* Found by: Bow Sineath - Patch by: Nico Golde / Wcc
- Fixed compatibility problems with certain time_t implementations.
* Found by: various - Patch by: Tothwolf
- Complete raw traffic wasn't getting logged in some cases; only the raw
command itself was. Fixed.
* Patch by: mrBuG
1.6.18 (09 July 2006):
- Look for Tcl in /lib64 and /usr/lib64.
* Patch by: Kuja
+ RC1 released on April 3rd, 2006.
- Fixed a type conversion problem in snprintf.c causing Eggdrop to not
compile on OSF1.
* Found by: Joker - Patch by: Wcc
- Detect NetBSD Tcl in /usr/pkg/lib and /usr/pkg/include.
* Found by: mish - Patch by: Wcc
- Fixed possibility of referencing a NULL pointer in rembot().
- Added a missing param cast for dcc_table.timeout.
- Fixed a memleak / other nasty stuff when MODES_PER_LINE_MAX != 6.
- Fixed putlog() of an uninitialized (and incorrect) variable in
dcc_telnet_hostresolved().
* Patch by: lordares
- Valgrind doesn't bitch about init_uptime() now.
* Patch by: Wcc
- Dns.mod should compile on Mac OS X now. Thanks to Netscrape @ EFNet for
testing.
* Found by: various - Patch by: Wcc
- Corrected nat-ip setting documentation.
* Found by: BarkerJr - Patch by: Wcc
- Don't allow realname to be blank or whitespace.
* Found by: Jesse M - Patch by: BarkerJr / Wcc
- Fixed an error in channel get. You can now, correctly, do a channel
get #channel stopnethack-mode.
* Found by: Chris Northwood - Patch by: Wcc
- The pushmode command should work properly for bans now.
* Patch by: thommey
- Apparently we broke lastbind.
* Found by: bUrN - Patch by: thommey
- Request topic on channel reset.
* Found by: De Kus - Patch by: Darko
- Fixed a situation where noshare could be set to 1 and never
restored.
* Patch by: lordares
- Fixed a socklist leak in net.c.
* Patch by: lordares
- Hopefully fixed dns lockups.
* Found by: various - Patch by: Sven Trenkel
- Fixed remote note bug in add_note() that was introduced in 1.6.17.
Fixes Bugzilla Bug # 433 "Remote Notes Always Say User is Offline"
* Found by: alex323 - Patch by: Tothwolf
- Completely rewrote check_tcl_bind().
- Added inline check_bind_flags() for flag checking for check_tcl_bind().
- Added inline check_bind_match() for match checking for check_tcl_bind().
- Rewrote trigger_bind() and made it inline for check_tcl_bind().
- Fixed pointless calling of nmalloc() and nfree() for ContextNote
in trigger_bind() when DEBUG_CONTEXT isn't defined.
- Moved findidx() from tcl.c to dccutil.c.
- Moved findanyidx() from tclhash.c to dccutil.c.
- Moved CHECKVALIDITY from tclhash.h to tclegg.h.
- Added CHECKVALIDITY checks to builtin_dcc() and builtin_fil().
- Moved CMD_LEAVE from cmdt.h to tclegg.h.
- Changed NULL to CMD_LEAVE for partyline quit in cmds.c.
- Renamed BIND_EXEC_BRK to BIND_QUIT.
- Fixed misc typos.
* Patch by: Tothwolf
- Added support to MSGM, PUBM, NOTC, and WALL binds to support bound
procs returning 1 to prevent logging of the trigger message text.
Fixes Bugzilla Bug # 334 "msgm bind return values"
- Added BIND_STACKRET bit mask and support for stacked bind return values
to check_tcl_bind(). This allows check_tcl_bind() to check if any
stacked bound procs return 1 while allowing all matching stacked binds
to be processed. Previously if BIND_WANTRET was used to check the
return value of stacked binds, only the first match would be triggered.
- Modified irc.mod gotmsg() function to trigger PUBM binds before
triggering PUB binds. MSGM and MSG binds already worked this way.
- Modified irc.mod gotmsg() function to allow a message to trigger both
PUBM and PUB binds. Previously if a message triggered a PUB bind, any
PUBM binds that might match the message text would not be triggered.
Fixes Bugzilla Bug # 351 "bind pub hogs pubm"
- Added exclusive-binds setting and code to gotmsg() functions to
allow MSGM and PUBM binds to be exclusive of MSG and PUB binds.
- Fixed logging for WALL bind. It had been broken since it was
originally implemented in eggdrop-hayes. Wallops messages were always
logged regardless of the return value of a bound proc. Returning '1'
from a bound proc now causes Eggdrop to not log the Wallops message.
* Patch by: Tothwolf
- Check for Tcl 8.5 before older versions.
* Patch by: Tothwolf
- Use flagrec_eq() instead of flagrec_ok() in help_subst()
since lower flags are automatically added now.
* Patch by: Tothwolf
- Check for bot's nick and user@host earlier in detect_flood()
and detect_chan_flood().
* Patch by: Tothwolf
- Allow wildcard matching and stacking for note binds.
* Patch by: Tothwolf
- Use CHANMETA to define valid channel prefixes in gotmsg().
* Found by: zathras3 at hotmail.com - Patch by: Wcc
- Fix for problems created when loading long user-defined channel setting
names from the channel file.
* Patch by: Stream
- Help file update related to sharing.
* Patch by: Shawn888, slennox
- Fix for randint() on Solaris / SunOS.
* Patch by: Mikael Hedberg
- Updated Copyright Dates.
* Patch by: Paladin
- Fixed 3 invalid reads in notes.c.
* Patch by: rush at winkey.oompah.org
- Corrected a few of the error messages in neterror().
* Found by: Steven Nikkel - Patch by: Wcc
- Corrected the order of our search paths for Tcl. This should help stop
version mismatches between the headers and libraries.
* Patch by: CoderX2
1.6.17 (22 August 2004):
+ Final released on August 22nd, 2004.
- Lots of doc updates.
* Patch by: dollar, Wcc
+ RC1 released on August 2nd, 2004.
- Added a "stripcodes" Tcl command. See doc/tcl-commands.doc for more
information.
* Patch by: BarkerJr
- Bot idx's should be considered valid to tcl_valididx.
* Found by: SteppenWolf - Patch by: Wcc
- Always try to detect shared Tcl libraries before static ones.
* Patch by: Wcc
- We now correctly differentiate the +l user flag from the +l bot flag.
* Found by: Joker - Patch by: Wcc, darko``
- Cleaned up modules.c and the module configure stuff quite a bit.
* Patch by: Wcc
- Detect Tcl in $HOME/lib and $HOME/tcl/lib first, as to make it easier
to allow users to override the system's Tcl version.
* Found by: various - Patch by: Wcc
- We now support module loading under Darwin (Mac OS X) and NeXT Step.
* Found by: various - Patch by: Wcc
- Don't try to call tcl_notes if the notes module isn't loaded.
* Found by: Chris Northwood - Patch by: lordares
- Show a more descriptive error message when a listen socket can't be
opened.
* Found by: various - Patch by: Wcc
- Fixed Tcl encoding issues with .tcl and .set.
* Found by: fabulous, Miguel Ventura - Patch by: CoderX2
- Added a set of Finnish language files and a Finnish MOTD.
* Patch by: Mikko Vester
- time_t isn't unsigned, and therefor %lu should not be used as a
conversion specifier.
* Patch by: lordares
- Fixed a gcc warning in dcc.c.
* Patch by: BarkerJr
- Added support for Quakenet channel modes.
* Patch by: thommey
- Removed an invalid killsock() in dcc.c.
* Patch by: lordares
- Fixed extra spaces being written to chan file.
* Patch by: lordares
- Reworked 'make config' / module configure process.
* Found by: various - Patch by: Wcc
- Op (+o) implies halfop (+l) now.
* Patch by: darko``
- Cleaned up and optimized rmspace() and fixfrom().
* Patch by: Sup
- Updated recomended Tcl version to 8.4.6.
* Patch by: Wcc
- Fix behavior of the BCST bind. BCST is now correctly triggered for
dccbroadcasts, as well as when a bot "says" something on a channel.
See doc/tcl-commands.doc for more information.
* Found by: FireEgl - Patch by: Wingman
- Remove some unneeded casts.
* Patch by: darko``
- Fixed performance issues with mv/cp when a lot of files are in the
file area.
* Found by: fabulous - Patch by: Wingman
- Typo in doc/COMPILING-FAQ. It's LD_LIBRARY_PATH, not LB_LIBRARY_PATH.
* Found by: NoPleX - Patch by: Wcc
- Fix a possible issue with ident code.
* Found by: various - Patch by: darko``
- Don't let .tcl mkdir create duplicate filedb entries.
* Found by: fabulous, Ze - Patch by: Wingman
- Fixed a compile error related to varargs when using old Tcl versions.
* Found by: Thomas Neumayer - Patch by: Wcc
- Fixed a compile error on systems that don't have socklen_t.
* Found by: Brad Edwards - Patch by: Wcc
- Suppress configure warnings on systems that use newer versions of GNU
coreutils.
* Patch by: Wcc
1.6.16 (31 May 2004):
+ Final released on May 31, 2004.
- Added back a missing alarm call (removed accidentally with IPv6).
* Patch by: TaKeDa
- Doc updates.
- Help file improvements.
* Patch by: Wcc
- Use high-order bits for random numbers.
- Cleaned up and optimized delay code in share.c.
* Patch by: Sup
- Change Undernet nicklen to 12, as it has been changed on Undernet.
* Patch by: Wcc
- Fix text sent to the server being terminated with "\x00\x0d\x0a"
instead of just "\x0d\x0a".
* Patch by: Sven
- Small fix to transfer.mod lang files.
* Patch by: winkey
- More HP ANSI C fixes.
* Patch by: Wcc
- Fixed a few warnings. We also should compile correctly with HP's ANSI C
compiler now.
* Patch by: stdarg
+ RC1 released on April 9th, 2004.
- Missing \n on language entry in notes.mod.
* Found by: dollar - Patch by: Wcc
- Detect Tcl 8.5.
* Patch by: Juvenal
- Fixed a crash in savechannels/loadchannels.
* Found by: Stu Jones - Patch by: TaKeDa
- Fixed a crash in putlog() that appears when timestamps are turned off.
* Patch by: darko``
- Rewrote isowner() completely.
* Patch by: Sup
- Better support for non-standard "op" prefixes (UnrealIRCD, etc.).
* Patch by: Sven
- Terminate wire_bot[] in wire.mod, fixing a crash.
* Patch by: Bryan Dolan
- Fixed a segfault in dcc.c.
* Patch by: daimonic
- Various crash fixes:
- Fixed _wild_match() to not try to read before the beginning of the
mask.
- Small fix to correct_handle().
- queue_server() wasn't adding messages to the queue correctly.
- Fixed errors reported by valgrind in n_free() and notes module.
- Fixed crash in dcc_chat regarding the filt bind.
* Patch by: stdarg
- Don't always set SHARE_OFFERED status in check_expired_tbufs().
* Patch by: Luca De Roberto, Dania Stolfi, Giuseppe Caulo
- Cosmetic fixes to notes.mod.
* Found by: BarkerJr - Patch by: Wcc
- Don't check the bot's own user record when looking for a hub/althub to
link to.
* Found by: poptix - Patch by: lordares
- Portibility and build process fixes/updates.
* Patch by: Wcc
- Mac OS X fixes.
* Found by: hobb - Patch by: Wcc
- Truncate passwords at 30 chars instead of 15.
* Found by: ting - Patch by: Paladin
- Be aware of 'cp/mv * this.file' possibility in filesys.mod.
* Found by: fabulous - Patch by: stdarg
- Allow any user to .whois their own handle.
* Found by: ZeveRoaRe - Patch by: Wcc
- Added a new EVNT type, "userfile-loaded", which is called after the bot's
userfile has been loaded.
* Found by: wanderer - Patch by: darko``
- Fixed a few places where chan->name was being used instead of
chan->dname.
* Found by: wanderer - Patch by: Wcc
- hand2idx works for bots now
* Found by: BarkerJr - Patch by: Wcc
- .stick/.unstick now works for channel masks
* Patch by: Sven
- Properly escape IPv6 masks in write_exempts() and write_invites().
* Found by: J Lehto - Patch by: TaKeDa
- Fix for nonworking 'head -1' in GNU Coreutils 5.0.
* Patch by: Tothwolf
- ctype.h is*() functions are apparently unsafe unless recasted.
* Found by: Sup - Patch by: Wcc
- Cosmetic updates to the build process.
* Patch by: Wcc
- Exported oatoi() to modules since someone somewhere might find it useful.
* Patch by: Wcc
- Fixed a bug preventing masks starting with numbers from being
removed/stuck/unstuck.
* Found by: BarkerJr - Patch by: Wcc
- Fixed the very very horrible handling of arguments by tcl_dnslookup().
* Found by: wanderer - Patch by: KuNgFo0/Wcc
- Don't rejoin +inactive channels when kicked from them. This can be caused
by bot-server connection lag or full queues.
* Patch by: BarkerJr/Eule
- uname fix in msg_status; OS should display on freebsd now.
* Patch by: Wcc
- Fixed a buffer overrun in msg_status().
* Patch by: Wcc
- Fixed a getdesc segfault when a file has no desc.
* Found by: R. Ramos - Patch by: dw
- Removed IPv6 for now, will be implemented in a more proper way in an
upcoming release.
* Found by: Various - Patch by: Wcc
- Cleaned up "illegal channel option" Tcl errors.
* Patch by: BarkerJr
- .chanset accepts '*'; reflect in the docs.
* Found by: Darki - Patch by: Wiktor
- Fixed bug 365 (missing call to check_this_user in tcl_setuser).
* Found by: T. Salomäki - Patch by: Eule
- Description: .-ban number #channel now works correctly.
* Found by: R. Brooklyn - Patch by: Sven
- A few minor fixes to fakemode kicks.
* Patch by: Sven
- Made appropriate changes to accommodate for EFnet's implementation of
exempts and invites.
* Patch by: Wcc
- bind documentation updates.
* Found by: |SmAsH| - Patch by: Wcc
- Exported strip_mirc_codes() and check_ansi() from dcc.c to modules.
* Found by: BarkerJr - Patch by: Wcc
- H_notc used wrong handler
* Patch by: Paul E./stdarg
- Check to make sure file we want to send exists when resuming a transfer.
* Found by: fbs - Patch by: stdarg
- Removed unnecessary quiet_reject checks in msg_ident() that have been
present since 1.3.0+bel17.
* Patch by: Tothwolf
- Fixed exporting of MD5 functions to modules.
* Patch by: Paladin
- The binary is no longer stripped unless ./configure --enable-strip
is used.
* Found by: Various - Patch by: stdarg
- Small fix to n_realloc().
* Patch by: tchaika
- Fixed output of tcl_duration to not return extra spaces.
* Found by: wanderer - Patch by: Wcc
- cmd_topic works for halfops now.
* Patch by: stdarg
- Fixed cmd_(de)voice logic.
* Found by: Various - Patch by: stdarg
- Fixed an uninitialized variable in putlog().
* Found by: Various - Patch by: TaKeDa
- New UPDATES1.6 format to allow for longer found by/patched by feilds and
less wrapping of description.
* Patch by: Wcc
1.6.15 (04 May 2003)
Found by Fixed by What...
MORA Wcc fixed a patch.h compile error
1.6.14 (04 May 2003)
Found by Fixed by What...
poptix/ added support for the IPv6 protocol
Wcc
guppy fixed a couple of bugs in autobotchk and made the output
cleaner
PPSlim updated the logic of .fixcodes
KuNgFo0 added a missing cast in tcl_rand
PPSlim fixed getops timer handling
Paladin Wcc fixed access checking in -ban, -exempt, and -invite
TaKeDa fixed a Tcl_Merge memleak
M. Koszik fixed a crash related to the cd command in filesys.mod
Eule channel keys are now handled correctly in flush_mode()
Sven locking a channel key/limit now enforces it from being
changed as well as unset
Sven don't bounce our own modes
Sven q|q users can no longer obtain a channel voice, regardless
of +autovoice
Eule users with appropriate flags can now halfop and voice
themselves
Sven -ban now works for channel bans
Sven -ban now removes the ban from the channel
Wcc cleaned up the output of .status
Felix added a german language file for the transfer module
Wcc show a meaningful error message when adding an invalid
channel with .+chan
Wcc don't use memcpy() and memset() directly
Sven fixed a crash that can happen when the serverlist contains
null strings
Sven/ added NO_HALFOP_CHANMODES and NOHALFOPS_MODES defines to
Wcc chan.h to allow halfop-related mode behavior to be changed
on IRCd's that implement halfops differently
Shane0 Wcc fixed a compile error on Tru64 UNIX
Sven the WASHALFOP flag now works correctly
fbs Wcc kill a transfer connection after sending a
TRANSFER_DCC_IGNORED notice to a user
PPSlim flood-pub should be flood-chan when using 'channel get'
BarkerJr '~' and '&' are now correctly recognized as a meaning a
user has ops on a channel
winkey fixed uhost buffer length
winkey Wcc don't use help queue for dcc sends or gets
Wcc case-changes should be traced when the 'nick' Tcl variable
is modified
TheAvatar added a set of Danish language files
Wcc fixed an out-of-bounds error in delignore()
Tothwolf Wcc argument checking for cmd_comment() and cmd_botaddr() was
incorrect
Wcc GLOBAL_CHANS is now used where it should be to make
changing the number of botnet channels easier
Wcc fixed a logic problem when reversing in got_[op|halfop]()
|SmAsH| Wcc user-punishing and tcl_maskhost nor use matching banmasks
regardless of strict-host
Wcc stdarg fixed a few memory leaks in the filesystem module
guppy Wcc updated recomended Tcl version to 8.3.4 and changed Tcl's
url to tcl.activestate.com (also updated autoconf to 2.57)
Tothwolf Wcc merged use-console-r and debug-output into one new setting
named raw-log
Tothwolf Wcc backported user-defined channel strings from 1.7
Wcc removed enable-simul
Wcc fixed a cosmetic problem with cmd_pls_bot
Cosmo Wcc/ fixed a crash in u_delban (bug 267) caused by trying to
BarkerJr strcpy to an initialized pointer char
fbs Wcc use movefile() instead of copyfile() and unlink() when
moving files in filesys.mod
Wcc changed EFnet's max-bans/max-modes to 25
Tothwolf Wcc moved debug-output and use-console-r to the logging section
of the config file where they belong
Tothwolf Wcc don't tell users to /msg the bot hello when they don't have
access if learn-users is disabled
Tothwolf fixed a few header problems with time.h
Wcc cleaned up transfer.mod a bit
M. Koszik several misc code cleanups and bugfixes
Wcc files copied to /tmp from file transfers are now deleted
if the transfer connection is killed (makes resends and
resumes function correctly)
BarkerJr Wcc ignores are now saved if channels.mod is not loaded
fbs fbs/ open file descriptors are now closed when the killdcc Tcl
Wcc command is used on a transfer socket
never/ Wcc unixtime was not increased when eggdrop was blocked during
thommey a series of in-line Tcl commands
lee Wcc exported getchanmode()
various darko`` removed strict-servernames -- $server is now always the
server's realname and $serveraddress is it's server list
entry
BarkerJr bind NICK now gets triggered even if the nickname isn't
found in any channels (i.e. when the bot's nickname changes
before it joins channels)
darko`` fixed parsing of userhosts in gotwall()
reed Wcc updated UnderNet's max_bans to 45
various BarkerJr config file updates
various Wcc/ removed quoting support from wild_match() which fixes several
zip bugs with '\' characters
BarkerJr show who unlinked a bot when unlinked remotely
poptix fixed default setting for the help-path and text-path settings
The_Dawn fixed a problem in cmd_kick()/cmd_kickban() where the
victim's access is checked instead of the user's
Paladin Wcc exported MD5 functions to modules
Wcc exported me_voice() in irc_table
Wcc .say and .act now allow you to send a message to a moderated
channel when the bot has halfop status
1.6.13 (22 November 2002)
Found by Fixed by What...
BarkerJr doc/MODULES updates
stdarg fixed utf-8 handling for config file strings (such as realname)
Souperman added a proc to alltools that returns the ordinal number
for a number
Wcc added support for EMFILE (errno 24 - Too many files open)
in neterror()
MC_8 fixed the list format returned by tcl_channel_info()
Eule don't ban users when not going to kick in refresh_ban_kick()
Eule added a stacking limit for fastdeq
Eule made the modes-per-line limit definable in src/chan.h
BarkerJr [ban/exempt/invite]-time were not being saved to the channel file
Eule Wcc halfops were not honored in flush_modes()
NeoN fixed cosmetic problems with logging in some irc module commands
Mo-Ize exported tell_bottree() to modues
BarkerJr optimized logging functions
various Wcc removed eggdrop.advanced.conf and eggdrop.simple.conf
TaKeDa Eule adding a missing killsock and lostdcc in eof_dcc_send() and
eof_dcc_get()
Wcc fixed the logic in check_this_member()
BarkerJr made the timestamp style definable in src/eggdrop.h
Eule added a missing return in bot_actchan()
various [sL] fixed a problem with 'connect' and 'control' where the script
would abort prematurely
BarkerJr don't "want ops" in modeless (+) channels
guppy Wcc tell the user to set 'my-ip' when hostname self-lookup fails
ridens Wcc improved access checking in -host/+host
Jerome Wcc fixed a possible buffer overflow in raw_dcc_resend_send()
darko`` fixed a missing escape in some regexps in misc/modconfig
[sL] Wcc channel set #chan chanmode $var corrupted $var in Tcl8.x
blaster^ don't log "joined #chan but didn't want to" in certain cases where
the channel was newly removed or set inactive
Wcc cosmetic changes to share_stick_[exempt/invite/ban]
J Lehto TaKeDa msg_key and msg_invite did not work properly for !channels
BarkerJr show the number of hops in .trace's output
Mo-Ize use the proper dynamic lib extention on Mac OSX
Wiktor return 5 from dccsend if the file exists in the temp directory and
copy-to-tmp is enabled
poptix fixed a possible exploit in reaffirm_owners()
KuNgFo0 Wcc/ friends/ops/bots are now correctly unbanned when a ban is set on a
[sL] channel that matches their host
BHAB compile fix for systems that do not support snprintf()
various Wcc/ fixed a bug where if the bot is kicked while channel information is
[sL] still being received, the bot will think it's still on the channel and
not rejoin
ble Wcc removed names parsing, as it causes many problems and was only
added for compatability with an old version of unrealircd
[sL] Wcc more broken dprintf's in irc commands
ble Wcc fixed a broken dprintf in cmd_kick()
Wcc made [ban/invite/exempt]-time a channel int
BarkerJr documentation updates related to the PUBM bind
1.6.12 (26 July 2002)
Found by Fixed by What...
Segfault reverted the sockfix patches from 1.6.11
1.6.11 (26 July 2002)
Found by Fixed by What...
various Wcc need-[limit/invite/unban/key] work now
[sL] fixed a problem with 'connect' and 'control' where the script would abort
prematurely
Wcc improved the logic in cmd_mnsban when specifying what happen to remove and
where to remove it from
Eule fixed cmd_kickban so it works
Wcc/ fixed a bug causing "[HH:MM] !!! OVER MAXIMUM QUEUE" to be
[sL] logged to LOG_SVROUT
Wcc log PINGs/PONGs sent to the server in LOG_SVROUT
guppy some small changes to make eggdrop work with tcl8.4b1 (it won't work with
tcl8.4a1 or a2 anymore though)
dork TaKeDa fixed a crash while doing .kickban -nick
Zart the return values of uname() are now properly checked
Zart added handlen friendly code to various commands (this is a new patch to
replace the handlen friendly patch reverted in 1.6.10
BarkerJr don't show +inactive channels in a remote .who
guppy changed the .status output a bit (includes the name of the config file
now)
guppy Wcc msg_whois should require an argument.
Wcc added support for halfops (channel mode +h)
MaSsKilla Wcc don't allow channels containing commas to be added..
also made an error message more clear
BarkerJr updates to doc/MODULES
Wcc more doc updates
TaKeDa fix for !channels when people quit or change nicks
aXs/ made all the commands use CHANMETA instead of hardcoding channel types
Eule
various stdarg/ added 'channel get ' (backported from 1.7)
Mo-Ize
guppy uptime.mod will not unload now once loaded (this prevents you from
losing your stats on a .restart .. to remove, you have to .die)
guppy uptime.mod now sends the proper pid and also won't send garbage if
the bot currently isn't on a server
Wcc updated slennox's sentinel.tcl to the latest version
guppy Wcc added support for +r on Undernet's ircu 2.10.11
upstream fixed a crash in seen.mod with long channel names
slug added support for the +C channel mode (noctcp) on QuakeNet's ircu
1.6.10 (29 March 2002)
Found by Fixed by What...
(^Baron^) Eule protect(ops|friends) works with +bitch now
guppy reverted the handlen friendly patches
MaSsKilla dw fixed a crash when trying to add an invalid chan using .+chan
various guppy nick2hand didn't return "" on a nick that wasn't in the channel
slennox Wcc fixed a few config file problems
Paladin Wcc chattr's description in tcl-commands.doc was unclear relating to
channel-specific flag changes
NetIrc transfer.french.lang was created
Noyga cmd_who is now languagified! (nice word eh?)
Noyga made it easier to change the number of global partyline channels
MC_8 Wcc more tcl-commands.doc fixes
MC_8 Wcc added some missing command options to tcl-commands.doc
Uwe cd_cmd_table was missing a null entry at the end of the list
1.6.9 (10 March 2002)
Found by Fixed by What...
BarkerJr/ "Detected loop: two bots exist named bot2: disconnecting
Wcc bot3" sounds better than "Detected loop: disconnecting
(bot2): Disconnected bot3".
Wcc/ Added a few channels to the README and readme.html
SiDEWiNDR and made references to other docs in the html files
links to their respective html files.
various Eule modes-per-line is limited to a max of 6 modes per line
Wcc more doc fixes
Wcc removed an extra space from the "Writing channel
file..." message
Amir fixed a problem with uff not adding entries properly
Boing made cmd_channel, cmd_dccstat, cmd_who, cmd_whois, cmd_match handlen
friendly
Amir botlink() now safely copies the linker string
various Eule fixed crashes relating to flushmodes
Wanderer| dw tcl command modules missing in doc/tcl-commands.doc
guppy users with only +x can now only login via dcc chat, they cannot use
telnet
Wcc more documentation updates
Eule/ changed how protectops and protectfriends works a bit:
guppy if the user has either glob +d or chan +d then no protection
protectfriends now only protects +f users
protectops now only protects +m and +o users
various guppy doc/compiling.FAQ now includes info about setting LD_LIBRARY_PATH
Boing guppy fixed +protectops from reopping users with only +f and +protectfriends
from reopping users with only +o
Wcc made a few cosmetic changes to the configure script
Wcc more plural fixes for commands and error messages
Xerxes guppy "channel remove" will not crash the bot anymore if you are removing
the channel for which the bind was called
MC_8 stdarg "channel info" will properly list all user-defined settings
various guppy fixed a problem with modconfig not being found when rerunning
./configure
ITE made modconfig more portable across various bourne shell flavours
Eule removed gban_total, gexempt_total and ginvite_total since they were
unused
TaKeDa/ configure should recognize a dynamic tcl library now on cygwin
ITE
dw guppy fixed a crash that would happen when we disconnected from our server
but did not reconnect to a server before we checked if a server was
stoned
BHAB lets compile on solaris now
BarkerJr TaKeDa update a bot's laston info when the bot unlinks
Wcc more cosmetic fixes to src/cmds.c
Eule small cosmetic fix to cmd_store
TaKeDa changed how kicking flooders works when -dontkickops
flood-kick: don't punish people with +mf
flood-deop: don't punish people with +mf
other floods: don't punish people with +f
TaKeDa fixed a bug where revenge-mode > 1 wouldn't kick users if dontkickops
was set
Eule missing sanity check in check_this_member
Paladinz guppy ircu2.10.11 properly formats PART messages; however, eggdrop did not
understand them
Wcc fixed a couple of cosmetic problems in cmd_pls_user
Wcc do not eval init-server on rehash since this variable is used for
performing tcl commands on a succesful server connection
MaSsKilla dw Couldn't introduce new users through telnet if a
handle named "new" existed.
SiD3WiNDR Wcc MISC_USERFCREATE1 should use origbotname instead of botnetnick
Wcc added a warning about allow-resync in the config file
TaKeDa prevent botnet flooding when adding ignores which already exist
Wcc some docs were not getting installed correctly
Wcc [pass] should be in usage notices
Wcc more cosmetic changes
Wcc a bunch of little cosmetic changes
Wcc more doc updates
blaster^ Eule fixed a memleak when adding users
ITE more 64bit arch fixes
BarkerJr lets log remote botinfo calls
blaster^
BarkerJr update a bot's laston info when the bot links
jedis guppy some more remote boot fixes
|^Raven^| stdarg/ hand2nick, nick2hand, handonchan, and chanlist might not always return
guppy that a user is known even if we know they are -- this has been fixed
1.6.8 (2 January 2002)
Found by Fixed by What...
PPSlim guppy removed a legacy tcl hack that probably no one but old eggdrop users
knew about
Tothwolf more copyright updates and documentation changes
blaster^ raised the kick reason length to 307 for dalnet
Wcc fixed some cosmetic bugs relating to either 1 user or X users, stuff
like that
Wcc updated slennox's sentinel.tcl to the latest version
Wcc updated the html docs to be in sync with the text ones
Wcc updated the copyright info for 2002
guppy removed the checks for ips with 0 or 255 in them
various guppy when a leaf is thinking that uses a different HANDLEN then ours log
it and then drop the connection instead of just silently dropping
the connection
guppy changed checkmodule to loadmodule in the configs (checkmodule still
works for backwards compat)
guppy renamed nick-len to nicklen (nick-len still exists for backwards
compat) to follow the standard that handlen uses
Wcc updated doc/BOTNET and added doc/first_script.txt
Wcc removed some old debugging information
various zip prevent the bot from losing channel flags when allow-resync is set
Wcc some small cosmetic changes
Wcc added handlen for scripters to get the current length of handles from
src/eggdrop.h (this setting does not adjust handle lengths however)
BarkerJr cmd_whom now displays a sum of all the partyline users
Tothwolf copyright updates
jedis guppy fixed tcl_boot when kicking someone on another bot without a reason from
screwing up the boot reason
Wcc max-modes and max-modes are automatically set by net-type now
guppy origbotname was being wrongly used in some locations
guppy fixed a bug that prevented MODE from being sent when we get ops on a
channel to retrieve the proper channel key
VYOinlove guppy don't try to open a dcc chat when people do /ctcp chat without a
a password set, instead send an error message
quest/ fixed a problem on osx with files being shown as bytecount/-1
stdarg
BarkerJr log the remote .who command
BarkerJr fixed a small bug in guppy's last patch
various guppy tcl_botisvoice, tcl_botisop, tcl_botonchan, tcl_onchansplit, tcl_isop,
tcl_isvoice, and tcl_handonchan all take channel as an optional argument
now
Abraham guppy tcl_onchan can now be used without a channel to check all the bot's
channels
various stdarg/ added tcl_traffic (a modified copy of stdarg's original patch)
guppy/
Tothwolf guppy .servers doesn't trunicate server names anymore
Wcc guppy made cmd_modules work locally as well as remotely
guppy made show_banner reset the help_subst arguments like show_motd does
and if the motd isn't a regular file, just return instead of giving
an error like show_banner does
guppy tcl_jump could easily crash the bot
various guppy tcl_pushmode now accepts any irc modes instead of the standard ones
guppy made tcl_chanlist (when matching chanflags), tcl_handonchan, and
tcl_nick2hand much faster
Eule a bunch of small fixes to gotjoin, gotkick, got367, a
modes-per-line calcuation, and to include_lk
Wcc yet more documentation updates
ziffie BHAB Documentation doesn't cover how to connect to servers with
a password; documentation added to sample config files.
|^Raven^| guppy made tcl_hand2nick _a lot_ faster
Eule more membercheck fixes for nick bans, nick +k users, -user, and
-host.
BarkerJr only show fake alerts once every 10 seconds to prevent flooding
DFrank guppy small make install bug related to doc cleanups
Wcc major cleanup of config files and related documents
BarkerJr updated doc/MODULES a bit
RandomAPB Wcc show the user port as users instead of telnet and the bot port
as a bot port instead of a relay port
various stdarg small fix to the notes module
BarkerJr updated the uptime url
1.6.7 (7 December 2001)
Found by Fixed by What...
guppy don't show status_log if we don't have a server
Wcc ITE lets make eggdrop work on cygwin again
Wcc guppy fixed a mixed up transfer language entry that caused a crash
various nakee added '--disable-cc-optimization' to disable -O2 flags
Abraham Eule added a missing channel membercheck in a few commands
S7reaM guppy tcl_newban had some silly guppy logic which caused a crash
Noyga added French language files for: assoc, console, notes
Noyga added %n for $network to the list of motd text substitutions
nakee added language support to transfer.mod
ClubCX guppy got rid of bad language
poptix rebound some commands to proper bindings (relay, bottree, vbottree)
ITE made our build system work with newer autoconf versions
guppy make the default bot a bit more secure in regards to
the ability to execute tcl commands from the partyline
various guppy tcl_newban and tcl_newchanban didn't always add the bans
Wcc cmd_optimise is now cmd_optimize
Hanno fixed testip in alltools.tcl
Wcc some more doc changes
Eule actually fixed stopnethack and a wasop bug
various Wcc added support for dalnet's +M chanmode
Lam fixed +a for !channels
TaKaDa fixed tcl_botattr
various stdarg fixed a bogus memory leak
guppy removed some leftovers in uptime.mod
blaster^ poptix yet ANOTHER stupid bug. (crash in .-chan)
guppy minor changes to autobotchk (v1.09.1)
TaKeDa stdarg fixed a small crash in notes.mod
TaKeDa fix 'setuser PASS' from crashing
boro bhab stop_nethack_mode 4 oddity when a +a bot returns from a
split getting a -o+o (double negating mode)
poptix Testing some better socket code (++)++
Wcc more typo fixing in the config files
BarkerJr more typo fixes
Wcc fixed several tons of spelling errors (really)
guppy stdarg tcl_chattr now lets you remove global flags
various stdarg fixed some issues with utf8 dealing with how we handle tcl
arguments
Wcc small fix to let tcl_adduser accept only a handle
FeaRx/ Sup show `#channel is active but has no ops :(' only if channel
DarkReap1 is set +statuslog.
Wcc fixed up some spelling mistakes in tcl-commands.doc
poptix lots of argv[] fixes that caused crashes
dfrank stdarg 'chattr hand' no longer crashes (legacy bug)
poptix finally fixed the banreason bug
zip guppy small fix for ircu servers that send ERROR: instead of ERROR :
fuchs don't get GO if the channel is -cycle
guppy couple of small uptime.mod backports from 1.7
DrDeath Sup Exported module_load and module_unload for modules.
various stdarg fixed a potential sendnote crash when the notes module
is unloaded
poptix bad pointers are evil in tcl_userlist
poptix re-fix adduser overflow
Tothwolf don't attempt to flood check server notices
Tothwolf display global bans, exempts and invites even if
not on a channel
Tothwolf removed unused "existant" check from tell_bans(),
tell_exempts(), and tell_invites()
Tothwolf fixed buffer overflow in adduser()
Tothwolf fixed typo in filedb3.c: EBUG_MEM -> DEBUG_MEM
Tothwolf removed extra egg_bzero call from filesys.c
poptix properly check argv[]/argc before using it
Tothwolf added missing memory check for tclmisc.c
Tothwolf guppy new setting: pidfile (detaults to pid.botnetnick)
poptix oops, .kickban -nick didn't work.
BarkerJr backported a check for -dynamicbans to new[ban|exempt|invite]
guppy replaced old md5 routines with new ones (backport from 1.7)
guppy cleaned up our tcl information on .status (backport from 1.7)
guppy removed dcc-portrange since it was useless (backport from 1.7)
drummer show our proper user@host in cmd_status (backport from 1.7)
various stdarg proper utf8 support
TaKeDa small wasop fix
bleah PPSlim Fixed booting with full length handles
BarkerJr Allow wildcard CTCP binds
BarkerJr CTCP replies go to the HELP queue..
proton poptix don't bother sending server in the uptime packets
stdarg poptix we weren't looking the user record back up on iterations on channels
in the NICK bind, causing the chance of a bad pointer reference =P
(stdarg gave me the idea to look =)
poptix Oh, look, SIGN and SPLT binds actually pass on the user record now,
and allow flag bindings =P
various guppy the documentation for the need bind was slightly screwy
Kirben don't check for static tcl under cygwin
dw Helpfile says nodesync (invalid mode) instead of nodesynch.
Zart makes .whom more handlen friendly
Noyga Fixes/Additions to command stacking
|^Raven^| Noyga PRIVMSGs with the same message to the same destination
are no longer stacked also USERHOST/USERIP are not stacked
using a comma
Sup Added HOOK_DIE to allow tcl_die to have a quit message.
TaKeDa small resync fix
TaKaDa fixed tcl_md5, it was broken on tcl8.1+
Kirben check whether cygwin requires -mwin32 to support
old versions of cygwin
Kirben check for bind in /usr/local/bind when using cygwin
NeoN- dw a banreason wasn't used in some cases.
Noyga Sup Bot sent a useless TOPIC command to the server
when it joined a channel.
SuperS added QNX support
stdarg host-sanity-check had a type mismatch
Kirben some small fixes
Abraham Noyga the channel file is now backed up
various strolchi small fix for binds and unicode characters
1.6.6 (20 July 2001)
Found by Fixed by What...
Paladin a few minor doc updates
various ITE fixed a slight problem with how we export modules
drummer ignore removals are now shared properly
drummer got rid of remove_gunk since it was unused
[joco] Sup fixed a small buffer overflow in cmd_whois
LethalWP fixed a small getops bug
ITE .conf cleanups, added TCL threaded info in DEBUG
1.6.5 (10 July 2001)
Found by Fixed by What...
TaKeDa Fabian Fixed 'make config' for some disabled_modules cases.
Tothwolf Readded missing std_args.h check.
Sup guppy removed an old ircd limit hack (legacy stuff owns)
ejm Fixed password checks in msg commands
poptix ctcr had the wrong args for 'uh', maybe this will break
something, I doubt it.
FumBa guppy wire.mod now checks if an encryption module is loaded
poptix guppy broke chattr's isowner() check
dw bot op status was not shown in .channel
Tothwolf Simplified and cleaned up variable usage and several
tests in configure.
Tothwolf Fixed broken pthreads checking.
KuNgFo0 Sup Showing `inactive' in .status when the bot is not on the
channel was a bit confusing. Also added #eggfaq@EFNet to
docs.
Abraham guppy added: tcl_haschanrec
various Sup Prevent -b/-e/-I flooding by using random delays.
guppy misc cleanups in while() loops
guppy updated getops.tcl to v2.3
guppy updated recommended tcl version to 8.3.3 and changed the
ftp site for tcl to ftp.eggheads.org since
ftp.scriptics.com can be fairly picky these days.
guppy don't try to use null pointers in tbuf code *duh*
SegFault guppy small fix to what nickname we can use when we type "new"
zip we should use errno to detect EAGAIN in net.c
guppy display the proper queue that is full instead of just
DP_MODE
BenDover guppy changed the wording of %bantime
Kirben mount the eggdrop directory as binary in cygwin
Kirben compress.mod/dns.mod now check for the compiler also
Sup Made server-timeout match the default value in the code.
Amun Sup Added few missing brackets to channels.mod/channels.h
and exported remove_channel().
Kirben/ check for pthread_mutex_init as a function instead of
guppy in a library
Kirben detect __res_mkquery since we detect __res_init now
Sup G`Quann Fixed empty line on LOG_SRVOUT and removed a
debug-output which confused users
G`Quann flush_inbuf and a killsock bug
ITE some access checking in msg commands
guppy tbuf fix
guppy check a bit harder for pthread_mutex_init
various Oliver/ small fix to sscanf for libsafe systems
guppy
Sup Made srandom() use getpid() and getppid()
Sup added .whoami command
stdarg more utf problems, buffer overflow(s)
Kirben/ More Cygwin fixes
RebuM
NML_375 Fix for dccdumpfile/dumpfile
poptix Calling a proc from a bind, that modified the user
record of the person that triggered the bind, could
cause a crash.
poptix Memory leak in filesys.mod, that's been there since 1.3.x
poptix 'setflags' never accepted all the aruements, fixed.
Tothwolf Sup tcl_ignorelist was showing the wrong expiration time.
poptix poptix Info locking was broken, and .info wasn't in .help
Tothwolf additions/clarifications to tcl-commands.doc
poptix getops.tcl problem due to ircnet hack support for
! channels
Sup Don't try to relay to bots without proper address or
relay-port.
Sup Fixed .chaddr from changing the telnet-port and
relay-port.
timothy new evnt: loaded
poptix tcl command mkdir had wrong BADARGS (didnt allow channel
flags)
poptix when tcl var servers was empty, we had problems.
guppy Sup new bugs e-mail address: bugs@eggheads.org
Sup Added a setting for default console flags to
eggdrop.simple.conf, and made console-autosave
disabled by default.
Abraham guppy new evnt: prerestart (restart is tricky)
various drummer/ we now detect __res_init for glibc2.2
guppy
guppy removed legacy /trace support for keep-nick
guppy fixed a little bug that will happen in September of 2001
TaKeDa show the handle when rejecting a duplicate bot connection
fuchs small fix to MSGM's bind table
slennox Sup Updated the help channels in the docs.
Eule changed the way we check for sticky bans (saves cpu)
Eugene fixed various formatting mistakes
SuperS made the IRIX5,6 and 6-64bit OS detection into one check
1.6.4 (13 April 2001)
Found by Fixed by What...
Sup Minor fixes to write_debug() function.
Eugene more German translations and some typo fixes
guppy modified weed and autobotchk to find tclsh better
NaTaS ITE fixed weed's b switch
Sup When rejecting bots don't try to execute rembot()
for bots that match bot's botnet-nick.
Eugene improved the German translations
fabulous guppy dcc resumes with no requested data are now ignored
properly
Krome call sync() after saving the userfile
various Krome fixed .-noteign from crashing the bot
Wingman/ updated all the copyright info for 2001
guppy
Krome modes-per-line works now when its set to 3
various Darude fixed channel add #chan from crashing the bot
Eugene various small typo fixes
nakee solaris make gcc fix
Zart small fix to the unicode stuff to handle Tcl > v9
guruz Sup Added matchbotattr to alltools.tcl.
kirben removed some legacy cygwin compatibility
dw cmd_stick activates the bans now
Abraham fixed a small remote-boots issue
ITE fixed the remote motd bug
blaster ITE fixed a small dns.c bug with hostname resolving
Wingman removed debug-tcl, since this is something noone uses
and is more bloat than anything
Darude Darude/ encrypt/decrypt with highbit character messed up the
Wingman string
KingBob Tothwolf/ Fixed rest of the problems with utf8 characters.
Wingman
1.6.3 (27 February 2001)
Found by Fixed by What...
guppy made blowfish.mod a bit more friendly with other
encryption modules and also added hooks in the core
for string encryption/decryption
G`Quann symband Fixed a memleak within the XTRA field.
Habeeb if my-ip is wrong, tell the user that as the error msg
slennox updated sentinel to v2.50
Jason actually remove a ban from irc when a sharebot removes it
Tothwolf do not allow eggdrop to run as root
darkfall Sup msg_hello() was unable to add users with long nicks.
Also slightly cleaned up irc.mod/msgcmds.c.
Jason Fixed misformed notices in notes module. Corrected use
of language file, and fixed lang file entry.
Tothwolf shutdown once getting a SIGTERM by default
Tothwolf Improved Tcl version reporting
habeeb Sup Updated the help channels in README.
PPSlim PPSlim/ +revengebot no longer requires that the bot has a
guppy/ user-record for itself.
Fabian
project10 guppy made the reserved-port setting into reserved-portrange
various Tothwolf added i18n support to fix our problems with tcl
PPSlim some minor doc fixes
GregMo Sup `.note' wasn't correctly requiring a message parameter.
Jason fixed it so that +d or +k users cannot remove hosts and
thus circumvent auto-kick or deop
GregMo guppy fixed cmd_binds when called with no argument
guppy cleaned up Context and Assert usage in the modules
1.6.2 (January 14, 2001)
Found by Fixed by What...
S Wilcox Sup Fixed a minor typo in got432().
blaster fixed cmd_binds when doing '.binds all'
various guppy cmd_chaddr was broken thanks to a patch of mine
SuperS ITE fixed the traffic accounting code when dealing
high amounts of traffic
ITE made configure work properly when called with an
absolute path
Ian Ian/ share.mod now uses .share.nick.unixtime.users as a
guppy temp file when recieving the userfile
toot fixed XTRA info from not working
toot fixed my bug that made revenge-mode get set back to
1 all the time.
TaKeDa we now understand negative limits (IRCnet allows this)
TaKeDa Fabian Parameter missing for share.mod's status information and
a uff error message. Minor optimisations elsewhere.
Fabian Removed old high character hack from readtclprog, as the
actual problem is now fixed.
many Wingman Added proper support for tcl unicode changes since 8.1.
guppy cleaned up Context; usage in the core
guppy rewrote tcl_duration
guppy more use of strncpyz and egg_snprintf in the core
guppy did some cleanup in tcl[user/misc/dcc].c
Sup Added a channel option to .[un]stick and slightly
cleaned up channels.mod/cmdschan.c.
fabulous Fabian Two calls to fclose() were missing in transfer.mod,
causing eggdrop to leak file descriptors.
Eule hopefully fixed the cycle-flood problem on some efnet
servers
Eule autovoice now uses autoop delay also
Tothwolf cleaned up some language entries
Sup default-port was set in the wrong location.
ITE/ added '--disable-tcl-threads' to configure
Tothwolf
1.6.1 (November 22, 2000)
Found by Fixed by What...
Wiktor updated KNOWN-PROBLEMS
Eule fixed a crash dealing with expired masks and a memleak
in misc.c
toot made revenge-mode a per-channel setting, rather than
global.
dw set quiet-save was missing in the help file.
suizide dw Seen module returned %s instead of nick in certain replys.
Eule small fix for enforcebans
dw Do not set bans if they don't match someone in the channel
and the channel is set +dynamicbans.
various Fabian Channel masks for unsupported channels weren't properly
skipped when parsing the user-file.
Bob/ Now using lines with up to 500 instead of only 480
Fabian characters. Not truncating message anymore if it's longer
than 500 characters and doesn't contain spaces.
paran0id Fabian Fixed crash in expired_mask() when checking ops not
present in the user-list.
1.6.0 (November 15, 2000)
Found by Fixed by What...
Paladin guppy MISC_NOUSERFILE includes the actual config filename now
dw strict-host's default did not match the config default
of 0
ITE do not force +f on masters or owners
Eule removed legacy code for an ircd2.9 bug
Wiktor/ removed the remaining lagcheck leftovers
guppy
Eule fixed an issue with enforcebans and exempts.
guppy upgraded sentinel.tcl to v2.00
Sup Fixed minor typo in status_log().
Wiktor Sup Directly linked bots can't be removed anymore.
guppy removed 1.3.x updates from UPDATES.pre1.5
Wiktor Concated the UPDATE files
Eule Using "JOIN 0" instead of explicitly leaving every channel.
guppy New script: cmd_resolve.tcl (adds a .resolve command).
|^Raven^| Fabian DNS module failed to handle IP address 0.0.0.0 properly.
guruz/ Fabian Detect id-channel-names used as channel names (e.g. added
Evo|ver with .+chan) during IRC session.
Sup Removed left-over command `.resolve' from dns.mod/dns.c.
Sup Made `.[de]op' and `.[de]voice' get nick if it wasn't
specified and added few missing flags to `.channel'
output. Also slightly cleaned up irc.mod/cmdsirc.c.
ReBEL guppy Increased the length of ban reasons from 65 to 160 (I
think this is what RFC1459 allows for default).
Fabian Moved strncpyz() macro from server.mod to a global location.
TaKeDa Eule Restricted WHO stacking to add up to a maximum of MAXPENALTY
penalty seconds.
Eule Added channel specific aop-delay setting. Allows randomly
delayed auto-ops, auto-ops after a certain delay and the
current behaviour, i.e. immediate auto-op.
Eule Fabian Fixed IRC_DO_CHANNEL_PART call from channels.c.
Abraham Fabian Fixed compiler warnings about 'const' for tcl libraries
that don't declare Tcl_SetVar as taking const strings.
drummer Fixed overflow in proxy_connect() for sun_firewall.
Tothwolf Fabian Could not remove joining channel from procs called by
JOIN bind.
fabulous Fabian The filesys module did not support remotely linked files.
Instead, the bot crashed in various places and didn't
even attempt to save/load the link information.
Eule Removed duplicate servlimit check from irc.mod.
Eule Added `e' as global- and channel-flag for users exempted
from the stopnethack checks.
Fabian Minor cleanup of protocol in back-ground code.
Fabian Avoid data lossage during the start of connections, while
the receiving dcc functions aren't listening yet. So now
you can blindly start sending data right after connecting
and depend on the OS and eggdrop to do The Right Thing.
Abraham, Fabian Changed failure of socket() to non-fatal event.
TaKeDa
TheUnknown Fabian Fixed support for SunOS / Solaris.
Fabian Don't actually delete the bind structures immediately,
use centralised garbage collector instead. Cleaned up
various aspects of the bind list handling.
Sup Fabian Don't insist on proper domainname during hostname
detection.
Sup Fabian Properly call PART bind when removing channel and the bot
will therefore leave the channel shortly. Also slightly
reworked channel removal.
Fabian Move actual assert check back into macro, saving a
function call.
NigtHuntr Fabian Removed small compile warning about ambigious if/else.
Abraham Eule Fixed and optimised ban/exempt and invite expiration code
for global and channel specific masks.
zart Sup DCC send and chat requests send to channels are now
ignored.
Looser^ Fixed typo in irc.mod/irc.h me_op export macro.
Eule Made the bot recognise modes during CHAN_PEND. Allows us to
properly recognise bans/other masks and call mode binds.
Eule Fixed get_user_by_host, which was broken for strict_host
set to 0.
Eule Slightly optimised gotnick() by replacing the call to
clear_chanlist() with a specialised loop.
labtec guppy Instead of telnet!*@* we now use -telnet!*@* since no valid
IRC nicknames can be prefixed with a dash (per RFC1459).
Eule Added proper logics to the user{bans,exempts,invites}
settings and removed the clearbansset setting.
Abraham/ Fabian Small typo in ismember() (added during cleanup) caused
DennisMV channel functions to freak out. Sigh.
Cybah flush_mode() cleanups. -{b,e,I} now sent before +{b,e,I}.
used egg_strcatn to make buffer-overflow free.
Fabian Fixed caching for Tcl configuration details. As soon as
different libraries are detected, we discard cached
values.
SuperS Cleaned up style for aclocal.m4 system handling. Added
support for SunOS4.
Fabian Caching -pipe test results for configure.
various TheUnknown Fixed linking for Sparc with SunOS/BSD/Linux, which caused
the bot to crash under certain circumstances.
TheUnknown Added use of the -pipe compiler option, to speed-up
compilation.
Eugene Fixed bugs in German translation, typo in doc/MODULES and
lines longer than 80 characters in a few places.
Fabian Generic cleanups.
MsingLnk Fabian Fixed format-type bugs in notes.mod crashing the bot.
various Fabian Added support for threaded Tcl libs by implementing the
early-fork hack. Cleaner support will be possible in 1.7.
Wiktor Fabian Disabled cycling for +a !channels. Minor cleanups.
Fabian Minor optimizations in irc.mod:chan.c.
Eule Checking for m->user == NULL in kick_all() and
refresh_ban_kick() now. Minor optimizations.
guppy Removed `SERVER SUPPORT LOADED' message.
Igmar Fabian Added missing checks around new_dcc() call. This prevents
the bot from crashing under high connection load.
Cybah Added egg_strcatn function.
Eugene Repositioned help-path setting in eggdrop.simple.conf so
that the modules actually load the help files.
FuzzBuster Fabian Minor documentation fix to seen.mod help.
Karsten Fabian transfer.mod allowed memory DoS for turbo-dcc.
Johnny- Fabian Minor correction to the list of used flags in flag.h.
Mnemonic
guppy Added language support to assoc.mod, console.mod and
notes.mod. Cosmetic fix to "module loaded" message.
guppy Removed some unneeded language macros.
guppy Cleaned up ctcp.mod. Reordered some of the ctcp_mode
checks.
guppy Added the [pass] argument in the .jump help reference.
Ben Fabian Added IPv6-masks support (bans/exempts/invites/ignores).
Abraham Fabian Fixed minor, newly introduced mess-up in `.chaninfo'
output.
Abraham/ Fabian User defined flags weren't displayed correctly for
Kelvin inactive channels, which the bot hadn't joined to yet.
Joker Fabian Fixed further places where +/-revengebot was not properly
integrated or documented.
Fabian Fixed eggdrop test-run for vpath. Using autoconf macros
for caching in aclocal.m4. Changed -L. to -L`pwd` for
libtcls < 7.4 support hack.
Fabian Added strftime compatibility function.
Eule Re-added bell character to note message. This can be
filtered out with the `.strip +g' command.
Koach We now send PASS before sending NICK or USER.
guppy/ made share.mod unlink its temp userfile.
Fabian
guppy Fabian Fixed a few format string bugs. Cleaned up style.
Wiktor Fabian Fixed crash when a received user file failed to load.
Wiktor Fabian compress module didn't indicate errors correctly.
Fabian Unified generic int types. Replaced my_?to?l() with
?to?l(). Replaced obsolete macros. Various cleanups.
Fabian Made sure only _start function symbols were
exported by modules. Fixed channels, console, dns, irc,
notes and transfer modules. Removed unneeded data in
non-debug mode from dns module compile.
Eule Fixed memory leak in channel key handling. Optimized use
of recheck_channel and recheck_channel_modes.
ridens Fabian/ fixed `.whois'/`.match' crash for users without laston
SuperS data, caused by strftime changes.
Fabian finish_share() cleanups and optimizations.
SuperS Fixed configure problems on 64bit IRIX.
SuperS Fabian Removed connect_server() call in nuke_server() to avoid
uncontrolled recursion.
Fabian Cleaned up resolve_success and resolve_failure DNS hooks.
Eule Fixed various aspects of exempt handling.
toot Sup add_bot_hostmask now adds static hostmasks for bots.
Fabian Minor cleanups and optimizations in the irc module.
Eule Included +l and +k modes in modesperline-calculation.
Added `include-lk' setting to control this.
SuperS Fixed compatibility issues on IRIX. Added SINIX to
configure. Removed unneeded header std_args.h.
FirebaII Fixed filesys module to use NICKMAX instead of HANDLEN in
one place.
Fabian Minor fixups in filesys module.
G`Quann Removed lagcheck feature because it caused too many
problems.
Kool Cat Fabian Added meaningful error message for disabled tcl_dccsimul.
dirtymac Fabian Lowered retry timeout for failed DNS requests to 10
minutes.
Eule Fixed possible memleaks related to chan->channel.key,
chan->cmode[] and chan->key.
various Fabian Under certain circumstances, the old user file was
deleted and the new user file wasn't correctly created.
blaster Fixed crash in splitc().
Tothwolf Removed checks for bogus masks in +ban, +exempt, and
+invite. Minor error message fixes. Minor source cleanups.
Cybah Added splitcn() to limit how many bytes get copied to
first.
Shrunk buffer size in cmd_boot(), using the new function.
Shaun Fixed crash with handles larger than 19 characters.
_____________________________________________________________________
eggdrop1.6.19/doc/USERS 0000664 0000764 0000764 00000007257 10755654151 013703 0 ustar guppy guppy $Id: USERS,v 1.11 2008-02-16 21:40:57 guppy Exp $
Users and Flags
Last revised: March 07, 2002
_____________________________________________________________________
Users and Flags
People on IRC are recognized by the bot according to their
nick!user@host. That is, if I am on IRC as:
*** Robey is robey@hubcap.clemson.edu (i hate milk)
Eggdrop will identify me according to "Robey!robey@hubcap.clemson.edu"
and not only by my nickname.
Eggdrop does not have access levels like some bots. There are no
meaningless numbers or titles. Instead, each user has "flags" that
entitle them to certain privileges. Think of a flag as a badge. Any user
can have any number of flags -- you can have no flags, or you can have
all of them. Some flags are good, some are bad. Each flag is identified
by a letter. A channel flag applies only to a specific channel, and a
global flag applies to all channels. The standard global flags are:
n (owner) user has absolute control. Only give this flag to
people you trust completely.
m (master) user has access to almost every feature of the bot.
t (botnet-master) user has access to all features dealing with the
botnet.
a (auto-op) user is opped automatically upon joining a channel.
o (op) user has op access to all of the bot's channels.
y (auto-halfop) user is halfopped automatically upon joining a channel.
l (halfop) user has halfop access to all of the bot's channels.
g (auto-voice) user is voiced automatically upon joining a channel.
v (voice) user gets +v automatically on +autovoice channels.
f (friend) user is not punished for flooding, etc.
p (party) user has access to the partyline.
q (quiet) user does not get voice on +autovoice channels.
r (dehalfop) user cannot gain halfops on any of the bot's channels.
d (deop) user cannot gain ops on any of the bot's channels.
k (auto-kick) user is kicked and banned automatically.
x (xfer) user has access to the file transfer area of the bot
(if it exists) and can send and receive files to/from
the bot.
j (janitor) user can perform maintenance in the file area of the
bot (if it exists) -- like a "master" of the file
area. Janitors have complete access to the filesystem.
c (common) this marks a user who is connecting from a public site
from which any number of people can use IRC. The user
will now be recognized by NICKNAME.
b (bot) user is a bot.
w (wasop-test) user needs wasop test for +stopnethack procedure.
z (washalfop-test) user needs washalfop test for +stopnethack procedure.
e (nethack-exempt) user is exempted from stopnethack protection.
u (unshared) user record is not sent to other bots.
h (highlight) use bold text in help/text files.
All global flags other then u, h, b, c, x, j, and p are also
channel-specific flags. Flags are set with the chattr command.
The syntax for this command is:
chattr [attributes] [channel]
There are also 26 global user-defined flags and 26 channel user-defined
flags. These are used by scripts, and their uses very depending on the
script that uses them.
_____________________________________________________________________
Copyright (C) 2002 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/FIRST-SCRIPT 0000664 0000764 0000764 00000007522 10755654150 014665 0 ustar guppy guppy $Id: FIRST-SCRIPT,v 1.8 2008-02-16 21:40:56 guppy Exp $
Your First Eggdrop Script
Last revised: December 07, 2003
_____________________________________________________________________
Your First Eggdrop Script
So you want to write an Eggdrop script, but you don't really know where
to begin. This file will give you a very basic idea about what Eggdrop
scripting is like. There are far too many topics to be covered all at
once, but this may help you get started with your own scripts.
This guide assumes you know a bit about Eggdrops and IRC. You should have
already installed Eggdrop. The bot should not be on any important or busy
channels (development bots can be annoying if your script has bugs). If you
plan on doing a lot of development, enable the .tcl and .set commands, and
make sure nobody else has access to your bot. The .tcl and .set commands
are helpful in debugging and testing your code.
First, read through the script. You may be unfamiliar with some of the
commands, especially if you haven't at least browsed through
tcl-commands.doc. You may find it helpful to open up tcl-commands.doc in
another window so that you can immediately look up commands you don't know.
Then, open up another window and copy the script into its own file. If you
have the .tcl command enabled, you can type '.tcl source scripts/file.tcl'
to load it. Otherwise, add it to your config file like normal and '.rehash'
or '.restart' your bot.
From your own IRC client, join the bot's channel and type some lines that
start with "hello". Example: hello I love you won't you tell me your name
After your thrill abates, try playing around with your copy of the script.
Get it to change the text it says, make it send notices instead of messages.
Try changing the names of some variables (uhost -> userhost maybe).
#
# Here's the start of the script.
# The '#' in Tcl means this line is a comment and doesn't get executed.
#
#
# Most scripts start off with a configuration section.
#
# Change this to the channel you want this script to work on.
set our_chan "#baa"
# After configuration, scripts generally do a bit of initialization work.
# This could include checking the validity of the config variables, setting
# timers, loading helper scripts, establishing database connections, or
# most frequently, creating our Eggdrop binds.
#
# A bind lets you attach your script to events that Eggdrop encounters. Events
# include IRC events (someone joining a channel, talking, etc), botnet events,
# and internal events (like receiving signals via the kill command).
#
# This bind will make Eggdrop call "my_talk_handler" whenever someone
# says hello on one of our channels.
bind pub - hello my_talk_handler
# Here is where we define "my_talk_handler"
proc my_talk_handler {nick uhost hand chan text} {
#
# nick - the person's nickname
# uhost - the person's user@host
# hand - the person's bothandle (if he is a valid user)
# chan - the channel this event happened on
# text - the text the person said (not counting the trigger word)
#
# You can name these variables any way you want, but these names
# are pretty much standard.
#
# The 'global' command imports global variables into our local scope.
# Any variable set outside of a procedure (like in the config section)
# is a global variable.
global our_chan
# We only want to respond on the $our_chan channel.
# The string tolower command converts a string to lowercase.
if {[string tolower $chan] != $our_chan} {
return 0
}
# The putserv commands lets us send text to the server.
putserv "privmsg $chan :$text too!"
# All done! Log this command by returning 1.
return 1
}
# Here's the end of the script.
_____________________________________________________________________
Copyright (C) 2003 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/WEIRD-MESSAGES 0000775 0000764 0000764 00000005157 10755654151 015061 0 ustar guppy guppy $Id: WEIRD-MESSAGES,v 1.8 2008-02-16 21:40:57 guppy Exp $
Weird Messages That Get Logged
Last revised: March 10, 2003
_____________________________________________________________________
Weird Messages That Get Logged
Shown below are some messages that Eggdrop might log from time to time
that may seem a bit strange and have meanings which may not be obvious.
(!) timer drift -- spun N minutes
This can be caused by one of several reasons.
- Your bot could have been swapped out of memory for a while, or for
some reason the computer could have stopped letting the bot run. Once
a minute, Eggdrop does a few maintenance things, including counting
down any active Tcl timers. If for some reason, several minutes pass
without Eggdrop being able to do this, it logs this message to let
you know what happened. It's generally a bad thing, because it means
that the system your bot is on is very busy, and the bot can hardly
keep track of the channel very well when it gets swapped out for
minutes at a time.
- On some systems (at least Linux), if the DNS your bot is using to
lookup hostnames is broken and *very* slow in responding (this can
occur if the DNS server's uplink doesn't exist), then you will get
4-5 minute timer drifts continuously. This can be fixed by loading
the dns module.
- The clock on your machine has just been changed. It may have been
running behind by several minutes and was just corrected.
(!) killmember(Nickname) -> nonexistent
We have yet to track this down. It's a mildly bad thing, however. It
means the bot just got informed by the server that someone left the
channel -- but the bot has no record of that person ever being ON the
channel.
jwilkinson@mail.utexas.edu had some insight into this one:
This is not an Eggdrop bug, at least not most of the time. This is a
bug in all but perhaps the very latest ircd systems. It's not uncommon
during netsplits and other joins for the server to lose track of killed
or collided join notices. Also, in some servers, it is possible to
specify non-standard characters, such as caret symbols, which get
falsely interpreted as capital letters.
When converted to lowercase, these symbols fail to get processed, and
joins are not reported, although parts are.
_____________________________________________________________________
Copyright (C) 2003 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/BOTNET 0000664 0000764 0000764 00000025373 10755654150 013773 0 ustar guppy guppy $Id: BOTNET,v 1.23 2008-02-16 21:40:56 guppy Exp $
Botnet Sharing and Linking
Last revised: June 4, 2002
_____________________________________________________________________
Botnet Sharing and Linking
The purpose of this document is to show you what a botnet is and how it
could be useful to you. It also covers botflags userfile sharing.
Contents:
1. Terms
2. What is a botnet?
3. Adding and linking bots
4. Using botflags
5. Making bots share user records
1. Terms
The following are some common terms used in this document:
Botnet
A botnet consists of one or more bots connected together.
Link
Link is the term used to describe a bot connecting to another bot.
Hub
A bot is described as a hub-bot if one or more bots are linked to
it.
Leaf
A leaf is a non-hub bot connecting to a hub-bot. A leaf has only
one other bot connected to it, its hub. Leaf bots can be assigned
the "l" botflag to prevent other bots from linking to them.
Link Bot
A link-bot is a bot that is linked to another bot. It may or may not
be a hub-bot.
Share
Share is the term used to describe the sharing of user records.
Share Bot
A share-bot is a bot which shares user records with one or more
linked bots.
Aggressive Share
Aggressive share is a term used to describe the direction of sharing
user-files. Aggressive share bots will SEND userfiles to another passive
bot.
Passive Share
Passive share is a term used to describe the direction of sharing
user-files. Passive share bots will accept userfiles from an aggressive
share bot.
Example bottree:
BotA
|-+BotB
`-+BotC
BotB is linked to a master sharebot, BotA, and a slave sharebot,
BotC. BotB shares passively with [receives from] BotA and shares
aggressively with [sends to] BotC.
Bot Flags
Flags are attributes that determine what a bot can or is allowed to do.
Flags can be either global (such as +s) or channel specific (such as
|+s #lamest). See '.help botattr' for help with setting these flags.
The following is a list of valid bot flags:
s share aggressively (SEND userfile to a passive bot)
p share passively (ACCEPT userfile from an aggressive bot)
g global share (share all channels)
h hub (automatically link to this bot)
a alternate (automatically link to this bot if the hub bot can't be
linked)
l leaf (bot is not allowed to link in other bots)
r reject (bot will not be allowed to link)
i isolate (isolate the party line across a bot link)
0-9 user defined flags
Address
The physical address, containing the address and port of the bot.
For example: lame.org:3333. You can change a bot's address with
".chaddr ".
Relay Port
The relay port number of the bot is defined in the config file. Note
that you can define one port for bots and another for user connections.
Relay
A relay connection is used to relay (jump) to another bot via telnet
or DCC chat. You can relay to another bot even if the remote bot is
not linked. You can use ".relay " to relay to another bot.
Port
The telnet port is used by the bot to communicate with other bots
and/or users. Note that you can define separate ports for user and
bot connections.
2. What is a botnet?
A botnet consists of one or more bots linked together. This can allow
bots to op each other securely, control floods efficiently, and share
user lists, ban lists, exempt/invite lists, and ignore lists (if sharing
is enabled).
3. Adding and linking bots
With the common terms out of the way, we can start with the process of
linking two bots. Before you start, you need to know the address and
port of each bot you wish to link.
Here is an example scenario:
BotA is on lame.org listening on port 3333, and BotB is on irc.org
listening on port 4444. First, you have to add each Bot to the other's
userfile. On BotA, you would type '.+bot BotB irc.org:4444'. If BotB is
on a common channel with BotA, BotB's hostmask is automatically added.
Otherwise, you have to add the hostmask manually with the '.+host'
command. On BotB, you would type '.+bot BotA lame.org:3333'.
At this point, you can link the two bots by typing '.link BotA' on BotB (or
'.link BotB' on BotA). The bots will now give themselves random passwords
which are *not* stored encrypted in the userfile. Note that you can link as
many bots as you wish to your botnet.
4. Using botflags
Botflags are needed to assign special functions and tasks to your bots.
Bot flags are set with the '.botattr' command. See '.help botattr' for
help with this command. The following is a list of botflags and their
functions:
"h" (hub)
If you want your bot(s) to automatically link/relink, you can assign
the +h botflag each bot's hub. Note that if you set multiple bots +h,
the bot only attempts to link to one.
"a" (alternate)
If your bots are, for some reason, unable to link to their hub, they
will attempt to connect to an alternate hub. You can assign a bot as
an alternate hub by giving it the +a botflag.
"l" (leaf)
This flag, assigned to a link bot, will prevent the link bot from linking
other bots to your botnet.
"r" (reject)
If you assign this flag to a link bot, the link bot will not be allowed
to link to the botnet.
"i" (isolate)
This flag isolates a link bot's partyline from the rest of the botnet.
Anything said on the link bot's partyline won't appear on the rest of
the botnet.
"s" (SEND userfile to)
+s Giving a link bot this flag will make the bot share aggressively
with the link bot. See 'Aggressive Share' in section 2 of this
document for more information on aggressive sharing.
|s +s bots need this flag for each channel you want to share.
"p" (ACCEPT userfile from)
Giving a link bot this flag will make the bot share passively with
the link bot. See 'Passive Share' in section 2 of this document for
more information on passive sharing.
"g" (global share)
This flag allows the sharing of all channels with a link bot.
"0-9" (user-defined)
These 10 flags are user-defined can be used by scripters.
5. Making bots share user records
Before you start preparing your bots for sharing, make sure that
you've loaded the transfer and share modules. You also have to ensure
that each channel you wish to share is set +shared (see '.help
chanset' and '.help chaninfo').
By using specific botflags, you can cause your bot to share
aggressively with some link bots, and passively with others. For
sharing to work, flags must be set properly on both the passive and
the aggressive bots. An aggressive bot will not share userfiles with
another aggressive bot; a passive bot will not share userfiles with
another passive bot.
First off, let's say we have two bots we want to link. We will
call one Lamestbot, and the other Lameshare. The first thing that needs
to be done is each bot needs the other bot added to its user record.
Your botnet should have a hub bot. This will have them connect
automatically whenever they are started. Without a hub, you would have to
manually link them with the .link command. For this situation we will
make Lamestbot the hub for our small botnet. Let's also use a channel
called #eggdrop as the one we want to share user channel flags with. Do
the following:
On Lamestbot:
.+bot Lameshare eggdrop.com:3333 (This command adds a user record to
Lamestbot for Lameshare. Lameshare is running from eggdrop.com and is
on port 3333. If Lameshare were to have a separate port for users/relays
we would just add a '/' and the port number, i.e. 3333/5555.)
.botattr Lameshare +s (This tells us that Lamestbot will only send
user files to Lameshare; Lameshare will not send them to it.)
.botattr Lameshare |s #eggdrop (this sets up sharing of the channel
flags for #eggdrop between the bots. Without this, they will not share
channel flags only global flags for the users.)
On Lameshare:
.+bot Lamestbot best.com:3333/5555 (Again this will add a user on
Lameshare called Lamestbot with the domain of best.com. The bot has
two ports, 3333 for bot communications and 5555 for users/relays.)
.botattr Lamestbot +hp (This command sets Lamestbot as the hub and
also as a passive share, which means Lameshare will accept user files
from Lamestbot.
.botattr Lamestbot |s #eggdrop (This sets #eggdrop as a share channel.)
Our botnet:
Lamestbot
`-+Lameshare
Let's add a third bot called beldin to this scenario:
On Lamestbot:
.+bot beldin llama.com:3333
.botattr beldin s|s #eggdrop (Notice how i piped (the | character)
the channel flag also saving time.)
Also note that you don't have to add beldin on Lameshare. Since
they are already sharing, it was added automatically. The one thing that
you should note is that no bot flags will be shared. If you set beldin as
+s (Aggressive share) on the hub (Lamestbot) he will not be set on the
other bots as that. The same with the channel +s flag. All other flags
will be shared such as the o, f, etc. Now that we have three bots, we
can also set up one as an alternate hub. The alternate hub is the bot
that the bots will auto-connect to in the event the hub goes down or
is unreachable.
Let's make beldin an alternate hub for our little botnet.
On Lameshare:
.botattr beldin +a
That's all there is to it. Again, since bot flags are not shared,
you would have to add the bot flag +a for beldin on them all. The only
ones you would not have to do this on are beldin and the hub (Lamestbot).
Of course, if you had more bots, you would have to add beldin as a +a on
them, but you would not do it on the hub or beldin.
Our botnet:
Lamestbot
|-+beldin
`-+Lameshare
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/CONTENTS 0000664 0000764 0000764 00000003614 10755654150 014227 0 ustar guppy guppy $Id: CONTENTS,v 1.25 2008-02-16 21:40:56 guppy Exp $
Directory Contents - doc/
Last revised: August 04, 2004
_____________________________________________________________________
Directory Contents - doc/
html/
An HTML version of Eggdrop's documentation is provided in this directory.
man1/
This contains Unix man page files.
settings/
This directory contains documentation for all config file and module
settings.
ABOUT
Information about Eggdrop and a brief history can be found in this file.
AUTHORS
A list of Eggdrop developers and contributors is in this file.
BOTNET
This is a guide to flags and bot user file sharing.
BUG-REPORT
Fill out this form and e-mail it to bugs@eggheads.org if you find a bug
in Eggdrop.
COMPILE-GUIDE
If you have trouble compiling your Eggdrop, take a look in this file.
FIRST-SCRIPT
This document will help get you started with Tcl scripting for Eggdrop.
KNOWN-PROBLEMS
See this file for a list of things that are broken but aren't getting
fixed anytime soon
MODULES
Information on writing Eggdrop modules can be found in this document.
PARTYLINE
This file contains information about Eggdrop's partyline.
PATCH-HOWTO
This is a how-to on applying and creating Eggdrop patches.
tcl-commands.doc
Documentation on Eggdrop Tcl commands available to scripters can be found
here.
TEXT-SUBSTITUTIONS
This contains documentation on %-variables that can be used in help, MOTD,
and BANNER files.
TRICKS
Some advanced tips on making Eggdrop do what you want it to do can be found
here. It also contains tweaking tips for your config file.
UPDATES1.6
This is a complete list of changes made to Eggdrop 1.6.
_____________________________________________________________________
Copyright (C) 2003 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/AUTHORS 0000664 0000764 0000764 00000004561 10755654150 014121 0 ustar guppy guppy $Id: AUTHORS,v 1.35 2008-02-16 21:40:56 guppy Exp $
Eggdrop Developers and Contributors
Last revised: February 16, 2008
_____________________________________________________________________
Eggdrop Developers and Contributors
This file attempts to list the majority of the Eggdrop developers and
contributors who have devoted a lot of their time into making Eggdrop
one of the best IRC bots ever.
Eggdrop was originally written by Robey Pointer.
Developers and Contributors (in alphabetical order):
arthur2 Jerome Carre
BarkerJr Bryon Eldridge
Beldin Darrin Smith
Ben Ben Dover
bhab Kelsey Hudson
ButchBub Scott Taylor
Cybah Jonathan Miles
darko`` Darko Ilic
david David Newhall II
drummer Dobos Lorant
Dude Matthew Stiefel
dw Per Johansson
Ernst Ernesto Baschny
Eugene Michael Ortmann
Eule Axel Franke
Fabian Fabian Knittel
FireEgl Philip Moore
G`Quann Florian Sander
guppy Jeff Fisher
Ian Ian Campbell
ITE Federico Mennite
Jason Jason Ede
Johoho Wiktor Wodecki
KingKurly Gregory Kubaryk
Kirben Travis Howell
Kirk Ian Kaney
lordares Bryan Drewery
Lucas Lucas Nussbaum
nakee Ely Levy
Paladin Alan Cameron
poptix Matthew Hallacy
Raistlin Jason Slagle
RebuM Martin Matuska
robey Robey Pointer
rtc Peter 'Rattacresh' Backes
SegFault Ryan Butler
SET Sven Trenkel
Shaun Shaun Braun
[sL]
slennox Shayne Lennox
stdarg
Sup Teemu Hjelt
SuperS Kevin Lamothe
TaKeDa Dariusz Kulinski
TheGhost James Simmons
TheUnknown
thommey Thomas Sader
toot Toby Verrall
Tothwolf
wayhigh Kevin Lynn
Wcc Will Buckner
Thanks go to all the people who have made individual contributions to
the Eggdrop project by sending bug-reports, patches, and otherwise have
supported the project. Patch contributors are listed in the UPDATES
files.
If you think that you are missing from this list, contact the Eggheads
Development Team at eggdev@eggheads.org.
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/Makefile.in 0000664 0000764 0000764 00000003732 10105467034 015105 0 ustar guppy guppy # Makefile for doc/
# $Id: Makefile.in,v 1.23 2004-08-08 18:17:00 wcc Exp $
SHELL = @SHELL@
top_srcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
@SET_MAKE@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
DOCS = ABOUT AUTHORS BANS BOTNET BUG-REPORT COMPILE-GUIDE CONTENTS \
FIRST-SCRIPT KNOWN-PROBLEMS MODULES PARTYLINE PATCH-HOWTO tcl-commands.doc \
TEXT-SUBSTITUTIONS TRICKS UPDATES1.6 USERS
MAN1 = man1/eggdrop.1
WEB_DOCS = $(srcdir)/html/*.html
SETTING_DOCS = core.settings CONTENTS
SETTING_MOD_DOCS = $(srcdir)/settings/mod.*
doofus:
@echo ""
@echo "Let's try this from the right directory..."
@echo ""
@cd .. && $(MAKE)
all: $(DOCS) $(MAN1)
clean:
@rm -f *~
install:
@if test ! -d $(DEST)/doc; then \
echo "Creating 'doc' subdirectory."; \
$(top_srcdir)/misc/mkinstalldirs $(DEST)/doc >/dev/null; \
fi
@if test ! -d $(DEST)/doc/man1; then \
echo "Creating 'doc/man1' subdirectory."; \
$(top_srcdir)/misc/mkinstalldirs $(DEST)/doc/man1 >/dev/null; \
fi
@if test ! -d $(DEST)/doc/html; then \
echo "Creating 'doc/html' subdirectory."; \
$(top_srcdir)/misc/mkinstalldirs $(DEST)/doc/html >/dev/null; \
fi
@if test ! -d $(DEST)/doc/settings; then \
echo "Creating 'doc/settings' subdirectory."; \
$(top_srcdir)/misc/mkinstalldirs $(DEST)/doc/settings >/dev/null; \
fi
@echo "Copying docs."
@for i in $(DOCS); do \
$(INSTALL_DATA) $(srcdir)/$$i $(DEST)/doc/; \
done
@for i in $(MAN1); do \
$(INSTALL_DATA) $(srcdir)/$$i $(DEST)/doc/man1/; \
done
@for i in $(SETTING_DOCS); do \
$(INSTALL_DATA) $(srcdir)/settings/$$i $(DEST)/doc/settings/; \
done
@if test "x`echo $(SETTING_MOD_DOCS)`" != "x$(SETTING_MOD_DOCS)"; then \
for i in `echo $(SETTING_MOD_DOCS)`; do \
$(INSTALL_DATA) $$i $(DEST)/doc/settings/; \
done; \
fi
@if test "x`echo $(WEB_DOCS)`" != "x$(WEB_DOCS)"; then \
for i in `echo $(WEB_DOCS)`; do \
$(INSTALL_DATA) $$i $(DEST)/doc/html/; \
done; \
fi
eggdrop1.6.19/doc/settings/ 0000775 0000764 0000764 00000000000 11002271500 014657 5 ustar guppy guppy eggdrop1.6.19/doc/settings/mod.blowfish 0000664 0000764 0000764 00000001417 10755654155 017231 0 ustar guppy guppy $Id: mod.blowfish,v 1.17 2008-02-16 21:41:01 guppy Exp $
Blowfish Module
Last revised: January 28, 2003
_____________________________________________________________________
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
other modules like a md5 module), you can't use your current userfile
anymore. Eggdrop will not start without an encryption module.
This module requires: none
Put this line into your Eggdrop configuration file to load the blowfish
module:
loadmodule blowfish
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.seen 0000664 0000764 0000764 00000001413 10755654155 016342 0 ustar guppy guppy $Id: mod.seen,v 1.16 2008-02-16 21:41:01 guppy Exp $
Seen Module
Last revised: January 1, 2002
_____________________________________________________________________
Seen Module
This module provides very basic seen commands via msg, on channel or via dcc.
This module works only for users in the bot's userlist. If you are looking
for a better and more advanced seen module, try the gseen module by G'Quann.
You can find it at http://www.visions-of-fantasy.de/gseen.mod/.
This module requires: none
Put this line into your Eggdrop configuration file to load the seen module:
loadmodule seen
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.dns 0000664 0000764 0000764 00000001254 10755654155 016177 0 ustar guppy guppy $Id: mod.dns,v 1.17 2008-02-16 21:41:01 guppy Exp $
DNS Module
Last revised: February 12, 2002
_____________________________________________________________________
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.
This module requires: none
Put this line into your Eggdrop configuration file to load the dns
module:
loadmodule dns
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.server 0000664 0000764 0000764 00000017742 10755654155 016732 0 ustar guppy guppy $Id: mod.server,v 1.38 2008-02-16 21:41:01 guppy Exp $
Server Module
Last revised: February 12, 2003
_____________________________________________________________________
Server Module
This module provides the core server support. You have to load this if
you want your bot to come on IRC. Not loading this is equivalent to the
old NO_IRC define.
This module requires: none
Put this line into your Eggdrop configuration file to load the server
module:
loadmodule server
There are also some variables you can set in your config file:
set net-type 0
What is your network?
0 = EFnet
1 = IRCnet
2 = Undernet
3 = DALnet
4 = +e/+I/max-bans 20 Hybrid
5 = Others
set nick "LamestBot"
Set the nick the bot uses on IRC, and on the botnet unless you specify a
separate botnet-nick, here.
set altnick "L?m?stB?t"
Set the alternative nick which the bot uses on IRC if the nick specified
by 'set nick' is unavailable. All '?' characters will be replaced by
random numbers.
set keep-nick 1
This setting makes the bot try to get his original nickname back if its
primary nickname is already in use.
set realname "/msg LamestBot hello"
Set here what to display in the real-name field for the bot.
bind evnt - init-server evnt:init_server
proc evnt:init_server {type} {
global botnick
putquick "MODE $botnick +i-ws"
}
This is a Tcl script to be run immediately after connecting to a server.
set init-server { putquick "MODE $botnick +i-ws" }
This is a Tcl script to be run immediately after connecting to a server.
It is limited to 120 characters, and is depriciated due to the EVNT bind
(see doc/tcl-commands.doc).
set connect-server { putlog "Connecting to server." }
This is a Tcl script to be run immediately before connecting to a server.
It is limited to 120 characters, and is depriciated due to the EVNT bind
(see doc/tcl-commands.doc).
set disconnect-server { putlog "Disconnected from server." }
This is a Tcl script to be run immediately after disconnecting from a
server. It is limited to 120 characters, and is depriciated due to the
EVNT bind (see doc/tcl-commands.doc).
set servers {
you.need.to.change.this:6667
another.example.com:7000:password
}
This is the bot's server list. The bot will start at the first server
listed, and cycle through them whenever it gets disconnected. You need
to change these servers to YOUR network's servers.
The format is:
server[:port[:password]]
Both the port and password fields are optional; however, if you want to
set a password you must also set a port. If a port isn't specified it
will default to your default-port setting.
set default-port 6667
Set the default port which should be used if none is specified with
'.jump' or in 'set servers'.
set server-cycle-wait 60
This setting defines how long Eggdrop should wait before moving from one
server to another on disconnect. If you set 0 here, Eggdrop will not wait
at all and will connect instantly. Setting this too low could result in
your bot being K:Lined.
set never-give-up 1
This settings makes the bot cycle forever through the server list until
it successfully connects to one.
set server-timeout 60
Set here how long Eggdrop should wait for a response when connecting to
a server before giving up and moving on to next server.
set servlimit 0
If the number of servers on the net gets below this number, the bot
will jump to a new server (it will assume it's on the losing end of
a netsplit). Set this to 0 to turn off. If your bot is running on
any major IRC network, this should probably be turned off.
set check-stoned 1
Set this to 1 if Eggdrop should check for stoned servers? (where the
server connection has died, but Eggdrop hasn't been notified yet).
set serverror-quit 1
If you want your bot to exit the server if it receives an ERROR message,
set this to 1.
set max-queue-msg 300
Set here the maximum number of lines to queue to the server. If you're
going to dump large chunks of text to people over IRC, you will probably
want to raise this. 300 is fine for most people though.
set strict-host 0
Set this to 0 if you want the bot to strip '~' characters from user@hosts
before matching them.
set quiet-reject 1
This setting makes the bot squelch the error message when rejecting a
DCC CHAT, SEND or message command. Normally, Eggdrop notifies the user
that the command has been rejected because they don't have access. Note
that sometimes IRC server operators detect bots that way.
set flood-msg 5:60
Set here how many msgs in how many seconds from one host constitutes
a flood. If you set this to 0:0, msg flood protection will be disabled.
set flood-ctcp 3:60
Set here how many ctcps in how many seconds from one host are
recognized as a flood. Not specifying or using number = 0
will not check against ctcp floods.
set answer-ctcp 3
Set how many ctcps should be answered at once here.
set lowercase-ctcp 0
If you want your bot to answer lower case ctcp requests (non rfc-
compliant), set this setting to 1. mIRC will do this, most other
clients will not.
set trigger-on-ignore 0
If you want Eggdrop to trigger binds for ignored users, set this to 1.
set exclusive-binds 0
This setting configures PUBM and MSGM binds to be exclusive of PUB
and MSG binds. This means if a MSGM bind with the mask "*help*" exists
and is triggered, any MSG bindings with "help" in their mask will not
be triggered. Don't enable this unless you know what you are doing!
set double-mode 0
Allow identical messages in the mode queue?
set double-server 0
Allow identical messages in the server queue?
set double-help 0
Allow identical messages in the help queue?
set use-penalties 1 (default on net-type 1)
This enables Eggdrop's penalty calculation. Every command Eggdrop sends
to the IRC server raises its penalty points. If Eggdrop reaches a server
limit, it gets disconnected with "excess flood" message. Eggdrop is able
to count internal those penalty points, too and take measures against
excess flooding. Note: it's highly advised to turn this on!
set optimize-kicks 1
This optimizes the kick queue. It also traces nick changes and parts in
the channel and changes the kick queue accordingly. There are three
different options for this setting:
0 = Turn it off.
1 = Optimize the kick queue by summarizing kicks.
2 = Trace nick changes and parts on the channel and change the queue
accordingly. For example, bot will not try to kick users who have
already parted the channel.
ATTENTION: Setting 2 is very CPU intensive.
There are more settings for 'net-type' 5.
net-type 5 specific features:
Attention: Use this settings *only* if you set 'net-type' to 5!
set check-mode-r 1
This settings defines how umode +r is understood by Eggdrop. Some
networks use +r to indicate a restricted connection. If this is your
case, and you want your bot to leave restricted servers and jump to
the next server on its list, then set it to 1.
Please note, this setting is automatically set to 0 for net-type 0/2/3/4,
and set to 1 for net-type 1.
set nick-len 9
This setting allows you to specify the maximum nick-length supported by
your network. The default setting is 9. The maximum supported length by
Eggdrop is 32.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.uptime 0000664 0000764 0000764 00000002102 10755654156 016710 0 ustar guppy guppy $Id: mod.uptime,v 1.14 2008-02-16 21:41:02 guppy Exp $
Uptime Module
Last revised: January 1, 2002
_____________________________________________________________________
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.
Information sent to the server includes the bot's uptime, botnet-nick,
server, version, and IP address. This information is stored in a temporary
logfile for debugging purposes only. The only publicly available information
will be the bot's botnet-nick, version and uptime. If you do not wish for
this information to be sent, comment out the 'loadmodule uptime' line in your
bot's config file.
This module requires: server
Put this line into your Eggdrop configuration file to load the uptime
module:
loadmodule uptime
_____________________________________________________________________
Copyright (C) 2001 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.channels 0000664 0000764 0000764 00000030673 10755654155 017215 0 ustar guppy guppy $Id: mod.channels,v 1.21 2008-02-16 21:41:01 guppy Exp $
Channels Module
Last revised: February 12, 2003
_____________________________________________________________________
Channels Module
This module provides channel related support for the bot. Without it,
you won't be able to make the bot join a channel or save channel specific
userfile information.
This module requires: none
Put this line into your Eggdrop configuration file to load the channels
module:
loadmodule channels
There are also some variables you can set in your config file:
set chanfile "LamestBot.chan"
Enter here the filename where dynamic channel settings are stored.
set force-expire 0
Set this setting to 1 if you want your bot to expire bans/exempts/invites
set by other opped bots on the channel.
set share-greet 0
Set this setting to 1 if you want your bot to share user greets with
other bots on the channel if sharing user data.
set use-info 1
Set this setting to 1 if you want to allow users to store an info line.
channel add #channel { SETTINGS }
Add each static channel you want your bot to sit in using this command.
There are many different possible settings you can insert into this
command, which are explained below.
chanmode +/-
This setting makes the bot enforce channel modes. It will always add
the + and remove the - modes.
idle-kick 0
This setting will make the bot check every minute for idle users. Set
this to 0 to disable idle check.
stopnethack-mode 0
This setting will make the bot de-op anyone who enters the channel
with serverops. There are seven different modes for this settings:
0 turn off
1 isoptest (allow serverop if registered op)
2 wasoptest (allow serverop if user had op before split)
3 allow serverop if isop or wasop
4 allow serverop if isop and wasop.
5 If the channel is -bitch, see stopnethack-mode 3
If the channel is +bitch, see stopnethack-mode 1
6 If the channel is -bitch, see stopnethack-mode 2
If the channel is +bitch, see stopnethack-mode 4
revenge-mode 0
This settings defines how the bot should punish bad users when
revenging. There are four possible settings:
0 Deop the user.
1 Deop the user and give them the +d flag for the channel.
2 Deop the user, give them the +d flag for the channel, and kick them.
3 Deop the user, give them the +d flag for the channel, kick, and ban them.
ban-time 120
Set here how long temporary bans will last (in minutes). If you
set this setting to 0, the bot will never remove them.
exempt-time 60
Set here how long temporary exempts will last (in minutes). If you set
this setting to 0, the bot will never remove them. The bot will check
the exempts every X minutes, but will not remove the exempt if a ban is
set on the channel that matches that exempt. Once the ban is removed,
then the exempt will be removed the next time the bot checks. Please
note that this is an IRCnet feature.
invite-time 60
Set here how long temporary invites will last (in minutes). If you set
this setting to 0, the bot will never remove them. The bot will check
the invites every X minutes, but will not remove the invite if a
channel is set to +i. Once the channel is -i then the invite will be
removed the next time the bot checks. Please note that this is an
IRCnet feature.
aop-delay (minimum:maximum)
This is used for autoop, autohalfop, autovoice. If an op or voice joins
a channel while another op or voice is pending, the bot will attempt to
put both modes on one line.
aop-delay 0 No delay is used.
aop-delay X An X second delay is used.
aop-delay X:Y A random delay between X and Y is used.
need-op { putserv "PRIVMSG #lamest :op me cos i'm lame!" }
This setting will make the bot run the script enclosed in braces
if it does not have ops. This must be shorter than 120 characters.
If you use scripts like getops.tcl or botnetop.tcl, you don't need
to set this setting.
need-invite { putserv "PRIVMSG #lamest :let me in!" }
This setting will make the bot run the script enclosed in braces
if it needs an invite to the channel. This must be shorter than 120
characters. If you use scripts like getops.tcl or botnetop.tcl, you
don't need to set this setting.
need-key { putserv "PRIVMSG #lamest :let me in!" }
This setting will make the bot run the script enclosed in braces
if it needs the key to the channel. This must be shorter than 120
characters. If you use scripts like getops.tcl or botnetop.tcl, you
don't need to set this setting.
need-unban { putserv "PRIVMSG #lamest :let me in!" }
This setting will make the bot run the script enclosed in braces
if it needs to be unbanned on the channel. This must be shorter than
120 characters. If you use scripts like getops.tcl or botnetop.tcl,
you don't need to set this setting.
need-limit { putserv "PRIVMSG #lamest :let me in!" }
This setting will make the bot run the script enclosed in braces
if it needs the limit to be raised on the channel. This must be
shorter than 120 characters. If you use scripts like getops.tcl or
botnetop.tcl, you don't need to set this setting.
flood-chan 10:60
Set here how many channel messages in how many seconds from one
host constitutes a flood. Setting this to 0 or 0:0 disables text
flood protection for the channel.
flood-deop 3:10
Set here how many deops in how many seconds from one host constitutes
a flood. Setting this to 0 or 0:0 disables deop flood protection for
the channel.
flood-kick 3:10
Set here how many kicks in how many seconds from one host constitutes
a flood. Setting this to 0 or 0:0 disables kick flood protection for
the channel.
flood-join 5:60
Set here how many joins in how many seconds from one host constitutes
a flood. Setting this to 0 or 0:0 disables join flood protection for
the channel.
flood-ctcp 3:60
Set here how many channel ctcps in how many seconds from one host
constitutes a flood. Setting this to 0 or 0:0 disables ctcp flood
protection for the channel.
flood-nick 5:60
Set here how many nick changes in how many seconds from one host
constitutes a flood. Setting this to 0 or 0:0 disables nick flood
protection for the channel.
channel set +/-
There are many different options for channels which you can define.
They can be enabled or disabled by a plus or minus in front of them.
A complete list of all available channel settings:
enforcebans
When a ban is set, kick people who are on the channel and match
the ban?
dynamicbans
Only activate bans on the channel when necessary? This keeps the
channel's ban list from getting excessively long. The bot still
remembers every ban, but it only activates a ban on the channel
when it sees someone join who matches that ban.
userbans
Allow bans to be made by users directly? If turned off, the bot will
require all bans to be made through the bot's console.
dynamicexempts
Only activate exempts on the channel when necessary? This keeps the
channel's exempt list from getting excessively long. The bot still
remembers every exempt, but it only activates a exempt on the channel
when it sees a ban set that matches the exempt. The exempt remains
active on the channel for as long as the ban is still active.
userexempts
Allow exempts to be made by users directly? If turned off, the bot will
require all exempts to be made through the bot's console.
dynamicinvites
Only activate invites on the channel when necessary? This keeps the
channel's invite list from getting excessively long. The bot still
remembers every invite, but the invites are only activated when the
channel is set to invite only and a user joins after requesting an
invite. Once set, the invite remains until the channel goes to -i.
userinvites
Allow invites to be made by users directly? If turned off, the bot
will require all invites to be made through the bot's console.
autoop
Op users with the +o flag as soon as they join the channel?
This is insecure and not recommended.
autohalfop
Halfop users with the +l flag as soon as they join the channel?
This is insecure and not recommended.
bitch
Only let users with the +o flag have op on the channel?
greet
Say a user's info line when they join the channel?
protectops
Re-op a user with the +o flag if they get deopped?
protecthalfops
Re-halfop a user with the +l flag if they get dehalfopped?
protectfriends
Re-op a user with the +f flag if they get deopped?
statuslog
Log the channel status line every 5 minutes? This shows the bot's
status on the channel (op, voice, etc.), the channel's modes, and
the number of +m/+o/+v/+n/+b/+e/+I users on the channel. A sample
status line follows:
[01:40] @#lamest (+istn) : [m/1 o/1 v/4 n/7 b/1 e/5 I/7]
revenge
Remember people who deop/kick/ban the bot, valid ops, or friends
and punish them? Users with the +f flag are exempt from revenge.
revengebot
This is similar to to the 'revenge' option, but it only triggers
if a bot gets deopped, kicked or banned.
autovoice
Voice users with the +v flag when they join the channel?
secret
Prevent this channel from being listed on the botnet?
shared
Share channel-related user info for this channel?
cycle
Cycle the channel when it has no ops?
dontkickops
Do you want the bot not to be able to kick users who have the +o
flag, letting them kick-flood for instance to protect the channel
against clone attacks?
inactive
This prevents the bot from joining the channel (or makes it leave the
channel if it is already there). It can be useful to make the bot leave
a channel without losing its settings, channel-specific user flags,
channel bans, and without affecting sharing.
seen
Respond to seen requests in the channel? The seen module must be
loaded for this to work.
nodesynch
Allow non-ops to perform channel modes? This can stop the bot from
fighting with services such as ChanServ, or from kicking IRCops when
setting channel modes without having ops.
The following settings are used as default values when you .+chan #chan or .tcl
channel add #chan. Look in the section above for explanation of every option.
set global-flood-chan 10:60
set global-flood-deop 3:10
set global-flood-kick 3:10
set global-flood-join 5:60
set global-flood-ctcp 3:60
set global-flood-nick 5:60
set global-chanmode "nt-likm"
set global-stopnethack-mode 0
set global-revenge-mode 0
set global-ban-time 120
set global-exempt-time 60
set global-invite-time 60
set global-chanset {
-autoop -autovoice
-bitch +cycle
+dontkickops +dynamicbans
+dynamicexempts +dynamicinvites
-enforcebans +greet
-inactive -nodesynch
-protectfriends +protectops
-revenge -revengebot
-secret -seen
+shared +statuslog
+userbans +userexempts
+userinvites +protecthalfops
+autohalfop
}
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.compress 0000664 0000764 0000764 00000002043 10755654155 017243 0 ustar guppy guppy $Id: mod.compress,v 1.18 2008-02-16 21:41:01 guppy Exp $
Compress Module
Last revised: May 27, 2004
_____________________________________________________________________
Compress Module
This module provides provides support for file compression. It can be used
to compress files via Tcl or to transfer the userfile compressed during the
share process, saving bandwidth.
This module requires: share
Put this line into your Eggdrop configuration file to load the compress
module:
loadmodule compress
There are also some variables you can set in your config file:
set share-compressed 1
Allow compressed sending of user files? The user files are compressed
with the compression level defined in `compress-level'.
set compress-level 9
This is the default compression level used. These levels are the same
as those used by GNU gzip.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.irc 0000664 0000764 0000764 00000014665 10755654155 016202 0 ustar guppy guppy $Id: mod.irc,v 1.25 2008-02-16 21:41:01 guppy Exp $
IRC Module
Last revised: August 21, 2004
_____________________________________________________________________
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.
This module requires: server, channels
Put this line into your Eggdrop configuration file to load the irc
module:
loadmodule irc
There are also some variables you can set in your config file:
set bounce-bans 1
Set this to 1 if you want to bounce all server bans.
set bounce-exempts 0
Set this to 1 if you want to bounce all server exemptions (+e modes).
This is disabled if use-exempts is disabled.
set bounce-invites 0
Set this to 1 if you want to bounce all server invitations (+I modes).
This is disabled if use-invites is disabled.
set bounce-modes 0
Set this to 1 if you want to bounce all server modes.
set max-modes 30
There is a global limit for +b/+e/+I modes. This limit should be set to
the same value as max-bans for networks that do not support +e/+I.
set max-bans 30
Set here the maximum number of bans you want the bot to set on a channel.
Eggdrop will not place any more bans if this limit is reached. Undernet
currently allows 45 bans, IRCnet allows 30, EFnet allows 100, and DALnet
allows 100.
set max-exempts 20
Set here the maximum number of exempts you want Eggdrop to set on a
channel. Eggdrop will not place any more exempts if this limit is
reached.
set max-invites 20
Set here the maximum number of invites you want Eggdrop to set on a
channel. Eggdrop will not place any more invites if this limit is
reached.
set use-exempts 0
set use-invites 0
These settings should be left commented unless the default values are
being overridden. By default, exempts and invites are on for EFnet and
IRCnet, but off for all other large networks. This behavior can be
modified with the following 2 flags. If your network doesn't support
+e/+I modes then you will be unable to use these features.
set kick-fun 0
Set this to 1 if you want the bot to kick for control character/ctcp
avalanches to a channel. Remember that if it does, it won't ban them.
This can start kick floods.
set ban-fun 0
Set this to 1 if you want the bot to ban for control character/ctcp
avalanches to a channel. This can prevent kick floods, but it also can
fill the banlist.
set learn-users 0
If you want people to be able to add themselves to the bot's userlist
with the default userflags (defined above in the config file) via the
'hello' msg command, set this to 1.
set wait-split 600
Set here the time (in seconds) to wait for someone to return from a
netsplit (i.e. wasop will expire afterwards). Set this to 1500 on IRCnet
since its nick delay stops after 30 minutes.
set wait-info 180
Set here the time (in seconds) that someone must have been off-channel
before re-displaying their info line.
set mode-buf-length 200
Set this to the maximum number of bytes to send in the arguments of
modes sent to the server. Most servers default this to 200.
unbind msg - hello *msg:hello
bind msg - myword *msg:hello
Many IRCops find bots by seeing if they reply to 'hello' in a msg. You
can change this to another word by un-commenting thse two lines and
changing "myword" to the word wish to use instead of'hello'. It must be
a single word.
unbind msg - ident *msg:ident
unbind msg - addhost *msg:addhost
Many takeover attempts occur due to lame users blindly /msg ident'ing to
the bot and attempting to guess passwords. We now unbind this command by
default to discourage them. You can enable this command by un-commenting
these two lines.
set opchars "@"
#set opchars "@&~"
Some IRC servers are using some non-standard op-like channel
prefixes/modes. Define them here so the bot can recognize them. Just
"@" should be fine for most networks. Un-comment the second line for
some UnrealIRCds.
set no-chanrec-info 0
If you are so lame you want the bot to display peoples info lines, even
when you are too lazy to add their chanrecs to a channel, set this to 1.
*NOTE* This means *every* user with an info line will have their info
line displayed on EVERY channel they join (provided they have been gone
longer than wait-info).
These were the core irc module settings. There are more settings for
'net-type' 1 and 5. net-type has to be set in the server module config
section.
Use the following settings only if you set 'net-type' to 1!
set prevent-mixing 1
At the moment, the current IRCnet IRCd version (2.10) doesn't support the
mixing of b, o and v modes with e and I modes. This might be changed in
the future, so use 1 at the moment for this setting.
Use the following settings only if you set 'net-type' to 5!
set kick-method 1
If your network supports more users per kick command then 1, you can
change this behavior here. Set this to the number of users to kick at
once, or set this to 0 for all at once.
set modes-per-line 3
Some networks allow you to stack lots of channel modes into one line.
They're all guaranteed to support at least 3, so that's the default.
If you know your network supports more, you may want to adjust this.
This setting is limited to 6, although if you want to use a higher
value, you can modify this by changing the value of MODES_PER_LINE_MAX
in src/chan.h and recompiling the bot.
set include-lk 1
Some networks don't include the +l limit and +k or -k key modes in the
modes-per-line (see above) limitation. Set include-lk to 0 for these
networks.
set use-354 0
Set this to 1 if your network uses IRCu2.10.01 specific /who requests.
Eggdrop can, therefore, ask only for exactly what's needed.
set rfc-compliant 1
If your network doesn't use rfc 1459 compliant string matching routines,
set this to 0.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.transfer 0000664 0000764 0000764 00000002665 10755654156 017247 0 ustar guppy guppy $Id: mod.transfer,v 1.18 2008-02-16 21:41:02 guppy Exp $
Transfer Module
Last revised: January 1, 2002
_____________________________________________________________________
Transfer Module
The transfer module provides DCC SEND/GET support and userfile transfer
support for userfile sharing.
This module requires: none
Put this line into your Eggdrop configuration file to load the transfer
module:
loadmodule transfer
There are also some variables you can set in your config file:
set max-dloads 3
Set here the maximum number of simultaneous downloads to allow for
each user.
set dcc-block 0
Set here the block size for dcc transfers. ircII uses 512 bytes,
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 into the /tmp directory
before sending them. This is useful on most systems for file stability,
but if your directories are NFS mounted, it's a pain, and you'll want
to set this to 0. If you are low on disk space, you may also want to
set this to 0.
set xfer-timeout 30
Set here the time (in seconds) to wait before an inactive transfer
times out.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.assoc 0000664 0000764 0000764 00000001057 10755654155 016524 0 ustar guppy guppy $Id: mod.assoc,v 1.16 2008-02-16 21:41:01 guppy Exp $
Assoc Module
Last revised: January 1, 2002
_____________________________________________________________________
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
module:
loadmodule assoc
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.share 0000664 0000764 0000764 00000004114 10755654155 016513 0 ustar guppy guppy $Id: mod.share,v 1.18 2008-02-16 21:41:01 guppy Exp $
Share Module
Last revised: November 27, 2003
_____________________________________________________________________
Share Module
This module provides userfile sharing support between two directly linked
bots.
This module requires: transfer, channels
Put this line into your Eggdrop configuration file to load the share module:
loadmodule share
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.
set resync-time 900
This setting specifies how long to hold another bots resync data
before flushing it.
This is a setting for allow-resync.
set private-global 0
When sharing user lists, DON'T ACCEPT global flag changes from other
bots? NOTE: The bot will still send changes made on the bot, it just
won't accept any global flag changes from other bots. This overrides
the private-globals setting (below).
set private-globals "mnot"
When sharing user lists, if private-global isn't set, which global flag
changes from other bots should be ignored?
set private-user 0
When sharing user lists, don't accept ANY userfile changes from other
bots? Paranoid people should use this feature on their hub bot. This
will force all userlist changes to be made via the hub.
set override-bots 0
This setting makes the bot discard its own bot records in favor of
the ones sent by the hub.
NOTE: No passwords or botflags are shared, only ports and
address are added to sharing procedure. This only works with hubs that
are v1.5.1 or higher.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/CONTENTS 0000664 0000764 0000764 00000003426 10755654154 016074 0 ustar guppy guppy $Id: CONTENTS,v 1.14 2008-02-16 21:41:00 guppy Exp $
Directory Contents - doc/settings/
Last revised: April 16, 2003
_____________________________________________________________________
Directory Contents - doc/settings
core.settings
All module-independent Eggdrop settings are documented here.
mod.assoc
Documentation for the assoc module is provided in this file.
mod.blowfish
Documentation for the blowfish module is provided in this file.
mod.channels
Documentation for the channels module is provided in this file.
mod.compress
Documentation for the compress module is provided in this file.
mod.console
Documentation for the console module is provided in this file.
mod.ctcp
Documentation for the ctcp module is provided in this file.
mod.dns
Documentation for the dns module is provided in this file.
mod.filesys
Documentation for the filesys module is provided in this file.
mod.irc
Documentation for the irc module is provided in this file.
mod.notes
Documentation for the notes module is provided in this file.
mod.seen
Documentation for the seen module is provided in this file.
mod.server
Documentation for the server module is provided in this file.
mod.share
Documentation for the share module is provided in this file.
mod.transfer
Documentation for the transfer module is provided in this file.
mod.uptime
Documentation for the uptime module is provided in this file.
mod.wire
Documentation for the wire module is provided in this file.
mod.woobie
Documentation for the woobie module is provided in this file.
________________________________________________________________________
Copyright (C) 2003 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.woobie 0000664 0000764 0000764 00000001153 10755654156 016676 0 ustar guppy guppy $Id: mod.woobie,v 1.16 2008-02-16 21:41:02 guppy Exp $
Woobie Module
Last revised: December 31, 2001
_____________________________________________________________________
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
Put this line into your Eggdrop configuration file to load the woobie
module:
loadmodule woobie
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.wire 0000664 0000764 0000764 00000001157 10755654156 016364 0 ustar guppy guppy $Id: mod.wire,v 1.16 2008-02-16 21:41:02 guppy Exp $
Wire Module
Last revised: July 24, 2004
_____________________________________________________________________
Wire Module
This module provides all the standard .wire partyline commands. It is an
encrypted partyline communication tool, compatible with wire.tcl.
This module requires: encryption
Put this line into your Eggdrop configuration file to load the wire module:
loadmodule wire
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.ctcp 0000664 0000764 0000764 00000002360 10755654155 016343 0 ustar guppy guppy $Id: mod.ctcp,v 1.17 2008-02-16 21:41:01 guppy Exp $
CTCP Module
Last revised: February 12, 2002
_____________________________________________________________________
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
Put this line into your Eggdrop configuration file to load the ctcp
module:
loadmodule ctcp
There are also some variables you can set in your config file:
set ctcp-mode 0
Set here how the ctcp module should answer ctcps. There are 3 possible
operating modes:
0: Normal behavior is used.
1: The bot ignores all ctcps, except for CHAT and PING requests
by users with the +o flag.
2: Normal behavior is used, however the bot will not answer more
than X ctcps in Y seconds (defined by 'set flood-ctcp').
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 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.console 0000664 0000764 0000764 00000002101 10755654155 017045 0 ustar guppy guppy $Id: mod.console,v 1.16 2008-02-16 21:41:01 guppy Exp $
Console Module
Last revised: January 1, 2002
_____________________________________________________________________
Console Module
This module provides storage of console settings when you exit the bot or
type .store on the partyline.
This module requires: none
Put this line into your Eggdrop configuration file to load the console
module:
loadmodule console
There are also some variables you can set in your config file:
set console-autosave 1
Save users console settings automatically? Otherwise, they have
to use the .store command.
set force-channel 0
If a user doesn't have any console settings saved, which channel
do you want them automatically put on?
set info-party 0
Enable this setting if a user's global info line should be displayed
when they join a botnet channel.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.notes 0000664 0000764 0000764 00000002735 10755654155 016550 0 ustar guppy guppy $Id: mod.notes,v 1.17 2008-02-16 21:41:01 guppy Exp $
Notes Module
Last revised: January 1, 2002
_____________________________________________________________________
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.
This module requires: none
Put this line into your Eggdrop configuration file to load the notes
module:
loadmodule notes
There are also some variables you can set in your config file:
set notefile "LamestBot.notes"
Set here the filename where private notes between users are stored.
set max-notes 50
Set here the maximum number of notes to allow to be stored for each user
(to prevent flooding).
set note-life 60
Set here how long (in days) to store notes before expiring them.
set allow-fwd 0
Set this to 1 if you want to allow users to specify a forwarding address
for forwarding notes to another account on another bot.
set notify-users 1
Set this to 1 if you want the bot to let people know hourly if they have
any notes.
set notify-onjoin 1
Set this to 1 if you want the bot to let people know on join if they have
any notes.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/mod.filesys 0000664 0000764 0000764 00000003621 10755654155 017071 0 ustar guppy guppy $Id: mod.filesys,v 1.18 2008-02-16 21:41:01 guppy Exp $
Filesys Module
Last revised: May 26, 2004
_____________________________________________________________________
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
Put this line into your Eggdrop configuration file to load the filesys
module:
loadmodule filesys
There are also some variables you can set in your config file:
set files-path "/home/mydir/eggdrop/filesys"
Set here the 'root' directory for the file system.
set incoming-path "/home/mydir/eggdrop/filesys/incoming"
If you want to allow uploads, set this to the directory uploads should be
put into. Set this to "" if you don't want people to upload files to your
bot.
set upload-to-pwd 0
If you don't want to have a central incoming directory, but instead
want uploads to go to the current directory that a user is in, set this
setting to 1.
set filedb-path ""
Eggdrop creates a '.filedb' file in each subdirectory of your file area
to keep track of its own file system information. If you can't do that
(for example, if the dcc path isn't owned by you, or you just don't want
it to do that) specify a path here where you'd like all of the database
files to be stored instead.
set max-file-users 20
Set here the maximum number of people that can be in the file area at
once. Setting this to 0 makes it effectively infinite.
set max-filesize 1024
Set here the maximum allowable file size that will be received (in KB).
Setting this to 0 makes it effectively infinite.
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/settings/core.settings 0000664 0000764 0000764 00000045774 10755654155 017443 0 ustar guppy guppy $Id: core.settings,v 1.37 2008-02-16 21:41:01 guppy Exp $
Eggdrop Core Settings
Last revised: April 17, 2003
_____________________________________________________________________
Eggdrop Core Settings
This file describes the syntax and all the settings of your Eggdrop
configuration file. Please note that you don't need to set all of these
variables to make your bot work properly.
##### EXECUTABLE PATH #####
The first line in an Eggdrop configuration file should contain
a fully qualified path to your Eggdrop executable. It has to be
implemented in the way the example shows to make the config file
work as a shell script.
Example:
#! /path/to/eggdrop
##### BASIC SETTINGS #####
You can change the basic Eggdrop appearance and behavior in this section.
set username "lamest"
This setting defines the username the bot uses on IRC. This setting has
no effect if an ident daemon is running on your bot's machine.
set admin "Lamer "
This setting defines which contact person should be shown in .status,
/msg help, and other places. You really should include this information.
set network "SomeIrcNetwork"
This setting is used only for info to share with others on your botnet.
Set this to the IRC network your bot is connected to.
set timezone "EST"
This setting defines the timezone is your bot in. It's used for internal
routines as well as for logfile timestamping and scripting purposes.
The timezone string specifies the name of the timezone and must be three
or more alphabetic characters. For example, Central European Time(UTC+1)
should be "CET".
set offset "5"
The offset setting specifies the time value to be added to the local
time to get Coordinated Universal Time (UTC aka GMT). The offset is
positive if the local timezone is west of the Prime Meridian and
negative if it is east. The value (in hours) must be between -23 and
23. For example, if the timezone is UTC+1, the offset is -1.
set env(TZ) "$timezone $offset" (disabled by default)
If you don't want to use the timezone setting for scripting purposes
only, but instead everywhere possible, then use this setting.
set my-hostname "virtual.host.com"
set my-ip "99.99.0.0"
If you're using virtual hosting (your machine has more than 1 IP), you
may want to specify the particular IP to bind to. You can specify either
by hostname or by IP. You may also want to set the hostname here if
Eggdrop has trouble detecting it when it starts up.
addlang "english"
If you want to have your Eggdrop messages displayed in another language,
change this command to match your preferences. An alternative would be
to set the environment variable EGG_LANG to that value.
Languages included with Eggdrop: Danish, English, French, Finnish,
German.
##### LOG FILES #####
Eggdrop is capable of logging various things, from channel chatter to
partyline commands and file transfers.
Logfiles are normally kept for 24 hours. Afterwards, they will be renamed
to "(logfilename).yesterday". After 48 hours, they will be overwritten by
the logfile of the next day.
set max-logs 5
This is the maximum number of logfiles allowed. This setting can be
increased; however, don't decrease it.
set max-logsize 0
This is the maximum size of your logfiles. Set it to 0 to disable.
This value is in kilobytes, so '550' would mean cycle logs when it
reaches the size of 550 kilobytes. Note that this only works if you
have keep-all-logs set to 0 (OFF).
set quick-logs 0
This could be good if you have had a problem with logfiles filling
your quota/hard disk or if you log +p and publish it to the web, and
you need more up-to-date info. Note that this setting might increase
the CPU usage of your bot (on the other hand it will decrease your RAM
usage).
set raw-log 0
This setting allows you the logging of raw incoming server traffic via
console/log flag 'r', raw outgoing server traffic via console/log mode
'v', raw botnet traffic via console/log mode 't', and raw share traffic
via console/log mode 'h'. These flags can create a large security hole,
allowing people to see user passwords. This is now restricted to +n users
only. Please choose your owners with care.
logfile "logs/logfile"
This setting tells the bot what should be logged, from where, and to
which file.
Logfile flags:
b - information about bot linking and userfile sharing
c - commands
d - misc debug information
h - raw share traffic
j - joins, parts, quits, and netsplits on the channel
k - kicks, bans, and mode changes on the channel
m - private msgs, notices and ctcps to the bot
o - misc info, errors, etc (IMPORTANT STUFF)
p - public text on the channel
r - raw incoming server traffic
s - server connects, disconnects, and notices
t - raw botnet traffic
v - raw outgoing server traffic
w - wallops (make sure the bot sets +w in init-server)
x - file transfers and file-area commands
Note that modes d, h, r, t, and v can fill disk quotas quickly. There are
also eight user-defined levels (1-8) which can be used by Tcl scripts.
Each logfile belongs to a certain channel. Events of type 'k', 'j', and
'p' are logged to whatever channel they happened on. Most other events
are currently logged to every channel. You can make a logfile belong to
all channels by assigning it to channel "*".
Examples:
logfile mco * "logs/eggdrop.log"
logfile jpk #lamest "logs/lamest.log"
In 'eggdrop.log', put private msgs/ctcps, commands, misc info, and errors
from any channel.
In 'lamest.log', log all joins, parts, kicks, bans, public chatter, and
mode changes from #lamest.
set log-time 1
Use this feature to timestamp entries in the log file.
set keep-all-logs 0
If you want to keep your logfiles forever, turn this setting on. All
logfiles will get the suffix
".[day, 2 digits][month, 3 letters][year, 4 digits]". Note that your
quota/hard-disk might be filled by this, so check your logfiles
often and download them.
set switch-logfiles-at 300
You can specify when Eggdrop should switch logfiles and start fresh.
use military time for this setting. 300 is the default, and describes
03:00 (AM).
set quiet-save 0
Those nasty "Writing user file..." and "Writing channel file..." messages
won't be logged anymore if this option is enabled.
set logfile-suffix ".%d%b%Y"
If keep-all-logs is 1, this setting will define the suffix of the
logfiles. The default will result in a suffix like "04May2000". "%Y%m%d"
will produce the often used yyyymmdd format. Read the strftime manpages
for more options. NOTE: On systems which don't support strftime, the
default format will be used _always_.
##### CONSOLE #####
set console "mkcobxs"
This is the default console mode. It uses the same event flags as the
log files do. The console channel is automatically set to your "primary"
channel, which is set in the modules section of the config file. Masters
can change their console channel and modes with the '.console' command.
##### FILES AND DIRECTORIES #####
set userfile "LamestBot.user"
Specify here the filename your userfile should be saved as.
set pidfile "pid.LamestBot"
Specify here the filename Eggdrop will save its pid to. If no pidfile is
specified, pid.(botnet-nick) will be used.
set sort-users 0
If you want your userfile to be sorted upon saving, enable this setting.
This causes the bot to use bit more CPU when saving the userfile.
set help-path "help/"
Specify here where Eggdrop should look for help files. Don't modify this
setting unless you know what you're doing!
set text-path "text/"
Specify here where Eggdrop should look for text files. This is used for
certain Tcl and DCC commands.
set temp-path "/tmp"
Set here a place to store temporary files.
set motd "text/motd"
The MOTD (Message Of The day) is displayed when people dcc chat or telnet
to the bot. Look at doc/TEXT-SUBSTITUTIONS for options.
set telnet-banner "text/banner"
This banner will be displayed on telnet connections. Look at
doc/text-substitutions.doc for options.
set userfile-perm 0600
This specifies what permissions the user, channel, and notes files should
be set to. The octal values are the same as for the chmod system command.
To remind you:
u g o u g o u g o
0600 rw------- 0400 r-------- 0200 -w------- u - user
0660 rw-rw---- 0440 r--r----- 0220 -w--w---- g - group
0666 rw-rw-rw- 0444 r--r--r-- 0222 -w--w--w- o - others
Note that the default 0600 is the most secure one and should only be
changed if you need your files for shell scripting or other external
applications.
set mod-path "modules/"
This path specifies the path were Eggdrop should look for its modules.
If you run the bot from the compilation directory, you will want to set
this to "". If you use 'make install' (like all good kiddies do ;), this
is a fine default. Otherwise, use your head :).
##### BOTNET/DCC/TELNET #####
Settings in this section should be unimportant for you until you deal with
botnets (multiple Eggdrops connected together to maximize efficiency). You
should read doc/BOTNET before modifying these settings.
set botnet-nick "LlamaBot" (disabled by default)
If you want to use a different nickname on the botnet than you use on
IRC (i.e. if you're on an un-trusted botnet), un-comment this line
and set it to the nick you would like to use.
listen
This opens a telnet port by which you and other bots can interact with
the Eggdrop by telneting in.
There are more options for the listen command in doc/tcl-commands.doc.
Note that if you are running more than one bot on the same machine, you
will want to space the telnet ports at LEAST 5 apart, although 10 is even
better.
Valid ports are typically anything between 1025 and 65535 assuming the
port is not already in use.
If you would like the bot to listen for users and bots in separate ports,
use the following format:
listen 3333 bots
listen 4444 users
If you wish to use only one port, use this format:
listen 3333 all
You need to un-comment this line and change the port number in order to
open the listen port. You should not keep this set to 3333.
set remote-boots 2
This setting defines whether or not people can boot users on the Eggdrop
from other bots in your botnet. Valid settings are:
0 - allow *no* outside boots
1 - allow boots from sharebots
2 - allow any boots
set share-unlinks 1
This setting prohibits Eggdrop to unlink from share bots if an remote
bots tells so.
set protect-telnet 0
This setting will drop telnet connections not matching a known host.
set dcc-sanitycheck 0
This setting will make the bot ignore DCC chat requests which appear to
have bogus information on the grounds that the user may have been trying
to make the bot connect to somewhere that will get it into trouble, or
that the user has a broken client, in which case the connect wouldn't
work anyway.
set ident-timeout 5
This settings defines a time in seconds that the bot should wait before
a dcc chat, telnet, or relay connection times out.
set require-p 0
Define here whether or not a +o user still needs the +p flag to dcc the
bot.
set open-telnets 0
If you want people allow to telnet in and type 'NEW' to become a new user,
set this to 1. This is similar to the 'hello' msg command. The
protect-telnet setting must be set to 0 to use this.
set stealth-telnets 0
If you don't want Eggdrop to identify itself as an Eggdrop on a telnet
connection, set this setting to 1. Eggdrop will display 'Nickname'
instead.
set use-telnet-banner 0
If you want Eggdrop to display a banner when telneting in, set this
setting to 1. The telnet banner is set by 'set telnet-banner'.
set connect-timeout 15
This settings defines a time in seconds that the bot should wait before
a dcc chat, telnet, or relay connection times out.
set dcc-flood-thr 3
Specify here the number of lines to accept from a user on the partyline
within 1 second before they are considered to be flooding and therefore
get booted.
set telnet-flood 5:60
Define here how many telnet connection attempts in how many seconds from
the same host constitute a flood. The correct format is Attempts:Seconds.
set paranoid-telnet-flood 1
If you want telnet-flood to apply even to +f users, set this setting
to 1.
set resolve-timeout 15
Set here the amount of seconds before giving up on hostname/address
lookup (you might want to increase this if you are on a slow network).
##### MORE ADVANCED SETTINGS #####
set firewall "!sun-barr.ebay:3666"
Set this to your socks host if your Eggdrop sits behind a firewall. If
you use a Sun "telnet passthru" firewall, prefix the host with a "!".
set nat-ip "127.0.0.1"
If you have a NAT firewall (you box has an IP in one of the following
ranges: 192.168.0.0-192.168.255.255, 172.16.0.0-172.31.255.255,
10.0.0.0-10.255.255.255 and your firewall transparently changes your
address to a unique address for your box) or you have IP masquerading
between you and the rest of the world, and /dcc chat, /ctcp chat or
userfile sharing aren't working, enter your outside IP here. This IP
is used for transfers only, and has nothing to do with the my-ip or
my-hostname settings. You may still need to set my-ip and/or my-hostname.
set reserved-portrange 2010:2020
If you want all dcc file transfers to use a particular portrange either
because you're behind a firewall, or for other security reasons, set it
here.
set ignore-time 15
Set the time in minutes that temporary ignores should last.
set hourly-updates 00
Define here what Eggdrop considers 'hourly'. All calls to it, including
such things as note notifying or userfile saving, are affected by this.
Example:
set hourly-updates 15
The bot will save its userfile 15 minutes past every hour.
set owner "MrLame, MrsLame"
Un-comment this line and set the list of owners of the bot.
You NEED to change this setting.
set notify-newusers "$owner"
Who should a note be sent to when new users are learned?
set default-flags "hp"
Enter the flags that all new users should get by default. See '.help
whois' on the partyline for a list of flags and their descriptions.
set whois-fields "url birthday"
Enter all user-defined fields that should be displayed in a '.whois'.
This will only be shown if the user has one of these extra fields.
You might prefer to comment this out and use the userinfo1.0.tcl script
which provides commands for changing all of these.
set die-on-sighup 0
Enable this setting if you want your Eggdrop to die upon receiving a
SIGHUP kill signal. Otherwise, the Eggdrop will just save its userfile
and rehash.
set die-on-sigterm 0
Enable this setting if you want your Eggdrop to die upon receiving a
SIGTERM kill signal. Otherwise, the Eggdrop will just save its userfile
and rehash.
unbind dcc n tcl *dcc:tcl
unbind dcc n set *dcc:set
Comment these two lines if you wish to enable the .tcl and .set commands.
If you select your owners wisely, you should be okay enabling these.
set must-be-owner 1
If you enable this setting, only permanent owners (owner setting) will
be able to use .tcl and .set. Moreover, if you want to only let permanent
owners use .dump, then set this to 2.
unbind dcc n simul *dcc:simul
Comment out this line to add the 'simul' partyline command (owners
can manipulate other people on the party line). Please select owners
wisely and use this command ethically!
set max-dcc 50
Set here the maximum number of dcc connections you will allow. You can
increase this later, but never decrease it.
set allow-dk-cmds 1
Enable this setting if you want +d & +k users to use commands bound
as -|-.
set dupwait-timeout 5
If your Eggdrop rejects bots that actually have already disconnected
from another hub, but the disconnect information has not yet spread
over the botnet due to lag, use this setting. The bot will wait
dupwait-timeout seconds before it checks again and then finally
reject the bot.
##### MODULES #####
After the core settings, you should start loading modules. Modules are
loaded by the command "loadmodule ". Eggdrop looks for modules
in the directory you specified by the module-path setting in the files
and directories section.
Please note that for different configurations, different modules are needed.
Four examples:
Channel Security Bot:
This bot needs the channels, blowfish, console, dns, irc, and (if you
like) ctcp modules loaded. More is not needed and makes the bot slower.
Public IRC Bot:
A public bot should have all modules available loaded since they provide
all functions for everyday use.
Secure Filesys Bot:
This bot needs all normal IRC operating modules, but not the notes, seen,
ctcp or share modules.
Limbo Bot:
A limbo bot (serves as a botnet hub outside IRC) just needs the
channels, console, dns, and maybe notes or share modules loaded. Of
course, blowfish needs to be loaded here, too.
##### SCRIPTS #####
The scripts section should be placed at the end of the config file. All
modules should be loaded and their variables should be set at this point.
source scripts/script.tcl
This line loads script.tcl from the scripts directory inside your
Eggdrop's directory. All scripts should be put there, although you can
place them where you like as long as you can supply a fully qualified
path to them.
Some commonly loaded scripts are alltools.tcl and action.fix.tcl.
The appropriate source lines are:
source scripts/alltools.tcl
source scripts/action.fix.tcl
_____________________________________________________________________
Copyright (C) 2000 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/BANS 0000664 0000764 0000764 00000007036 10755654150 013517 0 ustar guppy guppy $Id: BANS,v 1.10 2008-02-16 21:40:56 guppy Exp $
Bans, Invites and Exempts
Last revised: March 07, 2002
_____________________________________________________________________
Bans, Invites, and Exempts
I assume that you know how bans work on IRC. Eggdrop handles bans, exempts
and invites in various ways, and this file is intended to help clarify how
these modes are used within the bot. From here on, 'mode' applies to all
three modes (bans, exempts, and invites) unless otherwise specified. There
are three types of modes:
Global modes These modes will be active on every channel the bot
monitors. Some will "expire" after a while (be removed
automatically). Others are considered "permanent" and
can only be removed by a master.
Channel modes These modes are active only on one channel, and are almost
always temporary modes that expire after an hour or so
(depending on how long you've specified in the config
file). Usually they're created by a Tcl script of some
sort.
Non-bot modes These are modes that were not placed by the bot. They
can be removed by anyone on the channel. The other two
types of modes are protected by the bot (unless the
channel settings specify otherwise), and have to be
removed via the bot.
Bans can also be either sticky or unsticky:
Sticky These modes are usually set by a user using the ".stick"
command. Modes with this attribute are attempted to be kept
active on the channel at all times by the bot, even if the
channel is set to use dynamic modes. Obviously, if the channel
isn't set to use dynamic modes, this won't have any effect.
Un-sticky These modes are the style that Eggdrop sets by default when
a user uses one of the commands that result in a mode. This
attribute means that the ban will be removed if using dynamic
modes after a certain time. If a mode is "sticky" and you wish
to set it to be "un-sticky", use the ".unstick" command.
Mode behavior:
Bans If the channel is supporting dynamic bans, then the ban is
set when a user with a matching hostmask joins the channel;
otherwise, the modes are permanently set. On a channel with
dynamic bans, the ban expires after 'ban-time' minutes (which
is specified in the config file).
Exempts If the channel is not supporting dynamic exempts, then they
are set at all times. Otherwise, the exemption is set when a
ban is placed whose host includes that covered by the exempt.
The exempt will remain in place for at least 'exempt-time'
minutes (defined in config file) or until after the
corresponding ban has been removed, whichever happens last.
Invites If the channel does not support dynamic invites, then they
are set at all times. Otherwise, the invite is set when the
channel is +i and a user requests an invite into the channel.
The invite then remains set for 'invite-time' minutes
(defined in config file) or until the channel goes -i again,
whichever happens last.
_____________________________________________________________________
Copyright (C) 1999 - 2008 Eggheads Development Team
eggdrop1.6.19/doc/tcl-commands.doc 0000664 0000764 0000764 00000255200 10411705332 016103 0 ustar guppy guppy $Id: tcl-commands.doc,v 1.122 2006-03-27 06:48:58 wcc Exp $
Eggdrop Tcl Commands
Last revised: August 02, 2004
_____________________________________________________________________
Eggdrop Tcl Commands
This is an exhaustive list of all the Tcl commands added to Eggdrop. All
of the normal Tcl built-in commands are still there, of course, but you
can also use these to manipulate features of the bot. They are listed
according to category.
This list is accurate for Eggdrop v1.6.18. Scripts written for v1.3/v1.4
series of Eggdrop should probably work with a few minor modifications
depending on the script. Scripts which were written for v0.9, v1.0, v1.1
or v1.2 will probably not work without modification. Commands which have
been changed in this version of Eggdrop (or are just new commands) are
marked with vertical bars (|) on the left.
*** OUTPUT COMMANDS ***
putserv [options]
Description: sends text to the server, like '.dump' (intended for direct
server commands); output is queued so that the bot won't flood itself
off the server.
Options:
-next: push messages to the front of the queue
-normal: no effect
Returns: nothing
Module: server
puthelp [options]
Description: sends text to the server, like 'putserv', but it uses a
different queue intended for sending messages to channels or people.
Options:
-next: push messages to the front of the queue
-normal: no effect
Returns: nothing
Module: server
putquick [options]
Description: sends text to the server, like 'putserv', but it uses a
different (and faster) queue.
Options:
-next: push messages to the front of the queue
-normal: no effect
Returns: nothing
Module: server
putkick [reason]
Description: sends kicks to the server and tries to put as many nicks
into one kick command as possible.
Returns: nothing
Module: irc
putlog
Description: sends text to the bot's logfile, marked as 'misc' (o)
Returns: nothing
Module: core
putcmdlog
Description: sends text to the bot's logfile, marked as 'command' (c)
Returns: nothing
Module: core
putxferlog
Description: sends text to the bot's logfile, marked as 'file-area' (x)
Returns: nothing
Module: core
putloglev
Description: sends text to the bot's logfile, tagged with all of the
valid levels given. Use "*" to indicate all log levels.
Returns: nothing
Module: core
dumpfile
Description: dumps file from the help/text directory to a user on IRC via
msg (one line per msg). The user has no flags, so the flag bindings
won't work within the file.
Returns: nothing
Module: core
queuesize [queue]
Returns: the number of messages in all queues. If a queue is specified,
only the size of this queue is returned. Valid queues are: mode,
server, help.
Module: server
clearqueue
Description: removes all messages from a queue. Valid arguments are:
mode, server, help, or all.
Returns: the number of deleted lines from the specified queue.
Module: server
*** USER RECORD MANIPULATION COMMANDS ***
countusers
Returns: number of users in the bot's database
Module: core
validuser
Returns: 1 if a user by that name exists; 0 otherwise
Module: core
finduser
Description: finds the user record which most closely matches the given
nick!user@host
Returns: the handle found, or "*" if none
Module: core
userlist [flags]
Returns: a list of users on the bot. You can use the flag matching
system here ([global]{&/|}[chan]{&/|}[bot]). '&' specifies "and";
'|' specifies "or".
Module: core
passwdok
Description: checks the password given against the user's password.
Check against the password "" (a blank string) or "-" to find out
if a user has no password set.
Returns: 1 if the password matches for that user; 0 otherwise
Module: core
getuser [extra info]
Description: an interface to the new generic userfile support. Valid
entry types are:
BOTFL - returns the current bot-specific flags for the user
(bot-only)
BOTADDR - returns a list containing the bot's address, telnet port,
and relay port (bot-only)
HOSTS - returns a list of hosts for the user
LASTON - returns a list containing the unixtime last seen and the
last seen place. LASTON #channel returns the time last
seen time for the channel or 0 if no info exists.
INFO - returns the user's global info line
XTRA - returns the user's XTRA info
COMMENT - returns the master-visible only comment for the user
EMAIL - returns the user's e-mail address
URL - returns the user's url
HANDLE - returns the user's handle as it is saved in the userfile
PASS - returns the user's encrypted password
Returns: info specific to each entry-type
Module: core
setuser [extra info]
Description: this is the counterpart of getuser. It lets you set the
various values. Other then the ones listed below, the entry-types are
the same as getuser's.
PASS - sets a users password (no third arg will clear it)
HOSTS - if used with no third arg, all hosts for the user will be
be cleared. Otherwise, *1* hostmask is added :P
LASTON - This setting has 3 forms. "setuser LASTON
" sets global LASTON time, "setuser
LASTON " sets global LASTON time
(leaving the place field empty), and "setuser
LASTON " sets a users LASTON time for
a channel (if it is a valid channel).
Returns: nothing
Module: core
chhandle
Description: changes a user's handle
Returns: 1 on success; 0 if the new handle is invalid or already used,
or if the user can't be found
Module: core
chattr [changes [channel]]
Description: changes the attributes for a user record, if you include any.
Changes are of the form '+f', '-o', '+dk', '-o+d', etc. If changes are
specified in the format of |, the channel-specific
flags for that channel are altered. You can now use the +o|-o #channel
format here too.
Returns: new flags for the user (if you made no changes, the current
flags are returned). If a channel was specified, the global AND the
channel-specific flags for that channel are returned in the format of
globalflags|channelflags. "*" is returned if the specified user does
not exist.
Module: core
botattr [changes [channel]]
Description: similar to chattr except this modifies bot flags rather
than normal user attributes.
Returns: new flags for the bot (if you made no changes, the current
flags are returned). If a channel was specified, the global AND the
channel-specific flags for that channel are returned in the format of
globalflags|channelflags. "*" is returned if the specified bot does
not exist.
Module: core
matchattr [channel]
Returns: 1 if the specified user has the specified flags; 0 otherwise
Module: core
adduser [hostmask]
Description: creates a new user entry with the handle and hostmask given
(with no password and the default flags)
Returns: 1 if successful; 0 if the handle already exists
Module: core
addbot
Description: adds a new bot to the userlist with the handle and bot
address given (with no password and no flags)
Returns: 1 if successful; 0 if the bot already exists
Module: core
deluser
Description: attempts to erase the user record for a handle
Returns: 1 if successful, 0 if no such user exists
Module: core
delhost
Description: deletes a hostmask from a user's host list
Returns: 1 on success; 0 if the hostmask (or user) doesn't exist
Module: core
addchanrec
Description: adds a channel record for a user
Returns: 1 on success; 0 if the user or channel does not exist
Module: channels
delchanrec
Description: removes a channel record for a user. This includes all
associated channel flags.
Returns: 1 on success; 0 if the user or channel does not exist
Module: channels
haschanrec
Returns: 1 if the given handle has a chanrec for the specified channel;
0 otherwise
Module: channels
getchaninfo
Returns: info line for a specific channel (behaves just like 'getinfo')
Module: channels
setchaninfo
Description: sets the info line on a specific channel for a user. If
info is "none", it will be removed.
Returns: nothing
Module: channels
newchanban [lifetime] [options]
Description: adds a ban to the ban list of a channel; creator is given
credit for the ban in the ban list. lifetime is specified in
minutes. If lifetime is not specified, ban-time (usually 60) is
used. Setting the lifetime to 0 makes it a permanent ban.
Options:
sticky: forces the ban to be always active on a channel, even
with dynamicbans on
none: no effect
Returns: nothing
Module: channels
newban [lifetime] [options]
Description: adds a ban to the global ban list (which takes effect on
all channels); creator is given credit for the ban in the ban list.
lifetime is specified in minutes. If lifetime is not specified,
global-ban-time (usually 60) is used. Setting the lifetime to 0 makes
it a permanent ban.
Options:
sticky: forces the ban to be always active on a channel, even
with dynamicbans on
none: no effect
Returns: nothing
Module: channels
newchanexempt [lifetime] [options]
Description: adds a exempt to the exempt list of a channel; creator is
given credit for the exempt in the exempt list. lifetime is specified
in minutes. If lifetime is not specified, exempt-time (usually 60) is
used. Setting the lifetime to 0 makes it a permanent exempt. The exempt
will not be removed until the corresponding ban has been removed. For
timed bans, once the time period has expired, the exempt will not be
removed until the corresponding ban has either expired or been removed.
Options:
sticky: forces the exempt to be always active on a channel, even
with dynamicexempts on
none: no effect
Returns: nothing
Module: channels
newexempt [lifetime] [options]
Description: adds a exempt to the global exempt list (which takes effect
on all channels); creator is given credit for the exempt in the exempt
list. lifetime is specified in minutes. If lifetime is not specified,
exempt-time (usually 60) is used. Setting the lifetime to 0 makes it a
permanent exempt. The exempt will not be removed until the
corresponding ban has been removed.
Options:
sticky: forces the exempt to be always active on a channel, even
with dynamicexempts on
none: no effect
Returns: nothing
Module: channels
newchaninvite [lifetime] [options]
Description: adds a invite to the invite list of a channel; creator is
given credit for the invite in the invite list. lifetime is specified
in minutes. If lifetime is not specified, invite-time (usually 60) is
used. Setting the lifetime to 0 makes it a permanent invite. The invite
will not be removed until the channel has gone -i.
Options:
sticky: forces the invite to be always active on a channel, even
with dynamicinvites on
none: no effect
Returns: nothing
Module: channels
newinvite [lifetime] [options]
Description: adds a invite to the global invite list (which takes effect
on all channels); creator is given credit for the invite in the invite
list. lifetime is specified in minutes. If lifetime is not specified,
invite-time (usually 60) is used. Setting the lifetime to 0 makes it
a permanent invite. The invite will not be removed until the channel
has gone -i.
Options:
sticky: forces the invite to be always active on a channel, even
with dynamicinvites on
none: no effect
Returns: nothing
Module: channels
stick [channel]
Description: makes a ban sticky, or, if a channel is specified, then it
is set sticky on that channel only.
Returns: 1 on success; 0 otherwise
Module: channels
unstick [channel]
Description: makes a ban no longer sticky, or, if a channel is
specified, then it is unstuck on that channel only.
Returns: 1 on success; 0 otherwise
Module: channels
stickexempt [channel]
Description: makes an exempt sticky, or, if a channel is specified,
then it is set sticky on that channel only.
Returns: 1 on success; 0 otherwise
Module: channels
unstickexempt [channel]
Description: makes an exempt no longer sticky, or, if a channel is
specified, then it is unstuck on that channel only.
Returns: 1 on success; 0 otherwise
Module: channels
stickinvite [channel]
Description: makes an invite sticky, or, if a channel is specified,
then it is set sticky on that channel only.
Returns: 1 on success; 0 otherwise
Module: channels
unstickinvite [channel]
Description: makes an invite no longer sticky, or, if a channel is
specified, then it is unstuck on that channel only.
Returns: 1 on success; 0 otherwise
Module: channels
killchanban
Description: removes a ban from the ban list for a channel
Returns: 1 on success; 0 otherwise
Module: channels
killban
Description: removes a ban from the global ban list
Returns: 1 on success; 0 otherwise
Module: channels
killchanexempt
Description: removes an exempt from the exempt list for a channel
Returns: 1 on success; 0 otherwise
Module: channels
killexempt
Description: removes an exempt from the global exempt list
Returns: 1 on success; 0 otherwise
Module: channels
killchaninvite
Description: removes an invite from the invite list for a channel
Returns: 1 on success; 0 otherwise
Module: channels
killinvite
Description: removes an invite from the global invite list
Returns: 1 on success; 0 otherwise
Module: channels
ischanjuped
Returns: 1 if the channel is juped, and the bot is unable to join; 0
otherwise
Module: channels
isban [channel]
Returns: 1 if the specified ban is in the global ban list; 0 otherwise.
If a channel is specified, that channel's ban list is checked as well.
Module: channels
ispermban [channel]
Returns: 1 if the specified ban is in the global ban list AND is marked
as permanent; 0 otherwise. If a channel is specified, that channel's
ban list is checked as well.
Module: channels
isexempt [channel]
Returns: 1 if the specified exempt is in the global exempt list; 0
otherwise. If a channel is specified, that channel's exempt list is
checked as well.
Module: channels
ispermexempt [channel]
Returns: 1 if the specified exempt is in the global exempt list AND is
marked as permanent; 0 otherwise. If a channel is specified, that
channel's exempt list is checked as well.
Module: channels
isinvite [channel]
Returns: 1 if the specified invite is in the global invite list; 0
otherwise. If a channel is specified, that channel's invite list is
checked as well.
Module: channels
isperminvite [channel]
Returns: 1 if the specified invite is in the global invite list AND is
marked as permanent; 0 otherwise. If a channel is specified, that
channel's invite list is checked as well.
Module: channels
isbansticky [channel]
Returns: 1 if the specified ban is marked as sticky in the global ban
list; 0 otherwise. If a channel is specified, that channel's ban list
is checked as well.
Module: channels
isexemptsticky [channel]
Returns: 1 if the specified exempt is marked as sticky in the global
exempt list; 0 otherwise. If a channel is specified, that channel's
exempt list is checked as well.
Module: channels
isinvitesticky [channel]
Returns: 1 if the specified invite is marked as sticky in the global
invite list; 0 otherwise. If a channel is specified, that channel's
invite list is checked as well.
Module: channels
matchban [channel]
Returns: 1 if the specified nick!user@host matches a ban in the global
ban list; 0 otherwise. If a channel is specified, that channel's ban
list is checked as well.
Module: channels
matchexempt [channel]
Returns: 1 if the specified nick!user@host matches an exempt in the
global exempt list; 0 otherwise. If a channel is specified, that
channel's exempt list is checked as well.
Module: channels
matchinvite [channel]
Returns: 1 if the specified nick!user@host matches an invite in the
global invite list; 0 otherwise. If a channel is specified, that
channel's invite list is checked as well.
Module: channels
banlist [channel]
Returns: a list of global bans, or, if a channel is specified, a
list of channel-specific bans. Each entry is a sublist containing:
hostmask, comment, expiration timestamp, time added, last time
active, and creator. The three timestamps are in unixtime format.
Module: channels
exemptlist [channel]
Returns: a list of global exempts, or, if a channel is specified, a
list of channel-specific exempts. Each entry is a sublist containing:
hostmask, comment, expiration timestamp, time added, last time
active, and creator. The three timestamps are in unixtime format.
Module: channels
invitelist [channel]
Returns: a list of global invites, or, if a channel is specified, a
list of channel-specific invites. Each entry is a sublist containing:
hostmask, comment, expiration timestamp, time added, last time
active, and creator. The three timestamps are in unixtime format.
Module: channels
newignore [lifetime]
Description: adds an entry to the ignore list; creator is given credit
for the ignore. lifetime is how many minutes until the ignore expires
and is removed. If lifetime is not specified, ignore-time (usually 60)
is used. Setting the lifetime to 0 makes it a permanent ignore.
Returns: nothing
Module: core
killignore
Description: removes an entry from the ignore list
Returns: 1 if successful; 0 otherwise
Module: core
ignorelist
Returns: a list of ignores. Each entry is a sublist containing:
hostmask, comment, expiration timestamp, time added, and creator.
The timestamps are in unixtime format.
Module: core
isignore
Returns: 1 if the ignore is in the list; 0 otherwise
Module: core
save
Description: writes the user and channel files to disk
Returns: nothing
Module: core
reload
Description: loads the userfile from disk, replacing whatever is in
memory
Returns: nothing
Module: core
backup
Description: makes a simple backup of the userfile that's on disk.
If the channels module is loaded, this also makes a simple backup
of the channel file.
Returns: nothing
Module: core
getting-users
Returns: 1 if the bot is currently downloading a userfile from
a sharebot (and hence, user records are about to drastically
change); 0 if not
Module: core
*** CHANNEL COMMANDS ***
channel add [option-list]
Description: adds a channel record for the bot to monitor. The full
list of possible options are given in doc/settings/mod.channels. Note
that the channel options must be in a list (enclosed in {}).
Returns: nothing
Module: channels
channel set
Description: sets options for the channel specified. The full list of
possible options are given in doc/settings/mod.channels.
Returns: nothing
Module: channels
channel info
Returns: a list of info about the specified channel's settings.
Module: channels
channel get
Returns: The value of the setting you specify. For flags, a value of 0
means it is disabled (-), and non-zero means enabled (+).
Module: channels
channel remove
Description: removes a channel record from the bot and makes the bot no
longer monitor the channel
Returns: nothing
Module: channels
savechannels
Description: saves the channel settings to the channel-file if one is
defined.
Returns: nothing
Module: channels
loadchannels
Description: reloads the channel settings from the channel-file if one
is defined.
Returns: nothing
Module: channels
channels
Returns: a list of the channels the bot has a channel record for
Module: channels
channame2dname
chandname2name
Description: these two functions are important to correctly support
!channels. The bot differentiates between channel description names
(chan dnames) and real channel names (chan names). The chan dnames
are what you would normally call the channel, such as "!channel". The
chan names are what the IRC server uses to identify the channel. They
consist of the chan dname prefixed with an ID; such as "!ABCDEchannel".
For bot functions like isop, isvoice, etc. you need to know the chan
dnames. If you communicate with the server, you usually get the chan
name, though. That's what you need the channame2dname function for.
If you only have the chan dname and want to directly send raw server
commands, use the chandname2name command.
NOTE: For non-!channels, chan dname and chan name are the same.
Module: irc
isbotnick
Returns: 1 if the nick matches the botnick; 0 otherwise
Module: server
botisop [channel]
Returns: 1 if the bot has ops on the specified channel (or any channel
if no channel is specified); 0 otherwise
Module: irc
botishalfop [channel]
Returns: 1 if the bot has halfops on the specified channel (or any channel
if no channel is specified); 0 otherwise
Module: irc
botisvoice [channel]
Returns: 1 if the bot has a voice on the specified channel (or any
channel if no channel is specified); 0 otherwise
Module: irc
botonchan [channel]
Returns: 1 if the bot is on the specified channel (or any channel if
no channel is specified); 0 otherwise
Module: irc
isop [channel]
Returns: 1 if someone by the specified nickname is on the channel (or
any channel if no channel name is specified) and has ops; 0 otherwise
Module: irc
ishalfop [channel]
Returns: 1 if someone by the specified nickname is on the channel (or
any channel if no channel name is specified) and has halfops; 0 otherwise
Module: irc
wasop
Returns: 1 if someone that just got opped/deopped in the chan had op
before the modechange; 0 otherwise
Module: irc
washalfop
Returns: 1 if someone that just got halfopped/dehalfopped in the chan
had halfop before the modechange; 0 otherwise
Module: irc
isvoice [channel]
Returns: 1 if someone by that nickname is on the channel (or any
channel if no channel is specified) and has voice (+v); 0 otherwise
Module: irc
onchan [channel]
Returns: 1 if someone by that nickname is on the specified channel (or
any channel if none is specified); 0 otherwise
Module: irc
nick2hand [channel]
Returns: the handle of a nickname on a channel. If a channel is not
specified, the bot will check all of its channels. If the nick is
not found, "" is returned. If the nick is found but does not have
a handle, "*" is returned.
Module: irc
hand2nick [channel]
Returns: nickname of the first person on the specified channel (if one
is specified) whose nick!user@host matches the given handle; "" is
returned if no match is found. If no channel is specified, all channels
are checked.
Module: irc
handonchan [channel]
Returns: 1 if the the nick!user@host for someone on the channel (or any
channel if no channel name is specified) matches for the handle given;
0 otherwise
Module: irc
ischanban
Returns: 1 if the specified ban is on the given channel's ban list
(not the bot's banlist for the channel)
Module: irc
ischanexempt
Returns: 1 if the specified exempt is on the given channel's exempt
list (not the bot's exemptlist for the channel)
Module: irc
ischaninvite
Returns: 1 if the specified invite is on the given channel's invite
list (not the bot's invitelist for the channel)
Module: irc
chanbans
Returns: a list of the current bans on the channel. Each element is
a sublist of the form {}. age is seconds from the
bot's point of view
Module: irc
chanexempts
Returns: a list of the current exempts on the channel. Each element is
a sublist of the form {}. age is seconds from the
bot's point of view
Module: irc
chaninvites
Returns: a list of the current invites on the channel. Each element is
a sublist of the form {}. age is seconds from the
bot's point of view
Module: irc
resetbans
Description: removes all bans on the channel that aren't in the bot's
ban list and refreshes any bans that should be on the channel but
aren't
Returns: nothing
Module: irc
resetexempts
Description: removes all exempt on the channel that aren't in the bot's
exempt list and refreshes any exempts that should be on the channel
but aren't
Returns: nothing
Module: irc
resetinvites
Description: removes all invites on the channel that aren't in the bot's
invite list and refreshes any invites that should be on the channel
but aren't
Returns: nothing
Module: irc
resetchan
Description: rereads in the channel info from the server
Returns: nothing
Module: irc
getchanhost [channel]
Returns: user@host of the specified nickname (the nickname is not included
in the returned host). If a channel is not specified, bot will check
all of its channels. If the nickname is not on the channel(s), "" is
returned.
Module: irc
getchanjoin
Returns: timestamp (unixtime format) of when the specified nickname
joined the channel
Module: irc
onchansplit [channel]
Returns: 1 if that nick is split from the channel (or any channel if no
channel is specified); 0 otherwise
Module: irc
chanlist [flags[&chanflags]]
Description: flags are any global flags; the '&' denotes to look for
channel specific flags. Examples:
n (Global Owner)
&n (Channel Owner)
o&m (Global Op, Channel Master)
Now you can use even more complex matching of flags, including +&- flags
and & or | (and or or) matching.
Returns: list of nicknames currently on the bot's channel that have all
of the flags specified;. If no flags are given, all of the nicknames
are returned. Please note that if you're executing chanlist after a
part or sign bind, the gone user will still be listed, so you can
check for wasop, isop, etc.
Module: irc
getchanidle
Returns: number of minutes that person has been idle; 0 if the
specified user isn't on the channel
Module: irc
getchanmode
Returns: string of the type "+ntik key" for the channel specified
Module: irc
jump [server [port [password]]]
Description: jumps to the server specified, or (if none is specified)
the next server in the bot's serverlist
Returns: nothing
Module: server
pushmode [arg]
Description: sends out a channel mode change (ex: pushmode #lame +o
goober) through the bot's queuing system. All the mode changes will
be sent out at once (combined into one line as much as possible) after
the script finishes, or when 'flushmode' is called.
Returns: nothing
Module: irc
flushmode
Description: forces all previously pushed channel mode changes to be
sent to the server, instead of when the script is finished (just for
the channel specified)
Returns: nothing
Module: irc
topic
Returns: string containing the current topic of the specified channel
Module: irc
validchan
Description: checks if the bot has a channel record for the specified
channel. Note that this does not necessarily mean that the bot is ON
the channel.
Returns: 1 if the channel exists, 0 if not
Module: channels
isdynamic
Returns: 1 if the channel is a dynamic channel; 0 otherwise
Module: channels
setudef
Description: initializes a user defined channel flag, string or integer
setting. You can use it like any other flag/setting. IMPORTANT: Don't
forget to reinitialize your flags/settings after a restart, or it'll be
lost.
Returns: nothing
Module: channels
renudef
Description: renames a user defined channel flag, string, or integer
setting.
Returns: nothing
Module: channels
deludef
Description: deletes a user defined channel flag, string, or integer
setting.
Returns: nothing
Module: channels
*** DCC COMMANDS ***
putdcc
Description: sends text to the idx specified
Returns: nothing
Module: core
dccbroadcast
Description: sends a message to everyone on the party line across the
botnet, in the form of "*** " for local users and
"*** (Bot) " for users on other bots
Returns: nothing
Module: core
dccputchan
Description: sends your message to everyone on a certain channel on the
botnet, in a form exactly like dccbroadcast does. Valid channels are 0
through 99999.
Returns: nothing
Module: core
boot [reason]
Description: boots a user from the partyline
Returns: nothing
Module: core
dccsimul
Description: simulates text typed in by the dcc user specified. Note
that in v0.9, this only simulated commands; now a command must be
preceded by a '.' to be simulated.
Returns: nothing
Module: core
hand2idx
Returns: the idx (a number greater than or equal to zero) for the user
given if the user is on the party line in chat mode (even if she is
currently on a channel or in chat off), the file area, or in the control
of a script. -1 is returned if no idx is found. If the user is on
multiple times, the oldest idx is returned.
Module: core
idx2hand
Returns: handle of the user with the given idx
Module: core
valididx
Returns: 1 if the idx currently exists; 0 otherwise
Module: core
getchan
Returns: the current party line channel for a user on the party line;
"0" indicates he's on the group party line, "-1" means he has chat off,
and a value from 1 to 99999 is a private channel
Module: core
setchan
Description: sets a party line user's channel. The party line user
is not notified that she is now on a new channel. A channel name
can be used (provided it exists).
Returns: nothing
Module: core
console [channel] [console-modes]
Description: changes a dcc user's console mode, either to an absolute
mode (like "mpj") or just adding/removing flags (like "+pj" or "-moc"
or "+mp-c"). The user's console channel view can be changed also (as
long as the new channel is a valid channel).
Returns: a list containing the user's (new) channel view and (new)
console modes, or nothing if that user isn't currently on the partyline
Module: core
echo [status]
Description: turns a user's echo on or off; the status has to be a 1 or 0
Returns: new value of echo for that user (or the current value, if status
was omitted)
Module: core
strip [+/-strip-flags]
Description: modifies the strip-flags for a user. The supported
strip-flags are:
b - remove all boldface codes
c - remove all color codes
r - remove all reverse video codes
u - remove all underline codes
a - remove all ANSI codes
g - remove all ctrl-g (bell) codes
Returns: new strip-flags for the specified user (or the current
flags, if strip-flags was omitted)
Module: core
putbot
Description: sends a message across the botnet to another bot. If no
script intercepts the message on the other end, the message is
ignored.
Returns: nothing
Module: core
putallbots
Description: sends a message across the botnet to all bots. If no
script intercepts the message on the other end, the message is
ignored.
Returns: nothing
Module: core
killdcc
Description: kills a partyline or file area connection
Returns: nothing
Module: core
bots
Returns: list of the bots currently connected to the botnet
Module: core
botlist
Returns: a list of bots currently on the botnet. Each item in the list
is a sublist with four elements: bot, uplink, version, sharing status:
bot: the bot's botnetnick
uplink: the bot the bot is connected to
version: its current numeric version
sharing: a "+" if the bot is a sharebot; "-" otherwise
Module: core
islinked
Returns: 1 if the bot is currently linked; 0 otherwise
Module: core
dccused
Returns: number of dcc connections currently in use
Module: core
dcclist [type]
Returns: a list of active connections, each item in the list is a
sublist containing six elements:
{ {} }.
The types are: chat, bot, files, file_receiving, file_sending,
file_send_pending, script, socket (these are connections that have
not yet been put under 'control'), telnet, and server. The timestamp
is in unixtime format.
Module: core
whom
Returns: list of people on the botnet who are on that channel. 0 is
the default party line. Each item in the list is a sublist with six
elements: nickname, bot, hostname, access flag ('-', '@', '+', or
'*'), minutes idle, and away message (blank if the user is not away).
If you specify * for channel, every user on the botnet is returned
with an extra argument indicating the channel the user is on.
Module: core
getdccidle
Returns: number of seconds the dcc chat/file system/script user has
been idle
Module: core
getdccaway
Returns: away message for a dcc chat user (or "" if the user is not
set away)
Module: core
setdccaway
Description: sets a party line user's away message and marks them away.
If set to "", the user is marked as no longer away.
Returns: nothing
Module: core
connect
Description: makes an outgoing connection attempt and creates a dcc
entry for it. A 'control' command should be used immediately after
a successful 'connect' so no input is lost.
Returns: idx of the new connection
Module: core
listen [options] [flag]
Description: opens a listening port to accept incoming telnets; type
must be one of "bots", "all", "users", "script", or "off":
listen bots [mask]
Description: accepts connections from bots only; the optional mask
is used to identify permitted bot names. If the mask begins with
'@', it is interpreted to be a mask of permitted hosts to accept
connections from.
Returns: port number
listen users [mask]
Description: accepts connections from users only (no bots); the
optional mask is used to identify permitted nicknames. If the
mask begins with '@', it is interpreted to be a mask of permitted
hosts to accept connections from.
Returns: port number
listen all [mask]
Description: accepts connections from anyone; the optional mask
is used to identify permitted nicknames/botnames. If the mask
begins with '@', it is interpreted to be a mask of permitted
hosts to accept connections from.
Returns: port number
listen script [flag]
Description: accepts connections which are immediately routed to
a proc. The proc is called with one parameter: the idx of the
new connection. Flag may currently only be 'pub', which makes
the bot allow anyone to connect.
Returns: port number
listen off
Description: stop listening on a port
Returns: nothing
Module: core
dccdumpfile
Description: dumps out a file from the text directory to a dcc chat
user. The flag matching that's used everywhere else works here, too.
Returns: nothing
Module: core
*** NOTES MODULE ***
notes [numberlist]
Returns: -1 if no such user, -2 if notefile failure. If a numberlist
is not specified, the number of notes stored for the user is returned.
Otherwise, a list of sublists containing information about notes
stored for the user is returned. Each sublist is in the format of:
{