diff --git a/.gitignore b/.gitignore index 40caffa8e..7cb635ede 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,15 @@ _$* *.ln core # CVS default ignores end +autom4te.cache +Makefile +.modules +.known_modules +config.h +lush.h +config.log +config.status +config.cache +eggdrop +EGGMOD.stamp +mod.xlibs diff --git a/INSTALL b/INSTALL index 811443ccb..bf108db6c 100644 --- a/INSTALL +++ b/INSTALL @@ -21,6 +21,19 @@ BURNED TO A HORRIBLE DEATH! IF YOU DO NOT READ THAT FILE I WILL PERSONALLY WALK TO YOUR TERMINAL AND BEAT IT WITH A SMELLY SNEAKER! By the way, read the README file. +Eggdrop on Windows with Cygwin +------------------------------ + +We recommand installing the following Cygwin packages in addition to the +default ones: + +Interpreters: tcl, tcl-devel +Net: openssl-devel +Devel: autoconf, gcc-core, git, make +Utils: diffutils + +Then proceed as described below. + Quick Startup ------------- @@ -72,12 +85,12 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier. 5. By default, version 1.8 uses SSL to protect botnet links. If you intend on linking 1.8 bots together, you must run: - make ssl-cert + make sslcert Or, if you installed your eggdrop to a different directory in step 4, you will want to run: - make ssl-cert DEST= + make sslcert DEST= Read docs/TLS for more info on this process. diff --git a/configure b/configure index 5d3f85260..92d472188 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac fb7db08. +# From configure.ac d63cc00. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop 1.8.0. # @@ -7136,6 +7136,7 @@ $as_echo "$as_me: Autoconfiguring Tcl with tclConfig.sh" >&6;} # TEA extensions pass this us the version of TEA they think they # are compatible with. TEA_VERSION="3.10" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct TEA configuration" >&5 $as_echo_n "checking for correct TEA configuration... " >&6; } if test x"${PACKAGE_NAME}" = x ; then @@ -7352,8 +7353,9 @@ $as_echo "$as_me: WARNING: --with-tcl argument should refer to directory contain for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ - `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ + `ls -d /usr/local/lib 2>/dev/null` \ + `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl8.6 2>/dev/null` \ diff --git a/doc/Changes1.8 b/doc/Changes1.8 index c3f7a7f78..042c9a08c 100644 --- a/doc/Changes1.8 +++ b/doc/Changes1.8 @@ -4,6 +4,15 @@ Eggdrop Changes (since version 1.8.0) 1.8.0: + - Update tcl.m4 (Adds NetBSD tclConfig.sh path). Fixes #175 + Patch by: thommey,Geo / Found by: fhorst + + - Remove duplicate uppercase doc filenames + Patch by: Geo / Found by: jackal^ + + - Fix compile warning about potentially signed char as array subscript. + Patch by: thommey + - Install eggdrop-basic.conf on make install. Patch by: Geo / Found by: thommey @@ -159,9 +168,6 @@ Eggdrop Changes (since version 1.8.0) - Fix duplicate array value in module API Patch by: Geo / Found by: IRC user - - Add byte-based flood option - Patch by: remorse - - Reply properly to server-generated CTCPs Patch by: Geo / Found by: IRC user diff --git a/doc/html/_sources/installAndSetup/INSTALL.txt b/doc/html/_sources/installAndSetup/INSTALL.txt deleted file mode 100644 index d77b2e839..000000000 --- a/doc/html/_sources/installAndSetup/INSTALL.txt +++ /dev/null @@ -1,158 +0,0 @@ -Compilation and Installation of Eggdrop -Last revised: July 24, 2004 - -======================================= -Installing Eggdrop -======================================= - -This is the quick install guide; if you have had little or no experience -with UNIX or Eggdrop, READ THE README FILE NOW! This file is only for -experienced users. - -For more information on compiling Eggdrop, see the Compile Guide in -doc/COMPILE-GUIDE (and of course, the README FILE). - -What is Eggdrop? ----------------- - -Please, read the README file before attempting to set up this bot. This -file is a quick setup guide, not a miracle worker. If you enter this file -without basic Eggdrop knowledge, you will NOT leave with a working bot! -Before asking ANY questions, READ THE README FILE OR YOU WILL BE BURNED -TO A HORRIBLE DEATH! IF YOU DO NOT READ THAT FILE I WILL PERSONALLY WALK -TO YOUR TERMINAL AND BEAT IT WITH A SMELLY SNEAKER! By the way, read the -README file. - -Quick Startup -------------- - -Eggdrop uses the GNU autoconfigure scripts to make things easier. - -1. Type './configure' from the Eggdrop directory. The configure script - will determine how your system is set up and figure out how to - correctly compile Eggdrop. It will also try to find Tcl, which is - required to compile. - -2. Type either 'make config' or 'make iconfig' to determine which - modules will be compiled. 'make config' compiles the default modules - (everything but woobie.mod). If you want to choose which modules to - compile, use 'make iconfig'. - -3. Type 'make' from the Eggdrop directory, or to force a statically - linked module bot, type 'make static'. Otherwise, the Makefile will - compile whatever type of bot the configure script determined your - system will support. Dynamic is always the better way to go if - possible. There are also the 'debug' and 'sdebug' (static-debug) - options, which will give more detailed output on a (highly unlikely :) - crash. This will help the development team track down the crash and - fix the bug. Debug and sdebug will take a little longer to compile - and will enlarge the binary a bit, but it's worth it if you want to - support Eggdrop development. - -4. Eggdrop must be installed in a directory somewhere. This is - accomplished by entering the UNIX command:: - - make install - - This will install the Eggdrop in your home directory in a directory - called 'eggdrop' (i.e. /home/user/eggdrop). - - If you want to install to a different directory, use:: - - make install DEST= - - For example:: - - make install DEST=/home/user/otherdir - - Note that you must use full path for every file to be correctly - installed. - - [The following is performed from the directory installed above.] - -5. By default, version 1.8 uses SSL to protect botnet links. If you intend - on linking 1.8 bots together, you must run:: - - make ssl-cert - - Or, if you installed your eggdrop to a different directory in step 4, you - will want to run: - - make ssl-cert DEST= - - Read docs/TLS for more info on this process. - -6. Edit your config file completely. - -7. Start the bot with the "-m" option to create a user file, i.e. :: - - ./eggdrop -m LamestBot.conf - -8. When starting the bot in the future, drop the "-m". If you have edited - your config file correctly, you can type:: - - chmod u+x - - For example:: - - chmod u+x LamestBot.conf - - From then on, you will be able to use your config file as a shell - script. You can just type "./LamestBot.conf" from your shell prompt - to start up your bot. For this to work, the top line of your script - MUST contain the correct path to the Eggdrop executable. - -9. It's advisable to run your bot via crontab, so that it will - automatically restart if the machine goes down or (heaven forbid) - the bot should crash. Look at 'scripts/botchk' and 'scripts/autobotchk' - for a great start with crontabbing the bot. - -10. Smile, and if you haven't already read the README file in its - entirety, go take a long walk off a short pier. - -Modules -------- - -Modules are small pieces of code that can either be compiled into the -binary or can be compiled separately into a file. This allows for a much -smaller binary. - -If there are any modules that you have made or downloaded, you can add -them to the bot by placing them in the /src/mod directory with a mod -extension. They will be automatically compiled during make for you. -They must have a valid Makefile and, of course, be compatible with -the rest of the Eggdrop source. - -If you wish to add a module at a later time, follow the same steps in -paragraph 2. After you have moved the appropriate files, you will only -need to type 'make modules' to compile only the modules portion of the -bot. - -FREQUENTLY ASKED QUESTIONS --------------------------- - - (Q) What do I do if...? - - (A) READ THE README FILE! - - (Q) The readme does not answer...! - - (A) READ THE README FILE AGAIN! - - (Q) I still don't know how to... - - (A) MEMORIZE THE README FILE! - - (Q) But... - - (A) Well, go to www.egghelp.org or www.eggheads.org and see if you can - find there what you're looking for. There are also lots of IRC help - channels and various mailing lists, as seen in the README FILE. - -This is the end. If you read to this point, hopefully you have also read -the README file. If not, then READ IT!&@#%@! - -Have fun with Eggdrop! - - Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2016 Eggheads Development Team diff --git a/doc/html/_sources/installAndSetup/README.txt b/doc/html/_sources/installAndSetup/README.txt deleted file mode 100644 index fb447c8c2..000000000 --- a/doc/html/_sources/installAndSetup/README.txt +++ /dev/null @@ -1,529 +0,0 @@ -Last revised: Jul 2, 2016 - -====== -README -====== - - Please at least SKIM this document before asking questions. In fact, READ IT - if you've never successfully set up an Eggdrop bot before. PLEASE! READ IT! - ------- -NOTICE ------- - - Please read this file carefully before trying to set up Eggdrop. Also, - make SURE that you select your +n (owner) users wisely! They have 100% - access to your bot and account! ONLY GIVE THIS POWER TO SOMEONE YOU - TRUST COMPLETELY!! - ----------------- -What is Eggdrop? ----------------- - - Eggdrop is the World's most popular Internet Relay Chat (IRC) bot; it is - freely distributable under the GNU General Public License (GPL). Eggdrop - is a feature rich program designed to be easily used and expanded upon by - both novice and advanced IRC users on a variety of hardware and software - platforms. - - An IRC bot is a program that sits on an IRC channel and performs automated - tasks while looking just like a normal user on the channel. Some of these - functions include protecting the channel from abuse, allowing privileged - users to gain op or voice status, logging channel events, providing - information, hosting games, etc. - - One of the features that makes Eggdrop stand out from other bots is module - and Tcl scripting support. With scripts and modules, you can make the bot - perform almost any task you want. They can do anything from preventing - floods to greeting users and banning advertisers from channels. - - You can also link multiple Eggdrop bots together to form a botnet. This - can allow bots to op each other securely, control floods efficiently, and - even link channels across multiple IRC networks. It also allows the - Eggdrops share user lists, ban lists, exempt/invite lists, and ignore - lists with other bots if userfile sharing is enabled. This allows users - to have the same access on every bot on your botnet. It also allows the - bots to distribute tasks such as opping and banning users. See doc/BOTNET - for information on setting up a botnet. - - Eggdrop is always being improved and adjusted because there are bugs to - be fixed and features to be added (if the users demand them, and they make - actually sense). In fact, it existed for several years as v0.7 - v0.9 - before finally going 1.0. This version of Eggdrop is part of the 1.8 tree. - A valiant effort has been made to chase down and destroy bugs. - - This README file contains information about how to get Eggdrop, command - line options for Eggdrop, what you may need to do when upgrading from - older versions, a list of frequently asked questions, how to set up a - crontab, some boring legal stuff, info about the mailing list (a great - place to ask questions, and a good place to report bugs, too), some basics - about CVS usage, and some channels where you might get help with Eggdrop. - ------------------- -HOW TO GET EGGDROP ------------------- - - Before you can compile Eggdrop, you need to have Tcl installed on your - system. Most systems should have Tcl on them by now -- you can check by - trying the command "tclsh". If it works, you will be given a "%" prompt, - and you can type "exit" to exit the program. This means Tcl is installed - on your system. If tclsh doesn't load, then Tcl probably isn't on your - system, and you will need to install it. The best ftp site for Tcl is - ftp://tcl.activestate.com/pub/tcl/. - - Currently, the 1.8 tree of Eggdrop is developed at eggheads.org. You can - get the latest STABLE version of Eggdrop from the following url: - - http://geteggdrop.com/ - - You might try www.eggheads.org for help and information. - ---------- -Git Usage ---------- - - Eggdrop development has moved from a CVS-based version control system to - git. If you are interested in trying out the VERY LATEST updates to - eggdrop, you may want be interested in pulling the most recent code from - there. BE WARNED, the development branch of Eggdrop is not to be - considered stable, and may (haha) have some significant bugs in it. The - Eggheads Development Team will in NO WAY take any responsibility for - whatever might happen to you or your shell if you use the development - branch of Eggdrop! - - To obtain Eggdrop via the git repository (hosted by GitHub), you can - either clone the repository via git, or download a development snapshot. - - To clone the repository, simply type:: - - git clone https://github.com/eggheads/eggdrop.git - - Otherwise, you can download the development snapshot as a tar archive - from: - - https://github.com/eggheads/eggdrop/archive/develop.tar.gz - -------------- -Quick Startup -------------- - - Please see the 'INSTALL' file AFTER you finish reading this file. - ---------- -Upgrading ---------- - - -**UPGRADING FROM A PRE-1.3 VERSION TO 1.8** - - First of all- why are you still running pre-1.3?!?! - - #### BACK UP YOUR USERFILE #### - - We can't stress this enough. If you are upgrading and you have even a - slight possibility of downgrading again later, you will HAVE to back up - your userfile, or you will lose it. v1.3 of Eggdrop radically changed a - lot of things. - - There are many major changes between v0.9, v1.0, v1.1 and v1.8, so PAY - ATTENTION to this part if you have a v0.9, 1.0 or 1.1 bot currently. If - you're just starting out, you can skip this section. - - If you run share bots, you will need to upgrade them all at the same time - because of the new userfile format. Older bots will be able to link in, - but will not get or send a userfile. MAKE A NEW CONFIG FILE from the - example; there are some radical changes. - - If you are upgrading from 0.9/1.0 to 1.8, just redo the whole thing. - Absolutely everything has changed, including the userfile and config file - formats. - - If you are upgrading from 1.1/1.2 to 1.8, you will likely want to redo - the config file, as much as changed. BACK UP! You will need to run 'tclsh - scripts/weed/ c' to convert your userfile from v3 (1.1/1.2) to - v4 (1.3/1.4/1.5/1.6/1.8). - - -**UPGRADING FROM AN OLDER 1.3/1.4/1.5/1.6 VERSION TO A NEWER 1.8 VERSION** - - If you followed the 'INSTALL' file and did a 'make install' (or 'make - install DEST="path"') after 'make', this will be pretty easy. Just upload - the new eggdrop1.8.x.tar.gz file to your home dir on your shell, gunzip - and untar it, and type 'cd ~/eggdrop1.8.x'. Next, type './configure', - 'make config' or 'make iconfig', then 'make'. Then, kill the bot ('.die' - on the party line), and 'make install' to the same directory your bot - is currently in. After that, you can just restart your bot. You may wish - to delete the old Eggdrop executable and modules as well, especially if - you have limited disk space. - - You should read through the new eggdrop.conf file for all of the new - options in Eggdrop 1.8.x. You can copy and paste any of these settings - into you current conf file if you do not want to use the default settings. - ------------- -Command Line ------------- - - Eggdrop has some command-line options -- not many, because most things - should be defined through the config file. However, sometimes you may - want to start up the bot in a different mode, and the command-line - options let you do that. Basically, the command line for Eggdrop is:: - - % eggdrop [options] [config-file] - - The options available are: - - -n: Don't background. Normally, Eggdrop will move itself into the - background when you start it up, meaning you'll get another shell - prompt, and you can do other things while the bot is running. With - -n, you won't return to the shell prompt until the bot exits (which - won't normally happen until it's killed). By default, -n will send - all log entries to the console. - - -nt: Don't background, use terminal. This is just like -n, except that - instead of seeing log entries, your console will simulate a DCC - chat with the bot. - - -nc: Don't background, show channel info. This is just like -n, except - that instead of seeing log entries, every 10 seconds your screen - will clear and you will see the current channel status, sort of - like "top". - - -m: Create userfile. If you don't have a userfile, this will make Eggdrop - create one and give owner status to the first person that introduces - himself or herself to it. You'll need to do this when you first set - up your bot. - - -h: Show help. - - -v: Show version info, then quit. - - Most people never use any of the options except -m, and you usually only - need to use that once. - --------------------------- -Frequently Asked Questions --------------------------- -(a.k.a. Why doesn't this thing work?!") - -WHAT DO I DO IF I GET THE ERROR "USER FILE NOT FOUND"? - - 1. Run Eggdrop with the "-m" option (i.e. "eggdrop -m eggdrop.conf"). - - 2. Go to IRC and send "hello" to your bot (i.e. "/msg mybot hello"). - - 3. You will become an owner on your bot. You can leave the bot running - (nobody else will become an owner if they say "hello"), but in the - future, don't use the "-m" option when running the bot. - -WHAT THE HECK IS Tcl? - - Tcl is a scripting language written by John Ousterhout. It's much better - than most "built-in" script languages (like the one in ircII) and is - meant to be linked with anything needing a scripting language, so I - linked it with Eggdrop. The file "tcl-commands.doc" in the doc directory - contains a list of additional Tcl commands provided by Eggdrop. There - are also several example scripts in the scripts/ directory, and one in - the doc directory called first_script.txt. Hundreds of scripts floating - around on the ftp/web sites if you like working by example (which is - typically the best way). - -MY BOT DIES, AND THE LAST ENTRY IN THE LOGFILE IS "RECEIVED TERMINATE -SIGNAL". WHAT DOES THAT MEAN, AND CAN I PREVENT IT? - - There's nothing you can do to prevent it. It means the system - administrator is killing the Eggdrop process. Most of the time, it's an - automatic thing that happens when the system is being rebooted, so it's - harmless. If you have a crontab running, the bot will get restarted when - the system is back online. Occasionally, the system administrator will - kill the bot manually. For example, if he/she doesn't want bots running - on the system. - -SOMEONE ELSE SET UP A BOT I DON'T LIKE. ARE THERE ANY BACKDOORS I CAN -USE TO TAKE THEIR BOT DOWN? - - No, there have never been any backdoors and there never will be, so - please stop asking. Every once in a while, someone finds a way to - exploit a bug in Eggdrop, but we fix these bugs as soon as we find out - about them. If you want to bring down someone else's bot, you will not - have my/our help. - -WHAT ARE MODULES? - - Modules are a way of adding extra features to the bot, much like Tcl - scripts, without requiring the bot to be recompiled. See doc/MODULES - for more information. - -CAN I COMPILE EGGDROP WITHOUT DYNAMIC MODULES? - - Yes, you can. If the configure script detects that your system CAN'T - run modules, it will setup 'make' to link the modules in statically - for you. You can choose this option yourself by using 'make static'. - You can also try to compile dynamic modules on a static-only system - by using 'make eggdrop'. - -DO I STILL NEED TO 'loadmodule' MODULES? - - YES, when you compile statically, all the modules are linked into the - main executable. HOWEVER, they are not enabled until you use loadmodule - to enable them, hence you get nearly the same functionality with static - modules as with dynamic modules. - -WHERE CAN I GET A PRE-COMPILED EGGDROP FOR MY COMPUTER? - - It is HIGHLY recommended AGAINST using pre-compiled Eggdrops from - un-trusted sources. Eggdrop has been a regular target for hacking and - crashing. Distribution of pre-compiled (binary) versions of Eggdrop are - the easiest way for hackers to provide you with the easiest (and most - dangerous) way of gaining access to, not only your bot, but to your - computer account directly. Don't advertise your pre-compiled Eggdrop - binary sites on the Eggdrop list either. =P - -I GET 'Makefile:3 :invalid operator' OR SOME-SUCH-THING WHEN I TRY -TO 'make'. - - Try 'gmake'. - -WHEN I 'tclsh scripts/weed c' IT BARFS CHUNKS AT ME AND -DIES. :( - - Upgrade your Tcl. You are probably using Tcl 7.5 or earlier. Some of the - commands in weed require Tcl7.6 to run, so either upgrade it or remove - the offending lines from you userfile manually (those starting with '.' - generally) and accept the loss of that data. - -I GET "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or -"eggdrop: error in loading shared libraries libtcl8.1.so: \ -cannot open shared object file: No such file or directory" WHEN I TRY -TO START MY BOT. - - './configure' is looking in the wrong place for Tcl; it looks like it - compiled with one version of Tcl and tries to load another. Maybe your - sysadmin upgraded Tcl and didn't tell you. In that case, you should just - need to recompile your bot. - - Maybe, when upgrading, he didn't clean the old version of Tcl and - './configure' is looking for the files in the wrong places, or trying - to use different versions of tcl.h and libtcl*. Smack your admin and - have him install Tcl properly. ;) - - You can also try:: - - ./configure --with-tcllib= - --with-tclinc= - - This will tell configure where to look for the Tcl files. - - Try looking for libtcl by:: - - ls /usr/lib/libtcl* - ls /usr/local/lib/libtcl* - - Try looking for tcl.h by:: - - ls /usr/include/tcl.h - ls /usr/local/include/tcl.h - - If everything else fails, try to install Tcl to your home dir ;) - (Suggested by dw@Undernet, dw@lixom.nu) - -I GET A WHOLE PILE OF "Unresolved symbol 'Tcl_AppendResult'" (OR SOME -OTHER SYMBOL) WHEN I TRY TO LOAD A MODULES. - - POSSIBILITY A: See previous section. - - POSSIBILITY B: - - Some of the standard libraries have been compiled for static linking - only on your machine, you have 3 options: - - 1. If it's your own machine, recompile Tcl using dynamic linking by - using './configure --enable-shared' when you configure Tcl (not - the bot) and then remake, and reinstall. - - 2. If it's not your machine, you may have to resort to 'make static' - and 'make install DEST="path"' to make and install your bot. - - 3. If you are of a more aggressive sense of mind, go beat the - stuffing out of your admin for having lame static libraries. :) - --------------------- -Setting up a Crontab --------------------- - - Eggdrop has become more stable with time, thanks mostly to people - reporting bug details and helping find places where it crashes. However, - there are still a -few- places where things aren't perfect. Few, if any, - things in life are. - - Also, most systems go down from time to time. These things cause your bot - to disappear from IRC, and you have to restart it. - - Eggdrop comes with a shell script called 'botchk' that will help keep the - bot online. It will make the machine check every ten minutes to make sure - your bot is still running. To use it, you have to add a line to your - crontab. First, edit 'botchk' and change the directory and command line - parameters so that it will be able to start up your bot. Then, add this - line to your crontab:: - - 0,10,20,30,40,50 * * * * /home/mydir/botchk - - If you don't want to get e-mails from cron, use this:: - - 0,10,20,30,40,50 * * * * /home/mydir/botchk >/dev/null 2>&1 - - Naturally, you need to change the path to the correct path for botchk. If - you've never used crontab before, here is a simple way to add that line: - - 1. Create a new file called 'mycron' and put the above line into it. - - 2. From your shell prompt, type '% crontab mycron'. - - That will create a new crontab entry for you with a line that runs botchk - every ten minutes. Botchk will then restart the bot when necessary (and - send you email informing you). - -------------------------------------- -Setting up a Crontab using autobotchk -------------------------------------- - - Included with your Eggdrop is an Eggdrop utility called 'autobotchk'. - Using autobotchk is probably the fastest way of creating your botchk and - crontabbing it with just a few required steps: - - 1. Type:: - - cp scripts/autobotchk .. - - 2. Type:: - - ./autobotchk - - This will hopefully crontab your bot using the default setup. If you want - a list of autobotchk options, type './autobotchk'. An example with options - would be:: - - ./autobotchk -noemail -5 - - This would setup crontab to run the botchk every 5 minutes and also to - not send you e-mail saying that it restarted your bot. - ------------------- -Boring Legal Stuff ------------------- - - The Eggdrop bot is Copyright (C) by Robey Pointer. As of January, 1997, - Eggdrop is distributed according to the GNU General Public License. There - should be a copy of this license in the file 'COPYING'. If not, write to - the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - As of Eggdrop 1.3.28, all changes made by the Eggheads Development Team to - the Eggdrop source code and any related files are Copyright (C) by Eggheads - Development Team. The source code will still be distributed according to - the GNU General Public License as Robey Pointer did in the past. - - Releases previous to 1.0m were made using a different licensing scheme. - You may, at your option, use the GNU General Public License on those - versions (instead of the license packaged with them) with my blessing. - For any versions bearing a copyright date of 1997 or later, you have - no choice -- you must use the GNU General Public License. - - The files "match.c", "net.c", and "blowfish.c" are exempt from the above - restrictions. "match.c" is original code by Chris Fuller (email: - crf@cfox.bchs.uh.edu) and has been placed by him into the public domain. - "net.c" is by me, and I [Robey Pointer] also choose to place it in the - public domain. "blowfish.c" is by various sources and is in the public - domain as well. All 3 files contain useful functions that could easily - be ported to other applications. - - Tcl is by John Ousterhout and is in no way affiliated with Eggdrop. It - likely has its own set of copyrights and whatnots. - - There is no warranty, implied or whatever. You use this software at your - own risk, no matter what purpose you put it to. - ------------- -Mailing List ------------- - - There are currently a couple of mailing lists about Eggdrop. - eggheads@eggheads.org is the one relevant for posts about Eggdrop 1.8 and - up (suggestions, help, etc). - - To subscribe to the eggheads mailing list, send e-mail to - eggheads-request@eggheads.org. In the body of the message, put "subscribe - eggheads". You can also go to the following url: - - http://lists.eggheads.org/mailman/listinfo/eggheads - - ### DO NOT SEND ROBEY EMAIL ABOUT EGGDROP! ### - - Robey is no longer developing the Eggdrop code, so don't bother e-mailing - him. If you have a serious problem, email the eggheads mailing list and - it will get to the coders. - - Please, before posting to this list, see what things are like. When you do - post, read over your post for readability, spelling, and grammar mistakes. - Obviously, we're all human (or are we?) and we all make mistakes (heck, - look at this document! ;). - - Open discussion and debate is integral to change and progress. Don't flame - others over mere form (grammar and spelling), or even substantive issues - for that matter. Please read and follow the mailing list rules. - - The eggheads@eggheads.org mailing list is not dedicated to those all too - common questions we have all seen on other lists... For example: - - o "Why does my bot say this: Please edit your config file." - o "How do I telnet my bot?" - o "Where do I get Eggdrop for windows??????" - - Technical questions, your thoughts or suggestions on new features being - added to Eggdrop, things that should be removed or fixed, amazing problems - that even stump the guru's, etc. are what we want to see here. - - Bug reports should be sent to bugs@eggheads.org. Please read and fill out - the BUG-REPORT file in the doc directory. - - DO NOT SEND HTML E-MAILS TO ANY OF THE EGGHEADS.ORG MAILING LISTS. ANYONE - CAUGHT SENDING HTML E-MAILS TO ONE OF THESE LISTS WILL BE REMOVED - IMMEDIATELY! - -------------- -Documentation -------------- - - We're trying to keep the documentation up to date. If you feel that - anything is missing here or that anything should be added, etc, please - e-mail bugs@eggheads.org about it. Thank you. - --------------- -Obtaining Help --------------- - - You can obtain help with Eggdrop in the following IRC channels: - - * Undernet - #eggdrop (official channel) - * FreeNode - #eggdrop (official channel), #egghelp - * EFnet - #egghelp - * IRCnet - #eggdrop - * DALnet - #eggdrop - * QuakeNet - #eggdrop.support - - If you plan to ask questions in any of the above channels, you should be - familiar with and follow IRC etiquette. - - o Don't type using CAPITAL letters, colors, or bold. - - o Don't use "!" and "?" excessively. - - o Don't /msg people without their permission. - - o Don't repeat or paste large amounts of text to the channel. - - If there are any other serious Eggdrop related channels that should be - added to the above list, please let us know. - - -Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2016 Eggheads Development Team diff --git a/doc/html/_sources/mainDocs/TLS.txt b/doc/html/_sources/mainDocs/TLS.txt deleted file mode 100644 index 84e84eadd..000000000 --- a/doc/html/_sources/mainDocs/TLS.txt +++ /dev/null @@ -1,185 +0,0 @@ -TLS support -Last revised: Oct 17, 2010 - -=========== -TLS support -=========== - -This document provides information about TLS support which is a new -eggdrop feature since version 1.8.0. - ------ -About ------ - -Eggdrop can be optionally compiled with TLS support. This requires OpenSSL -0.9.8 or more recent installed on your system. -TLS support includes encryption for IRC, DCC, botnet, telnet and scripted -connections as well as certificate authentication for users and bots. - ------------- -Installation ------------- - -./configure and install as usual, the configure script will detect if your -system meets the requirements and will enable TLS automatically. You can -override the autodetection and manually disable TLS with -./configure --disable-tls. You can't forcefully enable it though. -The configure script will look for OpenSSL at the default system locations. -If you have it installed at a non-standard location or locally in your -home directory, you'll need to specify the paths to header and library -files with the --with-sslinc and --with-ssllib options. You can also use -these if you want to override the default OpenSSL installation with a -custom one, as they take precedence over any system-wide paths. - ------ -Usage ------ - -By default, without additional configuration, TLS support will provide -opportunistic encryption for botnet links. For other connection types, -TLS must be requested explicitly. - -Secure connections are created the same way as plaintext ones. The only -difference is that you must prefix the port number with a plus sign. -A port number that could be normally omitted, would have to be included -to enable TLS. Scripts can also switch a regular, plaintext connection -to TLS, using the starttls Tcl command. - -^^^ -IRC -^^^ - -To connect to IRC using SSL, specify the port number and prefix it with -a plus sign. Example: .jump irc.server.com +6697. The same goes for -the server list in the config file. - -^^^^^^ -Botnet -^^^^^^ - -By default, eggdrop now automatically attempts to protect botnet links -with SSL if it is compiled with TLS support. If one of the bots linking -does not have TLS support enabled, the connection will fall back to plain -text. To explicitly require all links to a hub be SSL-only (ie, prevent -plain text connections from being allowed), prefix the listen port in the -hub configuration file with a plus (+) sign. Conversely, to force a leaf -to only allow SSL (not plain text) connections with a hub, you must -prefix the hub's listen port with a plus when adding it to the leaf via -+bot/chaddr commands. The nickname and password are sent before SSL -negotiation takes place (the password is not sent in plain text anyway). -If SSL negotiation fails and either the hub or leaf is set to require SSL, -the connection is deliberately aborted and no clear text is ever sent. - -^^^^^^^^^^ -Secure DCC -^^^^^^^^^^ - -Eggdrop supports the SDCC protocol, allowing you to establish DCC chat -and file transfers over SSL. Example: /ctcp bot schat -Note, that currently the only IRC client supporting SDCC is KVIrc. For -information on how to initiate secure DCC chat from KVIrc (rather than -from the bot with /ctcp bot chat), consult the KVIrc documentation. - -^^^^^^^ -Scripts -^^^^^^^ - -Scripts can open or connect to SSL ports the usual way specifying the -port with a plus sign. Alternatively, the connection could be -established as plaintext and later switched on with the starttls Tcl -command. (Note that the other side should also switch to SSL at the same -time - the synchronization is the script's job, not eggdrop's.) - -------------------------------------- -Keys, certificates and authentication -------------------------------------- - -You need a private key and a digital certificate whenever your bot will -act as a server in a connection of any type. Common examples are hub -bots and SSL listening ports. General information about certificates and -public key infrastructure can be obtained from Internet. This document -only contains eggdrop-specific information on the subject. -The easy way to create a key and a certificate is to type 'make sslcert' -after compiling your bot (If you installed eggdrop to a non-standard -location, use make sslcert DEST=/path/to/eggdrop). This will generate a -4096-bit private key (eggdrop.key) and a certificate (eggdrop.crt) after -you fill in therequired fields. - -To authenticate with a certificate instead of using password, you should -make a ssl certificate for yourself and enable ssl-cert-auth in the config -file. Then either connect to the bot using SSL and type ".fprint +" or -enter your certificate fingerprint with .fprint SHA1-FINGERPRINT. -To generate a ssl certificate for yourself, you can run the following -command from the eggdrop source directory:: - - openssl req -new -x509 -nodes -keyout my.key -out my.crt -config ssl.conf - -When asked about bot's handle, put your handle instead. How to use your -new certificate to connect to eggdrop, depends on your irc client. -To connect to your bot from the command line, you can use the OpenSSL -ssl client:: - - openssl s_client -cert my.crt -key my.key -connect host:sslport - ------------- -SSL Settings ------------- - -There are some new settings allowing control over certificate -verification and authorization. - - ssl-privatekey - - file containing Eggdrop's private key, required for the certificate. - - ssl-certificate - - Specify the filename where your SSL certificate is located. - if your bot will accept SSL connections, it must have a certificate. - - ssl-verify-depth - - maximum verification depth when checking certificate validity. - Determines the maximum certificate chain length to allow. - - | ssl-capath - | ssl-cafile - - specify the location of certificate authorities certificates. These - are used for verification. Both can be active at the same time. - If you don't set this, validation of the issuer won't be possible and - depending on verification settings, the peer certificate might fail - verification. - - ssl-ciphers - - specify the list of ciphers (in order of preference) allowed for - use with ssl. - - ssl-cert-auth - - enables or disables certificate authorization for partyline/botnet. - This works only for SSL connections (SDCC or telnet over SSL). - A setting of 1 means optional authorization: If the user/bot has a - fingerprint set and it matches the certificate SHA1 fingerprint, - access is granted, otherwise ordinary password authentication takes - place. - - If you set this to 2 however, users without a fingerprint set or - with a fingerprint not matching the certificate, will not be - allowed to enter the partyline with SSL. In addition to this user and - bot certificates will be required to have an UID field matching the - handle of the user/bot. - - | ssl-verify-dcc - | ssl-verify-bots - | ssl-verify-server - | ssl-verify-clients - - control ssl certificate verification. A value of 0 disables - verification completely. A value of 1 enables full verification. - Higher values enable specific exceptions like allowing self-signed - or expired certificates. Details are documented in eggdrop.conf. - -Copyright (C) 2010 - 2016 Eggheads Development Team diff --git a/doc/html/installAndSetup/INSTALL.html b/doc/html/installAndSetup/INSTALL.html deleted file mode 100644 index 7f330b2da..000000000 --- a/doc/html/installAndSetup/INSTALL.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - Installing Eggdrop — Eggdrop 1.8.0 documentation - - - - - - - - - - - - - - - - -
-
-
- -
-
-
- -

