Initial Import

This commit is contained in:
MadCamel 2014-03-08 19:56:21 -05:00
parent 0b366093a7
commit aba69cb20f
221 changed files with 35407 additions and 4 deletions

339
COPYING Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

30
CREDITS Normal file
View File

@ -0,0 +1,30 @@
If you feel left out, feel free to contact me (proton).
Contributors in alphabetical order:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Azmodan patches, testing & documentation
Deke source cleanups
detriment bug reports
DMC bug reports
endorphin major programming, energymech.net domain
guppy ftp hosting, patches
[IO] DNS hosting
jugslam bug fix
MadCamel major programming
Mourgos patches
mr_c bug reports
Nemesis128 python scripting backend
polygon major programming
proton major programming
Qm-D bug reports
sinthetek bug reports
The_Dawn testing & bug reports
vaniljus website hosting
wy|d source cleanups
zip- patches
Moral support:
~~~~~~~~~~~~~~
CaptHowdy, CrazyBear, Dark-Lord, davidX, drlfa,
josh, sin`, SouLShado, symetrix, The_1

105
Makefile Normal file
View File

@ -0,0 +1,105 @@
#
# EnergyMech, IRC Bot software
# Copyright (c) 1997-2009 proton
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
MISCFILES = COPYING CREDITS README README.TCL TODO VERSIONS VERSIONS-1 Makefile configure \
checkmech sample.conf sample.py sample.tcl sample.userfile default.bigchars
HELPFILES = help/8BALL help/ACCESS help/ALIAS help/AWAY help/BAN help/BANLIST help/BYE \
help/CCHAN help/CHACCESS help/CHANBAN help/CHANNELS help/CHAT help/CLEARSHIT \
help/CMD help/CORE help/CSERV help/CTCP help/CYCLE help/DEOP help/DIE \
help/DNS help/DNSSERVER help/DO help/DOWN help/ECHO help/ESAY help/FORGET \
help/GREET help/HELP help/IDLE help/INSULT help/INVITE help/JOIN help/KB \
help/KICK help/KS help/LAST help/LEVELS help/LINK help/LOAD help/LUSERS help/ME \
help/MODE help/MSG help/NAMES help/NEXTSERVER help/NICK help/NOTIFY help/ONTIME \
help/OP help/PART help/PASSWD help/PROTECTION help/PYTHON help/PYTHONSCRIPT \
help/QSHIT help/RESET help/RKS help/RSHIT help/RSPY help/RT help/SAVE help/SAY \
help/SCREW help/SEEN help/SERVER help/SERVERGROUP help/SET help/SETAAWAY \
help/SETAOP help/SETAUB help/SETAVOICE help/SETCC help/SETCHANBAN help/SETCKL \
help/SETDCC help/SETENFM help/SETENFMODES help/SETENFPASS help/SETFL help/SETFPL \
help/SETIKT help/SETKS help/SETMAL help/SETMBL help/SETMDL help/SETMKL \
help/SETMODES help/SETMPL help/SETNCL help/SETPASS help/SETPROT help/SETPUB \
help/SETRK help/SETSD help/SETSERVERGROUP help/SETSHIT help/SETSO help/SETSTATS \
help/SETTOP help/SHIT help/SHITLIST help/SHOWIDLE help/SHUTDOWN help/SITEBAN \
help/SITEKB help/SPY help/STATS help/TCL help/TCLSCRIPT help/TIME help/TOPIC \
help/UNALIAS help/UNBAN help/UNVOICE help/UP help/UPTIME help/USAGE help/USER \
help/USERHOST help/USERLIST help/VER help/VERIFY help/VOICE help/WALL help/WHO \
help/WHOIS help/WHOM
RANDFILES = messages/8ball.txt messages/away.txt messages/insult.txt \
messages/kick.txt messages/nick.txt messages/pickup.txt \
messages/say.txt messages/signoff.txt messages/version.txt
STUBFILES = src/Makefile.in src/config.h.in src/ld/mech.ldscript
TESTFILES = config/cc.c config/inet_addr.c config/ldtest.c \
config/ptr_size.c config/socket.c config/tcl.c config/which \
config/md5.h config/md5_internal.c config/pw.c \
config/inet_aton.c config/unaligned.c config/python.c
TRIVFILES = trivia/mkindex.c
SRCFILES = src/alias.c src/auth.c src/bounce.c src/chanban.c src/channel.c \
src/core.c src/ctcp.c src/debug.c src/dns.c src/dynamode.c \
src/function.c src/gencmd.c src/greet.c src/help.c src/irc.c \
src/kicksay.c src/main.c src/mega.c src/net.c src/net_chan.c \
src/note.c src/notify.c src/ons.c src/parse.c src/perl.c \
src/prot.c src/python.c src/redirect.c src/reset.c src/seen.c \
src/shit.c src/socket.c src/spy.c src/stats.c src/tcl.c \
src/telnet.c src/toybox.c src/trivia.c src/uptime.c src/user.c \
src/vars.c src/web.c src/md5/md5.c src/md5/md5.h
HDRFILES = src/defines.h src/global.h src/h.h src/settings.h src/structs.h src/text.h src/usage.h
CONFFILES = src/Makefile src/config.h
DISTFILES = $(MISCFILES) $(RANDFILES) $(SRCFILES) $(HELPFILES) \
$(STUBFILES) $(HDRFILES) $(TRIVFILES) $(TESTFILES)
#
# simple make rules
#
mech: $(SRCFILES) $(CONFFILES)
$(MAKE) -C src energymech
energymech: $(SRCFILES) $(CONFFILES)
$(MAKE) -C src energymech
clean: FORCE
$(MAKE) -C src clean
install: FORCE
$(MAKE) -C src install
#
# packing things up for distribution
#
dist: FORCE
$(MAKE) dist2 DISTDIR=`sed 's/^.*VERSION.*"\(.*\)".*$$/emech-\1/p; d;' src/global.h`
dist2: FORCE
rm -rf /tmp/$(DISTDIR)
mkdir /tmp/$(DISTDIR)
tar cf - $(DISTFILES) | ( cd /tmp/$(DISTDIR) ; tar --preserve -xf - )
cd /tmp ; tar cf - $(DISTDIR) | gzip -9 > $(DISTDIR).tar.gz
rm -rf /tmp/$(DISTDIR)
chmod 644 /tmp/$(DISTDIR).tar.gz
FORCE:

130
README Normal file
View File

@ -0,0 +1,130 @@
,-----------------------------------------------------------------.,---------------------------.
| ,-----; ,------, ,-----; ,-------, ,----, , ,-. | ,--------------. |
| / ,---' | ,. \ / ,---' | ,--, \ / ,-. \ /| | \ | / ,-. \ |
| | |___ | | \ \ | |___ | |__| ;| | `~' / | | | | `---------' \ \ |
| | ,--' | | | || ,--' | |--; < | | ,--./ `-' | | / \ |
| | |__,-,| | | || |__,-,| | | || | \ |\___. | | / / |
| | || | | || || | | || `~' | \ | | ,----------' / |
| | || | | / | || | | / | | | | | \ _ \ |
| `~~~~~`\/ `---' `/ `~~~~~`\/ `---' `/ `/~~~~~~' |,--' | \_________,' \ \ |
| ,---, ,---, ,-----; ,----. ,-. ,--. | / \ |
| | \ / | / ,---' / ,--' / | | | | / | |
| | \/ || |___ | | | |__| | | / | |
| | |\ /| || ,--' | | | ,--. | | ______________,' | |
| | | \/ | || |__,-,| | /|| | | | | / / |
| | | | || || `--' || | | | | \ / |
| | | | || || || | | / | \ / |
| `---' `---'`~~~~~`\/ `\___/~~~'`---' `/ | \_________________,' |
`-----------------------------------------------------------------'`---------------------------'
Compiling?
~~~~~~~~~~
To compile the source:
1) Uncompress the source code distribution archive.
2) cd emech-3.0.99p3
-- Since you are reading this file, you have most likely already
come to this point.
3) ./configure
-- This script will prompt you for features to include or exclude,
going with the default is not a bad idea.
4) make clean install
If all went well you should now have an executable called
``energymech''.
---*---
Setup?
~~~~~~
Read the sample.conf file to get an idea of the config file
commands and then try to make your own. A basic setup doesnt need
much more than NICK, ALTNICK, SET USERFILE, JOIN and SERVER
entries, the rest is just tweaks of default values.
Quick steps:
1) cp sample.conf mech.conf
2) pico mech.conf
-- replace ''pico'' with your favourite text editor, look through
the file for sections to change, you will have to remove lines
in order to get the bot to work. Check the file completely!
3) make a userfile
construct a temporary file (trick.conf) containing;
---------------------------------------------------------------
set userfile whateveryouwanttonameit
user + handle * *!*yourident@*.yourdomain.com 100 password
save
shutdown
---------------------------------------------------------------
then 'run' this file with './energymech -f trick.conf'. this
will create a userfile with the name you chose ('mech.passwd'
is a good descriptive name which I usually use myself).
re-use the filename you selected in your proper configuration
file. and remember to 'rm -f mech.session' if you compiled your
energymech with session support.
4) ./energymech
That should get you running. If you don't see your bot come on IRC
after a few minutes, you should try running the bot in debug mode
to see what's going on with...
./energymech -d
If you get an 'Unknown option -d', you need to answer 'Y' to debug
support when running ./configure from the compiling section above.
---*---
Updated Files?
~~~~~~~~~~~~~~
The main distro-site for the EnergyMech is:
http://www.energymech.net
---*---
More Help?
~~~~~~~~~~
Read the website for goodness sake! Thats what its there for!
#emech is not a help channel
If you HAVE to ask a question in #emech then make damn sure that
its not covered by the website documentation and try to ask it in
a way so that we dont have to type half a book just to tell you
the answer.
Do NOT ask to be guided in #emech. We will under no circumstances
help you compile, configure or run a bot.
We absolutely hate people who come into the channel asking utterly
simple questions like `Why doesnt my bot connect', `Whats the
command to add a user', etc. If you manage to stay in the channel
after asking something like that its simply because we're too damn
lazy to kickban your ass.
We will NOT teach you how to work with UNIX shells or how to use
your mech, you have to learn that by yourself. Im noting this here
since it seems to be a common misconception that we would.
In short:
THIS SOFTWARE IS PROVIDED AS IS. YOU ARE ENTIRELY ON YOUR OWN WHEN
IT COMES TO CONFIGURING AND USING IT.
---*---
proton, July 24th, 2009.
<mailto:proton@energymech.net>

