1# $Id: Readme.en,v 1.1.2 2005/06/02 18:58:23 Arcain Exp $
2____________________________________________________________________________
3
4--------------------------------- Readme -----------------------------------
5  Please at least SKIM this document before asking questions. In fact,
6  READ IT if you have never succesfully set up an Eggdrop or any other bot
7                          based on Eggdrop.
8
9  (!) Contents:
10    1.  Info - basic info about product
11    2.  Requirements - you know what
12    3.  Features - list of options
13    4.  Install - how to install & configure the bot
14    5.  Basic configuration - continuation and some info about features
15    6.  Commands - list of most commands available on hubs
16    7.  Channel settings - list and description of available chansets.
17    8.  Linking bots - how to make a botnet ;)
18    9.  Frequently Asked Questions (FAQ) - READ IT
19    10. Help - short info about places where you should look for help
20    11. Links - all major links
21    12. About - something about me
22    13. Greets - don't ask ;)
23
24----------------------------------------------------------------------------
25
26------------------------------ Explanation ---------------------------------
27
28  I'll explain the meaning of some shortcuts and phrases i used in this
29  document.
30
31  * Shortcuts:
32    - bot      - robot, program which automatically do certain actions ;)
33    - op       - operator, user with the highest "access" on channel,
34                 marked with @. Also known as 'giving op status'
35    - deop     - 'taking op status'
36    - voice    - user who can talk on channel while it's moderated,
37                 marked with +
38    - chanset  - channel setting (on bot)
39    - chanmode - channel modes (like +nts, +b, +o, +v, +I, +e)
40    - flag     - userflag or botflag on bot, like +mnopvga...
41    - host     - hostname, address set when user connect to IRC server
42    - mass     - command or action which affect on more than 1 bot or
43                 user on channel.
44
45    Expect more soon.... ;)
46----------------------------------------------------------------------------
47
48
49(1) Info:
50  Evangeline is an Internet Relay Chat (IRC) Bot based on Eggdrop.
51  It's made for IRCnet network and most changes are done to make the
52  best of it there. Bot might work correctly on other networks but you
53  should expect some problems like non-fully working kicks on QuakeNET.
54  Evangeline can be simply extended with modules (Eggdrop's modules with
55  some modifications) and TCL scripts.
56
57(2) Requirements:
58  * Unix/Cygwin account with about 7 MB of disk space.
59  * TCL 8.2+ (8.4.6 is recommended).
60  * Basic acquaintance of english language.
61  * Some knowledge about IRC and Unix.
62
63(3) Features:
64  Many of those features exist in other bots (ex.: AversE, VoiD), but some
65  are unique or not published before now.
66
67  * Encrypted userfile - userfile is encrypted and decrypted in memory
68    without using temporary files. Key isn't stored/included in binary,
69    so 'strings binary' won't be usefull any longer to find encryption
70    key.
71
72  * Admin - user compiled in binary, who has an unlimited access to the
73    bot and its commands. He can remove permowners, change their flags,
74    hosts etc. Should be only *ONE*.
75    [ Original in Cub3 ]
76
77  * Permowners - users compiled in binary, who has almost unlimited
78    access to the bot (they cannot modify other permowners or admin).
79
80  * Adder - new userflag (+r). Users with this flag can add new users
81    without being permowner. Flag can be added/removed only by permowner
82    or admin.
83
84  * Sharing - bots accept only changes done on bot with +p botflag
85    (main/slave/alt hub).
86
87  * Irc actions - bot kick instead of deop. On IRCNet it works
88    much better. Evangeline can also kick up to 6 users at once (in defense
89    mode and in lame takeover mode) and op up to 5 users at once
90    (getops and lame takeover mode).
91
92  * Encrypted share - shared userfile is sent in encrypted form if bot that
93    downloads it supports this feature.
94
95  * Userfile compression - userfile is sent throught botnet in compressed
96    form. Compression is done by zlib (gzip).
97
98  * Channels transfer at first link - channels list on hub is sent from hub
99    to bot (slave/leaf) at first link. You shouldn't notice problems
100    with missing userflag on some channels anymore ;)
101
102  * Compressed files - userfile, chanfile and 'yesterday's' logs are stored
103    in compressed form.
104
105  * Syspass - optional password protection for some commands (mass and
106    '.die', '.restart', '.rehash' at hubs)
107    [ dafcio's idea ;) ]
108
109  * AddBot - nice script/sytem which helps adding bots without even
110    logging in on them. Everything is done by one command on main hub.
111    [ Original script exists in AmenO ]
112
113  * Presets - a package of chansets automatically updated (every 60 minutes
114    and/or if some bot will link/disconnect from botnet) and set in proper
115    percentages.
116
117  * Maxbots - maximum number of bots on channel checked and eventually
118    updated every 10 minutes and in case of some problems on channel
119    (massjoin).
120
121  * Compatibility - bot can link with many other Eggdrop modification.
122    Can share userfile with: AmenO, aCo, AversE, Bear, BloW, cNs, Cub3,
123    Detox, DiVERSE, Eggdrop v1.4+, GTT, LeppeR, RaviS, RulF, Suid, VoiD,
124    VoLron, vOlRoN, X-Men.
125    Cannot share userfile with: VoiD4, NnO, Shark2.
126
127  * BotNetOP - included getops is fast enough to work without +autoop
128    chanset or +a flag. It makes botnet opping more secure (no/less spoof
129    possibility).
130
131  * Flood - bot have has lame flood options, like: msg, ctcp, invite etc...
132    [ Someone can tell me why I left it here? ]
133
134  * Servers randomiser - every time when bot start/restart servers list is
135    randomised. It prevents (partially) loosing channels on splits while
136    whole botnet is on the same server.
137
138  * Mainserver - bot tries to keep desired irc server. If server will goes
139    down, bot connects to next server and after some time tryes to switch
140    back (if more than 6 bots with op is on channel(s)).
141
142  * Autolimit - new channel setting. With '+alimit' enabled, bot
143    automatically modify channel limit depends of actual number of users on
144    the channel. Channel limit is checked every minute. Alimit settings can
145    be modified via '.chanset' command (ex.: .chanset #chan limits 10:7:1).
146    [ Should be turned on only on *ONE* bot for one channel. ]
147
148  * Hub notices - leafs inform hub about some things, like actions on channel,
149    connect/disconnect/k-line/restrict on server, netsplit etc.
150
151(4) Install:
152  * Unpack file (tar zxf filename.tar.gz)
153
154  * NOTE: Next step can be also done from configure script. Just go to next
155          step and hit 'enter' or 'y' while configure script ask to
156          'add admin/permwoner(s)', then answer to next 2 questions.
157
158  * Open 'src/main.c' and find
159     'char admin[121]' - put there *ONE* handle of user which can do
160                         everything on the botnet.
161     'char owner[121]' - put there handle(s) of permowners.
162
163  * In bot's root directory type './configure' (bot might ask you some
164    questions). After configure script finishes his job type 'make' or
165    'make static' and wait...
166
167    INFO: To enable IPv6 support, you have to add --enable-ipv6 to 'configure'
168          (ex.: ./configure --enable-ipv6)
169
170    INFO: You might disable userfile encryption, just add --disable-crypt to
171          'configure' (ex.: ./configure --disable-crypt)
172
173    INFO: You can use custom key to encrypt userfile, just add --custom-key
174          to 'configure' and enter key, when script will ask for it.
175          (ex.: ./configure --custom-key, wait a while... ,
176                'Enter your encryption key: my_encryption_key')
177          I suggest to use that feature, it makes bots update really easy.
178
179  * Make your config:
180
181    *WIZARD*
182      You can also tune config after 'wizard' create it.
183      NOTE: If you are using Putty (and maybe other clients) to connect to
184            the shell you should beware what are you typing (backspace can be
185            recognized as '' and that characters will exist in config if
186            you use it)
187
188      *NORMAL*
189
190        -IPv4:
191          Start ./starter --new botnet-nick
192          Enter 'y' when scripts ask you to create new config, then type
193          'ipv4' and ask next questions. Remember that 'botnet-nick' is also
194          config file name.
195
196        -IPv6:
197          Start ./starter --new botnet-nick
198          Enter 'y' when scripts ask you to create new config, then type
199          'ipv6' and ask next questions. Remember that 'botnet-nick' is also
200          config file name.
201
202        -BNC:
203          Start ./starter --new botnet-nick
204          Enter 'y' when scripts ask you to create new config, then type
205          'ipv6' and ask next questions. Remember that 'botnet-nick' is also
206          config file name.
207
208      *HUBS*
209
210        -Main:
211          Start ./starter --new botnet-nick
212          Enter 'y' when scripts ask you to create new config, then type
213          'main' and ask next questions. Remember that 'botnet-nick' is also
214          config file name.
215
216        -Slave:
217          Start ./starter --new botnet-nick
218          Enter 'y' when scripts ask you to create new config, then type
219          'slave' and ask next questions. Remember that 'botnet-nick' is
220          also config file name.
221
222        -Alt:
223          Start ./starter --new botnet-nick
224          Enter 'y' when scripts ask you to create new config, then type
225          'alt' and ask next questions. Remember that 'botnet-nick' is also
226          config file name.
227
228    *MANUALLY*
229
230      *HUBS*
231
232      - Main/Slave/Alt
233          nick "nickname in botnet"
234          botnet-nick "nickname in botnet"
235          bots-listenport "port for bot connections"
236          users-listenport "port for users connections"
237          my-ip "ipv4_address on which bot should listen"
238          reserved-portrange "6000:7000" - if you have problem with userfile
239                                         sharing you can change it.
240          party(plpass) "enter encrypted password. If you leave it blank
241                         party-line password will be disabled". Password can
242                         be also set via '.bpass' command on hub.
243          party(syspass) "enter encrypted password. If You leave it blank
244                          syspass for 'mass' commands will be disabled".
245                          Password can be also set via '.bpass' command on hub.
246          NOTE: Passwords (party-line and syspass) can be also set via
247                  '.bpass' command from bot.
248
249      - Main:
250          mainip "enter ip of your server here (must be same as in my-ip)"
251
252      - Alt:
253          ismalt 'set this to 1 if you wish alt hub to work as main hub'
254          issalt 'set this to 1 if you wish alt hub to work as slave hub'
255
256    *NORMAL*
257
258      - IPv4/IPv6/BNC:
259        nick "nickname on irc"
260        altnick "alternative nickname (if primary will be unavailable)"
261        botnet-nick "if you use $nick with weird characters like:
262                    '[', '|', enter here nickname without those
263                    characters (better botnet managament)"
264        realname "realname on irc, anything you want"
265        username "bot ident (usefull if there is no oident or when
266                  connecting through psyBNC)"
267        listenport 9999 'change 9999 to your port'
268        ircserver { servers list }
269        my-ip "fill this if you want to use vhosts"
270        my-hostname "fill this if you want to use vhosts"
271        firewall "enter host:port of proxy if you are behind
272                  firewall/proxy"
273                 Set to "Chostname:port" for HTTP CONNECT proxy or
274                 "Phostname:port" for HTTP POST proxy.
275        nat-ip "external ip adress if you use above"
276        reserved-portrange "6000:7000" - if you have problem with userfile
277                                         sharing you can change it.
278        use-gseen 'set this to 1 if you compiled bot with gseen module
279                  and you wish to use this module'
280        use-stats 'set this to 1 if you compiled bot with stats module
281                   and you wish to use this module'
282
283      - IPv6:
284        use-ipv6 1 'if you wish to use ipv6 set this to 1'
285        my-ip "enter here IP in format: 127.0.0.1 (this is
286               only example)"
287        my-ip6 "enter here IP in format: 3ffe:80ee:419:0:0:0:0:1 (this is
288                only example)"
289        my-hostname6 "enter here IP in format: 3ffe:80ee:419:0:0:0:0:1
290	              (this is only example)"
291
292      - BNC:
293        use-bnc 1 'set this to 1 if you wish to use normal BNC'
294        use-psyBNC 0 'set this to 1 if you wish to use psyBNC. Other
295                     settings have to be 0'
296        use-ezBOUNCE 0 'set this to 1 if you wish to use ezBOUNCE. Other
297                      settings have to be 0'
298        servers "enter bnc address in format: host/ip:port"
299        bnc-pass "password to bnc"
300        bnc-host "vhost which bot should use to connect to irc throught
301                  bnc"
302        ircservers "irc servers list from which bot randomly choose one"
303        iserv-port "port of irc server bot is connecting to"
304
305      - SETTINGS (file in cfg/ directory):
306        use-mainserver 0 'set this to 1 if you wish to use mainserver
307                          option'
308        ms(mserver) { enter master server connect }
309        ms(chktime) 120 'time in minutes after bot will try to connect
310                         again to master server if actually is connected
311                         to another'
312        ms(tryagain) 360 'time in minutes after bot will try to connect
313                         again to master server if previous attempt
314                         wasn't succesfull'
315        eva(ctcp) '0' - off, '1' - random', 2 - custom, 9 - Evangeline ;)
316        eva(rlist) { } 'leave blank'
317        lappend eva(rlist) "--=\[Evangeline\]==--" 'if you wish to use more
318                                                   reasons for TCL actions
319                                                   add new lines just like
320                                                   in original file'
321        reason(alimit) "reason, which should be used if user without proper
322                        flags change or remove limit"
323
324   * Ok, you have configured your bot, now start it using command:
325    ./starter --new botnet-nick (only if you created config file using
326                                 *WIZARD*)
327     or
328    ./evangeline -m cfg/config (-m parameter won't be needed next time)
329
330  * Log in:
331    telnet localhost usersport (set in config, ex.: 'users-listenport 9999'
332                               or 'listenport 9999')
333
334   *NOTE:* If your bot uses vhosts, then use ip/hostname for that vhost
335           to connect to bot (ex. using Putty). Also remember about it
336           while adding bots.
337
338    Type: 'averse-' or '-eva-'
339    When bot ask you for nickname, type yours (use one which you entered
340    in 'main.c')
341    After that set your password. If bot won't ask you about party-line
342    password (only on main/slave/alt), then you are on the bot, otherwise
343    type party-line password (main/slave/alt).
344
345    You can now start enjoying bot. First command which I recommend is:
346    '.save'
347
348(5) Basic configuration:
349
350  * Crontab:
351
352    If you used config wizard to create config you can simply type
353    ./starter --cron botnet-nick
354    and your bot will be added to crontab (you need to have proper
355    permissions for crontab)
356
357  * Presets:
358
359    Presets are a pack of channel settings optimized every 60 minutes
360    and/or if some bot will link or disconnect from botnet. There are 3
361    presets available right now:
362
363    * defense:
364               +defense on all bots for channel.
365               +dkopper on 1/3 bots for channel (6kick in defense mode).
366               +fastop on 2/3 of all channel bots'.
367               +enforcebans on 1/2 of +fastop bots.
368               +alimit on *ONE* bot (if enabled on hub).
369
370    * freeop:
371               -defense on all bots for channel.
372               +enforcebans on 1/2 of all bots for channel.
373               +alimit on *ONE* bot (if enabled on hub).
374
375    * off:
376               presets are disabled, channel settings can be set via
377               .enforce or .rchanset setting. Only +alimit is set
378               on *ONE* bot (if enabled on hub).
379
380    Presets can be changed by .preset command (available for bot admin).
381    Example: .preset #test freeop
382
383  * Maxbots:
384
385    Additional 'preset' which defines how many bots should stay on channel.
386    Bot count is checked every 10 minutes and in case of join flood.
387    Example: .preset #test maxbots 5 - after a while you should see only 5
388    bots on #test. If some of them will go down new bot(s) (if available)
389    will join #test.
390
391  * Autolimit:
392
393    Autolimit ('+alimit' channel settting) force bots too keep and
394    update channel limit depends on users count on channel. Autolimit
395    setting can be changed via .enforce or .chanset commands, for
396    example: .enforce #test limits 10:5:0
397      10 - added to current limit while new limit is set.
398      5 - diffrence between current limit and user count on channel.
399      0 - Change limit on join/part (0 - disabled, 1 - enabled).
400    Autolimit kick reason can be changed by adding this line to config file:
401      reason(alimit) "my custom alimit kick reason"
402
403  * Syspass and hubpass:
404
405    Syspass is a system password which protects all *mass* commands and
406    '.die', '.restart', '.rehash' (and also few others) for non-authorized
407    users. If you see a message like: 'Evangeline: No authorization', it
408    means that syspass is set and users have to authorize to user that
409    commands. To authorize you must use '.syspass <password>' command.
410
411    Hubpass is a password required to enter party-line. If you see a message
412    like: 'Welcome, please enter the partyline password:' it means that
413    hubpass is set and you have to enter those password to join party-line.
414
415    Both passwords can be set and disabled on party-line by bot admin via
416    '.bpass' command.
417    Example: .bpass -syspass set encore - will set word 'encore' as syspass.
418             .bpass -hubpass set encore - will set word 'encore' as hubpass.
419             .bpass -syspass off - will disable syspass.
420             .bpass -hubpass off - will disable hubpass.
421
422  * Hub notices:
423
424    Other bots can inform hub about important (in my oppinion) events.
425    deops, kicks, mode changes (by non-owner), netsplits, limit or ban
426    override, diverse-flood, reop mode changes, channel without opped
427    bots...
428    It can also send info when connected, disconnected, k-lined or
429    non-authorized on server and many many more ;)
430    To see all those messages you have to add +m (msg) flag to your
431    console: '.console +m'
432
433(6) Commands:
434
435  *HUBS*
436
437    -Main/Alt main: (some of them work also on Slave and Alt slave)
438
439      (+m) .+channel <channel> - add new <channel> (only on that bot)
440           Example: .+channel #test
441      (+m) .+mhost <user> <host1> [host2] [...] - add multiple hosts to
442           <handle>.
443           Example: .+mhost KrzychuG *!blah@blah.net *!bubu@a.com *!wrr@z.net
444      (+m) .-channel <channel> - remove a <channel> (only on that bot)
445           Example: .-channel #test
446      (+m) .-mhost <user> <host1> [host2] [...] - remove multiple hosts to
447           <handle>.
448           Example: .-mhost KrzychuG *!blah@blah.net *!bubu@a.com *!wrr@z.net
449      (+n) .aa <name> <ip/host> <bots port> <users port> [hubpass] - add alt
450           hub with <name> on <ip/hostname>, <bots port> and <users port>
451	   and [hubpass] if set on alt.
452           Example: .aa alt1 192.168.0.1 34010 34011
453      (+n) .ab <name> <ircname> <ident> <hostname> <ip/host> <port>
454           [-slave <nick>] [ipv6hosts] - add new leaf, where <name> is nick
455           in botnet, <ircname> is nick on irc, <ident> is ident on irc,
456           <hostname> is hostname on irc, <ip/host> is ip address needed to
457           link to botnet, <port> is bot listenport, [-slave <nick>] is slave
458           nickname if you want to link bot to slave, [ipv6host] is an
459           addidional IPv6 hostname.
460           Example: .ab blah blah krzychug blah.net 192.168.0.1 9999 -slave sl1
461      (+n) .abstop - clear addbot variables if something went bad (some errors
462           like 'invalid idx' and such things)
463           Example: .abstop
464      (+n) .addeggdrop <name> <ircname> <ident> <hostname> <ip/host> <port>
465           [-slave <nick>] [ipv6hosts] - add new eggdrop leaf, where <name>
466           is nick in botnet, <ircname> is nick on irc, <ident> is ident on
467           irc, <hostname> is hostname on irc, <ip/host> is ip address needed
468           to link to botnet, <port> is bot listenport, [-slave <nick>] is
469           slave nickname if you want to link bot to slave, [ipv6host] is an
470           addidional IPv6 hostname.
471           Example: .addeggdrop blah blah krzychug blah.net 192.168.0.1 9999
472                     -slave sl1
473      (+n) .addstop - clear addbot variables if something went bad (some errors
474           like 'invalid idx' and such things)
475           Example: .addstop
476      (-)  .alias <-/alias> - show, add or remove aliases.
477           To add an alias: .alias .name=".cmd $1 $s",
478           ex.: .alias .wii=".whois $1"
479           To remove an alias: .alias .name=
480           To list aliases: .alias
481      (+n) .as <name> <ip/host> <bots port> <users port> [hubpass] - add slave
482           hub with <name> on <ip/hostname>, <bots port> and <users port> and
483           [hubpass] if set on slave.
484           Example: .aa slave1 192.168.0.1 44010 44011
485      (+m) .autoop <on/off> [channel] - turn on/off autoop for all bots
486           (+a userflag) or only on [channel]
487           Example: .autoop on #test
488      (+m) .bncjump <bot> <server> [port] [password] - force <bot> connected
489           through bnc to change irc server.
490           .bncjump bot1 krakow.irc.pl 6667
491      (+n) .bpass <-hubpass/-syspass> <set/off> <password> - set or unset
492           hubpass or syspass.
493           To set: '.bpass -hubpass set text' or '.bpass -syspass set text'
494           To unset: '.bpass -hubpass off' or '.bpass -syspass off'
495      (+m) .channels [channel] - show list of channels along with description
496           and some data (like preset, op count, voice count etc.).
497      (+m) .closechan <bot> <channel> - force <bot> to close <channel>
498           (MODE #channel +i).
499           Example: .closechan bot1 #test
500      (+m) .downbots - show unlinked bots.
501      (+m) .eflag <flag(s)> [channel] - add or remove global (or channel)
502           userflag for all bots in botnet.
503           Example: .eflag +K #test
504      (-)  .encrypt <password> - encrypt string, which can be later used for
505           hubpass or syspass.
506           .encrypt text
507      (+m) .enforce [-slave <nick>] <channel> [+/-]<setting(s)> - change
508           channel settings in botnet.
509           Example: .enforce -slave slave1 <channel> -enforcebans - will remove
510           enforcebans from #channel on all bots linked to slave1.
511           Example: .enforce * -enforcebans - will remove enforcebans from all
512           hub channels and all bots in botnet.
513      (+m) .enforceflag <flag(s)> [channel] - add or remove global (or channel)
514           userflag for all bots in botnet.
515           Example: .enforceflag +K #test
516      (-)  .help [command] - very usefull command :)
517           Example: .help enforce
518      (+m) .list <c/i/n/d/p/s/u/v> [bot] - show some info about bots:
519           c - channels on which bots are opped
520           i - inactive channels
521           n - channels on which bots are not opped
522           d - disconnected bots
523           p - ping between bots
524           s - bot's server
525           u - bot's uptime
526           v - bot's binary and tcl version
527      (+m) .mclear [-slave <nick>] <mode/server/help/all> - clean specific type
528           of queue.
529           .mclear server
530      (+m) .mcycle [-slave <nick>] <time> <channel> - force bots to leave
531           channel for some <time> in seconds
532           Example: .mcycle 60 #test
533      (+n) .mdie [-slave <nick>] - botnet die ;)
534      (+n) .mdump [-slave <nick>] <data> - botnet dump.
535           Example: .mdump PRIVMSG #test :blah
536      (+n) .mexport [-slave <nick>] - mass userfile export.
537      (+n) .mflood [-slave <nick>] <user> <type> - flood <user> on IRC with
538           choosen flood <type>.
539           Example: .mflood blah version
540      (+m) .mjoin [-ajf <time>/-slave <nick>] <channel> [server] [key] - add
541           channel to botnet.
542           To join with anty-join-flood: .mjoin -ajf 15 #test - will join bot
543           every 15 seconds.
544      (+n) .mjump <server> [port] [password] - botnet jump (really needed?).
545           Example: .mjump krakow.irc.pl
546      (+n) .mkick <all/ops> <channel> [6kick] - kick <all> or <ops> from
547           <channel>. [6kick] is dangerous option.
548           Example: .mkick all #test
549      (+m) .mmsg [-slave <nick>] <user/channel> <msg> - send message from all
550           bots to <user> or <channel>.
551           Example: .mmsg #test blah blah
552      (+m) .modenforce [-slave <nick>] <channel> [+/-]<chanmode(s)> - set
553           chanmodes which have to be kept on <channel>.
554           Example: .modenforce #test +nt-k
555      (+m) .mpart [-slave <nick>] <channel> [server] - botnet part
556           Example: .mpart #test
557      (+n) .mrehash [-slave <nick>] - botnet rehash
558      (+n) .mrestart [-slave <nick>] - botnet restart
559      (+n) .mupdate [-m <mirror number>] [-force] - botnet tcl update.
560      (+m) .netchanmode [-slave <nick>] <channel> [+/-]<chanmode(s)> - set
561           chanmodes which have to be kept on <channel>.
562           Example: .netchanmode #test +nt-k
563      (+m) .netchanset [-slave <nick>] <channel> [+/-]<setting(s)> - change
564           channel settings in botnet.
565           Example: .netchanset -slave slave1 <channel> -enforcebans - will
566           remove enforcebans from #channel on all bots linked to slave1.
567           Example: .netchanset * -enforcebans - will remove enforcebans from
568           all hub channels and all bots in botnet.
569      (+m) .netclear [-slave <nick>] <mode/server/help/all> - clean specific
570           type of queue.
571           .netclear mode
572      (+m) .netcycle [-slave <nick>] <time> <channel> - force bots to leave
573           channel for some <time> in seconds
574           Example: .netcycle 60 #test
575      (+n) .netdie [-slave <nick>] - botnet die ;)
576      (+n) .netdump [-slave <nick>] <data> - botnet dump.
577           Example: .netdump PRIVMSG #test :blah
578      (+n) .netexport [-slave <nick>] - mass userfile export.
579      (+m) .netflag <flag(s)> [channel] - add or remove global (or channel)
580           userflag for all bots in botnet.
581           Example: .netflag +K #test
582      (+n) .netflood [-slave <nick>] <user> <type> - flood <user> on IRC with
583           choosen flood <type>.
584           Example: .netflood blah version
585      (+n) .netsend (more data on .netsend) - send file to bot/group of bots.
586           Example: .netsend bot1 cfg/settings
587      (+m) .nnick <-all/bot> - force bot or all bots to switch to normal nicks.
588      (+m) .openchan <bot> <channel> - open channel (MODE #channel -i).
589           Example: .openchan bot1 #test
590      (+n) .optimize [channel] - optimize channel settings for channel or all
591           channels in botnet.
592           Example: .optimize #test
593      (+n) .preset <channel> <preset/off> - set or disable presets.
594           Example: .preset #channel defense or .preset #channel maxbots 10
595      (+n) .rbotattr <bot> <target bot> [+/-]<botflag(s)> - set/remove botflag
596           from <target bot> on <bot>
597           Example: .rbotattr bot1 hub +p
598      (+n) .rchaddr <bot> <target bot> <address> <bots port> [users port] -
599           change <target bot> address on <bot>.
600           Example: .rchaddr bot1 hub 192.168.0.1 24010 24011
601      (+m) .rchanmode <bot> <channel> [+/-]<chanmode(s)> - change chanmode for
602           <channel> on <bot>.
603           Export: .rchanmode bot1 #test +nt-i
604      (+m) .rchanset <bot> <channel> [+/-]<settings> - change channel setting
605           for <channel> on <bot>.
606           Example: .rchanset bot1 #test -enforcebans
607      (+n) .rchattr <bot/*> <handle> [+/-]<flags> - change userflags for
608           <handle> on <bot> or all bots.
609           Example: .rchattr bot1 main +H or .rchattr * main +H
610      (+m) .rclear <bot> <mode/server/help/all> - clear queue on <bot>.
611           Example: .rclear bot1 mode
612      (+n) .rdeop <-all/bot> <nick> [channel] - deop <nick> on [channel] or all
613           channels by all bots or one <bot>.
614           Example: .rdeop bot1 KrzychuG #test
615      (+n) .rdie <bot> - kill bot ;)
616           Example: .rdie bot1
617      (+n) .rdop <-all/bot> <nick> [channel] - deop <nick> on [channel] or all
618           channels by all bots or one <bot>.
619           Example: .rdop bot1 KrzychuG #test
620      (+n) .rdump <bot> <data> - bot dump.
621           Example: .rdump bot1 MODE #test +o bot2
622      (+n) .rexport <bot> - force <bot> to export userfile.
623           Export: .rexport bot1
624      (+m) .rmode <-all/bot> <channel> <data> - force <bot> or all bots to
625           enforce mode (<data>) on <channel>.
626           Example: .rmode bot1 #test +o blah
627      (+m) .rmsg <-all/bot> <user/channel> <msg> - <bot> or all bots say <msg>
628           to <user> or <channel>.
629           Example: .rmsg -all #test blah blah
630      (+n) .rnick <-all/bot> - force <bot> or all bots to change their nick(s)
631           to random generated.
632      (+m) .rop <-all/bot> <nick> [channel] - force <bot> or all bots to op
633           <nick> on <channel> or on all channels.
634           Example: .rop bot1 KrzychuG #test
635      (+n) .rpart  <bot>  <channel> - force <bot> to part from <channel>.
636           Example: .rpart bot1 #test
637      (+n) .rrehash <bot> - force <bot> to rehash.
638      (+n) .rrestart <bot> - force <bot> to restart.
639      (+n) .rupdate <bot> [-m <mirror number>] [-force] - force bot update tcl.
640      (+m) .savenet - save chanlist and userlist on all bots.
641      (+m) .syspass <password> - authorize.
642      (+m) .tkm <channel> [6kick] - takeover <channel> (kick opped users
643           without +o userflag).
644           Example: .tkm #test
645      (+n) .tkmjoin [-slave <nick>/-auto] <channel> [6kick] [server] [key] -
646           force botnet to join channel and prepare to takeover (-auto option
647           will set proper channel settings on proper bots).
648           Example: .tkmjoin -auto #test
649      (-)  .unalias <alias> - remove an alias.
650           Example: .unalias .blah
651      (+n) .update [-m <mirror number>] [-force] - update current bot tcl
652           script.
653      (+m) .users - show some info about users.
654      (+m) .verify - show all handles without password.
655
656(7) Channel settings:
657
658  All of those setting can be changed via '.chanset' and/or '.enforce' command
659  and '.rchanset' from hub.
660
661  *FLAGS?*
662    idle-kick 0
663      This setting will make the bot check every minute for idle users. Set
664      this to 0 to disable idle check.
665
666    stopnethack-mode 0
667      This setting will make the bot kick anyone who enters the channel
668      with serverops. There are seven different modes for this settings:
669
670         0 turn off
671         1 isoptest (allow serverop if registered op)
672         2 wasoptest (allow serverop if user had op before split)
673         3 allow serverop if isop or wasop
674         4 allow serverop if isop and wasop.
675         5 If the channel is -defense, see stopnethack-mode 3
676           If the channel is +defense, see stopnethack-mode 1
677         6 If the channel is -defense, see stopnethack-mode 2
678           If the channel is +defense, see stopnethack-mode 4
679
680    revenge-mode 0
681      This settings defines how the bot should punish bad users when
682      revenging. There are four possible settings:
683          0 Kick the user.
684          1 Kick the user and give them the +d flag for the channel.
685          2 Kick the user, give them the +d flag for the channel, and
686            kick them.
687          3 Kick the user, give them the +d flag for the channel, kick,
688            and ban them.
689
690    ban-time 120
691      Set here how long temporary bans will last (in minutes). If you
692      set this setting to 0, the bot will never remove them.
693
694    exempt-time 60
695      Set here how long temporary exempts will last (in minutes). If
696      you set this setting to 0, the bot will never remove them. The bot will
697      check the exempts every X minutes, but will not remove the exempt if a
698      ban is set on the channel that matches that exempt. Once the ban is
699      removed, then the exempt will be removed the next time the bot checks.
700
701    invite-time 60
702      Set here how long temporary invites will last (in minutes). If you set
703      this setting to 0, the bot will never remove them. The bot will check
704      the invites every X minutes, but will not remove the invite if a
705      channel is set to +i. Once the channel is -i then the invite will be
706      removed the next time the bot checks.
707
708    aop-delay (minimum:maximum)
709      This is used for autoop, autovoice. If an op or voice joins a channel
710      while another op or voice is pending, the bot will attempt to put
711      both modes on one line.
712
713        aop-delay 0    No delay is used.
714        aop-delay X    An X second delay is used.
715        aop-delay X:Y  A random delay between X and Y is used.
716
717    flood-chan 10:60
718      Set here how many channel messages in how many seconds from one
719      host constitutes a flood. Setting this to 0 or 0:0 disables text
720      flood protection for the channel.
721
722    flood-deop 3:10
723      Set here how many deops in how many seconds from one host constitutes
724      a flood. Setting this to 0 or 0:0 disables deop flood protection for
725      the channel.
726
727    flood-kick 3:10
728      Set here how many kicks in how many seconds from one host constitutes
729      a flood. Setting this to 0 or 0:0 disables kick flood protection for
730      the channel.
731
732    flood-join 5:60
733      Set here how many joins in how many seconds from one host constitutes
734      a flood. Setting this to 0 or 0:0 disables join flood protection for
735      the channel.
736
737    flood-ctcp 3:60
738      Set here how many channel ctcps in how many seconds from one host
739      constitutes a flood. Setting this to 0 or 0:0 disables ctcp flood
740      protection for the channel.
741
742    flood-nick 5:60
743      Set here how many nick changes in how many seconds from one host
744      constitutes a flood. Setting this to 0 or 0:0 disables nick flood
745      protection for the channel.
746
747  *CHANSETS*
748
749    enforcebans
750      When a ban is set, kick people who are on the channel and match
751      the ban (should be set only on 1/3 of all channel bots).
752
753    dynamicbans
754      Only activate bans on the channel when necessary. This keeps the
755      channel's ban list from getting excessively long. The bot still
756      remembers every ban, but it only activates a ban on the channel
757      when it sees someone join who matches that ban.
758
759    userbans
760      Allow bans to be made by users directly. If turned off, the bot will
761      require all bans to be made through the bot's console.
762
763    dynamicexempts
764      Only activate exempts on the channel when necessary. This keeps the
765      channel's exempt list from getting excessively long. The bot still
766      remembers every exempt, but it only activates a exempt on the channel
767      when it sees a ban set that matches the exempt. The exempt remains
768      active on the channel for as long as the ban is still active.
769
770    userexempts
771      Allow exempts to be made by users directly. If turned off, the bot will
772      require all exempts to be made through the bot's console.
773
774    dynamicinvites
775      Only activate invites on the channel when necessary. This keeps the
776      channel's invite list from getting excessively long. The bot still
777      remembers every invite, but the invites are only activated when the
778      channel is set to invite only and a user joins after requesting an
779      invite. Once set, the invite remains until the channel goes to -i.
780
781    userinvites
782      Allow invites to be made by users directly. If turned off, the bot
783      will require all invites to be made through the bot's console.
784
785    autoop
786      Op users with the +o flag as soon as they join the channel.
787      This is insecure and not recommended.
788
789    defense
790      Only let users with the proper flagf to op people on channel.
791
792    greet
793      Say a user's info line when they join the channel.
794
795    protectops
796      Reop a user with the +o flag if they get deopped.
797
798    protectfriends
799      Reop a user with the +f flag if they get deopped.
800
801    revenge
802      Remember people who deop/kick/ban the bot, valid ops, or friends
803      and punish them. Users with the +f flag are exempt from revenge.
804
805    revengebot
806      This is similar to to the 'revenge' option, but it only triggers
807      if a bot gets deopped, kicked or banned.
808
809    autovoice
810      Voice users with the +v flag when they join the channel.
811
812    secret
813      Prevent this channel from being listed on the botnet by
814      non-owners.
815
816    shared
817      Share channel-related user info for this channel.
818
819    cycle
820      Cycle the channel when it has no ops.
821
822   dontkickops
823      Do you want the bot not to be able to kick users who have the +o
824      flag, letting them kick-flood for instance to protect the channel
825      against clone attacks?
826
827    inactive
828      This prevents the bot from joining the channel (or makes it leave the
829      channel if it is already there). It can be useful to make the bot
830      leave a channel without losing its settings, channel-specific user
831      flags, channel bans, and without affecting sharing.
832
833    nodesynch
834      Allow non-ops to perform channel modes? This can stop the bot from
835      fighting with services such as ChanServ, or from kicking IRCops when
836      setting channel modes without having ops.
837
838    dkopper
839      Special version of +defense mode, which react on 4op or 5op.
840      Should be set on 1/3 of all channel bots (bot with +dkopper
841      won't react on 1op, 2op or 3op).
842
843    takeover
844      Lame takeover mode ;) When bot got op, it tries to op rest
845      of bots and take channel.
846
847    fastkick
848      6kick for +takeover mode.
849
850    fastop
851      5op for +takeover mode and for BotnetOP (should be turned on
852      only on 1/3 of all channel bots).
853
854    alimit
855      Autolimit - check chapter 5 (basic configuration).
856
857    botnetop
858      Enable fast botnetop used to op bots on channel. More secure than
859      using +autoop or +a userflag.
860
861    reopprot
862      Protect against adding or removing +R mode. If non-owner add +R, bot
863      will kick him and remove that mode. If non-owner remove +R he will
864      be also kicked, but mode won't be restored (ircd doesn't allow this
865      yet).
866
867(8) Linking bots:
868
869  *MANUALLY*
870
871    *HUBS*
872
873      - Main alt: ( h - on main hub, a - on alt, r - on bots linked to main )
874        h) .+bot alt_nick alt_ip:bots_port/users_port
875        h) .botattr alt_nick +gs
876        a) .+bot main_nick main_ip:bots_port/users_port
877        a) .botattr main_nick +ghp
878        a) .chattr main_nick +H
879        a) .link main_nick
880        for every bot linked to main hub:
881        a) .botattr bot +gs
882        r) .botattr alt_nick +agp
883
884      - Slave alt: (h - on main hub, on alt, r - on bots linked to slave hub)
885        h) .+bot alt_nick alt_ip:bots_port/users_port
886        h) .botattr alt_nick +gs
887        a) .+bot main_nick main_ip:bots_port/users_port
888        a) .botattr main_nick +ghp
889        a) .chattr main_nick +H
890        a) .link main_nick
891        for every bot linked to slave hub:
892        a) .botattr bot +gs
893        r) .botattr alt_nick +agp
894
895      - Slave (h - on main hub, s - on slave hub)
896        h) .+bot slave_nick slave_ip:bots_port/users_port
897        h) .botattr slave_nick +gs
898        s) .+bot main_nick main_ip:bots_port/users_port
899        s) .botattr main_nick +ghp
900        s) .chattr main_nick +H
901        s) .link main_nick
902
903    *LEAFS*
904
905      - To Main Hub: (h - on main hub, l - on leaf)
906        h) .+bot leaf_nick leaf_ip:port
907        h) .botattr leaf_nick +gs
908        h) .chattr leaf_nick +foK
909        h) .+host leaf_hostname
910        l) .+bot main_nick main_ip:bots_port/users_port
911        l) .botattr main_nick +ghp
912        l) .chattr main_nick +H
913        l) .link main_nick
914        If you want to add alt, type: (a - on alt)
915        a) .botattr leaf_nick +gs
916        l) .botattr alt_nick +agp
917
918      - To Slave Hub: (h - on main hub, s - on slave hub, l - on leaf)
919        h) .+bot leaf_nick leaf_Ip:port
920        h) .chattr leaf_nick +foK
921        h) .+host leaf_nick leaf_hostname
922        s) .botattr leaf_nick +gs
923        l) .+bot slave_nick slave_ip:bots_port/users_port
924        l) .botattr slave_nick +ghp
925        l) .link slave_nick
926        Wait for userfile from slave_nick
927        l) .botattr main_nick +gp
928        l) .chattr main_nick +H
929        If you want to add alt, type: (a - on alt)
930        a) .botattr leaf_nick +gs
931        l) .botattr alt_nick +agp
932
933  *ADDBOT*
934
935    *HUBS*
936
937      - Alt hub:
938        .aa <name> <ip/host> <port bots> <port users> [hubpass]
939          <name> - alt hub's botnet-nick
940          <ip/host> - alt hub's address
941          <port bots> - alt hub's bots-listenport
942          <port users> - alt hub's users-listenport
943          [hubpass] - if you set hubpass on althub, type it here
944        Rest must be done manually :(
945
946      - Slave hub:
947        .as <name> <ip/host> <port bots> <port users> [hubpass]
948          <name> - alt hub's botnet-nick
949          <ip/host> - alt hub's address
950          <port bots> - alt hub's bots-listenport
951          <port users> - alt hub's users-listenport
952          [hubpass] - if you set hubpass on althub, type it here
953
954      - Leaf (IPv4/BNC) to main hub:
955        .ab <name> <ircname> <ident> <hostname> <ip/host> <port>
956          <name> - leaf's botnet-nick
957          <ircname> - leaf's nick on irc
958          <ident> - leaf's ident (string between ! and @ in hostname)
959          <hostname> - hostname on irc (for example evangeline.b3ta.org)
960          <ip/host> - leaf's address
961          <port> - leaf's port
962        Example: .ab blah blah krzychug evangeline.b3ta.org 192.168.0.1 9999
963
964      - Leaf (IPv6) to main hub:
965        .ab <name> <ircname> <ident> <hostname> <ip/host> <port> [ipv6host]
966          <name> - leaf's botnet-nick
967          <ircname> - leaf's nick on irc
968          <ident> - leaf's ident (string between ! and @ in hostname)
969          <hostname> - hostname on irc (for example evangeline.b3ta.org)
970          <ip/host> - leaf's IPv4 address
971          <port> - leaf's port
972          [ipv6host] - leaf's IPv6 IP address
973        Example: .ab blah blah krzychug evangeline.b3ta.org 192.168.0.1
974                  9999 2009:888:1524:10:0:0:0:0
975
976      - Leaf (IPv4/BNC) to slave hub:
977        .ab <name> <ircname> <ident> <hostname> <ip/host> <port>
978         [-slave <nick>]
979          <name> - leaf's botnet-nick
980          <ircname> - leaf's nick on irc
981          <ident> - leaf's ident (string between ! and @ in hostname)
982          <hostname> - hostname on irc (for example evangeline.b3ta.org)
983          <ip/host> - leaf's address
984          <port> - leaf's port
985          [-slave <nick>] - slave's botnet-nick
986          Example: .ab blah blah krzychug evangeline.b3ta.org
987                    192.168.0.1 9999 -slave slave1
988
989      - Leaf (IPv6) to main hub:
990        .ab <name> <ircname> <ident> <hostname> <ip/host> <port> [ipv6host]
991          <name> - leaf's botnet-nick
992          <ircname> - leaf's nick on irc
993          <ident> - leaf's ident (string between ! and @ in hostname)
994          <hostname> - hostname on irc (for example evangeline.b3ta.org)
995          <ip/host> - leaf's IPv4 address
996          <port> - leaf's port
997          [-slave <nick>] - slave's botnet-nick
998          [ipv6host] - leaf's IPv6 IP address
999        Example: .ab blah blah krzychug evangeline.b3ta.org 192.168.0.1
1000                  9999 -slave slave1 2009:888:1524:10:0:0:0:0
1001
1002(10) Frequently asked questions (FAQ):
1003
1004  * I get 'ld-elf.so.1: Shared object 'libtcl84.so.1' not found or
1005    'error in loading shared libraries libtcl8.4.so: cannot open shared
1006    object file: No such file or directory' while starting the bot (or
1007    similar error):
1008
1009    It looks that bot was compiled with one Tcl version and tries to load
1010    another. Maybe administrator upgraded Tcl and didn't tell you. You need
1011    to recompile bot.
1012
1013    Maybe while administator upgrading Tcl, he/she forgot to clean the old
1014    version of Tcl or installed it into another directory. Tell your admin
1015    about that :)
1016
1017    You might also try:
1018      ./configure --with-tcllib=<path_to_tcl_lib>
1019                  --with-tclinc=<path_to_tcl.h>
1020
1021    For example:
1022      ./configure --with-tcllib=/usr/local/tcl8.4.6/lib/libtcl.so
1023                  --with-tclinc=/usr/local/tcl8.4.6/include/tcl.h
1024
1025    This will tell configure where to look for the Tcl files.
1026
1027    Try looking for libtcl by:
1028      ls /usr/lib/libtcl*
1029      ls /usr/local/lib/libtcl*
1030
1031    Try looking for tcl.h by:
1032      ls /usr/include/tcl.h
1033      ls /usr/local/include/tcl.h
1034
1035    If everything else fails, try to install Tcl to your home dir ;)
1036
1037  * Installing Tcl in home directory:
1038
1039    Download the newest version of tcl (check links section), then unpack
1040    and go to unix/ directory. Configure, compile and install Tcl in
1041    your home directory in tcl directory (if you're using bash you can
1042    use $HOME variable):
1043    ./configure --prefix=$HOME/tcl
1044    make
1045    make install
1046
1047    Now you should have Tcl libraries and tclsh in $HOME/tcl directory.
1048    Add $HOME/tcl/bin to your PATH variable (in bash:
1049    export PATH="$PATH:$HOME/tcl/bin") and LD_LIBRARY_PATH to $HOME/tcl/lib
1050    (in bash: export LD_LIBRARY_PATH="$HOME/tcl/lib").
1051
1052    NOTE: You should add your new PATH and LD_LIBRARY_PATH to shell
1053          startup files (~/.bashrc in bash).
1054
1055    Bot should now compile and start without problems.
1056
1057    NOTE: If you installed Tcl in diffrent directory than: $HOME/tcl add
1058          --with-tclinc=/path/to/tcl.h --with-tcllib=/path/to/libtcl.so
1059          (or similar), For example:
1060          --with-tclinc=$HOME/tcl8.4/include/tcl.h
1061          --with-tcllib=$HOME/tcl8.4/lib/libtcl.so
1062
1063  * +user - i can't add new user(s)
1064    You have to be admin, permowner or adder. First two have to be set
1065    before compilation in src/main.c ('char admin[121]' and
1066    'char owner[121]'), third is an user with +r flag. Flag can only be
1067    added by admin or permowner.
1068
1069 * Kick reasons - how to change?
1070    It's preety simple. Before compilation open modules/irc.mod/chaos.c in
1071    editor and find 'static const char *kreasons[]'. Below you've got all
1072    my reasons, which you can change or remove (leave at least one: '"",').
1073    If you also want to change 'Evangeline' string added before kick reason
1074    find and change it in line with 'char outputr[120]'.
1075
1076  * How can i load my TCL scripts?
1077    There are 2 methods to load user TCL scripts. Both must be enabled
1078    before compilation in src/main.c:
1079
1080   - open src/main.c and find 'char Tcl2Load[512]' and add path to
1081     your tcl script, for example:
1082     char Tcl2Load[512] = "scripts/mc.limit.tcl scripts/blah.tcl"
1083     (scripts/ directory must be created by user).
1084     You cannot change (add or remove) loaded scripts after compilation.
1085     Every bot started from that directory will load same TCL scripts.
1086
1087   - open src/main.c and find 'char Tcl2Load[512] = "";'. Put '//'  at
1088     the same beggining of that line, then find '//char Tcl2Load[121]'
1089     and remove '//' from that line. This will enable loader. loader.tcl
1090     is available in .data/.scripts/ directory. This file is very easy to
1091     edit:
1092
1093     array set Tcl2Load {
1094       ipv4 "scripts/tcl1.tcl scripts/tcl2.tcl"
1095       ipv6 "scripts/tcl2.tcl"
1096       bnc  "scripts/tcl3.tcl .data/.scripts/tcl55.tcl"
1097     } ;# Tcl2Load
1098
1099     For example, if you want bot with 'mybot' as botnet-nick to
1100     load 'scripts/mc.limit.tcl' just add:
1101
1102     array set Tcl2Load {
1103       ipv4 "scripts/tcl1.tcl scripts/tcl2.tcl"
1104       ipv6 "scripts/tcl2.tcl"
1105       bnc  "scripts/tcl3.tcl .data/.scripts/tcl55.tcl"
1106       mybot "scripts/mc.limit.tcl"
1107     } ;# Tcl2Load
1108
1109  * Problems with starting fresh bot, segmentation fault.
1110    If you see a message like:
1111
1112      * Last context: tclhash.c/215 []
1113      * Please REPORT this BUG!
1114      * Check doc/BUG-REPORT on how to do so.
1115      * Wrote DEBUG
1116      * SEGMENT VIOLATION -- CRASHING!
1117      Segmentation fault (core dumped)
1118
1119    You can try to replace binary/tbcload.so file with 1.4 version
1120    (or 1.3 version if it won't help). If you still have that error
1121    you can try to compile tbcload 1.4 on that account.
1122
1123    Precompiled tbcload libraries can be found here:
1124      http://www.averse.piasta.pl/list/ in libs/tbcload directory
1125    Tbcload 1.4 source code can be found here:
1126      http://www.averse.piasta.pl/_data/tcl-sources/tbcload.tar.gz
1127      (compile it and copy libtbcload1.4.so to binary/tbcload.so)
1128
1129  * My bot QUIT irc with reason: 'Segmentation fault!':
1130    Probably you found a bug. Make sure your bot dumped core file
1131    (file should be named core, core.PIDNUMBER or evangeline-VERSION.core).
1132    Load core file using gdb debugger (gdb ./evangeline core) and type
1133    'bt'. Post whole info at forum (www.averse.piasta.pl/forums). Logs
1134    and/or some explanation what happend before bot crashed is also welcomed.
1135
1136  * Non-working botnet - Linked bots don't respond as "botnet"
1137    To use commands like .mjoin, .enforce (.netchanset) you have to
1138    compile 2 packages: msa (main/slave/alt hubs) and normal (v4/v6/bnc).
1139    Bots from msa package doesn't connect to irc (there is no need to) but
1140    contains all useful commands and options to manage whole botnet.
1141    Bots from normal package work as normal bots connectiong to irc and
1142    operating there. They have to be linked to bot from msa package.
1143
1144  * Failed connection; aborted userfile transfer
1145    This annoying problem depends on server. If you've got something like
1146    this, add to you hub config file 'my-ip "ip_address"' and eventually
1147    'my-hostname "hostname_for_above_ip"'. This should help.
1148    If this won't help it mean that you probably have firewall instaled
1149    (on server) you can try to change reserved-portrange to open ports
1150    range (for example to: reserved-portrange "6000:7000"). Those ports
1151    should be opened on firewall.
1152
1153  * Upgrade from previous versions:
1154
1155    - AversE:
1156
1157      *NOTE:* If you've got AversE v1.7 or earlier, you have to add
1158              '-telnet!*@*' mask to one of your users (should be your handle).
1159      *NOTE:* If you've got AversE v1.8-1.8.2 you can't do an upgrade.
1160      *NOTE:* If you've got AversE v1.8.6 you don't have to modify
1161              userfile. Just move/copy userfile and chanfile to
1162              .data/.bdata and start Evangeline with '-u' param
1163              (only v4/v6/bnc). If you want to import userfile on hub
1164              copy AversE userfile to evangeline-msa/ and type
1165              '.import filename.uf'.
1166
1167    - Evangeline:
1168      *NOTE:* If you're updating from Evangeline 0.9 or 1.0 older than
1169              RC3 try to export old userfile by using '.export' command
1170              (or .mexport). Compile and start newly compiled bot and use
1171              '.import' command.
1172      *NOTE:* If you're updating from Evangeline 1.0 RC3 or newest and you
1173            compiled bot will '--custom-key' just unpack new version to same
1174            directory and recompile it (./configure --custom-key;make) with
1175            same encryption key. If you used generated encryption key you must
1176            export current userfile (.export/.mexport) and then import
1177            userfile on newly compiled bot (.import).
1178
1179(10) Help:
1180  For help you can look at AversE/Evangeline website (in links section).
1181  If you won't find answer for your question/problem you can try on
1182  #evangeline@IRCnet.
1183
1184(11) Links:
1185  Evangeline website: http://www.averse.piasta.pl
1186  Eggdrop website: http://www.eggheads.org
1187  Eggdrop help: http://www.egghelp.org and http://forum.egghelp.org
1188  Tcl download: ftp://tcl.activestate.com/pub/tcl and
1189                ftp://ftp.eggheads.org/pub/tcl
1190
1191(12) About:
1192  My e-mail: arcain@evangeline.x86.cl
1193  My nickname: KrzychuG, I'm on IRC (#evangeline@IRCnet).
1194
1195(13) Greets (in alphabetical order):
1196  assassin: for good ideas, testing, bugs reporting, help/support (on channel
1197            and forum) and botnet for few months ;)
1198  Bogas:    for good ideas, testing, bugs reporting and help (on channel and
1199            at forum)
1200  Dafcio:   for some nice ideas, testing, bugs reporting and help (on channel)
1201  Jorhn:    for an account, testing, bugs reporting and some help (on channel)
1202  Laagje:   bug reports, test of current version, patience? ;)
1203
1204  Rest of #evangeline crew and all who use AversE/Evangeline bots.
1205
1206---------------------------------- NOTE ------------------------------------
1207  Some (small) parts of this documents are copied from Eggdrop's Readme.
1208----------------------------------------------------------------------------
1209____________________________________________________________________________
1210# Copyright (C) 1999 - 2005 Eggheads Development Team
1211# Copyright (C) 2001 - 2005 Arcain/[Xp-AvR]
1212