Compilation and Installation of Eggdrop -Last revised: July 24, 2004

-
-

Installing Eggdrop

-

This is the quick install guide; if you have had little or no experience -with UNIX or Eggdrop, READ THE README FILE NOW! This file is only for -experienced users.

-

For more information on compiling Eggdrop, see the Compile Guide in -doc/COMPILE-GUIDE (and of course, the README FILE).

-
-

What is Eggdrop?

-

Please, read the README file before attempting to set up this bot. This -file is a quick setup guide, not a miracle worker. If you enter this file -without basic Eggdrop knowledge, you will NOT leave with a working bot! -Before asking ANY questions, READ THE README FILE OR YOU WILL BE BURNED -TO A HORRIBLE DEATH! IF YOU DO NOT READ THAT FILE I WILL PERSONALLY WALK -TO YOUR TERMINAL AND BEAT IT WITH A SMELLY SNEAKER! By the way, read the -README file.

-
-
-

Quick Startup

-

Eggdrop uses the GNU autoconfigure scripts to make things easier.

-
    -
  1. -
    Type './configure' from the Eggdrop directory. The configure script
    -

    will determine how your system is set up and figure out how to -correctly compile Eggdrop. It will also try to find Tcl, which is -required to compile.

    -
    -
    -
  2. -
  3. -
    Type either 'make config' or 'make iconfig' to determine which
    -

    modules will be compiled. 'make config' compiles the default modules -(everything but woobie.mod). If you want to choose which modules to -compile, use 'make iconfig'.

    -
    -
    -
  4. -
  5. -
    Type 'make' from the Eggdrop directory, or to force a statically
    -

    linked module bot, type 'make static'. Otherwise, the Makefile will -compile whatever type of bot the configure script determined your -system will support. Dynamic is always the better way to go if -possible. There are also the 'debug' and 'sdebug' (static-debug) -options, which will give more detailed output on a (highly unlikely :) -crash. This will help the development team track down the crash and -fix the bug. Debug and sdebug will take a little longer to compile -and will enlarge the binary a bit, but it's worth it if you want to -support Eggdrop development.

    -
    -
    -
  6. -
  7. -
    Eggdrop must be installed in a directory somewhere. This is
    -

    accomplished by entering the UNIX command:

    -
    make install
    -
    -
    -

    This will install the Eggdrop in your home directory in a directory -called 'eggdrop' (i.e. /home/user/eggdrop).

    -

    If you want to install to a different directory, use:

    -
    make install DEST=<directory>
    -
    -
    -

    For example:

    -
    make install DEST=/home/user/otherdir
    -
    -
    -

    Note that you must use full path for every file to be correctly -installed.

    -

    [The following is performed from the directory installed above.]

    -
    -
    -
  8. -
  9. -
    By default, version 1.8 uses SSL to protect botnet links. If you intend
    -

    on linking 1.8 bots together, you must run:

    -
    make ssl-cert
    -
    -
    -

    Or, if you installed your eggdrop to a different directory in step 4, you -will want to run:

    -
    -

    make ssl-cert DEST=<directory>

    -
    -

    Read docs/TLS for more info on this process.

    -
    -
    -
  10. -
  11. Edit your config file completely.

    -
  12. -
  13. Start the bot with the "-m" option to create a user file, i.e.

    -
    ./eggdrop -m LamestBot.conf
    -
    -
    -
  14. -
  15. -
    When starting the bot in the future, drop the "-m". If you have edited
    -

    your config file correctly, you can type:

    -
    chmod u+x <my-config-file-name>
    -
    -
    -

    For example:

    -
    chmod u+x LamestBot.conf
    -
    -
    -

    From then on, you will be able to use your config file as a shell -script. You can just type "./LamestBot.conf" from your shell prompt -to start up your bot. For this to work, the top line of your script -MUST contain the correct path to the Eggdrop executable.

    -
    -
    -
  16. -
  17. -
    It's advisable to run your bot via crontab, so that it will
    -

    automatically restart if the machine goes down or (heaven forbid) -the bot should crash. Look at 'scripts/botchk' and 'scripts/autobotchk' -for a great start with crontabbing the bot.

    -
    -
    -
  18. -
  19. Smile, and if you haven't already read the README file in its -entirety, go take a long walk off a short pier.

    -
  20. -