76
README.TCL Normal file
View File

@ -0,0 +1,76 @@
Variables
~~~~~~~~~
$mech_currentnick read only nick of whoever triggered the current action
$mech_guid read only GUID of the current bot
$mech_nick read only nick of the current bot
$mech_wantnick read/write wanted nick of the current bot (write unimplemented)
$mech_server read only ID of the server of the current bot
$mech_nextserver read/write ID of the next server for the current bot (write unimplemented)
$mech_currentchan read only active channel of the current bot
$mech_version read only version string of the mech
$mech_srcdate read only source date of the mech
$mech_class read only class of the mech
Functions
~~~~~~~~~
hook timer <spec> <callback>
<spec> specifier when this event should run
<callback> script proc
callback arguments: {}
* Still broken
hook parse <command> <callback>
<command> can be any IRC command such as PRIVMSG, NOTICE, JOIN, PART, QUIT, etc..
<callback> script proc
callback arguments: {from rest}
If the callback returns 0 (zero), normal parsing is done by the EnergyMech after
the script returns. If non-zero is returned, the bot will not parse the message.
hook command <command> <callback>
<command>
<callback> script proc
callback arguments: {from rest}
It is the scripts responsibility to check access.
hook dcc_complete - <callback>
<callback> script proc
callback arguments: {to filename cps}
dcc_sendfile
debug "<text>"
to_file
to_server "<text>" [number]
<text> text to be sent to server
[number] max number of lines in the sendq
* if number is not specified, the line will be sent immediately to the current bots server socket.
to_server returns the number of bytes written or -1 on an error
(in which case the server socket will have been closed)
* if number is zero (0), the line will be added to the sendq for the current server socket.
to_server returns the number of lines in the sendq
* if number is a positive integer, the line will only be added to the sendq if the number
of lines in the sendq is smaller than the given number.
to_server returns the number of lines in the sendq
! when sending lines directly (number not specified), a newline must be supplied with the buffer.
when sending through the sendq, the newline is optional
userlevel <nickuserhost> [channel]

View File

@ -1,4 +0,0 @@
energymech
==========
EnergyMech IRC Bot

37
TODO Normal file
View File

