README
Last revised: December 29, 2001
  ________________________________________________________________________

     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! If you haven't read this file, and ask for help
     expect to be told to READ the README file first!

     Contents

     0    Important notice

     1    What is Eggdrop?
     2    How do I get Eggdrop?
          2a    CVS usage
     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    Frequently Asked Questions
            1. What do I do if I get the error "User file not found"?
            2. My Eggdrop won't run; It just says "Can't find your
               hostname!"
            3. What the Heck is Tcl?
            4. My bot dies and the last entry in the logfile is "Received
               terminate signal". What does that mean and can I prevent it?
            5. My compile dies at the last minute with "LD fatal signal
               11"!
            6. Someone else set up a bot I don't like. Are there any
               backdoors I can use to take their bot down?
            7. What are modules?
            8. Can I compile Eggdrop without dynamic modules?
               8.1    Do I still need to "loadmodule modules"???
            9. Where can I get a pre-compiled Eggdrop for my computer?
           10. I get "Makefile:3 : invalid operator" of some such thing
               When I try to "make"
           11. When I "tclsh scripts/weed <userfile> c" It barfs chunks at
               me and dies.
           12. 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.
           13. I get a whole pile of "unresolved symbol 'Tcl_AppendResult'"
               (or some other symbol) when I try to load a module.
     6    Setting up a crontab
          6a    Setting up a crontab using autobotchk
     7    Boring legal stuff
     8    Mailing list
     9    Documentation
     10  Obtaining help

    ________________________________________________________________________

     (0) NOTICE

          Please read this file carefully before trying to set up this
          bot. 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 an IRC bot, written in C. If you don't know what
          IRC is, this is probably not whatever you're looking for!
          being a bot, sits on a channel and takes protective measures 
          to keep the channel from being taken over (in the few ways 
          that anything can), to recognize banished users or sites and 
          reject them, to recognize privileged users and let them gain 
          ops, etc.

          One of the more unique features of Eggdrop is its "party line", 
          accessible via DCC chat and telnet, which allows you to talk 
          with other people lag-free. Consider it a multi-way DCC chat, 
          or a miniature IRC (complete with channels). You can link up 
          with other bots and expand the party line until it actually 
          becomes something very much like IRC, in fact.

          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, how to quickly compile the bot, what you may need
          to do when upgrading from older versions, a list of
          frequently asked questions about compiling, 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 also), some basics about CVS usage and some
          channels where you might get help with Eggdrop.

          The preliminary documentation is in "eggdrop.doc" and is
          intended to be read after you have Eggdrop compiled and set
          up.


     (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 on your
          system. If tclsh doesn't load, then Tcl probably isn't on
          your system, and you will need to ftp it.

          The best ftp site for Tcl is ftp://ftp.scriptics.com/pub/tcl.

          Tcl comes with the Slackware distribution 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
          ftp://ftp.eggheads.org/pub/eggdrop/source/stable/

          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 devteam 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 <enter> 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:

               (1) You can 'cvs logout', but you don't need to.

               (2) 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 -dAP'.

               (3) 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/<userfile> 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.complete.conf file
               for all 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) FREQUENTLY ASKED QUESTIONS (or "Why doesn't this thing work?")

          1. 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.

          2. 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. 

          3. 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. There are also 
               hundreds of scripts floating around on the ftp/web sites if 
               you like working by example (which is typically the best way).

          4. 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.

          5. MY COMPILE DIES AT THE LAST MINUTE WITH "LD FATAL SIGNAL
             11"!

               See doc/compiling.FAQ

          6. 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.

          7. WHAT ARE MODULES?

               Modules are a way of adding extra C code from the bot, much 
               like Tcl scripts, without requiring the bot to be recompiled. 
               See doc/MODULES for more information.

          8. CAN I COMPILE EGGDROP WITHOUT DYNAMIC MODULES?

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

               8.1 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.

          9. 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

          10. I GET 'Makefile:3 :invalid operator' OR SOME-SUCH-THING
          WHEN I TRY TO 'make'

               Try 'gmake'.

          11. WHEN I 'tclsh scripts/weed <userfile> 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.

          12. 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=<path-to-tcl-lib> 
               --with-tclinc=<path-to-tcl-inc>

               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)

          13. 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 12.

               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 make 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 :)

     (6) 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.</p>

          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 emails 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).

     (6a) 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.

          To crontab your bot, follow these steps:

          (1) Type 'cp scripts/autobotchk ..'.

          (2) Type './autobotchk <Eggdrop config file>'.

          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 <Eggdrop config file> -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.

     (7) 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 eggdrop1.3.28, all changes made by the Eggheads development
          team to the Eggdrop source code and any related files are copyright
          (C) by Eggheads. 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 [who?] 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.

     (8) 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 email 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:

          "Why does my bot say this: Please edit your config file."
          "How do I telnet my bot?"
          "Where do I get Eggdrop for windows??????"
          etc..

          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!

     (9) 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 email eggheads@eggheads.org about it. Thank you.

     (10) OBTAINING HELP

          You can obtain help with Eggdrop in the following IRC channels:

          Undernet - #eggdrop, #eggheads
          EFnet - #egghelp, #eggfaq
          IRCnet - #eggdrop
          DALnet - #eggdrop

          If you plan to ask questions in any of the above channels,
          you should be familiar with and follow IRC etiquette.

         -   Don't type using CAPITAL letters, colors, or bold, and don't use 
             "!" and "?" excessively.

         -   Don't /msg people without their permission.

         -   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, 2000, 2001, 2002 Eggheads Development Team