-
-
-

Modules

-

Modules are small pieces of code that can either be compiled into the -binary or can be compiled separately into a file. This allows for a much -smaller binary.

-

If there are any modules that you have made or downloaded, you can add -them to the bot by placing them in the /src/mod directory with a mod -extension. They will be automatically compiled during make for you. -They must have a valid Makefile and, of course, be compatible with -the rest of the Eggdrop source.

-

If you wish to add a module at a later time, follow the same steps in -paragraph 2. After you have moved the appropriate files, you will only -need to type 'make modules' to compile only the modules portion of the -bot.

-
-
-

FREQUENTLY ASKED QUESTIONS

-
-
    -
  1. What do I do if...?
  2. -
-
    -
  1. READ THE README FILE!
  2. -
-
    -
  1. The readme does not answer...!
  2. -
-
    -
  1. READ THE README FILE AGAIN!
  2. -
-
    -
  1. I still don't know how to...
  2. -
-
    -
  1. MEMORIZE THE README FILE!
  2. -
-
    -
  1. But...
  2. -
-
    -
  1. Well, go to www.egghelp.org or www.eggheads.org and see if you can -find there what you're looking for. There are also lots of IRC help -channels and various mailing lists, as seen in the README FILE.
  2. -
-
-

This is the end. If you read to this point, hopefully you have also read -the README file. If not, then READ IT!&@#%@!