@ -0,0 +1,37 @@
/*
* EnergyMech TODO (May 17th, 2009)
*/
- Script timer
- Genuine telnet protocol support for telnet sessions (?)
- SOCKS4/5 support (?)
- Undernet CService support (IMHO, should be channel settings (set=password, tog=enable/disable) /proton)
- DalNet Nickserv/Chanserv support (needed? they dont tolerate much bots on that network /proton)
- Update/complete the help files.
- Mode +/-o commands to check for SO and if SO is set, check userlevel and make sure user has access before sending MODEs.
- Make it possible to pipe SPY through another bot.
Ex: bots = laurel, hardy; /msg laurel -spy #emech hardy!#emech
(done: local bot spy's)
- Mode +v a user who verifies if channel is set to +m
(too clever?)
- Recognize some common forms of channel spamming (eg, `join #blablabla')
(can be done with kicksays?)
- botnet logic so that all linked bots dont end up on the same server(s)
prevent losing channels cuz they were all on the same one -- the rebooted one..
/*
* Most of these features are open for discussion on how to
* (or even if) implement them
*
* Patches are most welcome
*/

205
VERSIONS Normal file
View File

@ -0,0 +1,205 @@
3.0.99p3 -- July 24th, 2009.
* Added: Python scripting support (supplied by S.Marquis)
* Added: Users are copied to other local bots.
* Fixed: Obscure configure options for new features.
* Fixed: Updated help files.
* Fixed: Local bots should now auto-op eachother (if AOP is set).
* Fixed: Filenames for various functions is now sanity checked.
* Fixed: Saving greet updates to userfile.
3.0.99p1 -- May 11th, 2009.
* Added: Scripting hook for dns (only if compiled with rawdns support)
Usage(TCL): mech_dns <hostname> <callback_proc>
* Added: Scripting hook for commands
Usage(TCL): mech_hook command <name_of_command> <tcl_proc_to_run>
* Added: DNS command (only if compiled with rawdns support)
Usage: DNS <nick|host>
* Added: Shit records to debug dump file.
* Added: CHANBAN feature
* Added: Spy channels can now be created cross-bot.
Usage: SPY [STATUS|MESSAGE|RAWIRC|[guid":"|botnick":"] [channel|">" filename]
* Added: IRCd extension flags are now recovered in a reset.
* Added: BANLIST command also lists +e and +I masks (ircnet)
* Added: Recognizes IRCd extensions from the 005 line such as ircnet modes (+e/+I)
* Added: SERVERGROUP command and SERVERGROUP setting (per bot setting)
Usage: SERVERGROUP [identifier]
Usage: SET SERVERGROUP <identifier>
* Fixed: async dns should eat less cpu if it bugs.
* Fixed: Bot can connect to undernet servers presenting an additional
challenge if there is no ident.
3.0.3 - August 27th, 2008.
* Fixed: DNS query recursion flag was set incorrectly.
3.0.2 -- May 8th, 2006.
* Fixed: Critical crash bug in parse_notice
3.0.1 -- August 28th, 2005.
* Fixed: Socket corruption when terminating a DCC or telnet chat.
* Fixed: Bouncer using virtual host.
* Fixed: Bouncer timeout after irc connection.
* Added: Status message for trying a new server.
* Fixed: BNCPORT setting now reacts when altering a live port
* Added: DIE in config file
* Fixed: When users are added or modified, the channel user
list will update to reflect the proper user levels.
* Fixed: Greet will now display properly in userlist.
* Fixed: ALTNICK in sample.conf
* Fixed: Cygwin uptime bot type WINMECH
* Fixed: Makefile flaws
* Fixed: Server removal (server -host)
* Fixed: DNS timeout server cycle
* Fixed: Channel spy source.
3.0 -- August 1st, 2005.
* Added: "USER +handle" now works aswell as "USER + handle"
* Fixed: bus error on sparc in async dns
* Fixed: crash bug in LINK command (faulty arguments)
* Fixed: ENFPASS
* Fixed: botnet verify
* Added: +NS (non shared) and +RO (readonly) user flags.
* Added: CMD command
* Removed: ADDLINK/DELLINK commands, use LINK +/-
* Added: Verify over botnet
* Added: botnet spy source
* Added: Multiple channels per user record
* Added: sendQ for certain command output
* Fixed: faulty error message in KB/SITEKB/SCREW
* Added: reset recovers server name
* Added: Telnet connections are now recovered in reset.
* Added: Shitlist output now shows all relevant information.
* Added: Action levels to the KS feature.
* Fixed: commands that output tables now output better formatted tables
* Fixed: bots crashing when they are kicked (themselves)
* Fixed: botnet bots given op without matching access 200.
* Fixed: a few commands crashing when given no arguments.
* Fixed: USER command setting a users access to zero every change.
* Added: Auto-detecting MODES setting on networks with 005 reply.
* Changed: OPMODES renamed to MODES, affecting how many modes per line.
* Removed: BANMODES setting.
* Fixed: Compiled OK with GCC 3.4.3
* Removed: ADD, DEL commands, use USER +/- instead.
* Fixed: ESAY no longer suffers from buffer overflow problems
* Fixed: AUB will no longer unban Shits level 3+
* Fixed: Session file now saves all (?) new options and settings
* Fixed: NCL (Nick flood kicks) now work properly.
* Changed: "NETPASS" setting renamed to "LINKPASS"
* Changed: file comment char changed to ; (semicolon)
* Removed: ADDSERVER, DELSERVER commands, use SERVER +/- instead.
* Added: telnet. you can connect to the bot via the botnet listen socket.
* Added: Its now possible to use an internal md5 version if your
system does not provide one. ./configure --md5=internal
* Added: Settings now have access levels associated with them.
It should be impossible to view/set/access a setting if your
level is insufficient.
* Added: USER command now accepts option +/-host
Usage: USER <handle> <+HOST|-HOST> <mask>
* Removed: HOST command.
* Added: the mech now accepts certain chars at the end of its
nickname when you give it commands, ex: "mechname," works
* Added: Notify no longer loads automatically, you need
to put "NOTIFY -RELOAD" in the configuration file.
* Added: Notify nicks can now be added and removed online
Usage: NOTIFY [+ <nick> [mask(s)] [:comment]]
Usage: NOTIFY [- <nick>]
* Added: DCC file receive and settings for DCC control
Usage: SET DCCANON <number>
Usage: SET DCCUSER <number>
Usage: SET DCCFILES <mask [...]>
* Removed: REPORT command, use `SET [channel]' for the same functionality
* Changed: commands can now be disabled permanently (until bot is restarted)
Usage: CHACCESS <command> disable
* Added: DYNLIMIT string setting to configure the dynlimit feature
Usage: SET DYNLIMIT xx:yy:zz
where xx is the number of seconds between each mode update, 20-600 seconds
where yy is the number to divide the current user number with to get the
window size, 5-50 (ex, 100 users on channel divided by 10 = window of +/-10)
where zz is the minimum window size, 1-50.
default values are 90 seconds, window 10 and minimum 4; "90:10:4"
* Removed: DYNLIMIT toggle
* Added: userlist sharing over botnet
* Added: MD5 bot linking password exchange support
* Added: TCL: `hook dcc_complete - callback'
callback arguments: to, filename, cps
* Fixed: Compiled OK with GCC 3.4.2 (with -fno-strict-aliasing)
* Added: internally generated html for /internalstatus.html
and /internaldebug.html (if compiled with debug support)
* Added: INFO command shows basic statistics for all channels
* Changed: SERVERLIST command removed, SERVER command with
no arguments now lists all known servers
* Added: Support for Undernet WALLCHOPS command (WALL)
* Fixed: MODE command now working as intended
* Added: tcl_dcc_sendfile <to> <filename>
returns filesize on success
* Changed: E3 now accepts nicks of any length
* Added: DCC filesend: SEND [to] <filename>
* Added: now using async/rawdns to lookup uptime hostname
* Added: now using async/rawdns to connect to irc servers
* Changed: timestamp in log format now includes year, month, date
* Fixed: crash bug with `SETPASS <user> none'
* Fixed: crash bug with HELP commands having no arguments
* Added: ALTNICK setting for desired alternate nicks
* Fixed: Removed lingering prototypes in h.h [ wy|d + Deke ]
* Added: MD5 support for password encryption
* Fixed: mech.session now gets saved on SHUTDOWN [ endorphin ]
* Added: CTIMEOUT setting for connection timeouts
* Added: NOTE command to send notes to users in the userlist
Usage: NOTE <handle>
* Fixed: Respawn counter now works properly when bot restarts
* Added: dynamode.c, dynamic altering of +l limit according
to the number of users present in the channel
* Fixed: `SETPASS <user> none' bug regarding min pass len
* Changed: SeenList is now kept on process level
* Added: UMODES setting to control the modes that the bot
sets for itself when connecting to servers
* Changed: ESAY $tog() has been changed into a full-featured
system that handles all settings; $tog() renamed to $var()
* Fixed: ESAY $tog() parsing bug causing bad output
* Added: Something that still looks like a HTTP interface
this is a very sketchy feature sofar tho
* Added: Chosen commands {now=HELP,USAGE} can be redirected
to other users or channels
* Added: ONJOINFILE channel setting, wonder why :]
* Added: greets (readded from old times)
* Added: Keep debug fd and server sockets when using
the RESET command. Even tho it execs, it's never
disconnected from the server.
* Fixed: Auths not timing out if user was visible in [ found by endorphin ]
an old (kicked/parted) channel userlist
* Removed: TOG command, use SET instead
* Changed: aliases are now way powerful
* Added: All types of SPY can be redirected to
channels and/or files.
Usage: SPY <channel|STATUS|MESSAGE> [channel|">" filename]
Usage: RSPY <channel|STATUS|MESSAGE> [nick|channel|">" filename]
* Removed: CHANLOG toggle
* Removed: STATMSG, SPYMSG, RSTATMSG, RSPYMSG
* Added: Short delay for server reconnect actions
* Fixed: Random server disconnects
* Removed: USTATS, stupid redundant command
* Removed: SHITLVL command, use RSHIT+SHIT instead
* Removed: All linking and telnet code is gone and
pipeuser code is now broken
* Changed: config file is now a list of `real' commands
* Changed: CMDCHAR <char> --> SET CMDCHAR <char>
* Changed: AUTOLINK --> TOG AUTOLINK <0|1|ON|OFF>
* Changed: USERFILE <file> --> SET USERFILE <file>
* Changed: HASONOTICE --> TOG ONOTICE <0|1|ON|OFF>
* Removed: IWM toggle, didnt do anything useful
* Fixed: Random disconnects from DCC
* Added: Extra entries in randinsult.e
* Fixed: Merged endo's seen-ago patch [ endorphin ]
* Added: Uptime reporting client code
* Fixed: WinGate proxy now works again...
* Added: Fastnick option hidden in src/config.h
* Fixed: Bot not knowing it was opped when joining [ found by endorphin ]
empty channels.
* Changed: Split mech.help into ./help/* files
* Fixed: No-key-saved in session file plus some small
optimizations...

582
VERSIONS-1 Normal file
View File

@ -0,0 +1,582 @@
2.7.6.1 -- June 4th, 2000.
* Fixed: Strcat() not skipping to end of string
2.7.6 -- February 17th, 2000.
* Fixed: Lockup/crash bug in WALL command
* Fixed: Major headache with DIE has been fixed
* Fixed: Brain-damaged-undernet-coder-kludge for +k
where the key itself is not sent if the user (bot)
isnt opped
* Fixed: The bot will no longer kick/+ban itself if it
triggers massdeop protection
* Fixed: You can now delete servers by their real name
aswell and not just by the name listed in the config
* Fixed: With AOP enabled, AVOICE would not work at all [ endorphin ]
* Fixed: DCC user + linking crash bug
* Fixed: Major crash bug in the newly optimized
chanuser handling...
* Fixed: Ghost chanuser problem when the bot joins a
channel and someone else joins before the channel is
synched (/WHO list has been received)
2.7.5 -- February 12th, 2000.
* Removed: UPDATE command (didnt actually have any real
effect on anything...)
* Changed: spymessages are now prefixed with `[message]'
instead of `$'
* Changed: The CHANNEL command now shows all the info
that CSTATS and ALLSTATS used to show, and CSTATS &
ALLSTATS has been removed
* Changed: A discusting amount of optimizations...
* Changed: Temporarily took out the WinGate question
since it doesnt work
* Added: configure script now asks if superdebug is to
be included instead of enabling it by default
* Added: SIGMASTER setting to decide which bot handles
signals like, HUP, USR1, etc
* Changed: Lots of optimizations
* Fixed: New (since 2.7.3) bug with AVOICE system
* Changed: Special case get_token()'s split into chop()
routine for optimizations
2.7.4 -- January 31st, 2000.
* Fixed: DEBUG mishap (possible crasher) in
SockConnect() (formerly known as connect_by_number)
* Fixed: NOIDLE sending refreshes before the bot was
`officially online'
* Fixed: SEGV and redundant code in find_userhost()
2.7.3 -- January 19th, 2000.
* Fixed: WIN and ALS was missing from feature line
* Changed: Listener socks have been made non-blocking
* Fixed: Compiling errors re undef'd DEBUG & PIPEUSER
* Changed: avoice and on_join() heavily optimized
* Changed: Renamed strcasecmp to Strcasecmp cuz some
ld tools would bong out when it finds two functions
with the same name (one internal, one in libc)
* Added: gcc/gprof profiling support
* Added: sendnotice() was missing from h.h [ found by azmodan ]
* Fixed: The fork bug when superdebug was undef'd
* Fixed: Bug in find_userhost() (?) caused crashes
when it was called by Link_needop()
* Fixed: Unused user records werent skipped in the
saveuserlist() routine -- until now
2.7.2 -- January 16th, 2000.
* Fixed: Updated server IPs in sample.set
* Changed: SeenList memory allocating and handling
have been fixed & optimized
* Added: More superdebug debug info
* Fixed: Memory leaks
* Fixed: KSLIST now works [ found by endorphin ]
* Added: Channel keys are now saved to session file [ found by detriment ]
* Fixed: Help command works again
* Fixed: link.c now compiles OK even if PIPEUSER is [ azmodan ]
undefined
* Fixed: If AVOICE setting was set to 1, it would +v [ endorphin ]
everything in sight even though it should only +v AV
users, its now handled correctly
* Added: Most 2.6.1b11 beta addons have been merged
with the current source-tree
2.7.1 -- December 2nd, 1999.
* Fixed: needinvite now actually works
* Changed: rewrote my_stricmp and renamed it
strcasecmp()
* Fixed: Small bug in time2away which could cause
garbage to be appended to the "am" and "pm" in some
time strings.
* Changed: telnet users no longer need to verify and
never gets deauthenticated
* Changed: All f* (buffered file) routines has been
replaced with open(), sockread(), send_to_socket(),
and equivalents == less libc calls & better code use
* Changed: LAST now stops listing "(none)" entries
after the first one has been printed
* Added: Channel keys can now be specified in the
config file like so;
CHANNEL <channel> <key>
* Changed: DCC clients are now being deleted in the
main loop instead of all over the place
* Changed: DCC and telnet now uses non-blocking IO
* Changed: freadln() has been removed and sockread()
is being used to read files instead
* Added: BinaryDefault settings are now used to avoid
saving default settings in session files
* Changed: Rewrote the readcfgfile() function to use
sockread() instead of freadln()
* Changed: the usage texts has now been moved into
the code again. It should be more concurrent aswell
as one less external file to keep track of
* Changed: Removed 95% of all time() calls by making
"now" a global variable. time() is called after
select() to update it
* Added: -Wshadow switch to configure script so that
imporoperly shadowed variables can be weeded out
* Fixed: SEGV in RKS (a simple swap of two lines) [ found by mr_c ]
2.7.0 -- October 24th, 1999.
* Added: Partyline users are now visible across links
* Changed: New routine for reading server input. This
breaks wingate support but improves overall quality
and speed. All server reads are now completely
converted to non-blocking IO
* Added: "-o file" option for debug output
* Changed: Optimizations in the handling of variables
* Added: More warnings for stray settings in config
file parser
* Changed: Global settings are now bot specific, not
process specific as before. This will require that
some mech.set files be rewritten (global settings
moved into the bot configuration part (and possibly
duplicated for multiple bots)).
* Fixed: Idle-kick (TOG IK, SET IKT) now works [ endorphin + proton ]
* Added: Sanity checking in CMD routines (disallow certain
commands, like CHAT, CMD and SHUTDOWN)
* Added: Command table compile-time parser has been merged
from 2.6.1b10+
* Added: --location=LOCATION option in configure script
* Fixed: system() calls to reboot/reset the mech has been
replaced with an execl() call (in main.c->mech_exec())
* Fixed: Makefile stub now handles "make mech" like it
should
* Fixed: DCC/telnet users who "flood" the partyline
with more than 2000 bytes (editable in config.h)
are disconnected (chargen DoS fix)
* Fixed: Mech now silenty ignores DCC CHAT requests
originating from ports below 1024 (chargen DoS fix)
* Fixed: (hopefully) checkmech problem on some machines
(portable shellscripting is a bitch)
* Fixed: get_userlevel() returned 100 for the bot itself,
it now returns 200 which is more appropriate
* Fixed: "LAST 20" now works as it should
* Fixed: Shitlist related bugs, does it all work now?
* Added: SHUTDOWN command
* Removed: NSL and FINGER commands (this code is much too
troublesome, it can be made much more simple and secure)
* Added: TODO file
* Fixed: CPU-eating bug in connect_to_server()
* Fixed: SERVERLIST now reports connection errors properly [ endorphin ]
* Changed: AVOICE is now a SET (0 = no autovoice, [ endorphin ]
1 = autovoice +AV users, 2 = autovoice everyone)
* Fixed: connect_to_server() would connect to the MOST used
server in the serverlist, this has been corrected.
* Changed: connect_to_server() has been optimized [ proton + endorphin ]
* Fixed: parse_kick() would remove the kicker from the [ endorphin ]
internal channel lists and not the person being kicked
* Fixed: Port parameter for DELSERVER now works properly [ endorphin ]
* Changed: Invalid nicks in randnicks.e was replaced with
valid ones
* Fixed: SEGV in ADDSERVER command (user need access 80+)
* Fixed: SEGV in VERIFY caused by too long passwords being
allowed. Password must now be between 4 and 50 chars
* Fixed: SEGV in SERVER command (user need access 80+)
* Fixed: WHO voice/op bug
2.6.2 -- September 10th, 1999.
* Added: AutoVoice support.
* Added: WinGate -w option for SPAWN command.
* Fixed: PASSWD command no longer requires "old" password
if no password has been set.
Usage: PASSWD [oldpassword] <newpassword>
* Fixed: Very vague infinite-loop possibility in server
connects existed, it has been fixed.
* Fixed: NOIDLE not working [ starlite ]
* Fixed: Authentication lost after nick change [ starlite ]
* Fixed: Problem with shitlist functions [ starlite ]
* Fixed: The "/msg <bot> <cmdchar>" bug.
2.6.1.1 --
* Fixed: Problems with CMD execution on multi-headed mechs.
* Fixed: Problem with authentications staying in place on
multi-headed mechs.
* Fixed: ESAY $channels listing inactive/parted/not-joined [ found by DMC ]
channels
* Fixed: Lockup bug in main loop when dealing with signals.
* Fixed: Telnet password checking.
* Fixed: Updated servers in sample.set.
* Fixed: Bot not rejoining when it's kicked [ found by DMC ]
* Fixed: CHAT command not working on Intel hardware.
2.6.1 --
## Beta 10 Marker ##
* Fixed: SEGV when doing "-TOG * toggle".
* Fixed: New bug from Beta 9 wrecking servers connects.
* Fixed: Password authentication problem... ouch.
## Beta 9 Marker ##
* Added: NEED-INVITE should now be working.
* Changed: Output format of HELP, CHANNELS, SERVERLIST
and BANLIST.
* Changed: Internal handling of channels. New bugs might
have been introduced.
* Fixed: A bundle of optimizations.
* Fixed: Session data is now also saved on SIGTERM.
* Fixed: RT now checks if the user giving the command has
access on the target channel. It's also possible to set
topics in channels with no +t flag when the bot isnt
opped. -t has also been fixed in TOPIC command.
* Fixed: Mech rejoined *all* channels known to it when
reconnecting to server, this is not correct behaviour
since it might have been -PART'ed but not -FORGET'ed.
* Fixed: CSERV didnt print the real server name if one
was available (well it does now!).
* Fixed: User turned into ghost users if they parted the
channel with a message.
* Added: Help and correct usage line for WHO command.
* Fixed: WHOM now formats output correctly for linked bots.
* Fixed: vars.c should now compile even with NEWBIE support
enabled.
## Beta 8 Marker ##
* Fixed: Crash bug in on_msg() on SunOS.
* Fixed: Missing reference to mcmd[] in combot.c.
## Beta 7 Marker ##
* Changed: Source distribution tarball is now unpacked into
a versioned directory, GNU-style.
* Changed: WHOM output format slightly changed.
* Fixed: VOICE doing +o if no nick was given. This is a bug
since channel_massmode() was changed.
* Changed: Refreshed the mech.help and mech.usage files.
* Fixed: USERHOST command now works...
* Added: Command USAGE, shows the usage for a command.
Usage: USAGE <command>
* Changed: Format of LAST output has been changed. It's now
also a per-bot list, not a global as before.
* Added: Server passwords, ALIAS settings and wingate
settings are now saved to session file.
* Changed: SET CMDCHAR => CMDCHAR. With no args given, the
current commandchar is printed. Only superusers can change
the commandchar.
Usage: CMDCHAR [cmdchar]
* Changed: SET WINGATE => WINGATE
Usage: WINGATE <host> <port>
* Changed: SET VIRTUAL => VIRTUAL
Usage: VIRTUAL <host>
* Changed: SET LINKPORT => LINK PORT
Usage: LINK PORT <linkport>
* Changed: LUSERS output format has been changed.
* Fixed: Userlist loading in multi-headed bots.
* Fixed: savesession() return values.
* Fixed: ALIAS references to on_msg_command[] => mcmd[].
* Fixed: Missing @SESSIONS@ thingy in config.h.in.
* Removed: Commands AOP, RAOP and PROT: replaced by USER.
## Beta 6 Marker ##
* Added: The missing LINK stuffs in session support. There
could still be some more missing though... Also added a
configure section for it.
* Changed: With NEWBIE support *disabled* the REPORT cmd
now prints all the settings in a much more dense format.
* Fixed: Autolink would try to connect to entities with no
linkport listed, this has been fixed.
## Beta 5 Marker ##
* Changed: No more hardcoded limit for how many bots can
run in a process at the same time. Spawn all you want ;P
All these changes probably introduced a bunch of new bugs.
* Changed: Replaced an unbelievably ugly kludge in on_msg()
with some decent code (for "bot cmd ..." style commands).
* Fixed: Garbage and potential bugs in do_linkcmd().
* Changed: Lots of optimizations/rewrites all over.
* Changed: channel_massmode() has been modified to accept
nicks and several patterns at a time enabling stuff like
"-deop *snuffit.org *aol.com sicko dumbo".
* Added: Makefile stub in the root directory which passes
on all make commands to the src/Makefile.
* Changed: Lots of code optimizations in on_mode().
* Fixed: Having +l in ENFM would reset the limit to 69 if
the limit was removed. Its now reset to the original value.
* Fixed: Spelling error in configure script.
## Beta 4 Marker ##
* Fixed: Small memory leak in parse_part().
* Fixed: Typo stuff stopped the bot from undoing bans that
were set on protected users by people not in the userlist.
* Fixed: Spy now prints channel for both quits and
nickchanges. If a person is in several spied-on channels,
the change will be seen several times.
* Fixed: Lots of bizarre bug-ish stuff in on_kick().
* Fixed: Using USER command to set protlevel now works.
* Changed: CORE information has been enhanced and the info is
presented in a more dense format. This has made the INFO
command useless so it has been removed.
* Fixed: find_shit() was broken so shitlist wouldnt work.
* Changed: Output of HELP command has been changed.
* Changed: Output of SERVERLIST command slightly changed.
* Fixed: Screwed output in CHANNELS, ALLSTATS and CSTATS
commands when both +l and +k was set. Output of CHANNELS
command has been slightly changed.
## Beta 3 Marker ##
* Fixed: Problem with %*-style strings in ESAY.
* Fixed: Problem adding users with long handle names.
* Fixed: BOTLEVEL (200) users could chat/telnet a bot.
(BOTLEVEL users *cannot* execute commands tho, they can
only listen to statmsgs and partyline).
* New command: USER, should make user sharing work altho
some parts are still missing. See HELP USER for more details.
Usage: USER <handle> <flags ...>
* SIGHUP and SIGUSR1 now affect only the 1st created bot.
Before it was rather random which performed the action.
* Fixed SEGV problem in Atoi(). Caused SEGV if reading config
file w/ servers with no ports.
## Beta 2 Marker ##
* Fixed obscure SEGV in the backgrounding routine (Ugly but
not a showstopper)
* Single char error prevented adding of new KICKSAYs. Fixed.
* Public password commands (VERIFY, PASSWD, SETPASS) are
ignored to discourage idiots from giving out passwords.
* Failed autolinks spew 'Link to "blablabla" failed', now only
manual LINK UPs will give that message.
* Telnet has been restricted to L10+ users (as with DCC).
* With LINKING defined, ADDed users werent locked as needed
thus creating ghost users. This would be a major problem
when setting up a 2.6.1b1 for the first time... Fixed.
* Fixed SEGV in cycle_channel().
* Fixed small FD leakage in parse_error().
## Beta 1 Marker ##
* Added BASIC support for userlist sharing over mechnets.
Its not quite finished yet.
* Added SET WINGATE command.
Usage: SET WINGATE <host> <port>
* Added missing code for saving the ECHO flag.
* Link messages from "$" are passed to send_global_statmsg().
This should have been in 2.6.0 but was forgotten.
* Verification is required before a bot will reply to
DCC CHAT requests.
* Fixed small bug in cfg_nickname(). Trailing spaces or [ found by Qm-D ]
other illegal nick could mess things up really big
* Added WinGate support.
* Added PASS support for server connect.
* Made [#channel] option for USERLIST command also list
global users. Use -C option to list channel-only users.
* Added command BYE for "clean" DCC/Telnet disconnects.
Usage: BYE
* MAJOR struct rewrites. New bugs can have been introduced.
2.6.0 -- May 27th, 1999
2.5.31 -- Version changed to 2.6.0
* LINK DOWN command completed (`Scooby).
* Completed $NICK link command for synched bot nicks on
mech networks.
* leave_channel() has been moved into do_leave().
* parse_352() (RPL_WHOREPLY) has been optimized/fixed.
* do_steal() and do_rsteal() has been rewritten.
* Channel steals has been optimized and #def'd. The steal
setting is now part of the channel struct instead of
having its own list pointer in the bot struct.
* Revenge kick has been optimized.
* New config file command: ALIAS, use it to set an alias
for an already existing command. A section has been added
to the configure script has been added for this feature.
Usage: ALIAS <command> <alias>
* Telnet now works (it seems anyways), a section in the
configure script has been added for this feature. Linking
has to be enabled to allow telnet.
* Single char error in send_statmsg() has been fixed so that
it sends a timestamp as it should.
* TRACE command removed. I'd be surprised if anyone even
knew what this command was used for.
* TOPKICKS command removed. Too much code for so little.
* DCCLIST command which was pretty pointless, has been
removed (Use WHOM instead).
* Single char error made "Virtual host" always appear in
the CORE info even if no vhost was set. Fixed.
## Beta 10 Marker ##
* Fixed the no-rejoin-after-disconnection bug.
* HELP and HELPFULL now lists all commands as a comma
separated list instead of a fixed width table.
* CORE will no longer list active channels (use CHANNELS).
* CORE will now show the currently set vhost, if any.
* SET can now be used to change virtual host of a bot.
Usage: SET VIRTUAL <host>
* Fixed a problem where a mech with an invalid vhost would
cause heavy system load, it now reverts to INADDR_ANY if
the vhost cannot be used.
* Added code for the "HELP on <command>" and "Level needed:"
in the help-routine which I apparently forgot when
I remade it.
* Removed the BK toggle since all the code for the
beep-kicking has been removed earlier.
* Added missing help topic for SCREW command.
* Command SCREWBAN has been renamed to SCREW.
* Default level for SPAWN has been changed from 90 to 100.
* Fixed compilation errors in main.c on some UNIX flavours.
* There was FD leakage in the do_help() routine so I rewrote
the whole thing. This should greatly help overall stability.
* Default level for SPYMSG was changed from 80 to 90
(Why? Cuz RSPYMSG was level 90...).
## Beta 9 Marker ##
* Userlist related coredumps on 64-bit systems has been
fixed (hopefully anyways).
* USTATS now checks for matching handles before searching
after a user by nick.
* Complete rewrite of the README file.
* SHITREASON command has been removed: too much code for
such a small task IMO, use RSHIT+SHIT instead.
* mech.usage routines has been remade yet again. Some
commands has been added (DO, JOIN, SET).
* URL for www.emech.cx added to README file
* mech.help updates (ADD, SET, TOG).
* ADD does some extra sanity-checking.
* Bots can now be added with the ADD command using both
"BOT" level and "200" ("BOT" is only for backwards
compatibility, it confuses lamers).
* HOST command now checks for invalid or global masks
before adding them...
* SET can now be used to change commandchar.
Usage: SET CMDCHAR <char>
* SET can now be used to change Linkport.
Usage: SET LINKPORT <1-65535>
* TOG command now supports arguments for wether a toggle
should be SET, UNSET or TOGGLED (default).
Usage: TOG [channel|*] <toggle> [0|1|ON|OFF]
* Internal handling of CMD command execution have been
improved somewhat...
* Command spy (TOG SPY) now wont print random nicks when
commands are executed across links.
* Completed the "mech.usage" file. I will try to make
good use of it now aswell ;)
* configure script now checks if -pipe switch works and
uses it (cuts down on disk access).
* The beep-flooding code has been removed (when was the
last time you saw a tsunami flood?)
* The problem with the mech joining and parting when
its lagged has been fixed (and hopefully nothing new
has been put in its place).
* HELP commands with no arguments given now calls HELPFULL [ guppy ]
to list all commands
* HELPFULL now lists commands grouped by level.
* The 'Beginner help routines' are as follows:
DIE command in mech configuration file.
REPORT shows descriptions of what certain switches do.
* New linking debug code added (debug output to LinkEvents
file). Debug need to be compiled into the mech to enable
LinkEvents debugging.
* Added a Levels section in the online help file (mech.help).
* The SETPASS now works as its supposed to (it used to allow
users to set passwords of any other user. Also, you can now
unset passwords with SETPASS command if you're at level 80
or higher, just do "SETPASS <handle> none".
* Bad behaviour on behalf of the configure script could
cause some big problems (Linux systems) if it was executed
as root, this has been fixed.
## Beta 5 Marker ##
* New command added: DELSERVER, and updated mech.help and
mech.usage with help for it.
* Added a couple of lines to randsignoff.e
* Internal structure of serverlist has been reworked for
a more efficient (hopefully anyways) format. Some commands
has changed functionality because of it (CORE,SERVERLIST).
* New variable for ESAY: $links. It will show all active mech
links (if any), prefixing local uplinks with a '*' and
remote uplinks with a '='.
* Setting prot to 4 would actually reset it to 0 due to
a storage limit (only 2 bits were used), this has been
fixed (it now uses 3 bits, woopie!!)...
* Linking has been fixed/changed to make it more stable and
foolproof. Linking with older versions will no longer work,
so make sure you upgrade...
* SIGSEGV handler is no longer installed when mech is runnin
in debug mode (mech -d) so that coredumps will be made
properly.
* Removed LOADKICKS and SAVEKICKS commands since they dont
serv much of a purpose + updated helpfile.
* Fixed an infinite loop in the USERLIST command
(only happened if you listed users based on mask).
* Fixed infinite loops around SIGSEGV debug routine (it now
cores and exists even if it was compiled with debug).
* Minor/cosmetic changes of configuration file loader.
* configure script now asks user about compile time options
and alters config.h based on the answers.
* Added a DIE option for configuration file loader to get
rid of the absolute lamers who copy sample.set to mech.set
and run it...
2.5.30 -- November 15th, 1998
* Single char error in command replies over links resulting
in no replies at all.
2.5.29 -- November 15th, 1998
* PROT now works for bots aswell (level<200 = access denied)
* PROT command now accepts level 0 to 4, eliminating the
need of the RPROT command which has been removed.
* More mech.usage...
* SESSIONS define is now off by default (sessions isnt fully
functioning yet)
* Due to braindamage some of the new linking routines caused
bots to stick around while entities was unlinked, causing
huge link-lists (.whom) after running for a while. This
should be fixed now... This fix should also make for more
stable linking of mechs :]
2.5.28 -- November 13, 1998
FRIDAY THE 13TH!!! -- uh oh...
* Fixed SESSIONS define in cfgfile.c (error if SESSIONS is
undefd).
* When you verify, you should be verified with all linked bots,
if you have the same password.
* SCREWBAN now only accepts nicknames (as it should).
* WALL command now supports undernet NOTICE @#channel stuff,
add HASONOTICE to your config file to make use of it.
2.5.27 -- October 24th, 1998
* You can no longer add multiple identical masks to the same
handle. It will complain (HOST command) or silently ignore
the mask (internal routines).
* Fixed the SPY & RSPY commands (RSPY wasnt working at all).
* Added a new user #define for dynamic command levels (change
of needed levels with chaccess).
* Fixed a few entries in the mech.help file.
* Added a few entries to mech.usage.
* Updated the sample.set file with some linking stuff.
* Added a cfg_noop routine to kill warnings for the */NO* type
tags.
* Added README file.
2.5.26 -- October 20th, 1998
* Fixed the coredump from trying to do
``LINK UP unknownentity''
* Fixed some config.h defines stuff (when undef'd it would
error when compiling).
2.5.25 -- October 19th, 1998
* Fixed an infinite loop in send_global_statmsg() when you
had more than 2 bots in the same process and chatted more
than one bot.
* DEL command now only accepts handles to delete.
* VOICE with no nickname given did +o instead of +v, fixed.
* Added a VERSIONS file...
2.5.24 -- September 10th, 1998
no previous record.

54
checkmech Executable file
View File

@ -0,0 +1,54 @@
#! /bin/sh
#--------------------------------------------------
# Cron script for EnergyMech 3.0
#--------------------------------------------------
#
# you can add this to your crontab (crontab -e) as
# something like:
#
# 0,10,20,30,40,50 * * * * /path/to/checkmech
#
# this will check the mech every 10 minutes.
#
#--------------------------------------------------
echo "You havent edited checkmech yet!!"
exit 0
# CHANGE THIS LINE!!
cd /path/to/energymech/directory
# name of executable
RUN=./mech
# options passed to the energymech
# ( debug, non-default config file... )
OPT=
# example: debug output to `mech.debug' file
#OPT=-d -o mech.debug
# example: non-default configuration file
#OPT=-f othermech.conf
# Send output to...
OUTPUT=./mech.cron
#OUTPUT=/dev/null
if [ -r mech.pid ]; then
PID=`cat mech.pid`
if [ -r /proc/$PID ]; then
exit 0
fi
if ( kill -0 $PID 1> /dev/null 2> /dev/null ); then
exit 0
fi
fi
# its not running...
echo >> $OUTPUT
echo "Mech restarted:" >> $OUTPUT
( date 2>&1 ) >> $OUTPUT
echo >> $OUTPUT
( $RUN $OPT 2>&1 ) >> $OUTPUT

21
config/cc.c Normal file
View File

@ -0,0 +1,21 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
#if (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3)
write(1,"gnucc33\n",9);
exit(0);
#endif
#if (__GNUC__ >= 2) && (__GNUC_MINOR__ >= 95)
write(1,"gnucc95\n",8);
exit(0);
#endif
#ifdef __GNUC__
write(1,"gnucc\n",6);
#else
write(1,"yes\n",4);
#endif
return(0);
}

9
config/inet_addr.c Normal file
View File

@ -0,0 +1,9 @@
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char **argv)
{
struct in_addr ia;
ia.s_addr = inet_addr("0.0.0.0");
return(0);
}

