-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
572 lines (404 loc) · 23.9 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
$Id: README,v 1.5 2010/11/01 23:00:10 pseudo Exp $
Readme
Last revised: Nov 01, 2010
_________________________________________________________________
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.8
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. What the Heck is Tcl?
6c. My bot dies and the last entry in the logfile is "Received terminate
signal". What does that mean and can I prevent it?
6d. Someone else set up a bot I don't like. Are there any backdoors I
can use to take their bot down?
6e. What are modules?
6f. Can I compile Eggdrop without dynamic modules?
6g1. Do I still need to "loadmodule" modules?
6g. Where can I get a pre-compiled Eggdrop for my computer?
6h. I get "Makefile:3 : invalid operator" or some such thing when I
try to "make".
6i. When I "tclsh scripts/weed <userfile> c" It barfs chunks at me
and dies.
6j. 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.
6k. 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 performs 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
perform almost any task you want. They can do anything from preventing
floods to greeting users and banning advertisers from channels.
You can also link multiple Eggdrop bots together to form a botnet. This
can allow bots to op each other securely, control floods efficiently, and
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.8 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/.
Currently, the 1.8 tree of Eggdrop is developed at eggheads.org. You can
get the latest version of Eggdrop from the following url:
http://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 <enter> when prompted for a password.
5. In your home dir, type 'cvs checkout eggdrop1.8'
6. In ~/eggdrop1.8, 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.8' 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.8
#### 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.8, 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.8, 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.8, 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/1.8).
(4b) UPGRADING FROM AN OLDER 1.3/1.4/1.5/1.6 VERSION TO A NEWER 1.8 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.8.x.tar.gz file to your home dir on your shell, gunzip
and untar it, and type 'cd ~/eggdrop1.8.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.8.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. 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).
6c. 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.
6d. 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.
6e. 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.
6f. 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'.
6f1. 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.
6g. 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
6h. I GET 'Makefile:3 :invalid operator' OR SOME-SUCH-THING WHEN I TRY
TO 'make'.
Try 'gmake'.
6i. 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.
6j. 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>
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)
6k. 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 6j.
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 <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.
(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://lists.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 (official channel)
EFnet - #egghelp
IRCnet - #eggdrop
DALnet - #eggdrop
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 - 2010 Eggheads Development Team