-

Have fun with Eggdrop!

-
-
Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2016 Eggheads Development Team
-
-
- - -
-
-
-
- -
-
-
- - - - - \ No newline at end of file diff --git a/doc/html/installAndSetup/README.html b/doc/html/installAndSetup/README.html deleted file mode 100644 index e86ea7bd3..000000000 --- a/doc/html/installAndSetup/README.html +++ /dev/null @@ -1,592 +0,0 @@ - - - - - - - - - README — Eggdrop 1.8.0 documentation - - - - - - - - - - - - - - - - -
-
-
- -
-
-
- -

Last revised: Jul 2, 2016

-
-

README

-
-
Please at least SKIM this document before asking questions. In fact, READ IT -if you've never successfully set up an Eggdrop bot before. PLEASE! READ IT!
-
-

NOTICE

-
-
Please read this file carefully before trying to set up Eggdrop. Also, -make SURE that you select your +n (owner) users wisely! They have 100% -access to your bot and account! ONLY GIVE THIS POWER TO SOMEONE YOU -TRUST COMPLETELY!!
-
-
-

What is Eggdrop?

-
-

Eggdrop is the World's most popular Internet Relay Chat (IRC) bot; it is -freely distributable under the GNU General Public License (GPL). Eggdrop -is a feature rich program designed to be easily used and expanded upon by -both novice and advanced IRC users on a variety of hardware and software -platforms.

-

An IRC bot is a program that sits on an IRC channel and performs automated -tasks while looking just like a normal user on the channel. Some of these -functions include protecting the channel from abuse, allowing privileged -users to gain op or voice status, logging channel events, providing -information, hosting games, etc.

-

One of the features that makes Eggdrop stand out from other bots is module -and Tcl scripting support. With scripts and modules, you can make the bot -perform almost any task you want. They can do anything from preventing -floods to greeting users and banning advertisers from channels.

-

You can also link multiple Eggdrop bots together to form a botnet. This -can allow bots to op each other securely, control floods efficiently, and -even link channels across multiple IRC networks. It also allows the -Eggdrops share user lists, ban lists, exempt/invite lists, and ignore -lists with other bots if userfile sharing is enabled. This allows users -to have the same access on every bot on your botnet. It also allows the -bots to distribute tasks such as opping and banning users. See doc/BOTNET -for information on setting up a botnet.

-

Eggdrop is always being improved and adjusted because there are bugs to -be fixed and features to be added (if the users demand them, and they make -actually sense). In fact, it existed for several years as v0.7 - v0.9 -before finally going 1.0. This version of Eggdrop is part of the 1.8 tree. -A valiant effort has been made to chase down and destroy bugs.

-

This README file contains information about how to get Eggdrop, command -line options for Eggdrop, what you may need to do when upgrading from -older versions, a list of frequently asked questions, how to set up a -crontab, some boring legal stuff, info about the mailing list (a great -place to ask questions, and a good place to report bugs, too), some basics -about CVS usage, and some channels where you might get help with Eggdrop.

-
-
-
-

HOW TO GET EGGDROP

-
-

Before you can compile Eggdrop, you need to have Tcl installed on your -system. Most systems should have Tcl on them by now -- you can check by -trying the command "tclsh". If it works, you will be given a "%" prompt, -and you can type "exit" to exit the program. This means Tcl is installed -on your system. If tclsh doesn't load, then Tcl probably isn't on your -system, and you will need to install it. The best ftp site for Tcl is -ftp://tcl.activestate.com/pub/tcl/.

-

Currently, the 1.8 tree of Eggdrop is developed at eggheads.org. You can -get the latest STABLE version of Eggdrop from the following url:

-
-
-

You might try www.eggheads.org for help and information.

-
-
-
-

Git Usage

-
-

Eggdrop development has moved from a CVS-based version control system to -git. If you are interested in trying out the VERY LATEST updates to -eggdrop, you may want be interested in pulling the most recent code from -there. BE WARNED, the development branch of Eggdrop is not to be -considered stable, and may (haha) have some significant bugs in it. The -Eggheads Development Team will in NO WAY take any responsibility for -whatever might happen to you or your shell if you use the development -branch of Eggdrop!

-

To obtain Eggdrop via the git repository (hosted by GitHub), you can -either clone the repository via git, or download a development snapshot.

-

To clone the repository, simply type:

-
git clone https://github.com/eggheads/eggdrop.git
-
-
-

Otherwise, you can download the development snapshot as a tar archive -from:

-
-
-
-
-
-

Quick Startup

-
-
Please see the 'INSTALL' file AFTER you finish reading this file.
-
-
-

Upgrading

-

UPGRADING FROM A PRE-1.3 VERSION TO 1.8

-
-

First of all- why are you still running pre-1.3?!?!

-

#### BACK UP YOUR USERFILE ####

-

We can't stress this enough. If you are upgrading and you have even a -slight possibility of downgrading again later, you will HAVE to back up -your userfile, or you will lose it. v1.3 of Eggdrop radically changed a -lot of things.

-

There are many major changes between v0.9, v1.0, v1.1 and v1.8, so PAY -ATTENTION to this part if you have a v0.9, 1.0 or 1.1 bot currently. If -you're just starting out, you can skip this section.

-

If you run share bots, you will need to upgrade them all at the same time -because of the new userfile format. Older bots will be able to link in, -but will not get or send a userfile. MAKE A NEW CONFIG FILE from the -example; there are some radical changes.

-

If you are upgrading from 0.9/1.0 to 1.8, just redo the whole thing. -Absolutely everything has changed, including the userfile and config file -formats.

-

If you are upgrading from 1.1/1.2 to 1.8, you will likely want to redo -the config file, as much as changed. BACK UP! You will need to run 'tclsh -scripts/weed/<userfile> c' to convert your userfile from v3 (1.1/1.2) to -v4 (1.3/1.4/1.5/1.6/1.8).

-
-

UPGRADING FROM AN OLDER 1.3/1.4/1.5/1.6 VERSION TO A NEWER 1.8 VERSION

-
-

If you followed the 'INSTALL' file and did a 'make install' (or 'make -install DEST="path"') after 'make', this will be pretty easy. Just upload -the new eggdrop1.8.x.tar.gz file to your home dir on your shell, gunzip -and untar it, and type 'cd ~/eggdrop1.8.x'. Next, type './configure', -'make config' or 'make iconfig', then 'make'. Then, kill the bot ('.die' -on the party line), and 'make install' to the same directory your bot -is currently in. After that, you can just restart your bot. You may wish -to delete the old Eggdrop executable and modules as well, especially if -you have limited disk space.

-

You should read through the new eggdrop.conf file for all of the new -options in Eggdrop 1.8.x. You can copy and paste any of these settings -into you current conf file if you do not want to use the default settings.

-
-
-
-

Command Line

-
-

Eggdrop has some command-line options -- not many, because most things -should be defined through the config file. However, sometimes you may -want to start up the bot in a different mode, and the command-line -options let you do that. Basically, the command line for Eggdrop is:

-
% eggdrop [options] [config-file]
-
-
-

The options available are:

-
-
-
-n: Don't background. Normally, Eggdrop will move itself into the
-
background when you start it up, meaning you'll get another shell -prompt, and you can do other things while the bot is running. With --n, you won't return to the shell prompt until the bot exits (which -won't normally happen until it's killed). By default, -n will send -all log entries to the console.
-
-nt: Don't background, use terminal. This is just like -n, except that
-
instead of seeing log entries, your console will simulate a DCC -chat with the bot.
-
-nc: Don't background, show channel info. This is just like -n, except
-
that instead of seeing log entries, every 10 seconds your screen -will clear and you will see the current channel status, sort of -like "top".
-
-m: Create userfile. If you don't have a userfile, this will make Eggdrop
-
create one and give owner status to the first person that introduces -himself or herself to it. You'll need to do this when you first set -up your bot.
-
-

-h: Show help.

-

-v: Show version info, then quit.

-
-

Most people never use any of the options except -m, and you usually only -need to use that once.

-
-
-
-

Frequently Asked Questions

-