8
config/inet_aton.c Normal file
View File

@ -0,0 +1,8 @@
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char **argv)
{
struct in_addr ia;
return(inet_aton("0.0.0.0",&ia));
}

32
config/ldtest.c Normal file
View File

@ -0,0 +1,32 @@
#include <stdio.h>
#include <unistd.h>
#if defined(__GNUC__) && defined(__ELF__)
#define __page(x) __attribute__ (( __section__ (x) ))
#else
#define __page(x) /* nothing */
#endif
#define S(x) x,sizeof(x)
__page(".text.e")
int function1(int a)
{
return a + 1;
}
__page(".text.c")
int function2(int a)
{
return a + 2;
}
__page(".text.d")
int main(int argc, char **argv)
{
if (((void*)main < (void*)function1) && ((void*)function1 < (void*)function2))
write(1,S("yes\n"));
else
write(1,S("no\n"));
return(0);
}

1
config/md5.h Symbolic link
View File

@ -0,0 +1 @@
../src/md5/md5.h

1
config/md5_internal.c Symbolic link
View File

@ -0,0 +1 @@
../src/md5/md5.c

10
config/ptr_size.c Normal file
View File

@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv)
{
printf("%i\n",sizeof(void*));
return(0);
}

27
config/pw.c Normal file
View File