(a.k.a. Why doesn't this thing work?!")

-

WHAT DO I DO IF I GET THE ERROR "USER FILE NOT FOUND"?

-
-
    -
  1. Run Eggdrop with the "-m" option (i.e. "eggdrop -m eggdrop.conf").
  2. -
  3. Go to IRC and send "hello" to your bot (i.e. "/msg mybot hello").
  4. -
  5. You will become an owner on your bot. You can leave the bot running -(nobody else will become an owner if they say "hello"), but in the -future, don't use the "-m" option when running the bot.
  6. -
-
-

WHAT THE HECK IS Tcl?

-
-
Tcl is a scripting language written by John Ousterhout. It's much better -than most "built-in" script languages (like the one in ircII) and is -meant to be linked with anything needing a scripting language, so I -linked it with Eggdrop. The file "tcl-commands.doc" in the doc directory -contains a list of additional Tcl commands provided by Eggdrop. There -are also several example scripts in the scripts/ directory, and one in -the doc directory called first_script.txt. Hundreds of scripts floating -around on the ftp/web sites if you like working by example (which is -typically the best way).
-

MY BOT DIES, AND THE LAST ENTRY IN THE LOGFILE IS "RECEIVED TERMINATE -SIGNAL". WHAT DOES THAT MEAN, AND CAN I PREVENT IT?

-
-
There's nothing you can do to prevent it. It means the system -administrator is killing the Eggdrop process. Most of the time, it's an -automatic thing that happens when the system is being rebooted, so it's -harmless. If you have a crontab running, the bot will get restarted when -the system is back online. Occasionally, the system administrator will -kill the bot manually. For example, if he/she doesn't want bots running -on the system.
-

SOMEONE ELSE SET UP A BOT I DON'T LIKE. ARE THERE ANY BACKDOORS I CAN -USE TO TAKE THEIR BOT DOWN?

-
-
No, there have never been any backdoors and there never will be, so -please stop asking. Every once in a while, someone finds a way to -exploit a bug in Eggdrop, but we fix these bugs as soon as we find out -about them. If you want to bring down someone else's bot, you will not -have my/our help.
-

WHAT ARE MODULES?

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

CAN I COMPILE EGGDROP WITHOUT DYNAMIC MODULES?

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

DO I STILL NEED TO 'loadmodule' MODULES?

-
-
YES, when you compile statically, all the modules are linked into the -main executable. HOWEVER, they are not enabled until you use loadmodule -to enable them, hence you get nearly the same functionality with static -modules as with dynamic modules.
-

WHERE CAN I GET A PRE-COMPILED EGGDROP FOR MY COMPUTER?

-
-
It is HIGHLY recommended AGAINST using pre-compiled Eggdrops from -un-trusted sources. Eggdrop has been a regular target for hacking and -crashing. Distribution of pre-compiled (binary) versions of Eggdrop are -the easiest way for hackers to provide you with the easiest (and most -dangerous) way of gaining access to, not only your bot, but to your -computer account directly. Don't advertise your pre-compiled Eggdrop -binary sites on the Eggdrop list either. =P
-

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

-
-
Try 'gmake'.
-

WHEN I 'tclsh scripts/weed <userfile> c' IT BARFS CHUNKS AT ME AND -DIES. :(

-
-
Upgrade your Tcl. You are probably using Tcl 7.5 or earlier. Some of the -commands in weed require Tcl7.6 to run, so either upgrade it or remove -the offending lines from you userfile manually (those starting with '.' -generally) and accept the loss of that data.
-

I GET "ld-elf.so.1: Shared object "libtcl80.so.1" not found" or -"eggdrop: error in loading shared libraries libtcl8.1.so: cannot open shared object file: No such file or directory" WHEN I TRY -TO START MY BOT.

-
-

'./configure' is looking in the wrong place for Tcl; it looks like it -compiled with one version of Tcl and tries to load another. Maybe your -sysadmin upgraded Tcl and didn't tell you. In that case, you should just -need to recompile your bot.

-

Maybe, when upgrading, he didn't clean the old version of Tcl and -'./configure' is looking for the files in the wrong places, or trying -to use different versions of tcl.h and libtcl*. Smack your admin and -have him install Tcl properly. ;)

-

You can also try:

-
./configure --with-tcllib=<path-to-tcl-lib>
-            --with-tclinc=<path-to-tcl-inc>
-
-
-

This will tell configure where to look for the Tcl files.

-

Try looking for libtcl by:

-
ls /usr/lib/libtcl*
-ls /usr/local/lib/libtcl*
-
-
-

Try looking for tcl.h by:

-
ls /usr/include/tcl.h
-ls /usr/local/include/tcl.h
-
-If everything else fails, try to install Tcl to your home dir ;)
-(Suggested by dw@Undernet, dw@lixom.nu)
-
-
-
-

I GET A WHOLE PILE OF "Unresolved symbol 'Tcl_AppendResult'" (OR SOME -OTHER SYMBOL) WHEN I TRY TO LOAD A MODULES.

-
-

POSSIBILITY A: See previous section.

-

POSSIBILITY B:

-
-

Some of the standard libraries have been compiled for static linking -only on your machine, you have 3 options:

-
-
    -
  1. If it's your own machine, recompile Tcl using dynamic linking by -using './configure --enable-shared' when you configure Tcl (not -the bot) and then remake, and reinstall.
  2. -
  3. If it's not your machine, you may have to resort to 'make static' -and 'make install DEST="path"' to make and install your bot.
  4. -
  5. If you are of a more aggressive sense of mind, go beat the -stuffing out of your admin for having lame static libraries. :)
  6. -
-
-
-
-
-
-

Setting up a Crontab

-
-

Eggdrop has become more stable with time, thanks mostly to people -reporting bug details and helping find places where it crashes. However, -there are still a -few- places where things aren't perfect. Few, if any, -things in life are.

-

Also, most systems go down from time to time. These things cause your bot -to disappear from IRC, and you have to restart it.

-

Eggdrop comes with a shell script called 'botchk' that will help keep the -bot online. It will make the machine check every ten minutes to make sure -your bot is still running. To use it, you have to add a line to your -crontab. First, edit 'botchk' and change the directory and command line -parameters so that it will be able to start up your bot. Then, add this -line to your crontab:

-
0,10,20,30,40,50 * * * * /home/mydir/botchk
-
-
-

If you don't want to get e-mails from cron, use this:

-
0,10,20,30,40,50 * * * * /home/mydir/botchk >/dev/null 2>&1
-
-
-

Naturally, you need to change the path to the correct path for botchk. If -you've never used crontab before, here is a simple way to add that line:

-
-
    -
  1. Create a new file called 'mycron' and put the above line into it.
  2. -
  3. From your shell prompt, type '% crontab mycron'.
  4. -
-
-

That will create a new crontab entry for you with a line that runs botchk -every ten minutes. Botchk will then restart the bot when necessary (and -send you email informing you).

-
-
-
-

Setting up a Crontab using autobotchk

-
-

Included with your Eggdrop is an Eggdrop utility called 'autobotchk'. -Using autobotchk is probably the fastest way of creating your botchk and -crontabbing it with just a few required steps:

-
-
    -
  1. Type:

    -
    cp scripts/autobotchk ..
    -
    -
    -
  2. -
  3. Type:

    -
    ./autobotchk <Eggdrop config file>
    -
    -
    -
  4. -
-
-

This will hopefully crontab your bot using the default setup. If you want -a list of autobotchk options, type './autobotchk'. An example with options -would be:

-
./autobotchk <Eggdrop config file> -noemail -5
-
-
-

This would setup crontab to run the botchk every 5 minutes and also to -not send you e-mail saying that it restarted your bot.

-
-
- -
-

Mailing List

-
-

There are currently a couple of mailing lists about Eggdrop. -eggheads@eggheads.org is the one relevant for posts about Eggdrop 1.8 and -up (suggestions, help, etc).

-

To subscribe to the eggheads mailing list, send e-mail to -eggheads-request@eggheads.org. In the body of the message, put "subscribe -eggheads". You can also go to the following url:

-
-
-

### DO NOT SEND ROBEY EMAIL ABOUT EGGDROP! ###

-

Robey is no longer developing the Eggdrop code, so don't bother e-mailing -him. If you have a serious problem, email the eggheads mailing list and -it will get to the coders.

-

Please, before posting to this list, see what things are like. When you do -post, read over your post for readability, spelling, and grammar mistakes. -Obviously, we're all human (or are we?) and we all make mistakes (heck, -look at this document! ;).

-

Open discussion and debate is integral to change and progress. Don't flame -others over mere form (grammar and spelling), or even substantive issues -for that matter. Please read and follow the mailing list rules.

-

The eggheads@eggheads.org mailing list is not dedicated to those all too -common questions we have all seen on other lists... For example:

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

Technical questions, your thoughts or suggestions on new features being -added to Eggdrop, things that should be removed or fixed, amazing problems -that even stump the guru's, etc. are what we want to see here.

-

Bug reports should be sent to bugs@eggheads.org. Please read and fill out -the BUG-REPORT file in the doc directory.

-

DO NOT SEND HTML E-MAILS TO ANY OF THE EGGHEADS.ORG MAILING LISTS. ANYONE -CAUGHT SENDING HTML E-MAILS TO ONE OF THESE LISTS WILL BE REMOVED -IMMEDIATELY!

-
-
-
-

Documentation

-
-
We're trying to keep the documentation up to date. If you feel that -anything is missing here or that anything should be added, etc, please -e-mail bugs@eggheads.org about it. Thank you.
-
-
-

Obtaining Help

-
-

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

-
-
    -
  • Undernet - #eggdrop (official channel)
  • -
  • FreeNode - #eggdrop (official channel), #egghelp
  • -
  • EFnet - #egghelp
  • -
  • IRCnet - #eggdrop
  • -
  • DALnet - #eggdrop
  • -
  • QuakeNet - #eggdrop.support
  • -
-
-

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

-
-

o Don't type using CAPITAL letters, colors, or bold.

-

o Don't use "!" and "?" excessively.

-

o Don't /msg people without their permission.

-

o Don't repeat or paste large amounts of text to the channel.

-
-

If there are any other serious Eggdrop related channels that should be -added to the above list, please let us know.

-
-

Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2016 Eggheads Development Team

-
-
- - -
-
-
-
- -
-
-
- - - - - \ No newline at end of file diff --git a/doc/html/mainDocs/TLS.html b/doc/html/mainDocs/TLS.html deleted file mode 100644 index 1962c0d62..000000000 --- a/doc/html/mainDocs/TLS.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - - - TLS support — Eggdrop 1.8.0 documentation - - - - - - - - - - - - - - - - -
-
-
- -
-
-
- -

TLS support -Last revised: Oct 17, 2010

-
-

TLS support

-

This document provides information about TLS support which is a new -eggdrop feature since version 1.8.0.

-
-

About

-

Eggdrop can be optionally compiled with TLS support. This requires OpenSSL -0.9.8 or more recent installed on your system. -TLS support includes encryption for IRC, DCC, botnet, telnet and scripted -connections as well as certificate authentication for users and bots.

-
-
-

Installation

-

./configure and install as usual, the configure script will detect if your -system meets the requirements and will enable TLS automatically. You can -override the autodetection and manually disable TLS with -./configure --disable-tls. You can't forcefully enable it though. -The configure script will look for OpenSSL at the default system locations. -If you have it installed at a non-standard location or locally in your -home directory, you'll need to specify the paths to header and library -files with the --with-sslinc and --with-ssllib options. You can also use -these if you want to override the default OpenSSL installation with a -custom one, as they take precedence over any system-wide paths.

-
-
-

Usage

-

By default, without additional configuration, TLS support will provide -opportunistic encryption for botnet links. For other connection types, -TLS must be requested explicitly.

-

Secure connections are created the same way as plaintext ones. The only -difference is that you must prefix the port number with a plus sign. -A port number that could be normally omitted, would have to be included -to enable TLS. Scripts can also switch a regular, plaintext connection -to TLS, using the starttls Tcl command.

-
-

IRC

-

To connect to IRC using SSL, specify the port number and prefix it with -a plus sign. Example: .jump irc.server.com +6697. The same goes for -the server list in the config file.

-
-
-

Botnet

-

By default, eggdrop now automatically attempts to protect botnet links -with SSL if it is compiled with TLS support. If one of the bots linking -does not have TLS support enabled, the connection will fall back to plain -text. To explicitly require all links to a hub be SSL-only (ie, prevent -plain text connections from being allowed), prefix the listen port in the -hub configuration file with a plus (+) sign. Conversely, to force a leaf -to only allow SSL (not plain text) connections with a hub, you must -prefix the hub's listen port with a plus when adding it to the leaf via -+bot/chaddr commands. The nickname and password are sent before SSL -negotiation takes place (the password is not sent in plain text anyway). -If SSL negotiation fails and either the hub or leaf is set to require SSL, -the connection is deliberately aborted and no clear text is ever sent.

-
-
-

Secure DCC

-

Eggdrop supports the SDCC protocol, allowing you to establish DCC chat -and file transfers over SSL. Example: /ctcp bot schat -Note, that currently the only IRC client supporting SDCC is KVIrc. For -information on how to initiate secure DCC chat from KVIrc (rather than -from the bot with /ctcp bot chat), consult the KVIrc documentation.

-
-
-

Scripts

-

Scripts can open or connect to SSL ports the usual way specifying the -port with a plus sign. Alternatively, the connection could be -established as plaintext and later switched on with the starttls Tcl -command. (Note that the other side should also switch to SSL at the same -time - the synchronization is the script's job, not eggdrop's.)

-
-
-
-

Keys, certificates and authentication

-

You need a private key and a digital certificate whenever your bot will -act as a server in a connection of any type. Common examples are hub -bots and SSL listening ports. General information about certificates and -public key infrastructure can be obtained from Internet. This document -only contains eggdrop-specific information on the subject. -The easy way to create a key and a certificate is to type 'make sslcert' -after compiling your bot (If you installed eggdrop to a non-standard -location, use make sslcert DEST=/path/to/eggdrop). This will generate a -4096-bit private key (eggdrop.key) and a certificate (eggdrop.crt) after -you fill in therequired fields.

-