@ -0,0 +1,27 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char * CRYPT_FUNC (const char *, const char *);
int main(void)
{
char *enc;
int md5,des;
des = md5 = 0;
enc = CRYPT_FUNC ("password","$1$XX");
if (enc && !strcmp(enc,"$1$XX$HxaXRcnpWZWDaXxMy1Rfn0"))
md5 = 1;
enc = CRYPT_FUNC ("password","XX");
if (enc && !strcmp(enc,"XXq2wKiyI43A2"))
des = 1;
if (md5 && des)
write(1,"DESaMD5\n",8);
else
if (des)
write(1,"DES\n",4);
else
if (md5)
write(1,"MD5\n",4);
return(0);
}

8
config/python.c Normal file
View File

@ -0,0 +1,8 @@
#include <unistd.h>
int main(void)
{
Py_Initialize();
Py_Finalize();
return 0;
}

9
config/socket.c Normal file
View File

@ -0,0 +1,9 @@
#include <unistd.h>
#include <sys/socket.h>
int main(int argc, char **argv)
{
int s;
s = socket(AF_INET,SOCK_STREAM,0);
return(0);
}

10
config/tcl.c Normal file
View File

@ -0,0 +1,10 @@
#include <unistd.h>
#include <tcl.h>
Tcl_Interp *interp = NULL;
int main(void)
{
interp = Tcl_CreateInterp();
Tcl_Init(interp);
return(0);
}

19
config/unaligned.c Normal file
View File

@ -0,0 +1,19 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int buserror(char *data)
{
int *x;
x = (int*)(data+1);
return(*x);
}
int main(int argc, char **argv)
{
char busdata[6];
int x;
strcpy(busdata,"Xyes\n");
x = buserror(busdata);
write(1,&x,4);
return(0);
}

14
config/which Executable file
View File

@ -0,0 +1,14 @@
bin=$1
spath="`echo $PATH | sed 's/:/ /g;'`"
if [ -x $bin ]; then
echo $bin
exit
fi
for pd in $spath; do
if [ -x $pd/$bin ]; then
echo $pd/$bin
exit
fi
done
echo 'not found'

1144
configure vendored Executable file

File diff suppressed because it is too large Load Diff

254
default.bigchars Normal file
View File

@ -0,0 +1,254 @@
fontname energymech-capitals-icy-height8-v3
spacewidth 4
charheight 8
kerning 1
chars !
,--,
| |
| |
| |
| |
\/
,--,
\__/
chars .
,--,
\__/
chars |
,--.
| |
| |
| |
| |
| |
| |
`--'
chars aA
,-----,
/ ,---,\
| |___| |
| ,--'| |
| | | |
| | | |
| ,-` `-'
|/
chars bB
,------,
| ,-. \
| |_/ ;
| ,-. \
| | \ |
| `--' |
| /
`/~~~~~~'
chars cC
,-----;
/ ,---'
| |
| |
| | ,-,
| `--' |
`\ |
`~~~`\/
chars dD
,----,
| ,, \
| | \ \
| | | |
| | | |
| `--' |
| |
`/~~~~~~'
chars eE
,-----;
/ ,---'
| |___
| ,--'
| |__,-,
| |
| |
`~~~~~`\/
chars fF
,-----;
/ ,---'
| |__
| ,--'
| |
| |
| |
`/~~'
chars gG
,----,
/ ,-. \
| | `~'
| | ,--,
| | \ |
| `~' |
| |
`/~~~~~~'
chars hH
,--. ,---.
| | | |
| |_| |
,' ,-. |
| | | |
| | | |
| ,-` | |
|/ `~~~'
chars iI
,--,
| |
,' |
| |
| |
| |
| |
`/~~'
chars jJ
,--,
| |
| |
| `.
/~\__| |
\ |
\ |
`~~~~~~´
chars kK
,---, ,-.
| | / /
| |/ /
| ,-. ~\
| | | |
| | | |
| | | /
`---' `/
chars lL
,---,
| |
| |
| |
| |_,--,
| |
| |
`~~~~~~`/
chars mM
,---, ,---,
| \ / |
| \/ |
| |\ /| |
| | \/ | |
| | | |
| | | |
`---' `---'
chars nN
,---, ,---,
| \ | |
| \ | |
| |\ \| |
| | \ |
| | \ |
| | | |
`---' `---'
chars oO
,------,
/ ,--, |
| | | |
| | | |
| | | |
| `--' |
| /
`/~~~~~'
chars pP
,-------,
| ,--, \
| |__| ;
| |----'
| |
| |
| |
`---'
chars rR
,-------,
| ,--, \
| |__| ;
| |--; <
| | | |
| | | |
| | | /
`---' `/
chars sS
,-------,
/ ,----'
| `---,
`-------, \
,---, | |
| `---' |
| |
`----------'
chars tT
,-------,
\____, \
| |
| |
| |
| |
| |
`/~~'
chars uU
,-. ,-,
/ | | |
| | | |
| | | |
| | | |
| `--' |
`\ |
`~~~~\/
chars wW
,-. ,-,
/ | | |
| | |\ | |
| | | | | |
| | | | | |
| `-' `-' |
`\ /\ |
`~~' `~\/
chars yY
, ,-.
/| | \
/ | | |
/ `-' |
\___. |
\ |
| |
|,--'

5
help/8BALL Normal file
View File

@ -0,0 +1,5 @@
8Ball command randomly gives a positive or negative answer.
The ! char is also recognized as commandchar.
Example: !8ball will I get laid tonight?

10
help/ACCESS Normal file
View File

@ -0,0 +1,10 @@
Show someones access level. If no arguments are given, the bot
will display your own access level. You may also query the bot
for the access level required for commands, using:
ACCESS <commandchar><command>
For example: ACCESS -ACCESS
(If your command char is -)
See also: userlist

21
help/ALIAS Normal file
View File

@ -0,0 +1,21 @@
Create or delete a command alias. Arguments like $1 will
be replaced with the corresponding argument from input.
$1 The first argument.
$1-2 The first and second argument.
$2-3 The second and third argument.
$1- All arguments starting with the first.
$2- All arguments starting with the second.
Example:
ALIAS MEEP SAY $2 $1 $3-
Would be translated in the following manner:
MEEP one two three four -> SAY two one three four
Aliases may call other aliases and aliases can be used
to replace built in commands. Aliases can recurse a
maximum of 20 times (prevents infinite loops).
See also: unalias

3
help/AWAY Normal file
View File

@ -0,0 +1,3 @@
Sets the bot away. If no message is specified, previous
away status and message (if any) is removed.

5
help/BAN Normal file
View File

@ -0,0 +1,5 @@
Ban a user on a channel. If a mask is given, a ban using
the mask will be placed. The user will not be kicked.
See also: unban, siteban, kb, screw

4
help/BANLIST Normal file
View File

@ -0,0 +1,4 @@
Show the banlist for a channel.
See also: ban, unban

4
help/BYE Normal file
View File

@ -0,0 +1,4 @@
End your own DCC or telnet connection.
See also: chat

5
help/CCHAN Normal file
View File

@ -0,0 +1,5 @@
Set the current channel. With no argument,
the currently set channel is displayed.
See also: join, part, channels

6
help/CHACCESS Normal file
View File

@ -0,0 +1,6 @@
Changes the level needed to do a command.
If "disable" is used instead of the level,
the command will be permanently disabled
(for as long as the bot remains).

0
help/CHANBAN Normal file
View File

4
help/CHANNELS Normal file
View File

@ -0,0 +1,4 @@
Lists the channels the bot is active on.
See also: join, part, forget

4
help/CHAT Normal file
View File

@ -0,0 +1,4 @@
Make the bot DCC chat you.
See also: bye

4
help/CLEARSHIT Normal file
View File

@ -0,0 +1,4 @@
Clears the shitlist, removing all shit records.
See also: shit, rshit

6
help/CMD Normal file
View File

@ -0,0 +1,6 @@
Send a command to linked bots. You can specify a single
bot to execute the command. Authentication is done on
target bot(s), not the bot you send the command from.
See also: link

4
help/CORE Normal file
View File

@ -0,0 +1,4 @@
Shows core information about the bot.
See also: ver, uptime, ontime

4
help/CSERV Normal file
View File

@ -0,0 +1,4 @@
Shows current server the bot is connected to.
See also: server, nextserver

5
help/CTCP Normal file
View File

@ -0,0 +1,5 @@
Send a CTCP request to a user or channel.
The reply is displayed in the "STATUS" spy channel.
See also: spy

4
help/CYCLE Normal file
View File

@ -0,0 +1,4 @@
Quickly part and rejoin a channel.
See also: join, part

6
help/DEOP Normal file
View File

@ -0,0 +1,6 @@
Deop a user or users matching the given mask on
a certain channel. With a mask, only users with
access below the MAL setting are affected.
See also: down, op, mode

7
help/DIE Normal file
View File

@ -0,0 +1,7 @@
Kills the bot. If session file is in use, use the
SHUTDOWN command instead to preserve the configurations
for all bots. If DIE is used, the killed bot(s) will
not be saved to the session file.
See also: reset, shutdown

3
help/DNS Normal file
View File

@ -0,0 +1,3 @@
Resolve the hostname given or the host of the nick give.
If the hostname is an IP, a reverse resolve will be attempted.

8
help/DNSSERVER Normal file
View File

@ -0,0 +1,8 @@
Add or remove DNS servers from the internal list.
+ip to add a new host, -ip to remove an existing host.
Only IP's can be used, hostnames will not work
(the resolver cannot resolve itself). With no arguments
a list of the current known DNS resolver addresses are
shown, the next host to be used is marked with underline.
Use `dnsserver -0' to remove all known hosts.

4
help/DO Normal file
View File

@ -0,0 +1,4 @@
Sends raw commands to the server.
Example: DO PRIVMSG #eggdrop :yer all lame, except guppy =)

4
help/DOWN Normal file
View File

@ -0,0 +1,4 @@
Deop you on a channel.
See also: deop, up, mode

4
help/ECHO Normal file
View File

@ -0,0 +1,4 @@
Turns on and off partyline echoing of your own messages.
See also: chat, user

13
help/ESAY Normal file
View File

@ -0,0 +1,13 @@
Works like SAY with some enhancements. As the bot parses the text
it replaces predefined variables with their current value:
$access Your own access on the current channel
$cc Current channel
$channels Channels
$on Ontime (same as ontime command)
$time Current time
$var(x) Show current setting for "x"
$up Uptime (same as uptime command)
$ver EnergyMech version
See also: say

4
help/FORGET Normal file
View File

@ -0,0 +1,4 @@
Removes an inactive channel from memory.
See also: join, part

9
help/GREET Normal file
View File

@ -0,0 +1,9 @@
When a matching user joins a channel, send a text as a greeting
to the channel or the user. Normal greetings and random line
greetings are sent to the channel joined as a message. All
greetings are sent line buffered.
greeting Send "greeting".
@greetfile Send the entire contents of greetfile as private NOTICEs.
%greetfile Pick a random line from greetfile as greeting.

12
help/HELP Normal file
View File

@ -0,0 +1,12 @@
Online help system.
<topic> Shows help about a specific topic.
<command> Displays help entry for specified command.
<level> Displays all commands available at a specified level.
<pattern> Shows all help entries matching the pattern.
If no argument is given, all available commands available are
listed grouped by access level.
See also: usage

4
help/IDLE Normal file
View File

@ -0,0 +1,4 @@
Show how long a person has been idle.
See also: showidle

4
help/INSULT Normal file
View File

@ -0,0 +1,4 @@
Send a random insult to a user or channel.
See also: pickup

3
help/INVITE Normal file
View File

@ -0,0 +1,3 @@
Invite someone to a certain channel. If no nick is given,
it defaults to inviting you.

4
help/JOIN Normal file
View File

@ -0,0 +1,4 @@
Makes the bot join a channel
See also: cycle, part

5
help/KB Normal file
View File

@ -0,0 +1,5 @@
Kickban a user from a channel. If no reason is given,
a random kick message will be used.
See also: ban, kick, screw, shit

5
help/KICK Normal file
View File

@ -0,0 +1,5 @@
Kick a user from a channel. If no reason is given,
a random kick message will be used.
See also: kb, screw, shit

12
help/KS Normal file
View File

@ -0,0 +1,12 @@
Add a kicksay. The bot kicks users when they say the words.
The optinal action is a number from 0 to 3;
0 on first offence, send the user a warning,
on second offence, kick them.
1 kick the user.
2 kickban the user.
3 kickban and shitlist the user.
If no arguments are given, the current kicksays will be listed.
See also: rks

3
help/LAST Normal file
View File

@ -0,0 +1,3 @@
Shows the last commands done, and who did them
Default is 5, showing up to 20.

34
help/LEVELS Normal file
View File

@ -0,0 +1,34 @@
Built in levels
Level 0: Anonymous user.
User is ignored by the bot.
Level 10: Partyline user.
Users with this level can verify themselves and communicate at
a basic level (help, usage, echo, ...) with the bot including
using the DCC partyline.
Level 20: Informed user.
User is allowed to query a few status informations.
Level 40: Channel operator.
User can op/deop/ban/unban other channel users and set topics.
Level 50: Senior Channel operator.
User can manipulate the shitlist.
Level 60: Channel Maintainer.
User can view the bot userlist.
Level 70: Bot operator.
User can add/remove channels and manipulate the bad words list.
Level 80: Bot master.
User may change protected topics, enforced modes, is not checked
for massmodes/masskicks/clones/revenge kick, can remove passwords
with SETPASS, always gets ctcp ping replies and is not affected
by PROT levels of other users. User may force bot to load/save
setting to/from files.
Level 90: Trusted bot master.
User may change the bot's nick, spy on channels/messages, change
channel settings and commandlevels. User is allowed to add/remove
links to other bots.
Level 100: Superuser.
Superuser, what can he *not* do?
Level 200: Bot.
Bots can not execute commands by /msg or in any other way.
Is also unaffected by massmodes/kicks/clones/revenge, etc...
Only bots added with botlevel (200) will be autoopped as
a responce to NEEDOP across network links with other bots.

18
help/LINK Normal file
View File

@ -0,0 +1,18 @@
Add/remove and establish botnet links.
Add a new bot to the list:
LINK +guid password [host port]
Host and port is optional, required for making connections to
the remote bot, but if they are left out, the local bot can still
accept links incoming from the remote bot.
Remove a bot from the list:
LINK -guid
Attempt to establish a link:
LINK guid
With no arguments it will list all known bots.
See also: cmd, setautolink

4
help/LOAD Normal file
View File

@ -0,0 +1,4 @@
Loads everything that can be loaded
See also: save

4
help/LUSERS Normal file
View File

@ -0,0 +1,4 @@
Same as the irc command /lusers
See also: stats

4
help/ME Normal file
View File

@ -0,0 +1,4 @@
Make the bot do an action on a certain channel
See also: say, esay, msg

5
help/MODE Normal file
View File

@ -0,0 +1,5 @@
Set or unset channel modes. Can also be used
to change the modes of the bot.
See also: op, deop, voice, unvoice

3
help/MSG Normal file
View File

@ -0,0 +1,3 @@
Usage: MSG <nick|channel> <message>
Send a message to a person or channel.
See also: SAY, ESAY, ME

3
help/NAMES Normal file
View File

@ -0,0 +1,3 @@
Usage: NAMES [channel]
Shows names on the specified channel
See also: WHO

5
help/NEXTSERVER Normal file
View File

@ -0,0 +1,5 @@
Usage: NEXTSERVER
Makes the bot go to the next server in the serverlist
You can also do 'kill -USR1 <mech_pid>' in the shell
to make it switch server.
See also: SERVER, ADDSERVER, SERVERLIST

4
help/NICK Normal file
View File

@ -0,0 +1,4 @@
Usage: NICK <nick>
Changes the nick of the bot. If the nick given is already
in use, the bot will not change its nickname until the
occupied nick is available.

10
help/NOTIFY Normal file
View File

@ -0,0 +1,10 @@
Show people online in the notify list.
Options can be specified as follows:
-all Show all nicks, online aswell as offline.
-nomatch Show online nicks even if they do not match the known mask(s).
-reload Reload the notify configuration file.
-full Show full details of each nick.
-seen Also show nicks that have been seen even if they are currently not online.

3
help/ONTIME Normal file
View File

@ -0,0 +1,3 @@
Usage: ONTIME
Shows time connected to current server.
See also: UPTIME

4
help/OP Normal file
View File

@ -0,0 +1,4 @@
Usage: OP [channel] [nick|mask]
Op someone on a given channel. Defaults to opping
you in the channel where the command is given.
See also: UP, DEOP, MODE

6
help/PART Normal file
View File

@ -0,0 +1,6 @@
Makes the bot part a certain channel. To purge the channel
completely from memory, use the FORGET command once it has
parted.
See also: join, forget

6
help/PASSWD Normal file
View File

@ -0,0 +1,6 @@
Usage: PASSWD [oldpassword] <newpassword>
Changes your password on the bot. The oldpassword parameter only
has to be given if a password is already set.
Note: Passwords are case-sensitive and are encrypted so not even
bot runners will know your password.
See also: SETPASS

19
help/PROTECTION Normal file
View File

@ -0,0 +1,19 @@
Protection level can be 0 through 4 where the specific levels
are as follows:
0 No protection.
1 Reop/unban, do nothing to offender.
2 Reop/unban, deop offender.
3 Reop/unban, kick offender.
4 Reop/unban, kickban offender.
The channel protection level limits the highest protection
level that will be enforced. For example, if channel protection
level is set to 2 and a user has protection level 4, that user
will still be treated as having only level 2 on that channel.
If channel protection level is set to 0 (zero), protection
will not be enforced at all.
See also: setprot, user, userlist

6
help/PYTHON Normal file
View File

@ -0,0 +1,6 @@
Execute a Python command. This command is only available if
the PLEASE_HACK_MY_SHELL option was enabled during the
compiling. It is an extremely risky command to allow.
============ CONSIDER YOURSELF WARNED ============

2
help/PYTHONSCRIPT Normal file
View File

@ -0,0 +1,2 @@
Load a Python script into the energymech.

3
help/QSHIT Normal file
View File

@ -0,0 +1,3 @@
Usage: QSHIT <nick> [reason]
Quick shit. Uses preset defaults for channel and shitlevel.
See also: SHIT, RSHIT, SHITLIST

6
help/RESET Normal file
View File

@ -0,0 +1,6 @@
Restarts the bot completely. Same as killing the bot
and restarting it from the shell. The bot will attempt
to keep network connections alive (IRC server, DCC).
See also: die, shutdown

3
help/RKS Normal file
View File

@ -0,0 +1,3 @@
Usage: RKS <channel> <pattern of words banned>
Removes a kicksay
See also: KS, KSLIST

3
help/RSHIT Normal file
View File

@ -0,0 +1,3 @@
Usage: RSHIT <channel> <nick|userhost>
Removes someone from the shitlist
See also: SHIT, SHITLIST

5
help/RSPY Normal file
View File

@ -0,0 +1,5 @@
Usage: RSPY <channel> [nick|channel]
Stop spying on a certain channel
Note: If a nick or channel is given at the end...that person/channel
will be removed from spying
See also: SPY, SPYMSG, SPYLIST

3
help/RT Normal file
View File

@ -0,0 +1,3 @@
Usage: RT <channel>
Sets a random topic.
See also: TOPIC

4
help/SAVE Normal file
View File

@ -0,0 +1,4 @@
Saves the entire enchilada.
See also: load

3
help/SAY Normal file
View File

@ -0,0 +1,3 @@
Usage: SAY <channel> <message>
Send a message to a channel.
See also: ME, ESAY, MSG

3
help/SCREW Normal file
View File

@ -0,0 +1,3 @@
Usage: SCREW [channel] <nick> [reason]
Kickban a user on a channel and place two bans using
randomized masks.

2
help/SEEN Normal file
View File

@ -0,0 +1,2 @@
Usage: SEEN <nick>
Information on when someone was last seen by the bot.

7
help/SERVER Normal file
View File

@ -0,0 +1,7 @@
Add or remove a server. If +/- is left out, the bot will
also attempt to connect to the server. If no argument
is provided, the list of known servers is displayed.
Added servers will be put into the current servergroup.
See also: cserv, nextserver, servergroup

13
help/SERVERGROUP Normal file
View File

@ -0,0 +1,13 @@
Add or remove a servergroup. If no argument is given, a list
of the servergroup identifiers will be displayed including the
current one. If the identifier already exists it will make it
the currently active one. Servers that are added, are added to
the current servergroup. At startup the default servergroup
is "default". The "default" servergroup cannot be removed.
By setting the SERVERGROUP setting on a bot, that bot will only
connect to servers with that same SERVERGROUP. If a bot has no
SERVERGROUP setting, it will connect to any server regardless
of which servergroup the server belongs to.
See also: server, setservergroup

24
help/SET Normal file
View File

@ -0,0 +1,24 @@
Change a setting. For channel settings you can use * to change
a setting for all known channels.
If no setting and/or channel is specified, show all current
settings affecting the current/selected channel and bot.
For more help on each setting displayed, use "HELP SETxxx"
where the "xxx" is the setting in question.
Channel settings:
ABK, AOP, AUB, AVOICE, CHANBAN, CKL, CTL, DYNLIMIT, ENFM,
ENFMODES, FL, FPL, IKT, KS, MAL, MBL, MDL, MKL, MPL, NCL,
PROT, PUB, RK, SD, SHIT, SO, STATS, TOP
Bot settings:
AAWAY, ALTNICK, CC, CMDCHAR, CTCP, DCCANON, DCCFILES, DCCUSER,
ENFPASS, IDENT, IRCNAME, ISONDELAY, MODES, NETUSERS, NOIDLE,
NOTIFYFILE, ONOTICE, RF, RV, SERVERGROUP, SPY, UMODES,
USERFILE, VIRTUAL, WINGATE, WINGPORT
Process settings:
AUTOLINK, BNCPORT, CTIMEOUT, LINKPASS, LINKPORT, QCHAR, QDELAY,
QFILE, SEENFILE, UPHOST, UPNICK, UPPORT, WEBPORT

6
help/SETAAWAY Normal file
View File

@ -0,0 +1,6 @@
Usage: SET AAWAY <value>
Setting for how long in minutes the bot waits idle before setting
AWAY status and a random away message. Any privmsg sent by the bot
resets the idle-timer to zero.
To disable auto-away set a value of 0.

3
help/SETAOP Normal file
View File

@ -0,0 +1,3 @@
Usage: TOG [channel] AOP [0|1|on|off]
Toggles the auto-opping of users if verified.

4
help/SETAUB Normal file
View File

@ -0,0 +1,4 @@
Usage: SET [channel] AUB <value>
Erases old bans automatically, this sets how many minutes old they have to be.
To disable auto-unbanning set a value of 0.

6
help/SETAVOICE Normal file
View File

@ -0,0 +1,6 @@
Usage: SET [channel] AVOICE <level>
Sets the autovoice level for a channel.
0 - disable autto-voice for everyone
1 - voice +AV users as they join
2 - voice everyone as they join

2
help/SETCC Normal file
View File

@ -0,0 +1,2 @@
Usage: TOG CC [0|1|on|off]
Toggles the necessity of the command character for doing commands.

6
help/SETCHANBAN Normal file
View File

@ -0,0 +1,6 @@
Level needed: 40
Usage: SET [channel] CHANBAN [0|1|on|off]
Enable or disable the chanban feature on a given channel.
See also: chanban

6
help/SETCKL Normal file
View File

@ -0,0 +1,6 @@
Usage: SET [channel] CKL <level>
Sets the number of lines of caps allowed within a 5 second
period before the user will be kicked
Note: a line with 60% or more is considered to be caps

Some files were not shown because too many files have changed in this diff Show More