To authenticate with a certificate instead of using password, you should -make a ssl certificate for yourself and enable ssl-cert-auth in the config -file. Then either connect to the bot using SSL and type ".fprint +" or -enter your certificate fingerprint with .fprint SHA1-FINGERPRINT. -To generate a ssl certificate for yourself, you can run the following -command from the eggdrop source directory:

-
openssl req -new -x509 -nodes -keyout my.key -out my.crt -config ssl.conf
-
-
-

When asked about bot's handle, put your handle instead. How to use your -new certificate to connect to eggdrop, depends on your irc client. -To connect to your bot from the command line, you can use the OpenSSL -ssl client:

-
openssl s_client -cert my.crt -key my.key -connect host:sslport
-
-
-
-
-

SSL Settings

-

There are some new settings allowing control over certificate -verification and authorization.

-
-

ssl-privatekey

-
-
file containing Eggdrop's private key, required for the certificate.
-

ssl-certificate

-
-
Specify the filename where your SSL certificate is located. -if your bot will accept SSL connections, it must have a certificate.
-

ssl-verify-depth

-
-
maximum verification depth when checking certificate validity. -Determines the maximum certificate chain length to allow.
-
-
ssl-capath
-
ssl-cafile
-
-
-
specify the location of certificate authorities certificates. These -are used for verification. Both can be active at the same time. -If you don't set this, validation of the issuer won't be possible and -depending on verification settings, the peer certificate might fail -verification.
-

ssl-ciphers

-
-
specify the list of ciphers (in order of preference) allowed for -use with ssl.
-

ssl-cert-auth

-
-

enables or disables certificate authorization for partyline/botnet. -This works only for SSL connections (SDCC or telnet over SSL). -A setting of 1 means optional authorization: If the user/bot has a -fingerprint set and it matches the certificate SHA1 fingerprint, -access is granted, otherwise ordinary password authentication takes -place.

-

If you set this to 2 however, users without a fingerprint set or -with a fingerprint not matching the certificate, will not be -allowed to enter the partyline with SSL. In addition to this user and -bot certificates will be required to have an UID field matching the -handle of the user/bot.

-
-
-
ssl-verify-dcc
-
ssl-verify-bots
-
ssl-verify-server
-
ssl-verify-clients
-
-
-
control ssl certificate verification. A value of 0 disables -verification completely. A value of 1 enables full verification. -Higher values enable specific exceptions like allowing self-signed -or expired certificates. Details are documented in eggdrop.conf.
-
-

Copyright (C) 2010 - 2016 Eggheads Development Team

-
-
- - -
-
-
-
- -
-
-
- - - - - \ No newline at end of file diff --git a/eggdrop.conf b/eggdrop.conf index 730dbf3bc..930318751 100755 --- a/eggdrop.conf +++ b/eggdrop.conf @@ -670,7 +670,6 @@ set global-flood-kick 3:10 set global-flood-join 5:60 set global-flood-ctcp 3:60 set global-flood-nick 5:60 -set global-flood-size 1024:60 set global-aop-delay 5:30 set global-idle-kick 0 set global-chanmode "nt" @@ -834,11 +833,6 @@ set global-chanset { # constitutes a flood. Setting this to 0 or 0:0 disables nick flood # protection for the channel. # -# flood-size 1024:60 -# Set here how many bytes in how many seconds from one host constitutes -# a flood. Setting this to 0 or 0:0 disables size flood protection for -# the channel. -# # A complete list of all available channel settings: # # enforcebans diff --git a/misc/getcommit b/misc/getcommit index dee354843..9bab9dfd3 100755 --- a/misc/getcommit +++ b/misc/getcommit @@ -23,8 +23,10 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. +command -v git >/dev/null 2>&1 +HASGIT=$? VER=`git describe --always 2>/dev/null` -if [ $? -ne 0 -o "x$VER" = "x" ]; then +if [ $? -ne 0 -o $HASGIT -ne 0 -o "x$VER" = "x" ]; then if [ -r src/patch.h ]; then VER=`cat src/patch.h | grep -E '^patch.*\);$'| awk '-F"' '{ print $2 }' 2>/dev/null` if [ $? -ne 0 -o "x$VER" = "x" ]; then diff --git a/src/chan.h b/src/chan.h index a072fcc91..abc51392e 100644 --- a/src/chan.h +++ b/src/chan.h @@ -174,8 +174,6 @@ struct chanset_t { int flood_ctcp_time; int flood_nick_thr; int flood_nick_time; - int flood_size_thr; - int flood_size_time; int aop_min; int aop_max; long status; diff --git a/src/eggdrop.h b/src/eggdrop.h index 240e4cb3e..ab0595172 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -588,9 +588,8 @@ struct dupwait_info { #define FLOOD_JOIN 4 #define FLOOD_KICK 5 #define FLOOD_DEOP 6 -#define FLOOD_SIZE 7 -#define FLOOD_CHAN_MAX 8 +#define FLOOD_CHAN_MAX 7 #define FLOOD_GLOBAL_MAX 3 /* For local console: */ diff --git a/src/mod/channels.mod/channels.c b/src/mod/channels.mod/channels.c index 3ae0145e3..62a214589 100644 --- a/src/mod/channels.mod/channels.c +++ b/src/mod/channels.mod/channels.c @@ -45,8 +45,7 @@ static char glob_chanset[512]; /* Global flood settings */ static int gfld_chan_thr, gfld_chan_time, gfld_deop_thr, gfld_deop_time, gfld_kick_thr, gfld_kick_time, gfld_join_thr, gfld_join_time, - gfld_ctcp_thr, gfld_ctcp_time, gfld_nick_thr, gfld_nick_time, - gfld_size_thr, gfld_size_time; + gfld_ctcp_thr, gfld_ctcp_time, gfld_nick_thr, gfld_nick_time; #include "channels.h" #include "cmdschan.c" @@ -418,7 +417,7 @@ static void write_channels() "revenge-mode %d need-op %s need-invite %s need-key %s " "need-unban %s need-limit %s flood-chan %d:%d flood-ctcp %d:%d " "flood-join %d:%d flood-kick %d:%d flood-deop %d:%d " - "flood-nick %d:%d flood-size %d:%d aop-delay %d:%d ban-type %d ban-time %d " + "flood-nick %d:%d aop-delay %d:%d ban-type %d ban-time %d " "exempt-time %d invite-time %d %cenforcebans %cdynamicbans " "%cuserbans %cautoop %cautohalfop %cbitch %cgreet %cprotectops " "%cprotecthalfops %cprotectfriends %cdontkickops %cstatuslog " @@ -433,7 +432,6 @@ static void write_channels() chan->flood_kick_thr, chan->flood_kick_time, chan->flood_deop_thr, chan->flood_deop_time, chan->flood_nick_thr, chan->flood_nick_time, - chan->flood_size_thr, chan->flood_size_time, chan->aop_min, chan->aop_max, chan->ban_type, chan->ban_time, chan->exempt_time, chan->invite_time, PLSMNS(channel_enforcebans(chan)), @@ -832,7 +830,6 @@ static tcl_coups mychan_tcl_coups[] = { {"global-flood-join", &gfld_join_thr, &gfld_join_time}, {"global-flood-ctcp", &gfld_ctcp_thr, &gfld_ctcp_time}, {"global-flood-nick", &gfld_nick_thr, &gfld_nick_time}, - {"global-flood-size", &gfld_size_thr, &gfld_size_time}, {"global-aop-delay", &global_aop_min, &global_aop_max}, {NULL, NULL, NULL} }; @@ -952,10 +949,6 @@ char *channels_start(Function *global_funcs) gfld_join_time = 60; gfld_ctcp_thr = 5; gfld_ctcp_time = 60; - gfld_nick_thr = 5; - gfld_nick_time = 60; - gfld_size_thr = 1024; - gfld_size_time = 60; global_idle_kick = 0; global_aop_min = 5; global_aop_max = 30; diff --git a/src/mod/channels.mod/cmdschan.c b/src/mod/channels.mod/cmdschan.c index 96b1eb7b5..99508dc44 100644 --- a/src/mod/channels.mod/cmdschan.c +++ b/src/mod/channels.mod/cmdschan.c @@ -1424,17 +1424,15 @@ static void cmd_chaninfo(struct userrec *u, int idx, char *par) } - dprintf(idx, "flood settings: chan ctcp join kick deop nick size\n"); - dprintf(idx, "number: %3d %3d %3d %3d %3d %3d %4d\n", + dprintf(idx, "flood settings: chan ctcp join kick deop nick\n"); + dprintf(idx, "number: %3d %3d %3d %3d %3d %3d\n", chan->flood_pub_thr, chan->flood_ctcp_thr, chan->flood_join_thr, chan->flood_kick_thr, - chan->flood_deop_thr, chan->flood_nick_thr, - chan->flood_size_thr); - dprintf(idx, "time : %3d %3d %3d %3d %3d %3d %3d\n", + chan->flood_deop_thr, chan->flood_nick_thr); + dprintf(idx, "time : %3d %3d %3d %3d %3d %3d\n", chan->flood_pub_time, chan->flood_ctcp_time, chan->flood_join_time, chan->flood_kick_time, - chan->flood_deop_time, chan->flood_nick_time, - chan->flood_size_time); + chan->flood_deop_time, chan->flood_nick_time); putlog(LOG_CMDS, "*", "#%s# chaninfo %s", dcc[idx].nick, chname); } } diff --git a/src/mod/channels.mod/tclchan.c b/src/mod/channels.mod/tclchan.c index ed49140ba..622abd027 100644 --- a/src/mod/channels.mod/tclchan.c +++ b/src/mod/channels.mod/tclchan.c @@ -782,8 +782,6 @@ static int tcl_channel_info(Tcl_Interp *irp, struct chanset_t *chan) Tcl_AppendElement(irp, s); simple_sprintf(s, "%d:%d", chan->flood_nick_thr, chan->flood_nick_time); Tcl_AppendElement(irp, s); - simple_sprintf(s, "%d:%d", chan->flood_size_thr, chan->flood_size_time); - Tcl_AppendElement(irp, s); simple_sprintf(s, "%d:%d", chan->aop_min, chan->aop_max); Tcl_AppendElement(irp, s); simple_sprintf(s, "%d", chan->ban_type); @@ -1109,8 +1107,6 @@ static int tcl_channel_get(Tcl_Interp *irp, struct chanset_t *chan, simple_sprintf(s, "%d %d", chan->flood_deop_thr, chan->flood_deop_time); else if (!strcmp(setting, "flood-nick")) simple_sprintf(s, "%d %d", chan->flood_nick_thr, chan->flood_nick_time); - else if (!strcmp(setting, "flood-size")) - simple_sprintf(s, "%d %d", chan->flood_size_thr, chan->flood_size_time); else if (!strcmp(setting, "aop-delay")) simple_sprintf(s, "%d %d", chan->aop_min, chan->aop_max); else if CHKFLAG_POS(CHAN_ENFORCEBANS, "enforcebans", chan->status) @@ -1502,9 +1498,6 @@ static int tcl_channel_modify(Tcl_Interp *irp, struct chanset_t *chan, } else if (!strcmp(item[i] + 6, "nick")) { pthr = &chan->flood_nick_thr; ptime = &chan->flood_nick_time; - } else if (!strcmp(item[i] + 6, "size")) { - pthr = &chan->flood_size_thr; - ptime = &chan->flood_size_time; } else { if (irp) Tcl_AppendResult(irp, "illegal channel flood type: ", item[i], NULL); @@ -2074,8 +2067,6 @@ static int tcl_channel_add(Tcl_Interp *irp, char *newname, char *options) chan->flood_kick_time = gfld_kick_time; chan->flood_nick_thr = gfld_nick_thr; chan->flood_nick_time = gfld_nick_time; - chan->flood_size_thr = gfld_size_thr; - chan->flood_size_time = gfld_size_time; chan->stopnethack_mode = global_stopnethack_mode; chan->revenge_mode = global_revenge_mode; chan->ban_type = global_ban_type; diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 8aac7d034..99bfe46c2 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac fb7db08. +# From configure.ac d63cc00. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop Compress Module 1.8.0. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 4bdf1a7a2..1331530a9 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac fb7db08. +# From configure.ac d63cc00. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop DNS Module 1.8.0. # diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index 3c29e58c5..7ff95ce24 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -177,7 +177,7 @@ static void do_mask(struct chanset_t *chan, masklist *m, char *mask, char mode) * and handles kick & deop as well. */ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, - struct chanset_t *chan, int which, char *victim, int size) + struct chanset_t *chan, int which, char *victim) { char h[UHOSTLEN], ftype[12], *p; struct userrec *u; @@ -232,11 +232,6 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, lapse = chan->flood_nick_time; strcpy(ftype, "nick"); break; - case FLOOD_SIZE: - thr = chan->flood_size_thr; - lapse = chan->flood_size_time; - strcpy(ftype, "pub"); - break; case FLOOD_JOIN: thr = chan->flood_join_thr; lapse = chan->flood_join_time; @@ -270,19 +265,13 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, strncpy(chan->floodwho[which], p, 80); chan->floodwho[which][80] = 0; chan->floodtime[which] = now; - if (which == FLOOD_SIZE) - chan->floodnum[which] = size; - else - chan->floodnum[which] = 1; + chan->floodnum[which] = 1; return 0; } if (chan->floodtime[which] < now - lapse) { /* Flood timer expired, reset it */ chan->floodtime[which] = now; - if (which == FLOOD_SIZE) - chan->floodnum[which] = size; - else - chan->floodnum[which] = 1; + chan->floodnum[which] = 1; return 0; } /* Deop'n the same person, sillyness ;) - so just ignore it */ @@ -292,12 +281,7 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, else strcpy(chan->deopd, victim); } - - if (which == FLOOD_SIZE) - chan->floodnum[which]+=size; - else - chan->floodnum[which]++; - + chan->floodnum[which]++; if (chan->floodnum[which] >= thr) { /* FLOOD */ /* Reset counters */ chan->floodnum[which] = 0; @@ -312,7 +296,6 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, case FLOOD_PRIVMSG: case FLOOD_NOTICE: case FLOOD_CTCP: - case FLOOD_SIZE: /* Flooding chan! either by public or notice */ if (!chan_sentkick(m) && (me_op(chan) || (me_halfop(chan) && !chan_hasop(m)))) { @@ -1745,7 +1728,7 @@ static int gotjoin(char *from, char *chname) chan->status &= ~CHAN_STOP_CYCLE; strcpy(uhost, from); nick = splitnick(&uhost); - detect_chan_flood(nick, uhost, from, chan, FLOOD_JOIN, NULL, 0); + detect_chan_flood(nick, uhost, from, chan, FLOOD_JOIN, NULL); chan = findchan(chname); if (!chan) { @@ -2077,7 +2060,7 @@ static int gotkick(char *from, char *origmsg) u = get_user_by_host(from); strcpy(uhost, from); whodid = splitnick(&uhost); - detect_chan_flood(whodid, uhost, from, chan, FLOOD_KICK, nick, 0); + detect_chan_flood(whodid, uhost, from, chan, FLOOD_KICK, nick); chan = findchan(chname); if (!chan) @@ -2168,7 +2151,7 @@ static int gotnick(char *from, char *msg) /* Compose a nick!user@host for the new nick */ sprintf(s1, "%s!%s", msg, uhost); strcpy(m->nick, msg); - detect_chan_flood(msg, uhost, from, chan, FLOOD_NICK, NULL, 0); + detect_chan_flood(msg, uhost, from, chan, FLOOD_NICK, NULL); if (!findchan_by_dname(chname)) { chan = oldchan; @@ -2335,8 +2318,7 @@ static int gotmsg(char *from, char *msg) strcpy(ctcp, p1); strcpy(p1 - 1, p + 1); detect_chan_flood(nick, uhost, from, chan, strncmp(ctcp, "ACTION ", 7) ? - FLOOD_CTCP : FLOOD_PRIVMSG, NULL, 0); - detect_chan_flood(nick, uhost, from, chan, FLOOD_SIZE, NULL, strlen(msg)); + FLOOD_CTCP : FLOOD_PRIVMSG, NULL); chan = findchan(realto); if (!chan) @@ -2393,8 +2375,7 @@ static int gotmsg(char *from, char *msg) int result = 0; /* Check even if we're ignoring the host. (modified by Eule 17.7.99) */ - detect_chan_flood(nick, uhost, from, chan, FLOOD_PRIVMSG, NULL, 0); - detect_chan_flood(nick, uhost, from, chan, FLOOD_SIZE, NULL, strlen(msg)); + detect_chan_flood(nick, uhost, from, chan, FLOOD_PRIVMSG, NULL); chan = findchan(realto); if (!chan) @@ -2458,8 +2439,7 @@ static int gotnotice(char *from, char *msg) p = strchr(msg, 1); detect_chan_flood(nick, uhost, from, chan, strncmp(ctcp, "ACTION ", 7) ? - FLOOD_CTCP : FLOOD_PRIVMSG, NULL, 0); - detect_chan_flood(nick, uhost, from, chan, FLOOD_SIZE, NULL, strlen(msg)); + FLOOD_CTCP : FLOOD_PRIVMSG, NULL); chan = findchan(realto); if (!chan) @@ -2487,8 +2467,7 @@ static int gotnotice(char *from, char *msg) if (msg[0]) { /* Check even if we're ignoring the host. (modified by Eule 17.7.99) */ - detect_chan_flood(nick, uhost, from, chan, FLOOD_NOTICE, NULL, 0); - detect_chan_flood(nick, uhost, from, chan, FLOOD_SIZE, NULL, strlen(msg)); + detect_chan_flood(nick, uhost, from, chan, FLOOD_NOTICE, NULL); chan = findchan(realto); if (!chan) diff --git a/src/mod/irc.mod/irc.h b/src/mod/irc.mod/irc.h index 35f1f62f2..5798723db 100644 --- a/src/mod/irc.mod/irc.h +++ b/src/mod/irc.mod/irc.h @@ -69,7 +69,7 @@ static void recheck_channel(struct chanset_t *, int); static void set_key(struct chanset_t *, char *); static void maybe_revenge(struct chanset_t *, char *, char *, int); static int detect_chan_flood(char *, char *, char *, struct chanset_t *, int, - char *, int); + char *); static void newmask(masklist *, char *, char *); static char *quickban(struct chanset_t *, char *); static void got_op(struct chanset_t *chan, char *nick, char *from, char *who, diff --git a/src/mod/irc.mod/mode.c b/src/mod/irc.mod/mode.c index b13a2bd4d..cd49959e4 100644 --- a/src/mod/irc.mod/mode.c +++ b/src/mod/irc.mod/mode.c @@ -653,7 +653,7 @@ static void got_deop(struct chanset_t *chan, char *nick, char *from, /* Check for mass deop */ if (nick[0]) - detect_chan_flood(nick, from, s1, chan, FLOOD_DEOP, who, 0); + detect_chan_flood(nick, from, s1, chan, FLOOD_DEOP, who); /* Having op hides your +v and +h status -- so now that someone's lost ops, * check to see if they have +v or +h diff --git a/src/tls.c b/src/tls.c index a8bcebeee..b820a12fd 100644 --- a/src/tls.c +++ b/src/tls.c @@ -298,7 +298,7 @@ static int ssl_hostmatch(char *cn, char *host) if ((r = strchr(cn + 1, '.')) && r[-1] == '*' && strchr(r, '.')) { for (p = cn, q = host; *p != '*'; p++, q++) - if (toupper(*p) != toupper(*q)) + if (toupper((unsigned char)*p) != toupper((unsigned char)*q)) return 0; if (!(p = strchr(host, '.')) || strcasecmp(p, r)) diff --git a/tcl.m4 b/tcl.m4 index 28d3f5621..caccbe5b0 100644 --- a/tcl.m4 +++ b/tcl.m4 @@ -20,9 +20,6 @@ dnl TEA_VERSION="3.10" # TEA_WINDOWINGSYSTEM - win32 aqua x11 (mirrors 'tk windowingsystem') # TEA_PLATFORM - windows unix # TEA_TK_EXTENSION - True if this is a Tk extension -# TEACUP_OS - windows macosx linux generic -# TEACUP_TOOLSET - Toolset in use (gcc,mingw,msvc,llvm) -# TEACUP_PROFILE - win32 # #------------------------------------------------------------------------ @@ -138,8 +135,9 @@ AC_DEFUN([TEA_PATH_TCLCONFIG], [ for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ - `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ + `ls -d /usr/local/lib 2>/dev/null` \ + `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ `ls -d /usr/lib/tcl8.6 2>/dev/null` \ @@ -577,26 +575,7 @@ AC_DEFUN([TEA_LOAD_TKCONFIG], [ AC_DEFUN([TEA_PROG_TCLSH], [ AC_MSG_CHECKING([for tclsh]) - - AC_ARG_WITH(tclsh, [ --with-tclsh Specify a local tcl shell to use for dynamic code], with_tclsh=${withval}) - # Use the value from --with-tclsh, if it was given - TCLSH_PROG=0 - if test x"${with_tclsh}" != x ; then - if test -f "${with_tclsh}" ; then - TCLSH_PROG=${with_tclsh} - else - if test -f "${with_tclsh}/tcl8.6" ; then - TCLSH_PROG="${with_tclsh}/tcl8.6" - else - if test -f "${with_tclsh}/tclsh86.exe" ; then - TCLSH_PROG="${with_tclsh}/tclsh86.exe" - else - AC_MSG_ERROR([${with_tclsh} does not point to a valid Tcl executable]) - fi - fi - fi - else - if test -f "${TCL_BIN_DIR}/Makefile" ; then + if test -f "${TCL_BIN_DIR}/Makefile" ; then # tclConfig.sh is in Tcl build directory if test "${TEA_PLATFORM}" = "windows"; then if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}" ; then @@ -611,7 +590,7 @@ AC_DEFUN([TEA_PROG_TCLSH], [ else TCLSH_PROG="${TCL_BIN_DIR}/tclsh" fi - else + else # tclConfig.sh is in install location if test "${TEA_PLATFORM}" = "windows"; then TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}" @@ -628,8 +607,7 @@ AC_DEFUN([TEA_PROG_TCLSH], [ fi done TCLSH_PROG="${REAL_TCL_BIN_DIR}${TCLSH_PROG}" - fi - fi + fi AC_MSG_RESULT([${TCLSH_PROG}]) AC_SUBST(TCLSH_PROG) ]) @@ -668,7 +646,7 @@ AC_DEFUN([TEA_PROG_WISH], [ WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}st${EXEEXT}" fi else - WISH_PROG="${TK_BIN_DIR}/wish" + WISH_PROG="${TK_BIN_DIR}/wish" fi else # tkConfig.sh is in install location @@ -1374,8 +1352,6 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [ CFLAGS_OPTIMIZE="-O2 -fomit-frame-pointer" SHLIB_LD='${CC} -shared' UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' - PRACTCL_UNSHARED_LIB_SUFFIX='.a' - LDFLAGS_CONSOLE="-wl,--subsystem,console ${lflags}" LDFLAGS_WINDOW="-wl,--subsystem,windows ${lflags}" @@ -2107,12 +2083,10 @@ dnl # preprocessing tests use only CPPFLAGS. AS_IF([test "$SHARED_LIB_SUFFIX" = ""], [ # TEA specific: use PACKAGE_VERSION instead of VERSION - SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}' - ]) + SHARED_LIB_SUFFIX='${PACKAGE_VERSION}${SHLIB_SUFFIX}']) AS_IF([test "$UNSHARED_LIB_SUFFIX" = ""], [ # TEA specific: use PACKAGE_VERSION instead of VERSION - UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a' - ]) + UNSHARED_LIB_SUFFIX='${PACKAGE_VERSION}.a']) if test "${GCC}" = "yes" -a ${SHLIB_SUFFIX} = ".dll"; then AC_CACHE_CHECK(for SEH support in compiler, @@ -2215,7 +2189,6 @@ dnl # preprocessing tests use only CPPFLAGS. AC_SUBST(STLIB_LD) AC_SUBST(SHLIB_LD) - AC_SUBST(SHLIB_SUFFIX) AC_SUBST(SHLIB_LD_LIBS) AC_SUBST(SHLIB_CFLAGS) @@ -2940,6 +2913,7 @@ AC_DEFUN([TEA_INIT], [ # TEA extensions pass this us the version of TEA they think they # are compatible with. TEA_VERSION="3.10" + AC_MSG_CHECKING([for correct TEA configuration]) if test x"${PACKAGE_NAME}" = x ; then AC_MSG_ERROR([ @@ -3410,131 +3384,98 @@ AC_DEFUN([TEA_SETUP_COMPILER], [ # MAKE_STUB_LIB Makefile rule for building a stub library # VC_MANIFEST_EMBED_DLL Makefile rule for embedded VC manifest in DLL # VC_MANIFEST_EMBED_EXE Makefile rule for embedded VC manifest in EXE -# -# PRACTCL_TOOLSET What toolset is in use (gcc or msvc) -# PRACTCL_SHARED_LIB Template rule for building a shared library -# PRACTCL_STATIC_LIB Template rule for building a static library -# PRACTCL_STUB_LIB Template rule for building a stub library -# PRACTCL_VC_MANIFEST_EMBED_DLL Template rule for embedded VC manifest in DLL -# PRACTCL_VC_MANIFEST_EMBED_EXE Template rule for embedded VC manifest in EXE -# PRACTCL_NAME_LIBRARY Template rule for naming libraries -# #------------------------------------------------------------------------ AC_DEFUN([TEA_MAKE_LIB], [ - PRACTCL_TOOLSET="gcc" - PRACTCL_VC_MANIFEST_EMBED_DLL=: - PRACTCL_VC_MANIFEST_EMBED_EXE=: - if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then - PRACTCL_TOOLSET="msvc" - PRACTCL_STATIC_LIB="%STLIB_LD% -out:%OUTFILE% %LIBRARY_OBJECTS%" - PRACTCL_SHARED_LIB="%SHLIB_LD% %SHLIB_LD_LIBS% %LDFLAGS_DEFAULT% -out:%OUTFILE% %LIBRARY_OBJECTS%" - MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)" - MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS)" - AC_EGREP_CPP([manifest needed], [ + if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then + MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)" + MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS)" + AC_EGREP_CPP([manifest needed], [ #if defined(_MSC_VER) && _MSC_VER >= 1400 print("manifest needed") #endif - ], [ - # Could do a CHECK_PROG for mt, but should always be with MSVC8+ - PRACTCL_VC_MANIFEST_EMBED_DLL="mt.exe -nologo -manifest %OUTFILE%.manifest -outputresource:%OUTFILE%\;2" - PRACTCL_VC_MANIFEST_EMBED_EXE="mt.exe -nologo -manifest %OUTFILE%.manifest -outputresource:%OUTFILE%\;1" - VC_MANIFEST_EMBED_DLL="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;2 ; fi" - VC_MANIFEST_EMBED_EXE="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;1 ; fi" - MAKE_SHARED_LIB="${MAKE_SHARED_LIB} ; ${VC_MANIFEST_EMBED_DLL}" - TEA_ADD_CLEANFILES([*.manifest]) - ]) - PRACTCL_STUB_LIB="%STLIB_LD% -nodefaultlib -out:%OUTFILE% %LIBRARY_OBJECTS%" - MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\[$]@ \$(PKG_STUB_OBJECTS)" - else - MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)" - MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}" - MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)" - - PRACTCL_STATIC_LIB="%STLIB_LD% %OUTFILE% %LIBRARY_OBJECTS%" - PRACTCL_SHARED_LIB="%SHLIB_LD% -o %OUTFILE% %LIBRARY_OBJECTS% %SHLIB_LD_LIBS%" - PRACTCL_STUB_LIB="%STLIB_LD% %OUTFILE% %LIBRARY_OBJECTS%" - fi - - if test "${SHARED_BUILD}" = "1" ; then - MAKE_LIB="${MAKE_SHARED_LIB} " - else - MAKE_LIB="${MAKE_STATIC_LIB} " - fi - - #-------------------------------------------------------------------- - # Shared libraries and static libraries have different names. - # Use the double eval to make sure any variables in the suffix is - # substituted. (@@@ Might not be necessary anymore) - #-------------------------------------------------------------------- - if test "${TEA_PLATFORM}" = "windows" ; then - PRACTCL_NAME_LIBRARY="%LIBRARY_PREFIX%%LIBRARY_NAME%%LIBRARY_VERSION_NODOTS%" - if test "${SHARED_BUILD}" = "1" ; then + ], [ + # Could do a CHECK_PROG for mt, but should always be with MSVC8+ + VC_MANIFEST_EMBED_DLL="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;2 ; fi" + VC_MANIFEST_EMBED_EXE="if test -f \[$]@.manifest ; then mt.exe -nologo -manifest \[$]@.manifest -outputresource:\[$]@\;1 ; fi" + MAKE_SHARED_LIB="${MAKE_SHARED_LIB} ; ${VC_MANIFEST_EMBED_DLL}" + TEA_ADD_CLEANFILES([*.manifest]) + ]) + MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\[$]@ \$(PKG_STUB_OBJECTS)" + else + MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)" + MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}" + MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)" + fi + + if test "${SHARED_BUILD}" = "1" ; then + MAKE_LIB="${MAKE_SHARED_LIB} " + else + MAKE_LIB="${MAKE_STATIC_LIB} " + fi + + #-------------------------------------------------------------------- + # Shared libraries and static libraries have different names. + # Use the double eval to make sure any variables in the suffix is + # substituted. (@@@ Might not be necessary anymore) + #-------------------------------------------------------------------- + + if test "${TEA_PLATFORM}" = "windows" ; then + if test "${SHARED_BUILD}" = "1" ; then # We force the unresolved linking of symbols that are really in # the private libraries of Tcl and Tk. if test x"${TK_BIN_DIR}" != x ; then - SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\"" + SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TK_BIN_DIR}/${TK_STUB_LIB_FILE}`\"" fi SHLIB_LD_LIBS="${SHLIB_LD_LIBS} \"`${CYGPATH} ${TCL_BIN_DIR}/${TCL_STUB_LIB_FILE}`\"" if test "$GCC" = "yes"; then - SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -static-libgcc" + SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -static-libgcc" fi eval eval "PKG_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" - else + else eval eval "PKG_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" if test "$GCC" = "yes"; then - PKG_LIB_FILE=lib${PKG_LIB_FILE} + PKG_LIB_FILE=lib${PKG_LIB_FILE} fi - fi - # Some packages build their own stubs libraries - eval eval "PKG_STUB_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" - if test "$GCC" = "yes"; then - PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE} - fi - # These aren't needed on Windows (either MSVC or gcc) - RANLIB=: - RANLIB_STUB=: - else - PRACTCL_NAME_LIBRARY="lib%LIBRARY_PREFIX%%LIBRARY_NAME%%LIBRARY_VERSION%" - RANLIB_STUB="${RANLIB}" - if test "${SHARED_BUILD}" = "1" ; then - SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}" - if test x"${TK_BIN_DIR}" != x ; then - SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}" - fi - eval eval "PKG_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" - RANLIB=: + fi + # Some packages build their own stubs libraries + eval eval "PKG_STUB_LIB_FILE=${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" + if test "$GCC" = "yes"; then + PKG_STUB_LIB_FILE=lib${PKG_STUB_LIB_FILE} + fi + # These aren't needed on Windows (either MSVC or gcc) + RANLIB=: + RANLIB_STUB=: else - eval eval "PKG_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" + RANLIB_STUB="${RANLIB}" + if test "${SHARED_BUILD}" = "1" ; then + SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TCL_STUB_LIB_SPEC}" + if test x"${TK_BIN_DIR}" != x ; then + SHLIB_LD_LIBS="${SHLIB_LD_LIBS} ${TK_STUB_LIB_SPEC}" + fi + eval eval "PKG_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${SHARED_LIB_SUFFIX}" + RANLIB=: + else + eval eval "PKG_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}${UNSHARED_LIB_SUFFIX}" + fi + # Some packages build their own stubs libraries + eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" fi - # Some packages build their own stubs libraries - eval eval "PKG_STUB_LIB_FILE=lib${PACKAGE_LIB_PREFIX}${PACKAGE_NAME}stub${UNSHARED_LIB_SUFFIX}" - fi - - # Store the raw CFLAGS before we add the trimmings - PRACTCL_CFLAGS=${CFLAGS} - # These are escaped so that only CFLAGS is picked up at configure time. - # The other values will be substituted at make time. - CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}" - if test "${SHARED_BUILD}" = "1" ; then - CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}" - fi - - AC_SUBST(MAKE_LIB) - AC_SUBST(MAKE_SHARED_LIB) - AC_SUBST(MAKE_STATIC_LIB) - AC_SUBST(MAKE_STUB_LIB) - AC_SUBST(RANLIB_STUB) - AC_SUBST(VC_MANIFEST_EMBED_DLL) - AC_SUBST(VC_MANIFEST_EMBED_EXE) - AC_SUBST(PRACTCL_CFLAGS) - AC_SUBST(PRACTCL_TOOLSET) - AC_SUBST(PRACTCL_SHARED_LIB) - AC_SUBST(PRACTCL_STATIC_LIB) - AC_SUBST(PRACTCL_STUB_LIB) - AC_SUBST(PRACTCL_VC_MANIFEST_EMBED_DLL) - AC_SUBST(PRACTCL_VC_MANIFEST_EMBED_EXE) - AC_SUBST(PRACTCL_NAME_LIBRARY) + + # These are escaped so that only CFLAGS is picked up at configure time. + # The other values will be substituted at make time. + CFLAGS="${CFLAGS} \${CFLAGS_DEFAULT} \${CFLAGS_WARNING}" + if test "${SHARED_BUILD}" = "1" ; then + CFLAGS="${CFLAGS} \${SHLIB_CFLAGS}" + fi + + AC_SUBST(MAKE_LIB) + AC_SUBST(MAKE_SHARED_LIB) + AC_SUBST(MAKE_STATIC_LIB) + AC_SUBST(MAKE_STUB_LIB) + AC_SUBST(RANLIB_STUB) + AC_SUBST(VC_MANIFEST_EMBED_DLL) + AC_SUBST(VC_MANIFEST_EMBED_EXE) ]) #------------------------------------------------------------------------ @@ -4296,100 +4237,6 @@ AC_DEFUN([TEA_PATH_CELIB], [ fi fi ]) - -#-------------------------------------------------------------------- -# TEA_CONFIG_TEAPOT -# -# Try to determine the canonical name for this package's binary -# target -# -# Arguments: -# none -AC_DEFUN([TEA_CONFIG_TEAPOT], [ - TEACUP_OS=$system - TEACUP_ARCH="unknown" - TEACUP_TOOLSET="gcc" - TEACUP_PROFILE="unknown" - arch="unknown" - if test "${TEA_PLATFORM}" = "windows" ; then - if test "$GCC" = "yes" ; then - TEACUP_TOOLSET="gcc" - else - TEACUP_TOOLSET="msvc" - fi - if test "$do64bit" != "no" ; then - case "$do64bit" in - amd64|x64|yes) - arch="x86_64" - TEACUP_PROFILE="win32-x86_64" - ;; - ia64) - arch="ia64" - TEACUP_PROFILE="win32-ia64" - ;; - esac - else - arch="ix86" - TEACUP_PROFILE="win32-ix86" - fi - else - case $system in - Linux*) - TEACUP_OS="linux" - arch=`uname -m` - TEACUP_PROFILE="linux-glibc2.3-$arch" - ;; - GNU*) - TEACUP_OS="gnu" - arch=`uname -m` - ;; - NetBSD-Debian) - TEACUP_OS="netbsd-debian" - arch=`uname -m` - ;; - OpenBSD-*) - TEACUP_OS="openbsd" - arch=`arch -s` - ;; - Darwin*) - TEACUP_OS="macosx" - TEACUP_PROFILE="macosx-universal" - arch=`uname -m` - if test $arch = "x86_64"; then - TEACUP_PROFILE="macosx10.5-i386-x86_84" - fi - ;; - OpenBSD*) - TEACUP_OS="openbsd" - arch=`arch -s` - ;; - esac - fi - TEACUP_ARCH=$arch - if test "$TEACUP_PROFILE" = "unknown"; then - if test $arch = "unknown"; then - arch=`uname -m` - fi - case $arch in - i*86) - arch="ix86" - ;; - amd64) - arch="x86_64" - ;; - esac - TEACUP_PROFILE="$TEACUP_OS-$arch" - fi - TEA_SYSTEM=$system - AC_SUBST(TEA_SYSTEM) - AC_SUBST(TEA_PLATFORM) - AC_SUBST(TEA_WINDOWINGSYSTEM) - AC_SUBST(TEACUP_OS) - AC_SUBST(TEACUP_ARCH) - AC_SUBST(TEACUP_TOOLSET) - AC_SUBST(TEACUP_PROFILE) -]) - # Local Variables: # mode: autoconf # End: