summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorsjaz <sjaz@5417fbe8-f217-4b02-8779-1006273d7864>2009-01-01 12:00:20 +0000
committersjaz <sjaz@5417fbe8-f217-4b02-8779-1006273d7864>2009-01-01 12:00:20 +0000
commitc777c8d9aa7cd5c2e9a399727a7fa9985a77fb1c (patch)
tree9e996ae4a1bbb833cec036c5cd4d87a590149e85 /docs
Anope Stable Branch
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@1902 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'docs')
-rw-r--r--docs/BUGS4
-rw-r--r--docs/COPYING339
-rw-r--r--docs/DEFCON118
-rw-r--r--docs/EVENTS416
-rw-r--r--docs/FAQ480
-rw-r--r--docs/INSTALL184
-rw-r--r--docs/IRCD601
-rw-r--r--docs/MODULES124
-rw-r--r--docs/MYSQL109
-rw-r--r--docs/NEWS55
-rw-r--r--docs/OLDCHANGES1299
-rw-r--r--docs/OLDNEWS139
-rw-r--r--docs/PROXY41
-rw-r--r--docs/README377
-rw-r--r--docs/WIN32.txt209
15 files changed, 4495 insertions, 0 deletions
diff --git a/docs/BUGS b/docs/BUGS
new file mode 100644
index 000000000..1f640fa5e
--- /dev/null
+++ b/docs/BUGS
@@ -0,0 +1,4 @@
+Reported Bugs from Bugzilla: http://bugs.anope.org/
+---------------------------------------------------
+
+
diff --git a/docs/COPYING b/docs/COPYING
new file mode 100644
index 000000000..a43ea2126
--- /dev/null
+++ b/docs/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/docs/DEFCON b/docs/DEFCON
new file mode 100644
index 000000000..1f5218d19
--- /dev/null
+++ b/docs/DEFCON
@@ -0,0 +1,118 @@
+Anope DefCon
+------------
+
+1) Introduction
+2) Installation
+3) Configuration
+4) Usage
+5) Usage Example
+6) Support
+
+1) Introduction
+
+ Anope 1.6 onwards supports a unique protection mechanism based on the
+ military "Defense Readiness Condition" (DefCon) system. It is based on
+ 5 levels of defense readiness defined as:
+
+ DEFCON5 Normal peacetime readiness
+ DEFCON4 Increased intelligence and security readiness
+ DEFCON3 Increase in force readiness
+ DEFCON2 Further increase in force readiness
+ DEFCON1 Maximum force readiness.
+
+ These are configurable levels that mandates what actions Anope should
+ take in case of emergency and change in readiness status.
+
+ It is used to prevent abuse to both Services, and the ircd on which they
+ are running. Also to protect the users, primarily in the event of Clones
+ and/or FloodBOT attacks.
+
+2) Installation
+
+ The DefCon system is part of Anope's core,
+
+ The DefCon system has to be configured on your services.conf file to
+ be enabled. All directives are optional unless they depend on what
+ options you enable for each level. Look for the "DefCon configuration"
+ section on your services.conf file for more information.
+
+ Make sure you restart Anope after changing the DefCon configuration
+ directives.
+
+3) Configuration
+
+ Pre-defined DefCon actions:
+
+ No new channel registrations 1
+ No New Nick Registrations 2
+ No MLOCK changes 4
+ Force Chan Mode 8
+ Use Reduced Session Limit 16
+ KILL any new clients trying to connect 32
+ Services will ignore everyone but opers 64
+ Services will silently ignore everyone but opers 128
+ AKILL all new clients trying to connect 256
+ No new memos sent to block MemoServ attacks 512
+
+ These are the values used to determine each defcon setting, are set via:
+
+ DefCon1 XX
+ DefCon2 XX
+ DefCon3 XX
+ DefCon4 XX
+
+ To set the desired value, you simply add the value of the numbers together
+ and place that as your DefCon# setting. For instance:
+
+ Say you wish to set:
+
+ No Channel Registrations, No Nickname Registrations and Services Ignoring
+ everyone except for Operators. You would do this by:
+
+ 1 + 2 + 128 (Each value listed above is added together)
+ Giving: 131
+
+ You would then place this as which ever Defcon setting you want:
+
+ DefCon1 131
+
+ The recommended default values are safe to use on any network.
+
+4) Usage
+
+ Anope starts up in DEFCON5 (normal readiness). To change the Defcon level
+ in action use:
+
+ /msg OperServ DEFCON 1|2|3|4|5
+
+5) Usage Example
+
+ Place the network on DEFCON4:
+
+ /msg OperServ DEFCON 4
+
+ *** Global -- from OperServ: dengel Changed the DEFCON level to 4
+
+ -OperServ- Services are now at DEFCON 4
+ -OperServ- * No new channel registrations
+ -OperServ- * No new nick registrations
+ -OperServ- * No MLOCK changes
+ -OperServ- * Use the reduced session limit of 5
+
+ -Global- The Defcon Level is now at Level: 4
+
+ Restore normal readiness:
+
+ /msg OperServ DEFCON 5
+
+ *** Global -- from OperServ: dengel Changed the DEFCON level to 5
+
+ -OperServ- Services are now at DEFCON 5
+
+ -Global- Services are now back to normal, sorry for any inconvenience
+
+6) Support
+
+ You might get DefCon support by posting on our online forum, or maybe on
+ our #anope channel at /server irc.anope.org.
+
diff --git a/docs/EVENTS b/docs/EVENTS
new file mode 100644
index 000000000..bc8af9dce
--- /dev/null
+++ b/docs/EVENTS
@@ -0,0 +1,416 @@
+Anope Internal Events
+---------------------
+
+1) Intro
+2) Complex Events
+3) Triggered Events
+4) Triggered Events List
+
+1) Introduction to Internal Events
+
+ Internal Events are setup to give module developers more information
+ about what the core is doing at different times. This information can
+ be as complex as data we are feeding to the uplink, to simple triggered
+ events such as the databases being saved. A list of triggered events
+ can be found below. Additional there is a module included with the core
+ which can provide some clue as to how to use the code in your modules.
+ The rest of this document assumes that you are used to writing modules.
+
+2) Complex Events
+
+ This type of events are based around what happens when we talk to the
+ IRCd, much like MESSAGE events that the IRCD sends to us. The events
+ are triggered when Anope writes to the ircd. To watch for these events
+ you must have some knowledge of how the IRCd command system works. In
+ our example we will trap for NICK events.
+
+ A) All functions most be formatted as:
+
+ int functioname(char *source, int ac, char **av);
+
+ B) In AnopeInit you must declare EvtMessage in some fashion, it is into
+ this variable that we will create the event handler. Here is what the
+ base AnopeInit should look like at this point:
+
+ int AnopeInit(int argc, char **argv)
+ {
+ EvtMessage *msg = NULL;
+ int status;
+
+ moduleAddAuthor(AUTHOR);
+ moduleAddVersion(VERSION);
+ return MOD_CONT;
+ }
+
+ Note that AUTHOR and VERSION should be defined above the AnopeInit
+ function, just like you should do with any module.
+
+ C) Pass "createEventHandler" the name of the message in this case NICK,
+ and the function that was created in Step A. At this point you should
+ assign the return of "createEventHandler" to the EvtMessage variable.
+
+ msg = createEventHandler("NICK", my_nick);
+
+ D) The Handler is not ready for use yet; now you must add it to the hash
+ with "moduleAddEventHandler". You will want to pass to this function
+ the return of "createEventHandler".
+
+ status = moduleAddEventHandler(msg);
+
+ It will return the same module error codes as adding a regular message,
+ which you can use to confirm it was added correctly.
+
+ E) With that setup in your function you will be passed 3 items. The source
+ most of the time this will be set to ServerName or NULL; consult our
+ IRCd documentation about how messages are formatted. AC is the count of
+ variables you will find in AV.
+
+ int my_nick(char *source, int ac, char **av)
+ {
+ alog("Internal Event - nick is %s",av[0]);
+ return MOD_CONT;
+ }
+
+3) Triggered Events
+
+ These events also known as "event hooks" are internal events such as
+ expiring of nicks to the saving of databases.
+
+ A) All functions most be formatted as:
+
+ int functioname(int argc, char **argv);
+
+ B) In AnopeInit you must declare EvtHook in some fashion; it is into
+ this variable that we will create the event handler. Here is what
+ the base AnopeInit should look like at this point:
+
+ int AnopeInit(int argc, char **argv)
+ {
+ EvtHook *hook = NULL;
+ int status;
+
+ moduleAddAuthor(AUTHOR);
+ moduleAddVersion(VERSION);
+ return MOD_CONT;
+ }
+
+ C) Pass "createEventHook" the name of the event. In this case we are
+ going to hook to the saving of databases, "EVENT_DB_SAVING".
+
+ hook = createEventHook(EVENT_DB_SAVING, my_save);
+
+ D) The Handler is not ready for use yet; now you must add it to the hash
+ with "moduleAddEventHook". You will want to pass to this function the
+ return of "createEventHook"
+
+ status = moduleAddEventHook(hook);
+
+ It will return the same module error codes as adding a regular message,
+ which you can use to confirm it was added correctly.
+
+ E) With that setup in your function you will be passed 1 item. The message
+ is very simple; it could be as simple as a start, stop or message. In
+ the case of saving it has a start and stop.
+
+ int my_save(int argc, char **argv)
+ {
+ if (argc < 1) {
+ return MOD_CONT;
+ }
+
+ if (!stricmp(argv[0], EVENT_START)) {
+ alog("Saving the databases! has started");
+ } else {
+ alog("Saving the databases is complete");
+ }
+ return MOD_CONT;
+ }
+
+4) Triggered Events List
+
+ Here's a list of all event hooks we currently offer, with a description
+ of what argument is being passed to the event functions for this type of
+ event. All arguments are plain-text strings (char *). The list is sorted
+ in alphabetical order.
+
+ Note that all events are emitted AFTER the action has taken place, so
+ any deleted nick/channel/etc won't exist anymore and any created one will
+ exist when your function is being run, unless noted otherwise.
+
+ Also note that EVENT_START and EVENT_STOP should not be matched with an
+ equal sign, but with string comparision. See the bundled events module for
+ an example on how to do this.
+
+ The arguments are given as av[0] for the first argument, av[1] for the
+ second argument, and so on. If av[0] and av[1] are given, the event has
+ two arguments, and argc should be 2.
+
+ EVENT_ACCESS_ADD
+ An user has been added to a channel access list.
+ av[0] Name of the channel the user has been added to.
+ av[1] The nickname of the user that has just added an entry to the
+ access list.
+ av[2] The nickname of the user that has been added to the access
+ list.
+ av[3] The level number the user has been added with.
+
+ EVENT_ACCESS_CHANGE
+ An user level has been changed on a channel access list.
+ av[0] Name of the channel the access list has been modified which.
+ av[1] The nickname of the user that has just modified the access
+ list of the channel.
+ av[2] The nickname of the user wich his access level has just been
+ modified.
+ av[3] The new access level for the user.
+
+ EVENT_ACCESS_CLEAR
+ A channel access list has been cleared.
+ av[0] Name of the channel the access list has been cleared of
+ av[1] The nickname of the user that has cleared the access list
+
+ EVENT_ACCESS_DEL
+ An user has been deleted of a channel access list.
+ av[0] Name of the channel the access entry has been deleted which.
+ av[1] The nickname of the user that has just deleted the access entry.
+ av[2] [OPTIONAL] The nickname of the user wich his access level has just
+ been removed. Not present if numbers were used (e.g. /cs access
+ del 7).
+
+ EVENT_BOT_ASSIGN
+ A BotServ bot has been assigned to a channel.
+ av[0] Name of the channel the bot has been assigned to.
+ av[1] The nickname of the bot that has been assigned to the channel.
+
+ EVENT_BOT_BAN
+ A BotServ bot has banned a user, e.g. kickers.
+ av[0] The nick of the user banned.
+ av[1] The Channel the user was banned from.
+ av[2] The mask that was banned.
+
+ EVENT_BOT_CHANGE
+ The properties of a BotServ bot have been changed.
+ av[0] The nickname of the bot involved.
+
+ EVENT_BOT_CREATE
+ A new BotServ bot has been created, and is ready to use.
+ av[0] The nickname of the newly created bot.
+
+ EVENT_BOT_DEL
+ A BotServ bot is being deleted from BotServ. This event is being sent
+ just before the actual deletion is performed.
+ av[0] The nickname of the bot being deleted.
+
+ EVENT_BOT_FANTASY
+ A fantasy command of the bot has been triggered. This event should be
+ used to create your own fantasy commands.
+ av[0] The fantasy command that has been triggered without leading '!'.
+ av[1] The nickname of the user that has triggered the fantasy
+ command.
+ av[2] The name of the channel the fantasy command has been triggered
+ on.
+ av[3] Contains any optional paramenters passed after the fantasy
+ command. If none are present, this will not exist, and argc will
+ will be 3.
+
+ EVENT_BOT_FANTASY_NO_ACCESS
+ A fantasy command of the bot has been triggered by someone without
+ access to BotServ FANTASY commands on the channel. This will NOT
+ trigger if someone with access has triggered a fantasy command; use
+ EVENT_BOT_FANTASY for those. Hook to both events to catch both event
+ triggers.
+ av[0] The fantasy command that has been triggered without leading '!'.
+ av[1] The nickname of the user that has triggered the fantasy
+ command.
+ av[2] The name of the channel the fantasy command has been triggered
+ on.
+ av[3] Contains any optional paramenters passed after the fantasy
+ command. If none are present, this will not exist, and argc will
+ will be 3.
+
+ EVENT_BOT_JOIN
+ A BotServ bot has joined a channel and opped itself.
+ av[0] The channel name the bot has just joined.
+ av[1] The nickname of the bot that has joined the channel.
+
+ EVENT_BOT_KICK
+ A BotServ bot has kicked a user from a channel.
+ av[0] The name of the user that has been kicked.
+ av[1] The name of the channel the user was kicked from.
+ av[2] The reason for the kick.
+
+ EVENT_BOT_UNASSIGN
+ A BotServ bot is being unassigned from a channel. This event is being
+ sent before the actual removing of the bot is done.
+ av[0] The channel name the bot has been unassigned from.
+ av[1] The nickname of the bot that has been unassigned.
+
+ EVENT_CHAN_DROP
+ A channel has been dropped and deleted.
+ av[0] The name of the channel that has been dropped.
+
+ EVENT_CHAN_EXPIRE
+ A channel has been expired and will be deleted. The event will be
+ emitted just before the actual channel deletion happens.
+ av[0] The name of the channel that has been expired.
+
+ EVENT_CHAN_FORBIDDEN
+ A channel has been forbidden (ChanServ FORBID).
+ av[0] The name of the channel that has been forbidden.
+
+ EVENT_CHAN_KICK
+ Someone has just been kicked from a channel.
+ av[0] The nick of the user that has been kicked.
+ av[1] The channel the user has been kicked from.
+
+ EVENT_CHAN_REGISTERED
+ A new channel has been registered.
+ av[0] The name of the channel that has been registered.
+
+ EVENT_CHAN_SUSPENDED
+ A channel has been suspended (ChanServ SUSPEND).
+ av[0] The name of the channel that has been suspended.
+
+ EVENT_CHAN_UNSUSPEND
+ A channel has been unsuspended (ChanServ UNSUSPEND).
+ av[0] The name of the channel that has been unsuspended.
+
+ EVENT_CHANGE_NICK
+ A user has just changed it's nick.
+ av[0] The new nickname of the user.
+
+ EVENT_CONNECT
+ This event is emitted when the connection to our uplink hub is being
+ made.
+ av[0] EVENT_START or EVENT_STOP, to indicate if it's emitted before
+ or after the connection has been made. EVENT_STOP is emitted
+ before our burst is being sent over the link.
+
+ EVENT_DB_EXPIRE
+ This event is emitted when the expiry routines for all things that can
+ expire in Anope are being run.
+ av[0] EVENT_START or EVENT_STOP, to indicate if it's being emitted
+ before or after the expiry routines have been run.
+
+ EVENT_DB_SAVING
+ This event is emitted when the databases are being saved.
+ av[0] EVENT_START or EVENT_STOP, to indicate if it's emitted before
+ or after the saving routines have been run.
+
+ EVENT_DB_BACKUP
+ This event is emitted when the databases are backed up.
+ av[0] EVENT_START when the backup commences, and EVENT_STOP when it
+ finishes.
+
+ EVENT_DEFCON_LEVEL
+ The DefCon level has just been changed. This event is emitted before
+ any DefCon-related action is taken. The internal DefConLevel has
+ already been raised at this point.
+ av[0] The new level of DefCon being invoked.
+
+ EVENT_GROUP
+ A user has grouped it's nickname to another user group.
+ av[0] The nickname of the user that joined the group.
+
+ EVENT_JOIN_CHANNEL
+ A user joins a channel.
+ av[0] EVENT_START or EVENT_STOP. EVENT_START when the user has passed
+ all access checks and is allowed to join, but has not yet
+ joined the channel. EVENT_STOP when the user has joined and all
+ needed modes are set etc.
+ av[1] The nickname of the user joining the channel.
+ av[2] The name of the channel the user has joined.
+
+ EVENT_NEWNICK
+ A new user has been introduced on the network.
+ av[0] The nickname of the newly introduced user.
+
+ EVENT_NICK_DROPPED
+ A user's nick has just been dropped. Note that the nickname information
+ has already been deleted!
+ av[0] The nickname of the user that has just been dropped.
+
+ EVENT_NICK_EXPIRE
+ A user's nick has just expired. Note that, as with EVENT_NICK_DROPPED,
+ the nickname information has already been deleted!
+ av[0] The nickname of the user that has just expired.
+
+ EVENT_NICK_FORBIDDEN
+ A user's nick has just been forbidden.
+ av[0] The nickname that has just been forbidden.
+
+ EVENT_NICK_IDENTIFY
+ A user has just identified for it's nickname with NickServ.
+ av[0] The nickname of the user that just identified.
+
+ EVENT_NICK_LOGOUT
+ A user has just (been) logged out.
+ av[0] The nickname of the user that has (been) logged out.
+
+ EVENT_NICK_REGISTERED
+ A new user has just registered it's nickname. This event is being
+ emitted when the registration is completed, but the user modes have not
+ yet been set.
+ av[0] The nickname of the newly registered user.
+
+ EVENT_NICK_SUSPENDED
+ A user's nick has just been suspended.
+ av[0] The nickname that has just been suspended.
+
+ EVENT_NICK_UNSUSPEND
+ A user's nick has just been unsuspended.
+ av[0] The nickname that has just been unsuspended.
+
+ EVENT_PART_CHANNEL
+ A user parts a channel.
+ av[0] EVENT_START or EVENT_STOP. EVENT_START when the user is about
+ to be removed from the channel internally, EVENT_STOP when
+ this has been done.
+ av[1] The nickname of the user parting the channel.
+ av[2] The name of the channel the user has parted.
+ av[3] The reason the user parted the channel, this is not always sent
+ so check the count to make sure it was passed. (ac == 4)
+
+ EVENT_RELOAD
+ This event is emitted after the configuration file has been reloaded.
+ av[0] Always EVENT_START.
+
+ EVENT_RESTART
+ This event is emitted before the services are being restarted.
+ av[0] Always EVENT_START.
+
+ EVENT_SERVER_CONNECT
+ A new server has just connected to the network.
+ av[0] The name of the new server.
+
+ EVENT_SERVER_SQUIT
+ A server has sent an SQUIT and is about to be removed from the
+ network. This event is being sent before the server is actually
+ removed from the network.
+ av[0] The name of the server that is being removed.
+
+ EVENT_SHUTDOWN
+ This event is emitted when Anope is being shut down.
+ av[0] EVENT_START or EVENT_STOP, to indicate where in the process of
+ restarting the core is. With EVENT_START, services are still
+ fully online and operating. With EVENT_STOP, every internal
+ clean up has been done already, and the SQUIT has been sent;
+ the only thing done after emitting the event is closing the
+ socket to the uplink hub.
+
+ EVENT_SIGNAL
+ This event is emitted when Anope is quitting because of a signal it
+ received.
+ av[0] The quit message that will be sent with the SQUIT for this
+ shutdown.
+
+ EVENT_TOPIC_UPDATED
+ A channel topic has been succesfully updated. Note that this event is
+ only emitted if the new topic has been fully accepted and set by the
+ Anope core.
+ av[0] The name of the channel involved.
+ av[1] The new topic set on the channel.
+
+ EVENT_USER_LOGOFF
+ A user has left the network. This event is emitted before the internal
+ removal is performed, so the user still exists internally.
+ av[0] The nickname of the user leaving the network.
diff --git a/docs/FAQ b/docs/FAQ
new file mode 100644
index 000000000..93c069f0b
--- /dev/null
+++ b/docs/FAQ
@@ -0,0 +1,480 @@
+Frequently Asked Questions (FAQ) concerning Anope
+------------------------------------------------
+
+NOTE:
+An updated version of this FAQ can be found on our website: www.anope.org
+
+Table of Contents
+-----------------
+
+1) General
+ 1.1) What is Anope?
+ 1.2) Where can I find Anope?
+ 1.3) Does Anope run under Windows?
+ 1.4) Can I send you questions without reading the FAQ, INSTALL or README
+ files?
+ 1.5) I need support for the XYZ protocol.
+ 1.6) Your Services program doesn't do XYZ like DALnet (or other) Services.
+ What's wrong?
+ 1.7) I've got a great new idea for Services. Do you want it?
+ 1.8) Examples of features we have been asked about and why we won't add (or
+ haven't yet added) them, so don't ask us about them:
+ 1.9) Can you help me?
+ 1.10) Where is RootServ?
+
+2) Installation / Configuration
+ 2.1) When I run "make", I get an error message like "missing separator",
+ "Unassociated shell command", "Unexpected end of line seen", etc.
+ 2.2) I get an error like "Makefile.inc not found".
+ 2.3) I typed "./services" at the command line, but nothing happened!
+ 2.4) Whenever I start Anope, I get a message on my IRC server saying
+ "connection refused" or something similar, and Anope gives an error
+ message from the server saying "Closing Link: ...".
+ 2.5) My IRC server is giving me messages like "Connection to
+ services.whatever.net[127.0.0.1] activated" and then "Access denied --
+ no N line". Why?
+ 2.6) When I say "/connect services.*", it doesn't work!
+ 2.7) Anope starts up okay, but if I try to register a nickname, it comes
+ back with "Sorry, registration failed."
+ 2.8) Anope reports (via /stats u or /msg OperServ STATS) a different number
+ of users online than I get from doing /lusers.
+
+3) OperServ
+ 3.1) Using the OperServ JUPE command results in server messages like
+ "Server juped.server introduced by non-hub server services.my.net".
+ 3.2) I can't use the ADMIN command to add Services admins, it tells me
+ "Permission denied."
+ 3.3) When I add an AKILL, the users matching it don't get killed.
+ 3.4) Trying to use OperServ gives me "Access denied", but my nick is in the
+ ServicesRoot directive and is registered, and I've identified for my
+ nick.
+ 3.5) When I used the OperServ RAW command, Anope and/or my network crashed,
+ or did weird things! Please fix this bug!
+ 3.6) I would like to have the list of the different RAW on OperServ.
+ 3.7) I can't get /OS UMODES and /OS SVSNICK to work!
+ 3.8) What is a Super-Admin? How does it work? Why might it not work?
+ 3.9) How can i enable the OperServ RAW command?
+
+4) Bugs / Crashes
+ 4.1) Anope always dies after about five minutes, saying "FATAL ERROR! Can't
+ back up nick.db".
+ 4.2) Anope crashed with a segmentation fault.
+ 4.3) I've found a bug that's not mentioned here or in the README or BUGS
+ files. What should I do?
+ 4.4) My FreeBSD box complains about 'Shared object "nss_dns.so.1" not
+ found'
+ 4.5) Anope and long (more then 30 character) nicknames.
+
+5) ChanServ
+ 5.1) Anope's channel mode setting doesn't work. I can't set modes with
+ OperServ, and every time ChanServ tries to set a mode, my server
+ reverses the change.
+ 5.2) Anope ignored the SET SUCCESSOR setting and deleted a channel when the
+ founder expired.
+ 5.3) How to auto voice all those whom join my #channel?
+ 5.4) Channel options like RESTRICTED or SECUREOPS don't work. What's wrong?
+
+6) BotServ
+ 6.1) How do I add bots to BotServ?
+ 6.2) Why do kick triggers and fantasy commands fail to work with my Bahamut
+ IRCd?
+
+7) Language
+ 7.1) Anope complains in the logfile about being unable to load the default
+ language.
+ 7.2) Anope spricht kein Deutsch!, etc. (Anope doesn't speak my language!)
+ 7.3) I selected a language other than English, but sometimes Anope sends
+ responses in English instead.
+
+8) DevNull
+ 8.1) What is the purpose of DevNull?
+
+-------------------------------------------------------------------------------
+
+1) General
+
+1.1) What is Anope?
+
+ Anope is a set of services for IRC networks. See the README file for more
+ information. And in case you were wondering, Anope is Epona spelt backwards
+ :)
+
+1.2) Where can I find Anope?
+
+ The latest version can always be found at the official Anope distribution
+ site:
+
+ * http://www.anope.org/
+
+ New version announcements can also be found at http://www.anope.org/ in the
+ main page.
+
+1.3) Does Anope run under Windows?
+
+ Yes. For more information on how to obtain the windows version of Anope
+ visit http://wiki.anope.org/Windows
+
+1.4) Can I send you questions without reading the FAQ, INSTALL or README files?
+
+ No. If you don't read those files, your messages will most probably be
+ ignored. We don't mean to be rude, but if we took the time to write down
+ some documentation, we'd expect you to take some time to read it.
+
+1.5) I need support for the XYZ protocol.
+
+ Since Anope 1.7.9, support for other IRCD's, and thus protocols, has been
+ made modular. More information on making a support file for your favorite
+ IRCD can be found in the docs/IRCD file.
+
+1.6) Your Services program doesn't do XYZ like DALnet (or other) Services.
+ What's wrong?
+
+ Nothing is wrong, except your expectations. Anope is a completely
+ different program from that used on DALnet; they are similar in concept
+ only.
+
+1.7) I've got a great new idea for Services. Do you want it?
+
+ We are always interested in hearing new ideas. HOWEVER, do not expect your
+ proposal to be in the next Anope release for sure. As a rule, we usually
+ don't add anything that can be equivalently done by other means, or that we
+ consider totally useless; see question 1.8 for examples of things we don't
+ plan to add.
+
+ Our general intent is for Anope to provide as much functionality as
+ possible--while staying as lean as possible. So features which are
+ arguably beneficial will tend to be added, while features of limited or no
+ benefit or which can be equally provided by something else already in use
+ will tend to be passed over.
+
+ If you'd like to give us your idea, you can go to our website at
+ http://www.anope.org/ and add it on our online Forum, in the Feature
+ Requests section.
+
+1.8) Examples of features we have been asked about and why we won't add (or
+ haven't yet added) them, so don't ask us about them:
+
+ * An option to make ChanServ stay in some/all registered channels: we see
+ absolutely no necessity for this feature, since BotServ already does this
+ anyway.
+
+ * A "current time" field in NickServ and ChanServ INFO displays: Most
+ people have clocks of some sort either on their computer screens or on
+ their walls (or both), and all IRC servers, as well as Services, have a
+ command to return the server's current time. Thus a current-time field in
+ INFO displays would simply take up extra space for no reason.
+
+1.9) Can you help me?
+
+ No, we can't help you unless you tell us what you need help with.
+
+1.10) Where is RootServ?
+
+ Anope does not supply RootServ. All functions you would find in RootServ
+ have been integrated into OperServ. If you really want to use RootServ, you
+ can set the OperServAlias in services.conf to be RootServ. This will enable
+ the RootServ nick to be used for OperServ as well. Read the comments near
+ OperServAlias in the configuration file for more information.
+
+
+2) Installation / Configuration
+
+2.1) When I run "make", I get an error message like "missing separator",
+ "Unassociated shell command", "Unexpected end of line seen", etc.
+
+ Your make program isn't compatible with the Makefile for Anope. The
+ Makefile was designed to work with GNU make, and as such may not work on
+ other systems' "make" programs. If you get an error from "make", obtain
+ GNU make from ftp://prep.ai.mit.edu/pub/gnu/ (or wherever you prefer) and
+ use it instead of your system's default "make". Note that GNU make may
+ already be installed on your system; try using the command "gmake" instead
+ of "make".
+
+ The make programs bundled with SunOS/Solaris and FreeBSD have been reported
+ not to work; you will need to use GNU make on these systems.
+
+2.2) I get an error like "Makefile.inc not found".
+
+ You forgot to run the Config script first. See the INSTALL file for
+ compilation instructions.
+
+2.3) I typed "./services" at the command line, but nothing happened!
+
+ Anope puts itself in the background when it starts, so you get your shell
+ prompt right back. Meanwhile, Anope will continue setting up, then connect
+ to the IRC server specified in services.conf (or on the command line). If
+ it doesn't connect, you probably specified the wrong server type in the
+ configuration file. (Also make sure that you are actually running one of
+ the supported servers. There are a gazillion different variations on the
+ basic IRC protocol out there, and we have neither the time nor the desire
+ to add support for them.)
+
+ The recommended server, under which Epona (the original code base used by
+ Anope) was developed, is Bahamut. DreamForge 4.6.7 will also work fine, but
+ it's a bit obsolete nowadays. Derivatives of Bahamut and DreamForge may
+ also work, if they don't change the server<->server protocol too much;
+ contact their authors for more information. Most people, though, are
+ running Anope with UnrealIRCd, UltimateIRCd or Bahamut.
+
+ As always, you can check the log file (services.log by default) for error
+ messages. You can also start services with the -nofork command line option
+ to prevent it from running in the background, and it will output the
+ messages written to the log file to the console as well.
+
+2.4) Whenever I start Anope, I get a message on my IRC server saying
+ "connection refused" or something similar, and Anope gives an error
+ message from the server saying "Closing Link: ...".
+
+ See section 3 of the INSTALL file.
+
+2.5) My IRC server is giving me messages like "Connection to
+ services.whatever.net[127.0.0.1] activated" and then "Access denied -- no
+ N line". Why?
+
+ This is typically caused by including a port number in the C:line for
+ services, which tells your server to try to autoconnect to it (depending on
+ the class (Y:line) settings). This is not what you want, because Anope
+ will connect to the server itself, but does not listen for servers to
+ connect to it. The solution is to remove the port number from the C:line.
+
+2.6) When I say "/connect services.*", it doesn't work!
+
+ Of course not. RTFM (Read The Fine Manual), and see the previous answer.
+
+2.7) Anope starts up okay, but if I try to register a nickname, it comes back
+ with "Sorry, registration failed."
+
+ Make sure you've selected the correct IRC server type in the configure
+ script; see question 2.4 for details.
+
+2.8) Anope reports (via /stats u or /msg OperServ STATS) a different number of
+ users online than I get from doing /lusers.
+
+ Anope doesn't count its own pseudo-clients (NickServ, ChanServ, etc.) in
+ its user count, while the IRC server does.
+
+
+3) OperServ
+
+3.1) Using the OperServ JUPE command results in server messages like "Server
+ juped.server introduced by non-hub server services.my.net".
+
+ Services' uplink must have an H: line for Services in the ircd.conf file,
+ which looks something like:
+
+ H:*::services.whatever.net
+
+3.2) I can't use the ADMIN command to add Services admins, it tells me
+ "Permission denied."
+
+ Did you define yourself as the Services root? You need to insert your
+ nickname in the ServicesRoot directive in services.conf. Also, you must be
+ a global IRC Operator and your nickname must be registered and properly
+ indentified with NickServ.
+
+3.3) When I add an AKILL, the users matching it don't get killed.
+
+ Use the AkillOnAdd configuration directive.
+
+3.4) Trying to use OperServ gives me "Access denied", but my nick is in the
+ ServicesRoot directive and is registered, and I've identified for my nick.
+
+ You need to be a global oper (i.e. user mode +o) to access OperServ. This
+ can be configured via the OSOpersOnly directive in services.conf .
+
+3.5) When I used the OperServ RAW command, Anope and/or my network crashed, or
+ did weird things! Please fix this bug!
+
+ "That's not a bug, it's a feature."
+
+ Have you ever typed /msg OperServ HELP RAW? It's clearly stated there that
+ this command is dangerous and that its use may result in very bad things.
+
+ And that's why this command has been disabled by default. If you enabled
+ and used it, YOU'RE ON YOUR OWN. All help requests will be ignored, even if
+ the problem happens not immediately.
+
+3.6) I would like to have the list of the different RAW on OperServ.
+
+ If you have to ask, you should not be messing with RAW :)
+
+3.7) I can't get /OS UMODES and /OS SVSNICK to work!
+
+ You need to be a SuperAdmin to be able to use these commands.
+
+3.8) What is a Super-Admin? How does it work? Why might it not work?
+
+ Super-Admin's have extra privileges, including being founder on all
+ channels. It must be activated on a per user basis and is only available to
+ Services Roots. It is set using OperServ and is not persistent. It only
+ works if SuperAdmin is not commented in the services configuration file.
+ This is commented by default. Read /msg OperServ HELP SET SUPERADMIN for
+ further help.
+
+3.9) How can i enable the OperServ RAW command?
+
+ Enabling the OperServ RAW command is VERY dangerous and should never be
+ done on a real network without thinking about it very well first. The RAW
+ command can easily break your whole network if used incorrectly, and thus
+ you will receive NO SUPPORT if you enable RAW on your network.
+
+ Before you enable RAW, be very sure you really want to enable it, and keep
+ in mind that you will NOT BE ABLE to receive ANY SUPPORT anymore, because
+ Anope's stability cannot be guaranteed if RAW is enabled.
+
+ The RAW command comes bundled as a core module for operserv. To load it,
+ add the os_raw module to the list of OperServ core modules. But be sure to
+ keep in mind that when you enable the RAW command, you CANNOT GET ANY
+ SUPPORT for Anope anymore.
+
+
+4) Bugs / Crashes
+
+4.1) Anope always dies after about five minutes, saying "FATAL ERROR! Can't
+ back up nick.db".
+
+ Make sure that the user Anope runs as has write access to the data
+ directory, and that the data directory actually exists (the latter
+ shouldn't be a problem if you ran the Config script). This means Anope
+ needs write and execute permission on the data directory itself and execute
+ permission on every parent directory of the data directory.
+
+4.2) Anope crashed with a segmentation fault.
+
+ See if you can reproduce this by doing a certain sequence of things. If
+ so, please report it to us (see part 6 of README file). If not, you're
+ probably out of luck; if you like, you can report it to us anyway, but
+ chances are it won't get fixed if we don't have instructions on reproducing
+ it. If you do have such a problem, you may find the crontab utility useful
+ for dealing with it.
+
+ Also, see the DumpCore directive in the configuration file. It allows Anope
+ to dump its core whenever it's segfaulting, usually calling it core and
+ placing it into Anope's main directory. Open up gdb by issuing the
+ following command at your shell:
+
+ * gdb services core
+
+ (of course replacing 'core' with the name of the core if different) and
+ type 'bt' at the gdb prompt. After that, send us the output you got and
+ keep the core file in a safe place, in case we need it to dig deeper into
+ the problem.
+
+4.3) I've found a bug that's not mentioned here or in the README or BUGS files.
+ What should I do?
+
+ See section 6 of the README file.
+
+4.4) My FreeBSD box complains about 'Shared object "nss_dns.so.1" not found'
+
+ We haven't figured out the exact cause yet, but as a quickfix you can
+ delete the /etc/nsswitch.conf file. Please keep in mind that removing a
+ configuration file can be dangerous, so only do this if you know what you
+ are doing.
+
+4.5) Anope and long (more then 30 character) nicknames.
+
+ By default anope only supports nicknames up to 30 characters (NICKLEN=30).
+ If your IRCd allows for longer nicknames or has been modified to do so
+ anope will start logging a lot of ("NICK from nonexistent nick") messages.
+ This is because once a user uses a nick that is too long for anope to handle,
+ anope loses track of the user for the remainder of the session.
+ It is POSSIBLE but not NOT RECOMMENDED to extend the maximum length of nicknames
+ anope can track, however this will also break database compatibility. DBs saved
+ with anope set to allow for example 40 chars cannot be read by a default anope
+ and vice versa. So changing the maximum nick length is only possible
+ when starting with fresh databases and even then the consequences of this are
+ UNTESTED.
+ In order to change the maximum internal nick length, change the NICKMAX setting
+ in include/config.h, recompile anope and start without databases.
+
+
+5) ChanServ
+
+5.1) Anope's channel mode setting doesn't work. I can't set modes with
+ OperServ, and every time ChanServ tries to set a mode, my server reverses
+ the change.
+
+ Make sure EVERY server on your network has a U: line for Services in
+ ircd.conf, for example:
+
+ U:services.whatever.net:*:*
+
+5.2) Anope ignored the SET SUCCESSOR setting and deleted a channel when the
+ founder expired.
+
+ Normally, this is because the successor had too many channels registered;
+ in this case, you will see an entry in the log file like the following:
+
+ [date] Successor (SuccessorNick) of channel #somechannel owns too many
+ channels, deleting channel #somechannel
+
+ If you don't get a message like this or you can verify that the successor
+ wasn't running into the channel limit, please report it using the
+ bug-reporting procedure below (see section 6 of the README file).
+
+5.3) How to auto voice all those whom join my #channel?
+
+ Execute the following commands (/cs is an alias for /msg ChanServ):
+
+ /cs set #channel secure off
+ /cs set #channel xop off
+ /cs levels #channel set AUTOVOICE -1
+
+5.4) Channel options like RESTRICTED or SECUREOPS don't work. What's wrong?
+
+ Make sure that you didn't put any of your normal IRCd's as a ULined server
+ in Anope. Some access checks for clients from ULined servers are skipped to
+ avoid fights between the ULined servers. This is usually only useful when
+ you have a statistics server connected to your network.
+
+
+6) BotServ
+
+6.1) How do I add bots to BotServ?
+
+ Read /msg BotServ HELP and /msg BotServ HELP BOT. Note that you need to be
+ opered up and identified as a Services Administrator before you can use the
+ BOT command.
+
+6.2) Why do kick triggers and fantasy commands fail to work with my Bahamut
+ IRCd?
+
+ Bahamut allows you to setup a server as 'serviceshub'. This will filter
+ certain data services usually don't need to process. This option also
+ filters channel messages, because DALnet's services have no use for them.
+ Anope parses the channel messages for kick triggers and fantasy commands.
+ To make sure these work the server type of the hub they're linked to should
+ be simply 'hub' and not 'serviceshub'.
+
+
+7) Language
+
+7.1) Anope complains in the logfile about being unable to load the default
+ language.
+
+ You forgot to run "make install".
+
+7.2) Anope spricht kein Deutsch!, etc. (Anope doesn't speak my language!)
+
+ See section 5 of the README file.
+
+7.3) I selected a language other than English, but sometimes Anope sends
+ responses in English instead.
+
+ Some language files are not complete--in other words, they don't have a
+ translation of every message Anope uses, but only some of them. In this
+ case, the missing messages will be displayed in English. You can either
+ wait for the primary translator to provide us with a translation, or do the
+ translation yourself and send us the messages translated into your
+ language.
+
+
+8) DevNull
+
+8.1) What is the purpose of DevNull?
+
+ DevNull functions as a message sink. Any message sent to it will be
+ ignored. It will not be logged, there will be no response. It will be lost
+ forever. Whether it's useful or not is up to you; we just provide you with
+ the option.
diff --git a/docs/INSTALL b/docs/INSTALL
new file mode 100644
index 000000000..33e62f346
--- /dev/null
+++ b/docs/INSTALL
@@ -0,0 +1,184 @@
+Anope Installation Instructions
+-------------------------------
+
+1) Installing Anope
+2) Upgrading Anope
+3) Setting up the IRCd
+4) Starting Anope
+5) Setting up a crontab
+
+Note: You should also read the README and FAQ files!
+
+1) Installing Anope
+
+ IMPORTANT NOTE: it is not recommended to use (and therefore install)
+ Anope as root. Use an unprivileged user instead -- the
+ one you're using for the ircd or a dedicated one will
+ be good enough.
+
+ The very first thing you need to do is to get the Anope package (if not
+ already done). You can find it at:
+
+ http://www.anope.org/
+
+ Next, unpack the package in your home directory, and go into the created
+ directory.
+
+ Now type ./Config to start the configuration script. It will ask you a
+ few questions, and figure out how to compile Anope on your system. If
+ you are unsure about the answer to a question, use the default value.
+
+ NOTE: although you may specify different binary and data paths, it is
+ RECOMMENDED that you use the same value for both.
+
+ You can now type make to compile Anope. If there are errors in the
+ Makefile, *try to use gmake* instead. If it still doesn't work, you (or
+ the system administrator if it's a shell) must install GNU make. You may
+ find it at ftp://prep.ai.mit.edu/pub/gnu/.
+
+ Now type make install (or gmake install; see above). This will install
+ all the needed files in the paths you specified with the configure
+ script, and setup file permissions. You should ensure that the data
+ directory is not accessible by other users, as malicious users may
+ cause trouble on your network if passwords are not encrypted, or read
+ the memos of any user.
+
+ If you see errors during this process, please mail us with the *complete*
+ error output, and don't forget to mention your OS, compiler and C library
+ versions.
+
+ Now go into the data directory (by default, ~/services). Copy the example
+ configuration file (example.conf) to services.conf, and open the latter
+ with your favorite text editor. It contains all the configuration
+ directives Anope will use at startup. Read the instructions contained in
+ the file carefully. Using the default values is NOT a good idea, and will
+ most likely not work!
+
+ If you need help, you should subscribe to the Anope mailing list and mail
+ there to get help from other users. See the README file for more
+ information.
+
+2) Upgrading Anope
+
+ If you got a .diff file and want to patch the old Anope sources with it,
+ do the following:
+
+ * Copy the .diff file into the root Anope sources directory.
+ * Type patch -p1 <file.diff
+
+ Note that upgrading anope with a patchfile isn't recommended. You should
+ download a new, clean source package, as this will give the best results.
+
+ To upgrade Anope, just follow the installation instructions described in
+ section 1. There are however a few specific guidelines:
+
+ * IMPORTANT: Back up your old databases!
+ * If you are upgrading to a new major release, ALWAYS restart a
+ fresh configuration file from example.conf.
+
+3) Setting up the IRCd
+
+ Services acts as an IRC server with pseudo-clients on it. To link them to
+ your network, you'll need to add some lines in the ircd.conf of their hub
+ server (as stated in the RemoteServer configuration directive).
+
+ For samples below we'll take services.localhost.net as the name of the
+ Services (as stated in the ServerName configuration directive). Note that
+ this samples are made to be as generic as possible, but there might be
+ small variations, depending on your IRCd. For IRCd-specific help with
+ configuration, read near the end of this section.
+
+ First, the C/N lines, that allow Services to link. They also need a
+ Y:line to work correctly.
+
+ Y:27:180:0:0:4000000
+ C:127.0.0.1:mypass:services.localhost.net::30
+ N:127.0.0.1:mypass:services.localhost.net::30
+
+ "mypass" is the same password you mentioned in the RemoteServer
+ configuration directive. 127.0.0.1 is the IP from which Services connect
+ from (linking in localhost is the most efficient way to run Services).
+
+ Then, you have to set-up an U:line, that will allow Services to change
+ channel modes, topics, and much more without being opped in the channel.
+
+ U:services.localhost.net:*:*
+
+ NOTE: if you have more than one server in your network, this line MUST
+ be added on ALL servers, or things won't work correctly.
+
+ Finally, you'll need to add an H:line, to make the OperServ JUPE command
+ work correctly.
+
+ H:*::Services.LocalHost.Net
+
+ Don't forget to /rehash your IRCd to apply changes.
+
+ A new trend in ircd configuration is popping all over the place, good
+ examples are the latest Hybrid, Unreal and Bahamut, which use a more
+ "readable" form of configuration. For those, use something like:
+
+ link services.localhost.net
+ {
+ username *;
+ hostname localhost;
+ bind-ip *;
+ port 6667;
+ hub *;
+ password-connect "mypass";
+ password-receive "mypass";
+ class servers;
+ };
+
+ Note that this block-style configuration files differ heavily, depending
+ on the IRCd. Consult the interactive link maker (link is below) for more
+ details on the exact configuration used by your IRCd.
+
+ If you're unable to get a link with your IRCd after reading this section,
+ you might try the interactive link maker, which is located at:
+
+ http://anope.org/~heinz/ilm.php
+
+4) Starting Anope
+
+ Go into the directory where binaries were installed (by default, this is
+ ~/services). Type ./services to launch Anope.
+
+ If there are syntax errors in the configuration file they will be
+ displayed on the screen. Correct them until there are no errors anymore.
+ A successful startup won't generate any message.
+
+ Give Services at least one minute to link to your network, as certain
+ IRCds on some OSes may be really slow for the link process. If nothing
+ happens after about a minute, it is probably a configuration problem. Try
+ to launch Anope with ./services -debug -nofork to see any errors that it
+ encounters, and try to correct them.
+
+ If you need help to solve errors, feel free to subscribe to the Anope
+ mailing list and ask there. See the README file for details.
+
+5) Setting up a crontab
+
+ A crontab entry will allow you to check periodically whether Anope is
+ still running, and restart it if not. You'll need to have Anope binaries
+ and data installed in the same directory for this to work without
+ modification.
+
+ First rename the example.chk script that is in Anope path (by default,
+ this is ~/services) to services.chk and edit it. You'll need to modify
+ the CONFIGURATION part of the file. Then ensure that the file is marked
+ as executable by typing chmod +x services.chk, and try to launch the
+ script to see if it works (Anope must not be running when you do this ;))
+
+ When this is done, you'll have to add the crontab entry. Type crontab -e.
+ This will open the default text editor with the crontab file. Enter the
+ following (with correct path):
+
+ */5 * * * * /home/ircd/services/services.chk >/dev/null 2>&1
+
+ The */5 at the beginning means "check every 5 minutes". You may replace
+ the 5 with other another number if you want (but less than 60). Consult
+ your system's manual pages for more details on the syntax of the crontab
+ file. Interesting manpages are crontab(5), crontab(1) and cron(8).
+
+ Save and exit, and it's installed.
diff --git a/docs/IRCD b/docs/IRCD
new file mode 100644
index 000000000..c99f2558a
--- /dev/null
+++ b/docs/IRCD
@@ -0,0 +1,601 @@
+How To Add IRCd Support
+-----------------------
+
+1) Files to Edit
+2) Modifing the Header File
+3) The Code
+4) Modes
+5) Functions / Events
+6) CAPAB/PROTOCTL
+
+1) Files to Edit
+
+ When preparing to add support to Anope for your ircd, you need to edit
+ the following files.
+
+ A) Make a copy of the .c and .h file of the IRCd that matches the ircd
+ that you are attempting to add support for best.
+ B) Make a backup copy of include/services.h, include/sysconf.h.in
+ C) Make a backup copy of Config and configure.in
+
+ First step in this process is to rename the .c and .h file after the IRCd
+ that you are going to be adding support for. Its recommended that you come
+ up with a name that is clear and easy to understand.
+
+ Now that you have the files that you will need to create your own ircd
+ support, starting with Config. This file is a shell script file; scroll
+ down until you find the list of ircs for the user to select. Indicate
+ the based ircd version which is supported such as a series 1.x or 2.2.x,
+ placing in the comment side an exact version that the support is for or
+ "experimental" if you are not the ircd developer. The next step is to
+ decide how the IRCd will be defined, following the existing examples edit
+ 'IRCTYPE_DEF="IRC_RATBOX"' to be the descriptive define for your ircd.
+
+ With the Config file ready to go, edit configure.in and find in there the
+ reference to --with-ircd. You should see the various other ircds, and
+ you will want to add yours in there using the same IRC_ name you came up
+ with above. Important in this step is to make sure that you set the
+ IRCDFILE to the name of the .c file you set in step 1. Once you have the
+ configure.in created you can remove the old configure and at the command
+ prompt type "autconf"; this will generate the new configure file.
+
+ Getting close to actually modify code. Open sysconf.h.in and add two
+ lines for your given ircd, which is similar to this:
+
+ /* "First IRCD type" */
+ #undef IRC_RATBOX
+
+ Open services.h and add a line with the rest of the ircd include files to
+ match the name of the .h file you set in step 1.
+
+ #include "ratbox.h"
+
+ Taking the .c and .h file open them and replace the #ifdef IRC_* with the
+ IRC_ name you set in step two. Ensure that the code comments at the top
+ of the file match the ircd that the code will be for.
+
+ You are now ready to start getting into the code.
+
+2) Modifying the Header File
+
+ Now that you have gotten past the first part of the creation process, you
+ are into the code. This part is the harder and more complex part. You
+ will need a general understanding of C code to continue. Here are the
+ step by step instructions required to make this work.
+
+ Open the .h file and find the section of code with
+
+ #define PROTECT_SET_MODE "+"
+ #define PROTECT_UNSET_MODE "-"
+ #define CS_CMD_PROTECT "PROTECT"
+ #define CS_CMD_DEPROTECT "DEPROTECT"
+ #define FANT_PROTECT_ADD "!protect"
+ #define FANT_PROTECT_DEL "!deprotect"
+ #define LEVEL_PROTECT_WORD "AUTOPROTECT"
+ #define LEVELINFO_PROTECT_WORD "PROTECT"
+ #define LEVELINFO_PROTECTME_WORD "PROTECTME"
+
+ If the ircd supports a protective/admin (not owner) mode, set the
+ PROTECT_SET_MODE and PROTECT_UNSET_MODE to be that mode. On most ircds
+ it's usermode "a" so you will be setting it to "+a" and "-a". The next
+ two are based more on what this mode is called. When you message ChanServ
+ to get this mode, this is the command you will be using. After this are
+ the fantasy commands which can be used in channel to get these modes. The
+ next three relate to the ACCESS LEVEL list system. Again these are the
+ words to gain these levels in the ACCESS LEVEL system. If your ircd does
+ not have these functions, leave them at what ever value is currently set;
+ the core code will ignore the request of the user.
+
+ Now that this is set, you can define the MODES. All user modes are stored
+ with UMODE_ followed by a letter matching the modes case; be careful to
+ use the correct case as this will make it clear when you setup MODES in
+ the .c in a few. Use hex values for the modes so starting at 0x00000001
+ to 0x8000000. In most cases you want to list all modes. If you run out of
+ values look at removing any modes that do not impact services.
+
+ Channel modes are done much like user modes, with the exception that
+ bans, exceptions, invites, and modes that are applied to a user such as
+ op and voice are not defined here. All other modes are defined in here.
+ Again be clear and use the correct case and use hex values as done with
+ user modes.
+
+ Finally we come to DEFAULT_MLOCK; this is the mode that services will set
+ by default on channels when they are registered. In general you want this
+ to be what is acceptable by the ircd; in most cases this is "+nt"
+
+3) The Code
+
+ Here is where the code of the .c file comes in. Be prepared to spend at
+ least an hour, if not longer, going over the code and getting it right;
+ Especially if you are setting up an ircd that is completely different
+ than the one you used as a base. This section covers the majority of the
+ code that is in use.
+
+ The first bit of code you will face is:
+
+ const char version_protocol[] = "Ratbox IRCD";
+
+ This the protocol name which will appear in various places; especially
+ when you do -version at the command prompt, this is where you state the
+ server name. The version is not always needed unless you are showing that
+ the support is for one branch of a ircd family, such as Unreal 3.1 and
+ Unreal 3.2.
+
+ Once you have decided on this little piece of code, you will come to
+ flood mode characters being used for setting and removing. If your IRCd
+ does not support flood modes, you can just use ""; we will be setting if
+ your IRCD supports flooding or not in a little bit.
+
+ const char flood_mode_char_set[] = "+f";
+ const char flood_mode_char_remove[] = "-f";
+
+ The next task that you will face is setting whether the IRCD sends time
+ stamps on modes but does not tell us that it will do so. If it does, set
+ UseTSMODE to 1; if it does not set it to be 0. If you're not sure refer
+ to your IRCd's documentation on how MODE is sent.
+
+ int UseTSMODE = 0;
+
+ Now you've come to the part where you setup your ircd. There are two
+ structs which hold this information; This allows you to quickly setup
+ your specific ircd.
+
+ IRCDVar ircd[] = { }
+
+ This struct contains your basic IRCd functions. Your base source file has
+ the list of all available variables; note that you should not swap any
+ around, or you will break stuff. Here is a brief description of the usage
+ of each.
+
+ 1) Name: This member tells Anope about the IRCD's name. It may contain
+ text about it's name and version. This is used to identify the
+ build on startup.
+
+ 2) NickServ Mode: This is the user mode set by Anope on NickServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 3) ChanServ Mode: This is the user mode set by Anope on ChanServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 4) MemoServ Mode: This is the user mode set by Anope on MemoServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 5) HostServ Mode: This is the user mode set by Anope on HostServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag. Note that if your ircd does not
+ support HostServ, you can safely make this NULL or +,
+ as there is a check before bringing HostServ online.
+
+ 6) OperServ Mode: This is the user mode set by Anope on OperServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 7) BotServ Mode: This is the user mode set by Anope on BotServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 8) HelpServ Mode: This is the user mode set by Anope on HelpServ.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 9) DevNull Mode: This is the user mode set by Anope on DevNull.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 10) Global Mode: This is the user mode set by Anope on Global.
+ Normally you want this to be some form of oper flag,
+ or a services flag.
+
+ 11) NickServ Alias Mode: This is the user mode set by Anope on the alias
+ of NickServ. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 12) ChanServ Alias Mode: This is the user mode set by Anope on the alias
+ of ChanServ. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 13) MemoServ Alias Mode: This is the user mode set by Anope on the alias
+ of MemoServ. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 14) HostServ Alias Mode: This is the user mode set by Anope on the alias
+ of MemoServ. Normally you want this to be some
+ form of oper flag, or a services flag. Note that
+ if your ircd does not support HostServ, you can
+ safely make this NULL or +, as there is a check
+ before bringing HostServ online.
+
+ 15) OperServ Alias Mode: This is the user mode set by Anope on the alias
+ of OperServ. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 16) BotServ Alias Mode: This is the user mode set by Anope on the alias
+ of BotServ. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 17) HelpServ Alias Mode: This is the user mode set by Anope on the alias
+ of HelpServ. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 18) DevNull Alias Mode: This is the user mode set by Anope on the alias
+ of DevNull. Normally you want this to be some
+ form of oper flag, or a services flag.
+
+ 19) Global Alias Mode: This is the user mode set by Anope on the alias
+ of Global. Normally you want this to be some form
+ of oper flag, or a services flag.
+
+ 20) BotServ Bots Mode: This is the user mode set by Anope on all BotServ
+ bots. Normally you want this to be a some form of
+ service or bot flag; you can use + for no mode at
+ all.
+
+ 21) Max Channelmode Symbols: This is the total number of possible channel
+ modes that can appear before a nick. Do
+ remember to count each possible mode, so +ov
+ is 2.
+
+ 22) Modes to Remove: This is every mode that Anope should remove when
+ stripping channel modes.
+
+ 23) Channelmode for bots: When a BotServ bot joins a channel, this is the
+ mode set on them. Normally you will want them
+ opped (+o), and protected (+a) on IRCd's that
+ support it.
+
+ 24) SVSNICK: Can the ircd use SVSNICK to change some ones nick? Otherwise,
+ KILL is used. Use 1 for yes, 0 for no.
+
+ 25) VHOST: Can a user's host be changed on the fly? Enabling this allow
+ HostServ online. Use 1 for yes, 0 for no.
+
+ 26) OWNER: Has a channel umode for being the channel owner. For example,
+ UnrealIRCd has mode +q. Use 1 for yes, 0 for no.
+
+ 27) OWNER MODE SET: What mode to set to make someone the owner. If the
+ IRCd doesn't support owners, set this to NULL.
+
+ 28) OWNER MODE UNSET: What mode to unset to take away someone's channel
+ owner status. If the IRCd doesn't support owners,
+ set this to NULL.
+
+ 29) ADMIN MODE SET: What mode to set to make someone a channel admin.
+ If the IRCd dosn't support admins, set to NULL.
+
+ 30) ADMIN MODE UNSET: What mode to unset to take away channel admin.
+ If the IRCd dosn't support admins, set to NULL.
+
+ 31) Mode on Nick Register: What mode to give users when they register
+ with NickServ. If your ircd doesn't set expect
+ a mode to be set on registration, you should
+ set this to NULL.
+
+ 32) Mode on Nick Unregister: What mode to set give users when they cancel
+ their registration with NickServ. If your
+ IRCd doesn't set a mode for registered users
+ you should set this to NULL.
+
+ 33) Mode on Nick Change: What mode to give users when they change their
+ nick. If your ircd doesn't set a mode, you
+ should set this to NULL.
+
+ 34) SGLINE: Does the IRCd support realname (geocs) bans? Use 1 for yes,
+ 0 for no.
+
+ 35) SQLINE: Does the IRCd support nick bans? Use 1 for yes, 0 for no.
+
+ 36) SZLINE: Does the IRCd support SZLINES? Use 1 for yes, 0 for no.
+
+ 37) HALFOP: Is channel mode +h for halfop supported by the IRCd? Use 1 for
+ yes, 0 for no.
+
+ 38) Number of Server Args: When an IRCd connects, this is the number of
+ parameters that are passed.
+
+ 39) Join to Set: Services must join a channel to set any modes on that
+ channel. Use 1 for yes, 0 for no.
+
+ 40) Join to Message: Services must join a channel to send any message to
+ that channel (cannot override +n). Use 1 for yes,
+ 0 for no.
+
+ 41) Exceptions: Support for channel exceptions (mode +e). Use 1 for yes,
+ 0 for no.
+
+ 42) TS Topic Forward: Some IRCd's (like UnrealIRCd) like their topic TS
+ set forward by +1. Use 1 for yes, 0 for no.
+
+ 43) TS Topic Backward: Some IRCd's (mainly older DreamForge-like ones)
+ like their topic TS set back by -1. Use 1 for yes,
+ 0 for no.
+
+ 44) Protected Umode: UMODE_ define that defines the protected usermod.
+ Use 0 for no support, or enter the UMODE_ define.
+
+ 45) Admin: Support for channel admins (Mainly used by UltimateIRCd). Use
+ 1 for yes, 0 for no.
+
+ 46) SQline Channels: The IRCd's supports banning channel names via
+ SQLINES. Use 1 for yes, 0 for no.
+
+ 47) Quit On Kill: When we (SVS)KILL a user, does the IRCd send back a
+ QUIT message for that user? Use 1 for yes, 0 for no.
+
+ 48) SVSMODE -b: We can use SVSMODE to unban hosts from a channel. Use
+ 1 for yes, 0 for no.
+
+ 49) Protect: Support for channel protect (mode +a, mainly being used by
+ UnrealIRCd and ViagraIRCd). Use 1 for yes, 0 for no.
+
+ 50) Reverse: We can do a reverse check when unbanning. For use with
+ DreamForge based IRCd's. Use 1 for yes, 0 for no.
+
+ 51) Register Channels: Supports sending a channelmode for registered
+ channels. Use 1 for yes, 0 for no.
+
+ 52) Registered Mode: Channelmode to set on registered channels, see the
+ option above. Use 1 for yes, 0 for no.
+
+ 53) vIdent: Support for including a user's ident in their vHost. Use
+ 1 for yes, 0 for no.
+
+ 54) SVSHOLD: Support for temporarily 'holding' a nick, instead of using
+ a nick enforcer client. Use 1 for yes, 0 for no.
+
+ 55) TS on MODE: We need to send a timestamp when modes are being changed.
+ Use 1 for yes, 0 for no.
+
+ 56) NICKIP: The IP address of new users is being sent along with their
+ hostname when new users are being introduced on the network.
+ Use 1 for yes, 0 for no.
+
+ 57) Umode: We can use OperServ to change a user's mode. Use 1 for yes,
+ 0 for no.
+
+ 58) O:LINE: We can use OperServ to give some user a temporary O:LINE.
+ Use 1 for yes, 0 for no.
+
+ 59) Vhost On Nick: On NICK the IRCd sends the VHOST. Use 1 for yes,
+ 0 for no.
+
+ 60) Change Realname: Change real name. Use 1 for yes, 0 for no.
+
+ 61) Extra Help: If the IRCd has more help for functions in ChanServ than
+ the default help, you should put the language string
+ identifier here. Use 0 for no extra help.
+
+ 62) No Knock: CMODE_ that defines NO KNOCK. Use 0 for no support.
+
+ 63) Admin Only: CMODE_ that defines Admin Only. Use 0 for no support.
+
+ 64) Default MLock: Default channelmodes for MLOCK. Use 0 for no modes.
+
+ 65) Vhost Umode: UMODE_ that indicates if the user currently has a vHost.
+ Use 0 for no support.
+
+ 66) Flood Mode: The IRCd has a channelmode for blocking floods. Use 1 for
+ yes, 0 for no.
+
+ 67) Link Mode: The IRCd has a channelmode for linking a channel to some
+ other channel. Use 1 for yes, 0 for no.
+
+ 68) CMode F: CMODE_ that defines flood mode. Use 0 for no support.
+
+ 69) CMode L: CMODE_ that defines link mode. Use 0 for no support.
+
+ 70) Check Nick ID: Should we check if a user should remain identified when
+ changing their nick? This is for IRCd's that remove
+ their registered-user mode when someone changes their
+ nick (like Bahamut does).
+ Use 1 for yes, 0 for no.
+
+ 71) No Knock Requires +i: Does the No Knock channel mode require invite
+ only channels? Use 1 for yes, 0 for no.
+
+ 72) Chan Modes: If sent in CAPAB/PROTOCOL, we store it in here. This is
+ NULL by default.
+
+ 73) Tokens: Can we use tokens to talk to the IRCd? Use 1 for yes,
+ 0 for no.
+
+ 74) Token Case Senstive: Are the IRCd's TOKENS/COMMANDS case sensitive?
+ Use 1 for yes, 0 for no.
+
+ 75) base64 SJOIN TS: Are the timestamps sent with a SJOIN in base64? Use
+ 1 for yes, 0 for no.
+
+ 76) Supports +I: Does the IRCd support channelmode +I? Use 1 for yes,
+ 0 for no.
+
+ 77) SJOIN Ban Char: Character used to identify bans. Use ''.
+
+ 78) SJOIN Except Char: Character used to identify exceptions. use ''.
+
+ 79) SVSMODE UCMODE: Can we clear user channel modes with SVSMODE? Use
+ 1 for yes, 0 for no.
+
+ 80) SGline Enforce: Does the IRCd enforce SGLINES for us or do we need to
+ do so? Use 1 for yes, 0 for no.
+
+ 81) Vhost Character: The character used to represent the vHost mode, if
+ this is supported by the IRCd.
+
+ 82) TS6: Does the IRCd support TS6? Use 1 for yes, 0 for no.
+
+ 83) UMode +h: Does the IRCd support usermode +h for helpers?
+ Use 1 for yes, 0 for no.
+
+ 84) P10: Is this IRCd a P10-style IRCd? Use 1 for yes, 0 for no.
+
+ 85) Character Set: Unreal passes the character set during PROTOCTL,
+ the value is stored here. Set this NULL to start.
+
+ 86) Reports sync: Does the IRCd report when it's in sync (or done bursting,
+ depending on how you want to say it)? Remember to set
+ the sync state for servers correctly if it does.
+ Use 1 for yes, 0 for no.
+
+ 87) Channel CIDR: Set to 1 if channel bans, excepts and invites
+ support CIDR masks. Expected syntax: *!*@ip/mask.
+ When set to 1, anope will only parse strict CIDR masks.
+ IRCd's that try to correct invalid CIDR's (like nefarious)
+ will need a custom implementation in the core.
+ Contact the anope Dev Team if this is the case.
+ Set to 0 if CIDR's are not supported by your IRCd.
+
+ So we've had this long list. Now there's a second struct to fill. This
+ struct isn't as long as the previous one though, so we'll handle it quite
+ quick compared to the previous one.
+
+ IRCDCAPAB ircdcap[] = { }
+
+ This struct is based on the CAPAB defines. You should review the CAPAB
+ table below to see how this should be done.
+
+ Define Table
+ --------------------------------------------------------------------------
+ Define | Value | Token | Description
+ ----------------|------------|-----------|--------------------------------
+ CAPAB_NOQUIT | 0x00000001 | NOQUIT | NOQUIT protocol support
+ CAPAB_TSMODE | 0x00000002 | TS | Chanmodes are timestamped
+ CAPAB_UNCONNECT | 0x00000004 | UNCONNECT | UNCONNECT protocol support
+ CAPAB_NICKIP | 0x00000008 | NICKIP | IP sent in the NICK line
+ CAPAB_NSJOIN | 0x00000010 | SSJOIN | Smart SJOIN support
+ CAPAB_ZIP | 0x00000020 | ZIP | Support for gzipped links
+ CAPAB_BURST | 0x00000040 | BURST | Supports BURST command
+ CAPAB_TS3 | 0x00000080 | TS3 | Support for TS3 protocol
+ CAPAB_TS5 | 0x00000100 | TS5 | Support for TS5 protocol
+ CAPAB_DKEY | 0x00000200 | DKEY | DH-Key exchange using DKEY
+ CAPAB_DOZIP | 0x00000400 | ZIP | Link traffic will be gzipped
+ CAPAB_DODKEY | 0x00000800 | DKEY | Do DKEY with this link
+ CAPAB_QS | 0x00001000 | QS | Supports quit storm removal
+ CAPAB_SCS | 0x00002000 | SCS | String Cache System support
+ CAPAB_PT4 | 0x00004000 | PT4 | Support for PT4 protocol
+ CAPAB_UID | 0x00008000 | UID | Support for UIDs
+ CAPAB_KNOCK | 0x00010000 | KNOCK | Supports KNOCK
+ CAPAB_CLIENT | 0x00020000 | CLIENT | Supports CLIENT
+ CAPAB_IPV6 | 0x00040000 | IPV6 | Support for IPv6 addresses
+ CAPAB_SSJ5 | 0x00080000 | SSJ5 | Smart Join protocol 5 support
+ CAPAB_SN2 | 0x00100000 | SN2 | Support for SN2 protocol
+ CAPAB_VHOST | 0x00200000 | VHOST | Supports VHOST protocol
+ CAPAB_TOKEN | 0x00400000 | TOKEN | Supports s2s tokens
+ CAPAB_SSJ3 | 0x00800000 | SSJ3 | Smart Join protocol 3 support
+ CAPAB_NICK2 | 0x01000000 | NICK2 | Support for extended NICK (v2)
+ CAPAB_UMODE2 | 0x02000000 | UMODE2 | Supports UMODE2 command
+ CAPAB_VL | 0x04000000 | VL | VLine information in info field
+ CAPAB_TLKEXT | 0x08000000 | TLKEXT | Not 8, but 10 params in TKL's
+ CAPAB_CHANMODE | 0x10000000 | CHANMODE | Channel modes are passed here
+ CAPAB_SJB64 | 0x20000000 | SJB64 | SJOIN timestamps are base64 encoded
+ CAPAB_NICKCHARS | 0x40000000 | NICKCHARS | Character set used by the IRCD for nicks
+
+
+4) Modes
+
+ The next thing you should do is defining the user modes. You will want to
+ have your .h file handy for this part.
+
+ unsigned long umodes[128] = { }
+
+ This array goes from 0 to 127 in the ASCII character set. Insert the user
+ modes at the slot where the mode fits. If you are adding a the user mode
+ of +i find the 105th (ASCII code of 'i') character slot in the array, and
+ place the UMODE_i into this slot. Your base .c file should contain a good
+ start for this, as well as a little help locating the characters.
+
+ The following mode set is for the channel symbols. During a SJOIN event
+ the modes are sent usually before the nick. These normally are @, +, %
+ etc.. depending on the ircd. Starting at ASCII 0 and running to 127.
+ Replace the 0 with the character (o = @, h = %) for the given mode. In the
+ case of halfop which is usually sent as % replace the 37th character with
+ 'h', do this until all modes that are possible be received in this manor
+ have been inserted into the array.
+
+ Now that you have that complete, the following array is ready to be dealt
+ with. This is the cmmodes array, like the others it is a ASCII array
+ starting at 0 and going to 127. However at the given letter you will want
+ to enter the add, and delete function for the given mode. In the case of
+ bans (+b) there is add_ban, and del_ban. Anope provides functions for
+ bans, exceptions and invites, should your ircd have more then these please
+ contact Anope to discuss what can be done to add this mode.
+
+5) Functions and Events
+
+ A brief word about functions and events. All events are captured using:
+
+ void moduleAddIRCDMsgs(void)
+ {
+ m = createMessage("NICK", anope_event_nick);
+ addCoreMessage(IRCD,m);
+ }
+
+ Each event should have a event handler if its important enough to be
+ processed by services. All event functions should be formed like this:
+
+ int anope_event_capab(char *source, int ac, char **av)
+ {
+ return MOD_CONT;
+ }
+
+ They will receive the source; this can be NULL at times depending on the
+ event. Next, ac is the number of arguments that are in the event, and av
+ holds the values for each; so av[0] is the first variable, av[1] will be
+ the second one, and so on. Events are likely to pass to various upper
+ level event handlers; see the previous ircd source for how they handle
+ these events.
+
+ All commands are formed like this:
+
+ void anope_cmd_svsnoop(char *server, int set)
+ {
+ send_cmd(NULL, "SVSNOOP %s %s", server, (set ? "+" : "-"));
+ }
+
+ They may take any number of arguments, depending on the command. They
+ should eventually come to a send_cmd(); this root function is how
+ commands are sent to the IRCd.
+
+6) CAPAB/PROTOCTL
+
+ Most IRCD send a CAPAB or PROTOCTL line so that they can work out what
+ the other end of the connection is capable of doing. Anope has a function
+ to read these lines and set itself up to to handle these events better.
+ When adding support for your ircd, take the following steps.
+
+ 1) In the ircd.c find the function anope_cmd_capab(); this function will
+ send the CAPAB/PROTOCTL line (consult your ircd documentation for
+ which to send). In a single line type in the tokens that anope must
+ send. Here is an example of Hybrid's capab line:
+
+ /* CAPAB */
+ void anope_cmd_capab()
+ {
+ send_cmd(NULL, "CAPAB TS5 EX IE HOPS HUB AOPS");
+ }
+
+ 2) In the ircd.h file make sure to place the defines (see below) that
+ match your IRCd's tokens; only use the ones that matter to your ircd.
+ Should your IRCd add new features not covered in the defined, please
+ contact the Anope Dev team before doing so. See README for information
+ on how to contact the Anope team.
+
+ 3) Ensure that the CAPAB/PROTOCTL event his handled correctly.
+
+ A) In the function "moduleAddIRCDMsgs" making sure that you have the
+ following two lines:
+
+ m = createMessage("CAPAB", anope_event_capab);
+ addCoreMessage(IRCD,m);
+
+ B) Add the function to handle the event
+
+ int anope_event_capab(char *source, int ac, char **av)
+ {
+ capab_parse(ac, av);
+ return MOD_CONT;
+ }
+
+ This function should call the capab_parse function which parses
+ the received CAPAB/PROTOCTL line.
diff --git a/docs/MODULES b/docs/MODULES
new file mode 100644
index 000000000..6c1fbcc8a
--- /dev/null
+++ b/docs/MODULES
@@ -0,0 +1,124 @@
+Anope Modules
+-------------
+
+1) Introduction
+2) Installation
+3) Usage
+4) Usage Example
+5) More Modules
+6) Support
+7) Information for Developers
+8) Modules Repository
+
+1) Introduction
+
+ Anope 1.6 onwards supports external modules. External modules are pieces
+ of code that can be attached to a running Anope process dynamically. These
+ modules can serve several purposes, and perform all kind of operations to
+ enhance your network.
+
+2) Installation
+
+ 1. If modules are supported by your system, they will be configured
+ automatically when you run ./Config. The modules will be installed
+ to the modules directory in your data path (by default this will
+ be ~/services/modules).
+
+ Note: you might need to run "make distclean" prior to running ./Config
+
+ 2. Compile Anope as usual. The (g)make process will now compile module
+ support into Anope, and compile the default sample modules, and/or
+ any other module located on the modules folder ("src/modules/").
+
+ 3. Install Anope as usual. The install process will place the compiled
+ modules in their runtime location, making them available for loading.
+
+ 4. Start or restart services to make use of the new Anope executable.
+ Note that you do not need to restart to load new or changed modules,
+ only to make use of a new Anope executable.
+
+3) Usage
+
+ All module manipulation commands are done through OperServ. These are:
+
+ MODLOAD Load a module
+ MODUNLOAD Un-Load a module
+ MODLIST List loaded modules
+ MODINFO Info about a loaded module
+
+ These commands available to Service Roots only.
+
+ You can also load (and pre-load) Modules automatically by loading them
+ on startup. To do so, edit your services.conf file and change the values
+ of "ModuleAutoload" and "ModuleDelayedAutoload" to include the modules
+ you want to load every time Anope starts.
+
+4) Usage Example
+
+ /msg OperServ modload hs_moo
+ *** Global -- from OperServ: dengel loaded module hs_moo
+ -OperServ- Module hs_moo loaded
+
+ /msg OperServ modinfo hs_moo
+ -OperServ- Module: hs_moo Version: 1.1 Author: Anope loaded: Mar 21 10:54:37 2004 CLT
+ -OperServ- Providing command: /msg HostServ moo
+
+ /msg HostServ moo
+ -HostServ- MOO! - This command was loaded via a module!
+
+ /msg OperServ modunload hs_moo
+ *** Global -- from OperServ: dengel unloaded module hs_moo
+ -OperServ- Module hs_moo unloaded
+
+ /msg HostServ moo
+ -HostServ- Unknown command moo. "/msg HostServ HELP" for help.
+
+ * Note that the name of the module file is "hs_moo.c", yet we load
+ and reference the module as "hs_moo" only. By naming convention
+ modules have an abbreviated service name they attach to (hs_ for
+ HostServ, cs_ for ChanServ, etc) followed by a descriptive keyword.
+
+5) More Modules
+
+ Anope ships with three sample modules that only illustrates some of the
+ implemented module capabilities. They don't really do much or anything
+ useful.
+
+ You can download more useful modules from http://modules.anope.org/. Just
+ grab the module file (usually with a .c extension). Place the module
+ file in your modules (src/modules) folder; the same folder that contains
+ both hs_moo.c and catserv.c module files.
+
+ The new modules need to be compiled and installed before you can make
+ use of them:
+
+ 1. Make sure you're in the main source directory. (usually anope-1.X.XX/)
+ 2. Run `make modules` to compile any new or changed modules.
+ 3. Run `make install` to install the modules.
+
+ You can now use /msg OperServ MODLOAD to load the new modules.
+
+6) Support
+
+ The Anope team is not responsible or liable for any unofficial module
+ (i.e. anything other than what was released with the Anope package).
+
+ Use modules at your own risk, and make sure you get them from a
+ reputable source. You might get module support by contacting the module
+ author, posting on our online forum, or maybe on our #anope channel
+ at /server irc.anope.org.
+
+7) Information for Developers
+
+ There are a number of useful documents on the Anope Wiki. The Anope Wiki
+ can be reached at:
+
+ * http://wiki.anope.org/
+
+
+8) Modules Repository
+
+ You can find modules at http://modules.anope.org
+
+ These modules are 3rd party and as such are not supported by the Anope Team.
+ Contact the Module Author directly with problems, not the Anope Team.
diff --git a/docs/MYSQL b/docs/MYSQL
new file mode 100644
index 000000000..1dd10298e
--- /dev/null
+++ b/docs/MYSQL
@@ -0,0 +1,109 @@
+Anope MySQL Support
+-------------------
+
+1) Introduction
+
+ Anope 1.6 onwards supports MySQL databases. On Anope 1.6.0 only PHASE 1
+ has been implemented. Since the next phases require major changes in the
+ core, we decided to save it for 2.0. However, having your db's easily
+ accessible on your website is still a great feature.
+
+ PHASE 1:Anope will be able to save all it's databases to MySQL. It will
+ happen in conjunction with the current FFF databases. This first step is
+ nothing more than a MySQL dump of the databases (i.e. read-only), since
+ Anope will not (for now) read from Mysql. (COMPLETED)
+
+ PHASE 2:The next step is load the databases from MySQL, being able to
+ replace the FFF completely as an archive method (since all changes to
+ the MySQL db would be lost on the next Services save). All, while keeping
+ FFF intact. This is still not the final goal, but it's a milestone.
+ (COMPLETED)
+
+ UPDATE: Anope 1.7.0 (Revision 11 and above) finally supports phase 2!
+ A new config directive called 'UseRDB' has been added.
+ If you enable this, anope will automatically try to load its
+ data from MySQL (if configured and compiled with).
+
+ PHASE 3:The next step, and most convoluted of all (since we'll need to
+ modify pretty much all the source) is to load/save (SELECT/INSERT) data
+ in realtime. That way the MySQL db could be modified externally (web?).
+ Again, the FFF will be kept intact.
+
+2) Requirements
+
+ 1. MySQL server version 3.23.32 or greater
+ 2. MySQL libs and development files (usually called mysql-dev).
+ 3. A MySQL user account
+ 4. A MySQL database
+
+3) Installation
+
+ 1. The ./Config script automatically detects if your system is capable
+ of running Anope with MySQL support. There is no need anymore to
+ answer yes when asked.
+
+ Note: You might need to run "make distclean" prior to running ./Config
+
+ 2. Compile Anope as usual. The (g)make process will now compile MySQL
+ support into Anope.
+
+ 3. Install Anope as usual.
+
+4) Configuration
+
+ 1. Go to your "services bin directory" (eg: /home/someuser/services/) and run mydbgen
+ to help on the schema creation and adjustments.
+
+ 2. Edit services.conf and add your MySQL data to the MySQL configuration
+ block.
+
+ 3. Start or restart services to make use of the new Anope executable.
+
+5) Security
+
+ To add a layer of security you have the option of encrypting or encoding
+ all passwords for nicks and chans. Use the "MysqlSecure" directive on your
+ services.conf file to enable it. The available storage methods are:
+
+ #MysqlSecure ""
+
+ or
+
+ MysqlSecure ""
+
+ Disables security. All passwords will be saved on the MySQL database
+ as clear text, with no encryption or encoding. FASTEST
+
+ MysqlSecure "des"
+
+ Encrypts all passwords using a UNIX DES encryption. This is a one way
+ encryption algorithm. You can only validate it against another DES
+ encrypted string, using the same "salt" (the first two characters of
+ the encrypted string). FAST
+
+ MysqlSecure "md5"
+
+ Calculates an MD5 128-bit checksum for the password. The value is
+ returned as a 32-digit hex number that may be used as a hash key.
+ This is a one way encryption algorithm. SLOW
+
+ MysqlSecure "sha"
+
+ Calculates an SHA 160-bit checksum for the password. The value is
+ returned as a 40-digit hex number. This is a one way encryption
+ algorithm. SLOWEST
+
+ MysqlSecure "mykey"
+
+ Encodes the passwords using "mykey" as the encryption password. It
+ produces a binary string and can be decoded using the MySQL built in
+ function DECODE(crypt_str,mykey). VARIABLE
+
+ Caveat: Keep in mind that this if you use any method other than clear
+ text, services will need to encrypt/encode every single password on
+ every database save. On large networks, it may impact responsiveness
+ during the saves.
+
+ Caveat: If you enable MysqlSecure you can not longer use the UseRDB directive
+ as all the password types are encrypted with a one way encryption method for
+ older MySQL servers.
diff --git a/docs/NEWS b/docs/NEWS
new file mode 100644
index 000000000..8b31c751b
--- /dev/null
+++ b/docs/NEWS
@@ -0,0 +1,55 @@
+Highlighted News in Anope 1.8
+============================================
+ * Added a new and improved ./Config script.
+ * Added MySQL phase 2 implementation (see docs/MYSQL).
+ * Added NickServ registration delays.
+ * Added read receipts for memos.
+ * Added a way for modules to store data with internal structures.
+ * Added nick tracking support.
+ * Added support for SVSHOLD.
+ * Added support for U:Lined servers.
+ * Added support for TS6 IRCd's.
+ * Added support for Windows.
+ * Added internal events for modules.
+ * Added a way to suspend nicks.
+ * Added support for module configuration directives.
+ * Added translation support for modules.
+ * Added a module pack with handy modules.
+ * Added IRCd protocol modules.
+ * Added support for new IRCd's. Currently supported:
+ - Bahamut 1.4.27 or later (including 1.8)
+ - Charybdis 1.0 or later
+ - DreamForge 4.6.7
+ - Hybrid 7 or later
+ - InspIRCd 1.0 or later (including 1.1)
+ - Plexus 2.0 or later (including 3.0)
+ - PTLink 6.15 or later
+ - RageIRCd 2.0 or later
+ - Ratbox 2.0.6 or later
+ - ShadowIRCd 4.0 beta 7 or later
+ - Solid IRCd 3.4.6 or later
+ - UltimateIRCd 2.8.2 or later (including 3.0)
+ - UnrealIRCd 3.1.1 or later (including 3.2)
+ - ViagraIRCd 1.3 or later
+ * Added new languages. Currently included:
+ Catalan, German, English, Spanish, French, Greek,
+ Hungarian, Italian, Dutch, Polish, Portugese,
+ Russian, Turkish
+ * Added support for CIDR channel lists.
+ * Converted the core to be completely modular.
+ * Improved random number algorithm.
+ * Removed proxy detector (see docs/PROXY).
+ * Fixed various exploits and vulnerabilities.
+ * Fixed various language typos and inconsistencies.
+ * Fixed a bug in the database system causing nickserv passwords
+ to be saved incorrectly. Note that this breaks backwards
+ compatibility on nick.db !!!
+
+
+
+For the full changes, see the Changes file.
+
+For announcements and discussions about Anope, please visit our
+web site http://www.anope.org
+
+
diff --git a/docs/OLDCHANGES b/docs/OLDCHANGES
new file mode 100644
index 000000000..af1ca30e5
--- /dev/null
+++ b/docs/OLDCHANGES
@@ -0,0 +1,1299 @@
+Anope Version 1.6.0
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2004/03/22 Added and updated several documents on "docs" folder.
+2004/03/22 Added bin/dbgen to help MySQL db schema.
+2004/03/21 Fixed module makefile to use -Wall for new modules
+2004/03/21 Fixed config check startup warnings (0000467)
+2004/03/21 Fixed bug where mkdir should be mkdir -p to create parent (0000468)
+2004/03/22 Fixed Crash on channel memo (0000347)
+
+Anope Version 1.5.15
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2004/03/14 Fixed LogBot and LogChan issue (0000437)
+2004/03/14 Fixed tiny bug in french lang file (0000465)
+2004/03/14 Fixed chanmode +r not being removed. (0000462)
+2004/03/12 Fixed MySQL limited data fields (0000434)
+2004/03/12 Fixed a cosmetic typo (0000440)
+2004/03/14 Fixed mysql (null) values (0000450)
+2004/03/06 Fixed module duplicate functions (0000431)
+2004/03/06 Fixed module unload issue (0000432)
+2004/03/13 Fixed missing channel fields on MySQL schema
+2004/03/13 Fixed MySQL calls even when disabled.
+2004/03/07 Fixed a malformed mode crash for some ircd's
+2004/03/13 Added db save on startup
+
+Anope Version 1.5.14
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2004/02/17 Disabled modules on OpenBSD for the time being (0000408)
+2004/02/15 Added Viagra's VS command to handle vHosts properly (0000404)
+2004/02/15 Fixed HostSetters to cover all aliases in the group (0000412)
+2004/02/07 Fixed channel '#' may not be registered anymore (0000030)
+2004/02/07 Fixed opers can't /OS MODE on +A chans anymore (0000403)
+2004/02/07 Fixed registration via group on nicknames preconfirmation (0000400)
+2004/02/14 Fixed hardcoded references to "OperServ" (0000411)
+2004/02/19 Fixed nickserv list problem with unconfirmed nicknames (0000406)
+2004/02/14 Fixed DefCon to cover more cases properly (0000407)
+2004/02/02 Fixed bug where non-id'ed nicks could do /cs identify
+2004/02/07 Fixed bug where you could /cs identify infinite times
+2004/02/09 Fixed incorrect help files Changed ServicesAdmin->SuperAdmin
+2004/02/14 Fixed typos in en_us.l language file
+
+Anope Version 1.5.13
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2004/01/30 Fixed malformed buffer bug (0000398)
+2004/01/31 Fixed OperServ news system reordering. (0000396)
+2004/01/19 Fixed minor typos on en_us.l (0000380) (0000381)
+2004/01/31 Fixed ALL option for ChanServ info (0000395)
+2004/01/18 Fixed HostServ Set message for non-registered nicks
+
+Anope Version 1.5.12
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2004/01/12 Added optimized language parser
+2004/01/11 Added moduleSetHelpHelp to modules.h
+2004/01/11 Added updated documentation
+2004/01/12 Added language tool (langtool.pl)
+2004/01/13 Added line length check (>60 char) to langtool.pl
+2004/01/17 Added better MySQL detection on configure script
+2004/01/17 Removed ExtSock experimental code
+2004/01/07 Fixed broken CHANKILL expire (0000333)
+2004/01/03 Fixed bot creation issue (0000348)
+2004/01/11 Fixed /OS STAFF output (0000346)
+2004/01/11 Fixed bot change/creation error (0000348)
+2004/01/03 Fixed /MS STAFF output (0000356)
+2004/01/07 Fixed modunload crash with disabled services (0000370)
+2004/01/17 Fixed missing HostServ on HelpServ help list (0000377)
+
+Provided by GeniousDex
+2004/01/04 Updated nl.l (Dutch language File)
+2004/01/11 Updated documentation
+
+Anope Version 1.5.11
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/12/12 Fixed all printf parameters on all language files
+2003/12/08 Fixed HOST_HELP string for all languages (0000340)
+2003/12/08 ChanServ and NickServ LIST's now accept #X-Y for seaching
+2003/12/09 Nickname enforcer will now kill instead of svsnick on hybridircd
+
+Provided by Oleg Nikolaev aka Isot <isot@complife.ru>
+2003/12/12 New ru.l (Russian lang file)
+
+Provided by DrStein
+2003/12/12 Updated es.l (Spanish language File).
+
+Provided by GeniousDex
+2003/12/12 Updated nl.l (Dutch language File).
+
+Provided by Stuff <the.stuff@gmx.de>
+2003/12/09 Updated de.l (German lang file)
+
+Anope Version 1.5.10
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/11/24 New version of putanope to make more robust
+2003/11/24 New #defines for version tokens (see built version.h)
+2003/11/24 New version schema: major.minor.patch.build
+2003/11/16 Fixed mlock +c on Ultimate3 (0000320)
+2003/11/16 Fixed BotServ +ao on PTLink (0000313)
+2003/11/16 All channel modes now supported on PTLink (0000311)
+2003/11/16 Absolute mode cleaning for /CS CLEAR #chan MODES
+2003/11/16 Services will now kill users on hybrid instead of svsnick (0000240)
+2003/11/15 Fixed a bug with module message's
+2003/11/15 Added a generic footer to list's without (0000222)
+2003/11/15 Adding a ./configure script to modules folder
+2003/11/15 Removed Experimental status from Module and Viagra
+2003/11/15 Fixed /ms staff on memo notifucation (0000221)
+2003/11/09 Fixed compile.sh for bsd based systems
+2003/11/09 Fixed bug in moduleDelCallback routine
+
+Anope Version 1.5.9
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/11/03 Added optional MysqlSecure password security directive
+2003/11/03 Fixed case insensitive password fields on MySQL (0000196)
+2003/11/03 Fixed /OS STAFF bug not showing online aliases (0000124)
+2003/11/03 Fixed wrong /CS HELP output on Ultimate2/3 (0000189)
+2003/11/02 Fixed empty fields on the cs_access table (0000197)
+2003/11/02 Fixed SA's unable to /NS LOGOUT themselves (0000288)
+2003/11/02 Fixed SQLINE help syntax (0000291)
+2003/11/01 Added moduleDelCallback for module coders
+2003/11/01 Modified module AnopeInit call, fixed bug (0000289)
+2003/11/01 Fixed error in pt.l file and memoserv help
+2003/10/29 Fixed -h bug for valid halfop's when joining a empty chan (0000245)
+2003/10/29 Fixed forbidden chan spammy log file bug (0000284)
+
+Provided by GeniusDex <geniusdex@twistification.net>
+2003/11/01 Converted HelpServ into a "real" services, modules now work for it
+
+Anope Version 1.5.8
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/10/08 Fixed compile errors on PTLink and Ultimate3 as nither have vIdents
+2003/10/17 Fixed double TAB on language files (0000283)
+2003/10/14 Added a check on nicksserv logout so you can't logout services admins
+2003/10/17 Added new configuration directive AnonymousGlobal (0000116)
+
+Provided by ShadowMaster <ShadowMaster@Shadow-Realm.org>
+2003/10/08 Added NickIP Akill matching
+
+Anope Version 1.5.7
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/10/05 Added /ns update to replace further identifies, /ns identify will now only work once
+2003/10/03 Added check_unload function to modules. (like on-error unloading)
+2003/10/03 Added directive MysqlPort
+2003/09/22 Added moduleHelp framework for module coders, see hs_moo.c
+2003/09/21 Added moduleGetLastBuffer() and a module cmdTable bug fixed
+2003/08/16 Added moduleAddCallback command for module coders
+2003/10/06 Fixed bug with botserv bot creation when using services-aliases. (thanks to Killerchen)
+2003/10/05 Fixed vident on ban issue (bug 0000268)
+2003/10/05 Fixed memo order reset on deletion (bug 0000270)
+2003/09/07 Fixed clearmodes issue (bug 0000121)
+2003/09/07 Fixed ServicesRoot reload issue (bug 0000194)
+2003/09/07 Fixed empty ip proxy crash (bug 0000217)
+2003/09/04 Fixed bug ref: 0000170 - optional ""'s in mail sending
+2003/07/28 Fixed Channel DROP then FORBID crash on MySQL (0000199)
+2003/07/28 Fixed HostServ launch on Viagra and PTlink (0000190)
+2003/07/27 Fixed BotServ bots now unkickable on Ultimate3 (0000159)
+2003/07/27 Fixed Hybrid NICK_IS_REGISTERED dupe (0000184)
+2003/07/27 Fixed PTlink /newmask issue (0000188)
+2003/07/20 Fixed MySQL compile errors on Ultimate
+2003/07/20 Fixed PTlink sbuf compile error
+2003/07/20 Fixed chanserv badword MySQL issue
+2003/08/30 Allow for E/F lines when handling akilled host's joining the network
+2003/07/25 Added External socket support (*VERY* EXPERIMENTAL)
+2003/07/20 Made MySQL ns_id, na_id and ci_id useful by preserving it's value across updates
+2003/07/20 Some MySQL Optimizations (MySQL 3.23.32+ required)
+
+Provided by DrStein
+2003/10/05 Updated es.l (Spanish language File).
+
+Anope Version 1.5.6
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/07/16 Reimplemented +oa and +oq on net-joins and ModeOnId (less intrusive)
+2003/07/16 Added bin directory with misc tools
+2003/07/12 Fixed chankill no expire
+2003/07/13 Fixed BotServ bug when trying to add a bot with a services client's name.
+2003/07/10 Changed mlock_key from int to a String in mysql.c (Thanks goto Trystan)
+2003/07/09 Added request Syntax. Changed version to show the actual compiled Ircd's name.
+2003/06/29 Added services/modules/runtime for tmp storage of .so files
+2003/06/29 Fixed a small bug in nickserv load.
+2003/06/29 Fixed multiple chan modes at once Ulitmate issue
+
+Anope Version 1.5.5
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/06/24 Added the ability to autoload modules at services startup
+2003/06/23 Now MySQL functionality is optional even when compiled with MySQL support
+2003/06/23 Combined +oq +oa +ha +va on net-joins.
+2003/06/22 Prevent botserv say sending a ctcp to a channel
+2003/06/22 Fixed nickserv setting +d on users using group
+2003/06/22 Fixed non services admins able to drop nick's still awaiting a email code
+2003/06/17 Added EXPERIMENTAL module support.
+
+Provided by GeniusDex <geniusdex@twistification.net>
+2003/06/23 Dutch language file.
+
+Anope Version 1.5.4
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/06/11 Added RemoteServer2 and RemoteServer3 to the conf. If one server is down, the services will try the next one.
+2003/06/06 Added /MS SENDALL to send a massmemo to all registered users
+2003/06/03 Renamed function log() to alog() to prevent gcc3.3 warnings
+2003/06/03 Services now WALLOPS about db saves on /os shutdown
+2003/06/03 Modified NetworkDomain directive to allow multiple domains
+2003/06/03 Added NSRestrictGetPass and CSRestrictGetPass directives to restrict access to getpass command.
+2003/06/03 Added a directive in the conf that makes ChanServ opers only.
+2003/06/02 Added phase 1 of MySQL Support
+
+Anope Version 1.5.3
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/05/31 Removed TitanIRCd support. Difference willnot allow joint support
+2003/05/25 Custom GlobalOnCycle message
+2003/05/25 Defcon reject all new connections Kill message.
+2003/05/25 CHANKILL will not akill opers in the channel
+2003/05/25 Add command for MemoServ to send memo to all Admins/Opers
+2003/05/24 Fixed /os restart bug
+2003/05/24 Updated lang files - various errors/bug fixs
+2003/05/23 Fixed NSModeOnID it will only set unset modes (as far as possible)
+
+Provided by Popcorn <popcorn@anope.org>
+2003/05/26 Added ViagraIRCd 1.3.x / TitanIRCd 2.0.3 support (experimental)
+
+Provided by James <slowking50@aol.com>
+2003/05/30 Fixed deleting ban exceptions.
+2003/05/29 Added a much improved services ignore that can use wildcards.
+2003/05/24 Added Hybrid 7 support - james your the daddy! :-)
+
+Provided by openglx <openglx@brasnerd.com.br>
+2003/05/26 Added PTlink 6.15.0 or later support (experimental)
+
+Anope Version 1.5.2
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/05/20 Added GlobalOnDefcon to global current Defcon Level when set
+2003/05/20 Added GlobalOnDefconMore to allow admin to attach a msg to users
+2003/05/15 Added No New Memos to Defcon
+2003/05/15 Edit lanuage file to allow the user to know services are in Defcon
+2003/05/15 Added /NS GETEMAIL to allow matches of nick to email (0000013)
+2003/04/28 Added /OS SVSNICK to forcefully change a user's nickname
+
+Anope Version 1.5.1
+--------------------
+Provided by Anope Dev. <dev@anope.org> :)
+2003/04/27 Added Forbid/Suspend reason on akick if defined (0000023)
+2003/04/27 Added /OS CHANKILL command to deal with botnet channels (0000066)
+2003/04/26 Added DEFCON framework, along with basic settings
+2003/04/23 Removed Sequana IRCd support as well as conversion from IRCservices v4.4
+2003/04/19 Added HostSetters directive to allow NON-OPERS to use HostServ
+2003/04/19 Added Operserv Staff command feature request: 0000018
+2003/04/18 Added a pattern matching + range specifying to /HostServ LIST
+2003/04/18 Added DELALL command to HostServ to compliment SETALL
+2003/04/14 Services Root Admins are no longer affected by MailDelay
+2003/04/10 Added user's ident and host to WallBadOS
+2003/04/02 The old chanbot will now part on a /bs assign (smarter assign)
+2003/04/02 Added name tag for globalmsgs (shows the name of the sender)
+
+Anope Version 1.4.23
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/05/18 Fixed /ns list display error with no-expire
+2003/05/15 Fixed Exception move bug
+2003/05/15 Fixed /msg Operserv noop issue
+2003/05/05 Fixed Invalid nick/host/ident when using /bs bot CHANGE
+
+Anope Version 1.4.22
+--------------------
+Provided by Anope Dev. <dev@anope.org>
+2003/04/27 Fixed unsuspend crash when the # sign was left out
+2003/04/27 Fixed JOIN modes not set correctly internaly (e.g. for /cs clear ops)
+2003/04/26 Fixed OperServ jupe will only attempt to Jupe valid server masks
+2003/04/26 Fixed SETHOST for nonexistent user nickname in log files
+2003/04/26 Fixed Nonrelevant compiler warning (eof on botserv.c)
+2003/04/26 Fixed vIdent support for Ultimate2.x
+
+Provided by James <slowking50@aol.com>
+2003/04/26 Fixed No valid tld and logchan issue on Ultimate3
+
+Anope Version 1.4.21
+--------------------
+Provided by Anope Dev. <dev@anope.org> (thanks goto PopCorn)
+2003/04/20 Fixed BotServ nick/host/ident checking
+2003/04/20 Fixed HostServ valid host/ident checking
+
+Anope Version 1.4.20
+--------------------
+Provided by PopCorn
+2003/04/18 Fixed xOP permission problem
+
+Anope Version 1.4.19
+--------------------
+Provided by Anope Dev. <dev@anope.org> :)
+2003/04/12 Fixed MSNofityAll bug that crashed Services.
+2003/04/12 Fixed MD5 compilation error.
+
+Anope Version 1.4.18
+--------------------
+Provided by Anope Dev. <dev@anope.org> :)
+2003/03/27 SUSPENDed Channels can't be DROPed by Founder anymore
+2003/03/27 Fixed a couple of log'ing errors to tidy logfiels up a bit
+2003/03/20 Fixed a minor epona bug with !unban (BotServ will now
+ check the UNBAN level instead of the OPDEOP level)
+2003/03/14 On Ultimate3 you can now MLOCK +NSA.
+ Please note that MLOCK'ing +A and +O will only work on
+ Ultimate3.a31 and later.
+2003/03/11 Fixed buffer bug with long akill reasons and AddAkiller
+2003/03/08 MemoServ notification for Channel memos, upon join and send.
+2003/03/07 SuperAdmin can now be turned ON/OFF on a per-admin basis
+ logging of use is also added.
+2003/03/07 Added OperServ ignore function
+2003/03/07 Added optional globalmsg on startup and shutdown/restart
+2003/03/07 Added config option to hide Services stats o from non-opers
+2003/03/05 Fixed a bug with clearmodes
+2003/03/03 Added OperServ umode function to change usermodes (SuperAdmin only)
+2003/03/03 Added OperServ oline function to give operflags to users (SuperAdmin only)
+2003/03/03 Fixed several issues with +p users and ChanServ/Botserv
+ kick and negative mode changes.
+2003/03/02 Added Optional Channel ModeOnID
+2003/02/22 Added email verification when registering a nick
+2003/02/22 Added HostServ GROUP command, to allow users to sync
+ all vHost's in a nick group.
+2003/02/22 Added /MS DEL LAST
+2003/03/21 Updated it.l (Italian language File).
+2003/03/21 Updated es.l (Spanish language File).
+2003/03/21 Updated de.l (German language File).
+
+Provided by Kevin <kevin@botstats.com>
+2003/03/21 Updated fr.l (French language File).
+
+Anope Version 1.4.17
+--------------------
+Provided by Anope Dev. <anope@zero.org> :)
+2003/03/02 Fixed HostServ bug on non VHOST ircds.
+2003/02/20 Fixed the -logchan -debug bug, now they are mutualy exclusive
+2003/02/19 Added the #define HAS_VIDENT to signify an ircd able to
+ dynamicaly change a user's ident
+2003/02/19 HostServ updated to allow ident@host's for compatiable
+ ircds
+2003/02/19 NickServ ALIST command added which deprecates ChanServ
+ CLIST/ALIST
+2003/02/19 Complain to the oper about long vhosts
+2003/02/19 Added sanity check on vHost on HostServ SET/SETALL
+2003/02/19 Fixed HostServ support for UltimateIRCd 3.0.0
+2003/02/18 NS INFO ALL shows the vHost if it was set with hostserv
+2003/02/18 NS ID is an alias for NS IDENTIFY
+2003/02/18 Updated it.l (Italian language File).
+2003/02/18 Updated es.l (Spanish language File).
+2003/02/17 Fixed KILL (Alias Recovery) bug.
+2003/02/17 Fixed CHAN_CLIST_FORMAT on all languages.
+2003/02/17 Removed "scalloc" warnings.
+
+Provided by Seb <seb@iftouch.net>
+2003/02/18 Updated fr.l (French language File).
+
+Provided by Certus <Certus@irc-downloads.de>
+2003/03/01 Updated de.l (German language File).
+
+Anope Version 1.4.16
+--------------------
+Provided by Anope Dev. <anope@zero.org>
+2003/02/16 Fixed all language files to conform to latest index
+2003/02/15 Fix for Bahamut/Ultimate3 AKILL command.
+2003/02/14 CS XOP ADD moves an existing xop nick between lists
+2003/02/14 CS ACCESS LIST shows xop properly instead of levels
+2003/02/14 CS ALIST implemented
+2003/02/14 CS CLIST modified for users
+2003/02/13 HostServ Support + Alias
+2003/02/13 CS SUSPEND/UNSUSPEND implemented
+2003/02/13 Kill recovery for Aliases
+2003/02/13 Exception checking banning mechanism
+
+Anope Version 1.4.15
+--------------------
+Provided by Daniel Engel <dane@zero.org>
+2003/02/03 Interim name change for the project to Anope.
+2003/02/03 Created Changes.conf for services.conf changes.
+2003/02/03 Portuguese Language File up to date.
+2003/02/03 Spanish Language File up to date.
+2003/02/03 RAW messages now logged.
+2003/02/03 Access list DELETE and CLEAR now logged.
+2003/02/03 Added Super Admin founder of all (view new example.conf).
+2003/02/03 Prepend nick to AKILL reason (view new example.conf).
+2003/02/03 Added AKILL reason to WallOSAkill notifier.
+2003/02/03 Added BotServ !k alias of !kick.
+2003/02/03 Logging BotServ ACT and SAY to a channel (view new example.conf).
+2003/02/03 Added a more informative error on disabled RAW command.
+2003/02/03 Fixed most compile warnings.
+
+Provided by Lucas Nussbaum <lucas@lucas-nussbaum.net>
+2003/02/03 Access Denied Logging.
+2003/02/03 Services Alias (view new example.conf).
+2003/02/03 Split Buffer exploit fix.
+
+Provided by David Narayan <jester@phrixus.net>
+2003/02/03 Logging to a channel + CLI flag (view new example.conf).
+
+Provided by David <dv@diboo.net>
+2003/02/03 OperServ corruption notification.
+
+Provided by JH <jh@irc-chat.net>
+2003/02/03 ChanServ end of ACCESS list notification.
+
+Provided by Thomas Juberg <ShadowMaster@Shadow-Realm.org>
+2003/02/03 UltimateIRCd version 3.0.0.1 (mod-1.2) support.
+
+Provided by Daniele Nicolucci <jollino@sogno.net>
+2003/02/03 Italian language file.
+
+Epona Version 1.4.14
+--------------------
+2002/09/01 Nickname SQLINEs are now also enforced on nick change.
+ Reported by vandit <castortroy@piranho.net>
+2002/08/27 Made NickServ and ChanServ log certain events more
+ verbosely.
+2002/08/27 Added LogUsers configuration directive.
+2002/08/20 Fixed NickServ password encryption for newly registered
+ nicknames.
+ Reported by -ozone <ozone@securify.org.uk>
+2002/08/20 ChanServ will now also convert halfops to the HOP list
+ when switching to the xOP system.
+ Reported by Daniele Nicolucci <jollino@sogno.net>
+2002/08/20 Fixed Operserv NOOP command for non-Bahamut networks.
+ Reported by zak beam <zak@beam.dropbear.id.au>
+
+Epona Version 1.4.13
+--------------------
+2002/08/13 Added ProxyMessage5 to 8 configuration directives.
+2002/08/13 Added a Greek language file.
+ Submitted by Sergios Karalis <sergios_k@hotmail.com>
+2002/08/13 Fixed proxy detector so that it doesn't akill legitimate
+ Apache HTTP servers.
+2002/08/13 Fixed Unreal support so that akills work again with recent
+ Unreal releases.
+ Reported by Daniele Nicolucci <jollino@sogno.net>
+2002/08/13 Upgraded Sequana support to 0.3.0.
+
+Epona Version 1.4.12
+--------------------
+2002/06/23 Fixed bug in NOTICE/GLOBOPS/PRIVMSG string formatting.
+ Reported by lucas <lucas@lucas-nussbaum.net>
+ and Aristotles.
+2002/06/23 BotServ BOT ADD cannot drop a Services admin's nick
+ anymore when NSSecureAdmins is enabled.
+ Reported by AnGe_HwOaRaNg <ange.hwoarang@free.fr>
+2002/06/23 Kick reasons now have a limited length.
+ Reported by BSD Admin <bsd@internetmx.com>
+2002/06/23 The current value of CSMaxReg is now used for all groups,
+ not only new ones.
+ Reported by Daniel Engel <dane@zero.org>
+
+Epona Version 1.4.11
+--------------------
+2002/05/03 Fixed the cosmetic issue in /stats o seen when the
+ config file has been reloaded.
+ Reported by [ins4ne] <ins4ne@gmx.net>
+2002/05/03 Fixed a bug in the HTTP proxy detection.
+ Reported by Marcel Stutz <solaris@swissirc.ch>
+2002/04/22 "Fixed" the RAW command that was slightly broken.
+ Added the DisableRaw configuration directive that
+ breaks it again.
+2002/04/14 Added a check in ChanServ LEVELS to make sure the
+ submitted level is valid.
+2002/04/14 The BotServ SET DONTKICKOPS option now also protects
+ the +h/+a/+q users.
+2002/04/14 ChanServ now also checks and removes the +h mode on
+ join and in the SECUREOPS check.
+2002/04/14 Renamed the default crontab script from services.chk
+ to example.chk and updated the documentation
+ accordingly.
+2002/04/14 Fixed a bug in the UsePrivmsg feature.
+ Reported by David Narayan <jester@phrixus.net>
+2002/04/04 Fixed /stats l output.
+ Reported by lucas <lucas@langochat.net>
+
+Epona Version 1.4.10
+--------------------
+2002/02/27 Fixed the bug in MemoServ SEND that was also fixed
+ in ircservices.
+2002/02/27 Added missing channel name to ChanServ ACCESS and xOP
+ log messages.
+ Reported by David Narayan <jester@phrixus.net>
+2002/02/25 Enhanced the UsePrivmsg/SET MSG feature.
+2002/02/25 Another bugfix in create_mask().
+ Reported by Olfan <public@crononautas.com>
+2002/02/25 Fixed a bug in the SQLINE command that could make
+ OperServ report that a channel SQLINE is covered
+ by a nickname SQLINE, hence preventing the
+ addition.
+ Reported by Laurent <laurent@langochat.net>
+2002/02/24 OperServ RAW is now disabled by default.
+2002/02/24 Updated the FAQ (about HostServ and OperServ RAW).
+
+Epona Version 1.4.9
+-------------------
+2002/01/13 Fixed an harmless bug causing ChanServ to send multiple
+ (S)JOINs for its CSInhabit feature.
+ Reported by lucas <lucas@langochat.net>
+2002/01/13 Made OperServ KILLCLONES always kill real host, to avoid
+ killing users with the same vanity-host.
+ Reported by Magnet <magnet@epiknet.org>
+2002/01/13 Fixed bad snprintf parameters order in tr.l.
+ Reported by Reha BÝÇER <reha@showtvnet.com>
+2002/01/13 Fixed(?) a weird bug in create_mask()... hopefully.
+2002/01/04 Added a Catalan language file.
+ Submitted by the AUJAC.
+
+Epona Version 1.4.8
+-------------------
+2001/12/09 Extended the NSSecureAdmins configuration directive to
+ apply to FORBID too.
+2001/11/20 Updated Turkish language file.
+ Submitted by Guven Guzelbey <guzelbey@cs.utk.edu>
+2001/11/18 Fixed the bug of thread support affecting Epona compiled
+ for glibc 2.1 and less on linux.
+2001/11/10 Added support for Bahamut 1.4.30: channel mode M
+ and the new NS, CS, MS, OS and HS messages.
+2001/11/08 Made notice_help() take care of the SET MSG option.
+ Reported by David Narayan <jester@phrixus.net>
+2001/11/08 ChanServ now sends a SJOIN instead of a JOIN on Bahamut-based
+ networks.
+2001/11/08 Fixed a bug in OperServ CLEARMODES.
+
+Epona Version 1.4.7
+-------------------
+2001/10/01 Default NickServ access list entry and ban masks are
+ now always formatted to not take care of the tilde in
+ username, so they match whether the identd has been
+ enabled or not.
+2001/10/01 Added missing *! when setting a ban of type 3. This
+ also fixes a memory leak when unsetting the ban.
+2001/10/01 Fixed create_mask() so that it handle IP hostnames
+ correctly.
+ Reported by Bob <azz2000@hotmail.com>
+2001/09/30 NSDefaultLanguage is now properly reloaded through
+ OperServ RELOAD.
+ Reported by MEAT <meat@epiknet.org>
+2001/09/30 NSDefaultLanguage now also applies to forbidden
+ nicknames.
+ Reported by MEAT <meat@epiknet.org>
+2001/09/30 Fixed portuguese BotServ HELP SET SYMBIOSIS.
+ Reported by Rafael Cerveira <papudo@interconect.com.br>
+2001/09/30 Adjusted informative notices for collide()'d nicks.
+ Reported by MEAT <meat@epiknet.org>
+
+Epona Version 1.4.6
+-------------------
+2001/09/23 Fixed a bug in version.sh when encryption is
+ enabled.
+2001/09/23 Fixed a bug in ChanServ CLEAR MODES happening
+ on Unreal and Ultimate only.
+ Reported by Hurricane <hurricane@ifrance.com>
+
+Epona Version 1.4.5
+-------------------
+2001/09/07 ChanServ won't set automatically +o on users
+ that get +q or +a on join anymore (because
+ of certain exotic levels configuration).
+2001/09/07 Made ChanServ TOPIC be usable by services admins.
+2001/08/26 Channel mode +f of Unreal now supports the *x:x
+ format for its parameter.
+2001/08/26 Removed hard-coded references to NickServ and
+ ChanServ in language files.
+2001/08/24 Updated the Turkish language file.
+ Submitted by CafeiN <oytuny@yahoo.com>
+2001/08/24 Added ProxyCheckHTTP3 configuration directive to
+ scan proxy on port 80.
+
+Epona Version 1.4.4
+-------------------
+2001/08/19 Made ChanServ also log SET XOP and LEVELS uses.
+2001/08/19 Added compile flags to the /version output.
+2001/08/19 OperServ commands manipulating channel modes
+ now override all ChanServ protections (such as
+ SET SECUREOPS, SET MLOCK, etc).
+2001/08/19 Removed references to SET TOPIC in the language
+ files.
+2001/08/19 Fixed various topic issues in ChanServ for Unreal
+ and Dreamforge.
+2001/08/19 Fixed another bug in ChanServ AKICK (UN)STICK.
+ Reported by Alvaro Toledo <atoledo@keldon.org>
+2001/08/15 Made ChanServ log access level additions.
+
+Epona Version 1.4.3
+-------------------
+2001/08/12 Fixed a bug in OperServ list ranges.
+2001/08/12 Fixed a bug in the AKICK STICK command.
+2001/08/12 Fixed a bug in ChanServ SET MLOCK, that happens
+ only on Unreal networks.
+ Reported by Austin <austin1@uni.de>
+
+Epona Version 1.4.2
+-------------------
+2001/08/08 A fix for UnrealIRCd NICK handling (sometimes sent
+ with only 7 parameters ?! oh well).
+ Reported by Benjamin <benjamin@chat-solutions.org>
+2001/08/07 In an attempt to make the configure script clearer,
+ I added the DumpCore and NetworkDomain configuration
+ directives.
+2001/08/06 Bots from BotServ now set themselves the mode +a
+ again on channels they join.
+ Reported by CyberScream <cyberscream@wondernet.nu>
+2001/08/05 Updated the Spanish language file.
+ Submitted by Alvaro Toledo <atoledo@keldon.org>
+
+Epona Version 1.4.1
+-------------------
+2001/08/02 Fixed two potential bugs in the AKICK system.
+2001/08/01 Fixed help for BotServ SET PRIVATE that was not
+ displayed.
+ Reported by SpiderWeb <Spider.Web@Laposte.net>
+
+Epona Version 1.4.0
+-------------------
+2001/07/23 Added support for Ultimate 2.8x.
+2001/07/23 Rewritten Unreal support entirely, using parts of
+ the Sequana hostmasking support. Unreal is now
+ officially supported again.
+2001/07/21 Added modes field to OperServ CHANLIST command.
+2001/07/21 Made NickServ/ChanServ FORBID change nick/clear
+ the channel if it is currently used.
+2001/07/21 Removed Ultimate 3.x support, since its development
+ has restarted. Cleanup of levels as well.
+2001/07/20 Added ChanServ SET PEACE option.
+2001/07/20 Added an INFO level for free consultation
+ of /chanserv INFO #chan ALL.
+2001/07/20 Optimized processing of non fantasy channel
+ messages.
+2001/07/20 Modified some help string to make them reflect
+ the truth.
+2001/07/20 Added AOP/SOP/VOP commands to ChanServ (one of
+ the most requested features, but far from being
+ my favourite).
+ You can't use both xOP and access lists at the
+ same time, you have to choose between them via
+ the new ChanServ SET XOP command.
+ These are newbie-friendly commands, and
+ therefore should be enabled by default.
+2001/07/20 Services admins can now use ACCESS ADD/DEL/CLEAR
+ without having a level on the channel (please
+ use this feature ethically =).
+2001/07/19 Made lang/index generate automatically through
+ Makefile.
+2001/07/18 Removed the CSRestrictDelay directive in ChanServ,
+ that is now useless due to the use of services
+ timestamp, and was dangerous anyways.
+2001/07/18 Removed the useless privilege for IRC operators that
+ were never deopped automatically by ChanServ (by
+ SECUREOPS or when they join an empty registered channel
+ for example).
+2001/07/18 Made OperServ JUPE send a SQUIT before introducing
+ the juped server because of so many reported
+ crashes when people don't care. If you're using
+ Bahamut, a better alternative to JUPE is to use
+ SZLINE. ;)
+2001/07/18 Made the LocalAddress directive actually work, it
+ wasn't working even before Epona was born.
+2001/07/18 Renamed ChanServ SET TOPIC to TOPIC so it can have a
+ dedicated level, and added ChanServ BAN command.
+2001/07/18 Added ChanServ AKICK STICK command.
+2001/07/13 Added NSMaxAliases directive to limit the number of
+ nicks in the same group.
+2001/07/10 Finally fixed the BotServ HELP SET SYMBIOSIS bug (the
+ message was cut =) -- this alone is worth the upgrade :P
+2001/07/10 /me are now handled correctly by BotServ kickers (ie. the
+ CTCP part is cut before processing the message).
+ Reported by Benjamin <benjamin@chat-solutions.org>
+2001/07/10 Used Bahamut new CAPAB NICKIP feature in the proxy scanner
+ so it doesn't need to resolve the hostnames.
+2001/07/08 Made some cleanup in proxy code.
+2001/07/01 Rewritten OP/DEOP and other pairs in an easily extensible
+ way.
+2001/06/30 Added OperServ SQLINE command. It will also support
+ Bahamut channel SQLINEs. However, bahamut 1.4.27
+ or later is required.
+2001/06/29 You needed a registered nick to use the privileges
+ given by ChanServ IDENTIFY, which is not the expected
+ behaviour. Fixed.
+2001/06/27 Changed stuff in configure for libpthread detection.
+2001/06/27 Fixed a bug in BotServ UNASSIGN.
+ Reported by lbr <lbr@langochat.net>
+2001/06/26 Added BotServ SET PRIVATE option for bots that need
+ to be oper-only.
+ Suggested by a lot of people :P
+2001/06/23 Added OperServ RANDOMNEWS.
+ Suggested by lucas <lucas@langochat.net>
+2001/06/21 Added the ability to set the default language for
+ non/newly-registered users in services.conf.
+2001/06/09 Rewritten do_sjoin so that it doesn't do useless things
+ sometimes.
+2001/05/20 Added more support for Sequana in do_nick().
+2001/05/20 Changed stuff in do_sjoin to make it easily extensible.
+2001/05/04 New more efficient channel modes handling.
+2001/05/04 Changed whosends() to a macro.
+2001/04/22 Fixed check_kick() not making ChanServ join the channel
+ if empty with Bahamut.
+2001/04/22 Fixed a bug that caused the existence of channels with
+ no users in certain cases.
+2001/04/06 Added support for services ids, allowing users to be
+ automatically re-identified after a split. It also prevents
+ the logon news to be resent for users that were already
+ there before the split.
+2001/04/06 Fixed a bug in NickServ that was not refreshing the last
+ seen time after a nick change.
+ Reported by Lucas <lucas@langochat.net>
+2001/04/05 Faster is_oper().
+2001/04/05 Improved the way the NICK command is handled with Bahamut,
+ it's now a LOT faster (and cleaner).
+2001/04/05 Added ProxyAkillReason directive, and more information
+ to some other proxy-related directives.
+ Suggested by Yougli <Yougli@free.fr>
+2001/04/05 Got rid of the usercount() function (should have been
+ done for months but I was just too lazy/busy).
+2001/02/24 More bugfixes in Sequana support.
+2001/02/24 NickServ usermask is now updated when an user changes
+ his nick to a nick from the same group.
+2001/02/16 Fixed a bug in the Sequana support.
+2001/02/16 Added configuration directives to specify what type of
+ detection must be done by the proxy detector.
+2001/02/16 NickServ now prevents users from trying too many invalid
+ passwords for NickServ GROUP.
+ Reported by Blaire <lisa-bot@lookat.org>
+2001/02/16 Fixed OperServ HELP RELOAD that pointed to HELP UPDATE.
+ Reported by Raynor <raynor@ministre.net>
+2001/02/16 Fixed BotServ HELP SET DONTKICKVOICES that spoke
+ about SET DONTKICKOPS in the French language file.
+ Reported by Night <Night04@netcourrier.com>
+2001/02/09 More support for Sequana.
+2001/02/09 Made the code compile without thread support (oops).
+2001/02/09 Added support for Sequana IRCd.
+2001/02/03 Changed the way bot greets are said.
+2001/01/28 Made is_services_root faster. It is also now fully
+ group-compatible. is_services_admin and is_services_operator
+ have been optimized as well.
+2001/01/25 SOCKS5 detector is now much more reliable.
+2001/01/22 Made some fixes to the proxy detector.
+2001/01/21 Added a full featured proxy detector (detects Wingate,
+ SOCKS4, SOCKS5, and even HTTP proxy!). It comes along with
+ the CACHE command in OperServ, and several configuration
+ directives.
+2001/01/21 Made the KILLCLONES command available to Services operators.
+2001/01/17 Made some cleanup to main.c, it's more readable now.
+2001/01/15 Made converter and core settings cachable in the configure
+ script.
+
+Epona Version 1.3.7
+-------------------
+2001/04/22 Added German and Spanish language files.
+
+Epona Version 1.3.6
+-------------------
+2001/03/09 Fixed a stupid bug in NickServ SET (oops).
+
+Epona Version 1.3.5
+-------------------
+2001/03/07 The Epona official IRC channel (for bug reports ONLY)
+ is not on the Kewl IRC network anymore, it's now
+ on irc.langochat.net (see the README for details).
+2001/03/07 Fixed bugs in NickServ ACCESS, SET, RECOVER, RELEASE,
+ GHOST, GETPASS and SENDPASS that caused Epona to crash
+ if they were used for forbidden nicks.
+ Reported (for RECOVER/RELEASE/GHOST) by
+ Vernom <vernom@sistec.com.mx>.
+2001/03/07 Fixed a bug in the turkish language file (damn, damn.)
+ Reported by so much people that I was in fact
+ flooded :P
+
+Epona Version 1.3.4
+-------------------
+2001/01/27 Fixed the timed_update evil crash, and a big memory leak as
+ a bonus. Another funny joke from Andy Church.
+ Reported by many people, so I thank them all.
+ I'd like also to say a special thank to Daniel Engel
+ <dane@zero.org> for his help in chasing this bug.
+
+Epona Version 1.3.3
+-------------------
+2001/01/22 Added a Portuguese language file.
+ Submitted by Marcelo Conde Foscarini <ircadmin@brmarket.net>
+
+Epona Version 1.3.2
+-------------------
+2001/01/18 Fixed the bug that was causing an infinite loop in Services if
+ someone tried to delete a very high range of records from
+ a numbered list.
+
+Epona Version 1.3.1
+-------------------
+2001/01/12 Updated mirror list in the INSTALL file.
+2001/01/11 Fixed the bug that made Epona crash when a Services
+ admin tried to drop a forbidden channel.
+ Reported by [Flop] <flop@oscfg.com>
+
+Epona Version 1.3.0
+-------------------
+2001/01/07 The Turkish language file was updated by CafeiN
+ <oytuny@yahoo.com>
+2001/01/06 Integrated patches for the Ultimate 3.0 basic support from
+ ShadowMaster <ShadowMaster@Shadow-Realm.Org>
+2001/01/02 Added NickServ SET MSG command, to be used with UsePrivmsg.
+2001/01/02 Made small fixes to AKILL/SGLINE/SZLINE commands.
+ Reported by ShadowMaster <ShadowMaster@Shadow-Realm.Org>
+2000/12/23 Fixed various things in the do_nick function, and added
+ a log message if an user remains identified after a nick
+ change.
+2000/12/23 Fixed a bug that allowed users to pass through the NickServ
+ protection option.
+ Reported by Daniel Engel <dane@zero.org>
+2000/12/14 Oops.. DreamForge/Unreal support was dumping core.
+2000/12/13 Made ChanServ SET TOPIC work with Unreal.
+2000/12/12 Corrected a few bugs in NickServ.
+2000/12/07 Cleanup of the FAQ file.
+2000/12/07 Cleanup of README file. KnownBugs renamed to BUGS.
+2000/12/06 Added an INSTALL file. Anyone willing to correct my poor
+ English? ;)
+2000/12/06 Added a crontab script.
+2000/12/05 Added BSDef... configuration directives.
+2000/12/05 Channels with a '@' in their name are not ignored by BotServ
+ anymore.
+2000/12/05 Bots now correctly reply to channel pings.
+2000/12/04 Added a database converter for ircservices-4.4. Deleted the
+ (not working anymore) database converter for Daylight 4.3.3.
+2000/12/04 Corrected a bug that would make Services segfault while loading
+ configuration file with certain versions of glibc.
+2000/12/03 Added CSDef... configuration directives.
+2000/12/02 Deleted SET LEAVEOPS command from ChanServ, because it's
+ just a big security hole maker.
+2000/12/02 Added CLIST command to ChanServ.
+2000/12/02 Added more Wall... configuration directives.
+2000/12/02 Added NOOP command to OperServ.
+2000/12/01 Corrected a little bug in the !seen command.
+2000/12/01 Services now use SVSMODE #chan -b nick on Bahamut networks
+ to unban an user, so they are now fully supporting the
+ somewhat different Bahamut ban system.
+2000/12/01 AKILL ADD, SGLINE ADD and SZLINE ADD now can change the
+ expiry time of an existing entry, but only if the new one
+ is longer than the old one.
+2000/11/30 NickServ GHOST, RECOVER and RELEASE now can be used without
+ a password, as long as you are identified and in the group
+ of the target nick.
+2000/11/30 Enhanced documentation for NickServ REGISTER and GROUP
+ commands.
+2000/11/27 NickServ LIST does not hide the nicks that are in the
+ group of the user issuing the command anymore if they have
+ SET PRIVATE ON. The same applies to usermasks and SET HIDE
+ USERMASK.
+2000/11/27 Added "remote" drop feature for nicks within the same
+ group of the user issuing the command.
+2000/11/27 Channels in use cannot expire anymore. However, their last
+ used time is still not updated while they're in use.
+2000/11/27 Made some needed cleanup in config.h.
+2000/11/26 Added BSGentleBWReason configuration directive.
+ Suggested by ShadowMaster <ShadowMaster@Shadow-Realm.org>
+2000/11/26 Added UsePrivmsg configuration directive.
+ Suggested by ShadowMaster <ShadowMaster@Shadow-Realm.org>
+2000/11/26 Made password encryption work again.
+2000/11/26 delnick was not cleaning NickServ timeouts... another
+ Churchery?
+2000/11/25 Made CLEAR OPS and CLEAR VOICES work correctly again.
+ Reported by TataZ <tataz@thepentagon.com>
+2000/11/24 Added NSNoGroupChange configuration directive. Its purpose
+ is easy to guess I think. =)
+2000/11/24 Deleted the obsolete HelpDir configuration directive.
+2000/11/24 NSDisableLink not used anymore; deleting it.
+2000/11/23 Few bugs of the new link system corrected.
+2000/11/22 New link system that is more efficient -- I let you discover
+ all the diffs! =) The GROUP, GLIST and SET DISPLAY commands
+ have been added to handle it.
+ The LINK, UNLINK, and LISTLINKS commands were all deleted
+ because they are not needed anymore.
+ The NoSplitRecovery config setting has been deleted, it is
+ always enabled now -- the code was buggy anyway.
+ NSExpireMaster and NSExpireSlaves are now only one setting,
+ NSExpire, like before, because there are no more master
+ and slave nicks.
+ During the conversion to the new system I corrected many bugs
+ and weird things in the code (especially two memory leaks when
+ freeing akick and nick structures). NickServ has now a faster
+ hash list -- this will greatly help on large networks.
+2000/11/22 Added SENDPASS to ChanServ help index.
+2000/11/21 Moved changes from (irc)services to the Changes.old file, as the
+ Changes file started to be really big.
+2000/11/14 Corrected another bug during nick deletion... If a nick was founder
+ of a channel and was also on the access list of the same channel ->
+ access list entry was not cleaned -> it crashed.
+2000/11/12 Channel successors were not cleaned on nick deletion. Oh well.
+2000/11/12 Linked nicks now have a working SET PRIVATE.
+ Reported by garner <garner@voila.fr>
+2000/11/11 Fixed some weird behaviour with certain compiler versions
+ in ChanServ ACCESS and AKICK lists.
+ Reported by lanxin <webmaster@nidenet.com>
+2000/10/28 Corrected ChanServ behavior for resetting last used
+ time. Was when someone was autoopped on JOIN before,
+ is whenever someone from the ACCESS list uses the
+ channel in any way now, because there are cases where
+ nobody gets autoopped at all.
+2000/10/26 Added SGLINE and SZLINE commands to OperServ (works
+ with latest Bahamut only).
+2000/10/25 Rewritten the OperServ AKILL command code. There cannot
+ be two times the same host anymore, and the command
+ will check whether the added AKILLs are already covered
+ by another or not. The bug in the AKILL wallops has
+ been fixed as well.
+ Additionally, AKILLs are now stocked in the OperServ
+ database (not in a dedicated database anymore).
+2000/10/23 Fixed OperServ RELOAD to make it reset all directives to 0
+ before reloading the config file (when this was not done
+ some settings were not reloaded correctly if not present).
+2000/10/23 Corrected the problem that caused some services admins list
+ entries to be "like a ghost" in wrong-way links.
+2000/10/10 Corrected some weird behavior when unlinking from a nick.
+2000/10/09 Changed the way channel user modes are handled, so it can
+ be easily extended.
+2000/10/06 Corrected some cosmetic problems in the language files.
+
+Epona Version 1.2.6
+-------------------
+2000/12/13 Made ChanServ SET TOPIC work with Unreal.
+2000/12/07 Fixed bugs in MemoServ when accessing memos from forbidden
+ channels.
+ Reported by ZeRo K <zero@townsito.net> and others later.
+
+Epona Version 1.2.5
+-------------------
+2000/11/06 For those who ask... Version 1.3.0 is currently being
+ developped. Don't know when it will go out though, but
+ probably in the beginning of December (no promises though).
+ I know it's a long time to wait but.. I'm coding Epona
+ during my free time that is not so huge currently. I know
+ you want more and more new features, but doing something
+ that does not crash every five minutes takes time for
+ coding AND testing.
+ Btw.. This version is probably the most stable ever.
+2000/11/06 Services does not segfault anymore when DEF_LANGUAGE
+ is not LANG_EN_US.
+ Reported by Firou <I've not his mail>.
+2000/11/03 Critical bug fixed in NickServ ... probably one that
+ had make the whole services crash periodically.
+2000/11/03 Fixed a bug in ChanServ DROP that was making the Services
+ crash when a non Services admin user tried to drop a
+ forbidden channel.
+2000/11/03 Fixed the bug in encryption (buffers needed to be
+ filled with zero).
+2000/10/27 Added support for channel modes +u, +C and +G from
+ Unreal 3.1. Probably more things soon.
+2000/10/23 Added support for +O channel mode from Bahamut.
+
+Epona Version 1.2.4
+-------------------
+2000/10/07 Fixed bugs in fantaisist commands.
+ Special thanks to the channel #rezo@kewl.org,
+ SeB <seb@kewl.org> and lbr <lbr@loopback0.net>
+
+Epona Version 1.2.3
+-------------------
+2000/09/11 Added a reference to BotServ in HelpServ HELP.
+2000/09/10 Services admin and Services operator lists are now sorted
+ alphabetically.
+2000/09/09 Epona now runs correctly on FreeBSD 5.0.
+
+Epona Version 1.2.2
+-------------------
+2000/09/05 Make -log command line option work again.
+2000/09/05 Turkish language file is finally back.
+2000/08/30 OP/DEOP/VOICE/DEVOICE/HALFOP/DEHALFOP/PROTECT/DEPROTECT/KICK
+ now have a check to make sure the target user is on the channel.
+
+Epona Version 1.2.1
+-------------------
+2000/08/30 Fixed the bug in ADMIN ADD that was making the whole
+ services to crash when the admin list is empty.
+
+Epona Version 1.2.0
+-------------------
+2000/08/27 Fixed a bug that was preventing the use of BADWORDS CLEAR
+ without a keyword.
+ Reported by Galak <thegalak@hotmail.com>
+2000/08/19 Fixed a bug in automatic akill in session limiting code
+ that used the nick of one user that is being killed
+ instead of OperServ.
+2000/08/19 OperServ lists are now cleaned up when a nick is dropped.
+2000/08/14 Added ChanServ SET SIGNKICK command.
+2000/08/14 Complete rewrite of the OperServ ADMIN and OPER commands. They
+ look like a "standard" numbered list now.
+2000/08/01 Added MaxSessionKill and SessionAutoKillExpiry configuration
+ directives.
+2000/07/31 Added "is a services operator", "is a services admin" status
+ line to NickServ INFO.
+2000/07/31 Added CLEARMODES to OperServ help index.
+2000/07/31 Switched KillAkillUsers to AkillOnAdd. Different behavior too.
+2000/07/31 Added ChanServ LOGOUT command.
+2000/07/30 Added the possibility to have a GLOBOPS raised when using the
+ OperServ RAW command.
+2000/07/30 Added NOTIFY info to MemoServ INFO command.
+2000/07/30 Added NickServ LOGOUT command.
+2000/07/28 MemoServ now shows to Services Admins whether the limit is
+ hard or not in /memoserv INFO <nick>.
+2000/07/28 Changed the behavior of NickServ LISTLINKS ALL to also show
+ the direct link of the nick being looked up. It looks like
+ something usable now (finally ;).
+2000/07/28 Forbidden channels cannot receive memos anymore.
+2000/07/28 Forbidden nicknames cannot be set founder or successor
+ anymore, cannot be added to access or akick list anymore,
+ and cannot receive memos anymore.
+2000/07/28 Added a confirmation notice for OperServ CLEARMODES.
+ Also, ALL parameter for CLEARMODES is now case
+ insensitive.
+2000/07/28 Fixed a bug in EXCEPTION DEL reply.
+2000/07/28 AKILL ADD now won't add masks that are only composed
+ of ~@.*?.
+2000/07/26 Fixed a cosmetic bug in the Services' WHOIS reply.
+2000/07/26 Channel successor cannot be the same nick as channel
+ founder anymore.
+2000/07/26 Default level for ACC-CHANGE is now 10.
+2000/07/26 Changed the way Services operators and admins are
+ handled. Although it's not totally finished yet
+ (but it works), it's already faster.
+2000/07/25 Added SET NOBOT option to BotServ.
+2000/07/25 Added ChanServ KICK command (with KICK and KICKME
+ levels).
+ Suggested (for over a year ;) by
+ Geo <geoffroy@geo.ouega.net>
+2000/07/25 Added NickServ SET ICQ command.
+ Suggested by Jack <jack@irc.kewl.org>
+2000/07/25 Added OperServ RELOAD command to allow configuration
+ file to be dynamically reloaded.
+ Suggested by Crow <crow@german-elite.net>
+2000/07/25 Added SHUTDOWN to OperServ help index.
+2000/07/24 Corrected ChanServ SENDPASS so it can now send
+ the password to the founder if it's a linked (slave)
+ nick.
+ Reported by shiva <aqua22@informaticien.org>
+2000/07/24 Restricted BotServ INFO #channel to founder
+ and Services admins only (maybe should I
+ think to implement a INFO level in the future?).
+2000/07/14 Color kicker can now be used on Bahamut and
+ Unreal networks. Although there is a mode +c
+ that *should* be used to prevent the use of
+ colors on the channel, some users have noticed
+ me that it does not make access level distinction.
+ Too right. :)
+2000/07/14 Added the !seen command to the fantaisist
+ commands.
+2000/07/12 Again changed the way AKILLs are handled on
+ Bahamut. Hopefully for the last time.
+2000/07/12 Added a reference to LISTLINKS in NickServ HELP.
+2000/07/12 Changed NickServ HELP output to reflect changes
+ in expiration system.
+2000/06/27 NSExpire has been broken into NSExpireMaster and
+ NSExpireSlaves.
+2000/06/23 If compiled for Bahamut, Epona will now use SVSKILL
+ instead of KILL for the GHOST and "Too many invalid
+ passwords" kills.
+2000/06/23 Networks that use Bahamut now need to use at least
+ the version 1.4.3 for Epona to work fine.
+
+Epona Version 1.1.4
+-------------------
+2000/07/07 Added Turkish language file.
+ Submitted by PRoLoGiC <oytuny@yahoo.com>
+
+Epona Version 1.1.3
+-------------------
+2000/06/20 One more time corrected the way BotServ uses AKILL on
+ Bahamut networks.
+2000/06/19 Corrected how MemoServ notifies online users of their
+ new memos that failed in certain cases if MSNotifyAll
+ is set. One more time, I'm asking myself how the heck
+ the link support was coded.
+ Reported by wezen <wezen@ifrance.com>
+2000/06/18 Fixed another bug in SJOIN processing that affects only
+ networks that use BotServ (and that have no luck ;).
+ Reported by acta <hackta@wanadoo.fr>
+2000/06/14 OperServ AKILL command is now case insensitive.
+ Reported by ShadWolf <netruner@bocal.cs.univ-paris8.fr>
+2000/06/14 Fixed a bug in SJOIN processing that may cause problems
+ on big channels.
+
+Epona Version 1.1.2
+-------------------
+2000/06/09 Added a 'For more info' notice in NickServ INFO.
+ This was needed because of the huge changement introduced
+ by the original Services maintainer. This
+ will certainly be removed in a future release.
+ Suggested by Lucas <lucas@ians.be>
+2000/06/09 Bots are now stocked in a hash list (increased speed
+ and alphabetical order in the list ;)
+2000/06/07 Corrected the way BotServ uses AKILL on Bahamut since
+ the command format has changed.
+ Reported by Lucas <lucas@ians.be>
+
+Epona Version 1.1.1
+-------------------
+2000/06/06 Corrected the way BotServ bots remove bans that match
+ them when they're on the channel.
+ Reported by p0lo <ping@com.bi>
+2000/06/06 Added !dehalfop, !deprotect, !halfop, !protect as
+ fantaisist commands in Unreal mode.
+2000/06/05 Finished Unreal support.
+2000/06/05 Added OPDEOPME level.
+2000/06/03 Corrected a bug that was preventing users to use
+ NickServ SENDPASS on linked nicks.
+2000/06/02 Services now sets -r on an user when it changes its
+ nick and he is not identified for.
+ Reported by AdRi <adri@pegirc.com>
+2000/06/02 Added KillAkillUsers configuration directive.
+ Suggested by Lucas <lucas@kewl.org>
+2000/05/31 Corrected a little bug that had make ChanServ LIST not
+ work anymore for wildcard masks.
+ Reported by Mars <mars@freemail.chatarea.net>
+2000/05/29 Changed the behaviour of NickServ INFO in some ways,
+ considering that nick options are only interesting
+ for the nick owner (and services admin); also, the nick
+ owner is now extended to the nick itself and its links.
+ ChanServ INFO adopts the same rules, but for channel
+ founder. Also, topic is not displayed anymore in INFO
+ if the channel has the mode s locked or the channel
+ is in +s mode.
+
+Epona Version 1.1.0
+-------------------
+2000/05/29 Corrected a bug in SJOIN handling code.
+ Reported by Peter <striker@zip.com.au>
+2000/05/27 Help for MemoServ SET LIMIT now shows all their killer
+ functionalities to Services admins.
+2000/05/27 The greet message in NickServ INFO is now only shown to
+ the nick owner.
+2000/05/27 This is not a new feature of Epona, BUT irc.kewl.org (500 users
+ network) now uses Epona, with BotServ feature enabled - and
+ it works fine! ;)
+2000/05/25 Rewritten Bahamut SJOIN handling, runs faster now especially
+ on large channels during a netjoin. Also it now works fine on
+ channels that have +k or +l mode set. ;)
+2000/05/23 Updated NickServ and ChanServ mem stats routines.
+2000/05/23 BSSmartJoin improved: the bot (virtually) invites itself
+ before joining when the channel is in +i mode or +l mode
+ if users limit has been reached.
+2000/05/23 Services now remove the old Q line for a bot when its nick
+ is changed.
+2000/05/23 Services now logs links/unlinks and password changes in
+ NickServ, as well as successor and password changes in
+ ChanServ.
+2000/05/23 Services admins can now register as many channels as they
+ want.
+ Suggested by Peter <striker@zip.com.au>
+2000/05/23 Rewritten is_services_root thingies, that was crashing on
+ some systems.
+2000/05/21 Improved the way BotServ removes bans when BSSmartJoin is
+ enabled.
+2000/05/21 Rewritten BADWORDS ADD command to allow words with spaces
+ (without breaking the old syntax).
+2000/05/21 Added "Linked to:" in NickServ INFO.
+2000/05/21 ChanServ ACCESS LIST and AKICK LIST/VIEW as well as BotServ
+ BADWORDS LIST now make case insensitive comparaison when a
+ mask is specified.
+2000/05/21 Added STATS C and STATS O replies.
+2000/05/21 BotServ now displays the channels a bot is on when a
+ Services admin uses the (BotServ) INFO command on a bot.
+2000/05/19 Added initial support for UnrealIRCd; not complete now.
+ Those who use Unreal, PLEASE make any suggestion on what
+ has been done and what should be done to epona@pegirc.com.
+2000/05/19 Changed "binary" mode handling system, so new modes can
+ be added quickly.
+2000/05/13 Added HelpChannel configuration directive.
+2000/05/13 ChanServ now saves who added an akick and when; this can be
+ seen with the AKICK VIEW command.
+2000/05/13 Added ChanServ SET SECUREFOUNDER.
+2000/05/13 Added ChanServ SET BANTYPE to control how ChanServ places bans
+ on the channel.
+2000/05/12 NickServ now changes the nick of nicknames that are forbidden
+ immediately.
+2000/05/12 Forbids now handle a reason, that can be make required
+ using configuration directive ForceForbidReason; also
+ forbid setter and reason are shown to IRC operators in
+ NickServ INFO output.
+2000/05/12 Added databases backup subsystem, controlled by the
+ configuration directive KeepBackups.
+2000/05/12 Log files are now located in logs directory. There is
+ a different log file used for each day. Also added the
+ KeepLogs configuration directive. Old log rotating stuff
+ in OperServ has been removed.
+2000/05/12 There can now be more than one Services Root defined in
+ configuration file.
+2000/05/12 Added ChanServ ACCESS CLEAR, AKICK CLEAR and BotServ
+ BADWORDS CLEAR.
+2000/05/11 Fixed BotServ BADWORDS LIST so it can be accessed by Services
+ admins on any channel.
+2000/05/11 BotServ BADWORDS LIST command now gives the type used to
+ add the word.
+2000/05/11 Added ChanServ GETKEY commands.
+2000/05/11 Added VOICE and DEVOICE commands to ChanServ, along with
+ two new levels VOICE and VOICEME; these levels now also control
+ the access to !voice and !devoice fantaisist commands.
+2000/05/11 Added STATS RESET command to OperServ.
+2000/05/11 Added MailDelay configuration directive.
+2000/05/11 Added command line -noexpire option and OperServ SET
+ NOEXPIRE option.
+ From TODO, suggested by Martin Butler <ibm@qualitynet.org>
+2000/05/11 Added MemoServ CANCEL command.
+2000/05/10 Corrected AKICK ENFORCE (silly :) bug.
+2000/05/10 Added NickServ SET GREET command, as well as BotServ SET
+ GREET command, and a GREET level in ChanServ.
+
+Epona Version 1.0.0
+-------------------
+2000/05/10 Bot now parts the channel when it is dropped.
+2000/05/10 Fixed an extremely crashing bug in BotServ BADWORDS stuff.
+ If you experienced segmentation fault on PRIVMSG the bug
+ should be fixed.
+ (Thanks come especially to Sysop_Mars
+ <mars@freemail.chatarea.net>, and all others that helped
+ me to find out the bug and fix it)
+2000/04/07 Added NickServ and ChanServ SENDPASS.
+2000/04/03 Added OperServ USERLIST and CHANLIST commands.
+ Suggested by Peter <striker@zip.com.au>
+2000/03/20 Added !unban command in the fantaisist commands.
+ Suggested by illusions <illusions@axs2k.net>
+2000/03/19 Fixed a bug in NickServ LINK that was allowing everybody
+ taking the target nick to be identified for it
+ automatically.
+2000/03/16 ChanServ LIST now hides channels that have the PRIVATE flag.
+ Reported by Peter <striker@zip.com.au>
+
+Epona Version 1.0pre2
+---------------------
+2000/03/15 ChanServ OP and DEOP commands have been modified (see
+ their help topic for more information on the new
+ syntaxs).
+2000/03/15 ChanServ SET PRIVATE has now its help topic accessible.
+2000/03/14 Completed BotServ HELP and HELP SET topics.
+2000/03/14 Added a configuration file option to force users to
+ give an e-mail when they register a nickname. It will
+ also ask already registered nicks for an e-mail when
+ they identify. Also, the REGISTER command has an
+ optional parameter email if this option is not enabled.
+2000/03/14 NickServ SET URL and SET EMAIL are now finally shared
+ between linked nicks.
+2000/03/14 Fixed a NickServ memory leak (it was not freeing the
+ email and url fields when a nick record was being deleted).
+2000/03/14 Changed the behavior of expire_nicks, that was updating
+ the last seen time of an user being online whether it
+ was recognized or not.
+2000/03/14 Added support for the SIDENTIFY command in NickServ.
+2000/03/12 BotServ BOT DEL now removes the Q line make for the
+ bot when it was created.
+2000/03/12 Added WallDrop and WallForbid configuration file options.
+2000/03/12 Added BotServ SAY and ACT commands.
+2000/03/12 Fixed the broken routine that loads the (very) old
+ ChanServ databases (it didn't initialize BotServ stuff).
+2000/03/12 BotServ KICK COLORS now won't work on Bahamut networks
+ anymore. Users should use the channel mode 'c' instead.
+
+Epona Version 1.0pre1
+---------------------
+2000/03/11 Added SET SYMBIOSIS command in BotServ.
+2000/03/11 Added SET FANTASY command in BotServ.
+2000/03/09 Corrected tiny bug that was making SQLINE for bots
+ in the wrong way.
+2000/03/09 Added SET DONTKICKOPS and SET DONTKICKVOICES commands in BotServ
+ to protect those ops and voice who aren't in the
+ access list (or not with the right level) against bot's
+ kicks.
+2000/03/09 BotServ now generates an error when an unknown option
+ is used in KICK command.
+2000/03/09 Optimized the way BotServ counts users on a channel.
+2000/03/02 Added a French language file.
+2000/03/02 Corrected some strings in language files.
+
+Epona Version 1.0pre0
+---------------------
+2000/02/23 Updated OperServ memory stats to reflect the changes
+ provided by BotServ.
+2000/02/23 Just finished first version of BotServ.
+2000/02/20 Fixed an exploit in do_nick(), that is usable in certain
+ conditions with linked nicks, see users.c for details.
+2000/02/19 HelpServ rewritten, now delivering messages depending
+ of users' language.
+2000/02/19 Removed irciihelp, not very useful nowadays. Heck, every
+ IRC clients are provided with an help file, so why
+ must we serve one?
+2000/02/19 NickServ now will always change nick instead of kill users
+ -- since it is really more efficient.
+2000/02/19 Fixed collide() problem that caused nick collision.
+2000/02/19 Fixed problem of ChanServ CLEAR MODES and OperServ CLEARMODES
+ not unsetting mode 'R'.
+2000/02/19 Corrected WHOIS output not giving right the end of WHOIS.
+2000/02/19 Added SQLINE support.
+2000/02/19 Corrected tiny bug in the command sent when an enforcer
+ is created.
+2000/02/19 Added Bahamut support. Hope it will work.
+2000/02/19 Removed support for all IRCd except dal4.4.15+. Epona
+ will definitely be dedicated to those using Dreamforge
+ or official successors.
+2000/02/19 Here starts the life of Epona. ;)
diff --git a/docs/OLDNEWS b/docs/OLDNEWS
new file mode 100644
index 000000000..f8e0c85a6
--- /dev/null
+++ b/docs/OLDNEWS
@@ -0,0 +1,139 @@
+Highlighted News in Anope 1.7 (and soon 1.8)
+============================================
+ * Added a new and improved ./Config script.
+ * Added MySQL phase 2 implementation (see docs/MYSQL).
+ * Added NickServ registration delays.
+ * Added read receipts for memos.
+ * Added a way for modules to store data with internal structures.
+ * Added nick tracking support.
+ * Added support for SVSHOLD.
+ * Added support for U:Lined servers.
+ * Added support for TS6 IRCd's.
+ * Added support for Windows.
+ * Added internal events for modules.
+ * Added a way to suspend nicks.
+ * Added support for module configuration directives.
+ * Added translation support for modules.
+ * Added a module pack with handy modules.
+ * Added IRCd protocol modules.
+ * Added support for new IRCd's. Currently supported:
+ - Bahamut 1.4.27 or later (including 1.8)
+ - Charybdis 1.0 or later
+ - DreamForge 4.6.7
+ - Hybrid 7 or later
+ - InspIRCd 1.0 or later (including 1.1)
+ - Plexus 2.0 or later (including 3.0)
+ - PTLink 6.15 or later
+ - RageIRCd 2.0 or later
+ - Ratbox 2.0.6 or later
+ - ShadowIRCd 4.0 beta 7 or later
+ - Solid IRCd 3.4.6 or later
+ - UltimateIRCd 2.8.2 or later (including 3.0)
+ - UnrealIRCd 3.1.1 or later (including 3.2)
+ - ViagraIRCd 1.3 or later
+ * Added new languages. Currently included:
+ Catalan, German, English, Spanish, French, Greek,
+ Hungarian, Italian, Dutch, Polish, Portugese,
+ Russian, Turkish
+ * Added support for CIDR channel lists.
+ * Converted the core to be completely modular.
+ * Improved random number algorithm.
+ * Removed proxy detector (see docs/PROXY).
+ * Fixed various exploits and vulnerabilities.
+ * Fixed various language typos and inconsistencies.
+ * Fixed a bug in the database system causing nickserv passwords
+ to be saved incorrectly. Note that this breaks backwards
+ compatibility on nick.db !!!
+
+Highlighted News in Anope 1.6
+=============================
+ * Fixed various exploits and vulnerabilities.
+ * Fixed various language typos and inconsistencies.
+ * Improved ignore system.
+ * Improved ./configure script.
+ * Removed all compile warning fixed.
+ * Converted HelpServ into a proper service.
+ * Added external module support.
+ * Added Defense Condition (DEFCON) System.
+ * Added MySQL support for mirroring databases.
+ * Added multi-server configuration.
+ * Added multi-domain /OS GLOBAL support.
+ * Added combined +oq +oa +ha +va on net-joins.
+ * Added support for ircd changes and upgrades.
+ * Added HostSetters configuration directive.
+ * Added /OS STAFF command.
+ * Added /OS SVSNICK command.
+ * Added /OS CHANKILL command.
+ * Added /MS STAFF command.
+ * Added /NS UPDATE command.
+ * Added /MS SENDALL command.
+ * Added /NS GETMAIL command.
+ * Added /HS DELALL command.
+ * Added /HS LIST command with pattern matching.
+ * New support scripts and tools.
+ * New ircd support, complete list: DreamForge 4.6.7, Bahamut 1.4.27,
+ UnrealIRCd 3.1.1, UltimateIRCd 2.8.2,
+ UltimateIRCd 3.0.0, Hybrid IRCd 7.0
+ ViagraIRCd 1.3.x, PTlink 6.15.0
+ * New Language files, complete list: cat.l, de.l, en_us.l, es.l, fr.l,
+ gr.l, it.l, nl.l, pt.l, ru.l, tr.l
+
+Highlighted News in Anope 1.4
+=============================
+
+After the change from Epona to Anope
+------------------------------------
+ * New Italian Language file
+ * Added support for UltimateIRCd 3.0 and later
+ * Services realtime logging to a channel
+ * SuperAdmin directive for access to "super" commands.
+ * Ban system is now exception aware.
+ * HostServ for hostname masquerading.
+ * Smarter XOP System.
+ * Email verification/handshake upon registration.
+ * Services can now /ignore users.
+ * Smarter memo notification for channels.
+ * Channel can be SUSPENDed instead of FORBIDen.
+
+Before the change from Epona to Anope
+-------------------------------------
+ * HostServ for networks that support them.
+ * UnrealIRCd support has been rewritten, it is now fully
+ working (hopefully) and officially supported again.
+ * Added support for UltimateIRCd 2.8.2 and later.
+ * A multi-threaded proxy detector that can scan Wingates,
+ SOCKS 4/5 and HTTP proxies on ports 3128 and 8080. Don't use
+ it if you have not been authorized to use it by your system
+ administrator!
+ * The ChanServ AOP/SOP/VOP commands, and, on networks that
+ support halfops, the HOP command, have been added. They
+ allow a more user-friendly control of channel privileges.
+ * Use of services IDs that allow an user to be automatically
+ identified after a split (if he was identified before the split)
+ in a secure way. This also saves lots of bandwidth.
+ * Services' default language can now be set in services.conf.
+ * The OperServ RANDOMNEWS command provides an easy way to show
+ network news in a random manner without flooding your users
+ with them (one news per connection).
+ * The BotServ SET PRIVATE option allows services admins to
+ make the bot usable by IRC operators only.
+ * The OperServ SQLINE command allows you to forbid nick masks
+ and even channel masks with the latest Bahamut.
+ * The ChanServ AKICK STICK command allows akicks to be permanently
+ kept on channel.
+ * The ChanServ SET TOPIC command has been renamed to TOPIC, and
+ a new BAN command has been added. They both have their own
+ associated levels.
+ * A SET PEACE command has been added to ChanServ. It prevents
+ users to use pejorative services commands (DEOP, KICK, ...)
+ on users with greater or equal levels.
+
+Networks using Bahamut must upgrade to Bahamut 1.4.27 or later,
+while networks using UnrealIRCd must upgrade to Unreal 3.1.1.
+
+For the full changes, see the Changes file.
+
+For announcements and discussions about Anope, please visit our
+web site http://www.anope.org
+
+
diff --git a/docs/PROXY b/docs/PROXY
new file mode 100644
index 000000000..24499be11
--- /dev/null
+++ b/docs/PROXY
@@ -0,0 +1,41 @@
+Anope Proxy Detector
+--------------------
+
+1) Introduction
+2) Alternatives
+
+1) Introduction
+
+ Anope has had a built-in proxy detector since it's first version. Recently,
+ however, this built-in proxy detector has been removed. This was because
+ the Anope team found that the proxy detector was showing it's age, and the
+ time needed to restore it to a good state wasn't worth it, also considering
+ that there are currently good alternatives out there which do the job as
+ good as it can be done already.
+
+2) Alternatives
+
+ A) Blitzed Open Proxy Monitor (BOPM)
+ B) NeoStats + OPSB
+
+ Note that these are seperate projects and that the Anope team won't give
+ support on these programs. For support, please refer to the sites of the
+ creators of the software packages.
+
+ A) Blitzed Open Proxy Monitor (BOPM)
+
+ URL: http://wiki.blitzed.org/BOPM
+
+ BOPM is currently the leading proxy detector for IRC networks out
+ there. Altough it is not designed to run on a central place for the
+ entire network, it can be done with some minor tweaking on most IRCd's.
+ The Anope Team advises BOPM for the best security.
+
+ B) NeoStats + OPSB
+
+ URL: http://www.neostats.net/
+
+ NeoStats is the swiss knife of IRC tools. In combination with the OPSB
+ module by NeoStats Software, it can scan for proxies in a similar way
+ as BOPM does. The OPSB module is based on BOPM and has been adjusted to
+ be able to scan all clients from one centralized proxy detector.
diff --git a/docs/README b/docs/README
new file mode 100644
index 000000000..830e97b33
--- /dev/null
+++ b/docs/README
@@ -0,0 +1,377 @@
+Anope -- a set of IRC services for IRC networks
+-----------------------------------------------
+
+Anope is 2003-2008 Anope Team <info@anope.org>.
+Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>.
+Based on Services 1996-1999 Andrew Church <achurch@achurch.org>.
+
+This program is free but copyrighted software; see the file COPYING for
+details.
+
+Information about Anope may be found at http://www.anope.org/
+Information about Epona may be found at http://www.epona.org/
+Information about Services may be found at http://www.ircservices.esper.net/
+
+Table of Contents
+-----------------
+1) Credits
+2) Presentation
+3) Installation
+4) Command Line Options
+5) Messages Translation
+6) Contact and Mailing List
+
+1) Credits
+
+ Anope is based on Lara's Epona version 1.4.14.
+ Epona is based on Andy Church's IRC Services version 4.3.3.
+
+ The original credits:
+
+ * Mauritz Antunes
+ Portuguese translation
+ * Jose R. Holzmann, Raul S. Villarreal
+ Spanish translation
+ * Andrew Kempe <theshadow@shadowfire.org>
+ News system
+ * <d.duca@eurcom.net>
+ Italian translation
+ * <mikado@holyfire.com>
+ Turkish translation
+ * Andrew Kempe <theshadow@shadowfire.org>
+ Session limiting
+
+ Epona credits:
+
+ * lara <lara@pegsoft.net>
+ Main coding
+ * CafeiN <oytuny@yahoo.com>
+ Turkish translation
+ * Sylvain Cresto aka tost <scresto@netsante.fr>
+ FreeBSD 5 patch
+ * Marcelo Conde Foscarini aka Bras <ircadmin@brmarket.net>
+ Portuguese translation
+ * Alvaro Toledo aka POLLITO <atoledo@keldon.org>
+ Spanish translation
+ * chemical <chemical@musicplay.de>
+ German translation
+ * shine <dh@shinewelt.de>
+ German translation
+ * Guven Guzelbey aka MeShGuL <guzelbey@cs.utk.edu>
+ Turkish translation
+ * Jordi Pujol <jordi.pujol@aujac.org>
+ Catalan translation
+ * Eva Dachs <evadachs@terra.es>
+ Catalan translation
+ * Toni Perez <toni.perez@aujac.org>
+ Catalan translation
+ * Sergios Karalis <sergios_k@hotmail.com>
+ Greek translation
+ * Thomas J. Stensas aka ShadowMaster <shadowmaster@shadow-realm.org>
+ Ultimate 3.x support
+
+ Anope credits:
+
+ * Adam Kramer <ribosome@anope.org>
+ * Alvaro Toledo <atoledo@keldon.org>
+ * Amanda Folson <amanda@anope.org>
+ * Andrew Berquist <vash@anope.org>
+ * Björn Stiddien <keeper@anope.org>
+ * Charles Kingsley <chaz@anope.org>
+ * Chris Hogben <heinz@anope.org>
+ * Daniel Engel <dane@zero.org>
+ * David <dv@diboo.net>
+ * David Narayan <jester@phrixus.net>
+ * David Robson <rob@anope.org>
+ * Daniele Nicolucci <jollino@sogno.net>
+ * Florian Schulze <certus@anope.org>
+ * Gabriel Acevedo H. <drstein@anope.org>
+ * Jan Milants <viper@anope.org>
+ * JH <jh@irc-chat.net>
+ * Joris Vink <joris@anope.org>
+ * Lucas Nussbaum <lucas@lucas-nussbaum.net>
+ * Mark Summers <mark@goopler.net>
+ * Matthew Beeching <jobe@invictachat.net>
+ * Naram Qashat <cyberbotx@anope.org>
+ * Pieter Bootsma <geniusdex@anope.org>
+ * Robin Burchell <w00t@inspircd.org>
+ * Thomas Juberg Stensås <ShadowMaster@Shadow-Realm.org>
+ * Trystan .S Lee <trystan@nomadirc.net>
+ * openglx <openglx@brasnerd.com.br>
+
+ Anope Translations:
+
+ * GeniusDex <geniusdex@anope.org> (nl.l)
+ * Kein <kein-of@yandex.ru> (ru.l)
+ * Stuff <the.stuff@gmx.de> (de.l)
+ * Gabriel Acevedo H. <drstein@anope.org> (es.l)
+ * Janos Kapitany <sarkanyka@cjbchat.hu> (hun.l)
+ * Szymon S'wierkosz <szymek@adres.pl> (pl.l)
+
+ Anope uses the strlcat() and strlcpy() functions from OpenSSH 2.5.1p2.
+ These functions are copyrighted by Todd C. Miller:
+
+ Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED `AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
+
+
+2) Presentation
+
+ Anope is a set of Services for IRC networks that allows users to manage
+ their nicks and channels in a secure and efficient way, and administrators
+ to manage their network with powerful tools.
+
+ Currently available services are:
+
+ * NickServ, a powerful nickname manager that users can use to protect
+ themselves against nick stealing. Each user has its own nickname
+ group, that allows the user to register as many nicks as needed
+ while still being able to take profit of his privileges and to
+ modify the nick configuration. NickServ also has an optional
+ password retrieval feature.
+
+ * ChanServ, a powerful channel manager that helps users to administer
+ their channels in a totally customizable way. ChanServ has an
+ internal list of privileged users and banned users that controls
+ accesses on a per-channel basis. It eliminates all takeover
+ problems, because of its powerful op/unban/invite and even mass
+ deop and mass kick functions.
+
+ * MemoServ, an helpful companion that allows sending short messages
+ to offline users, that they can then read when they come online
+ later.
+
+ * BotServ, an original service that allows users to get a permanent,
+ friendly bot on their channels in an easy way. Each bot can be
+ configured to monitor the channels against floods, repetitions,
+ caps writing, and swearing, and to take appropriate actions. It
+ also can handle user-friendly commands (like !op, !deop, !voice,
+ !devoice, !kick, and many others), say a short greet message when
+ an user joins a channel, and even "take over" ChanServ actions such
+ as auto-opping users, saying the entry notice, and so on. This
+ service can be disabled if you want to save some bandwidth.
+
+ * OperServ, the IRCops' and IRC admins' black box, that allows them
+ to manage the list of network bans (also known as AKILL (DALnet) or
+ GLINE (Undernet)), to configure messages displayed to users when
+ they log on, to set modes and to kick users from any channel, to
+ send notices quickly to the entire network, and much more!
+
+ * HostServ, a neat service that allows users to show custom vHosts
+ (virtual hosts) instead of their real IP address; this only works
+ on daemons supporting ip cloaking, such as UnrealIRCd, UltimateIRCd
+ and ViagraIRCd.
+
+ * HelpServ, a skeleton service used to serve help files.
+
+ Anope currently works with:
+
+ * Bahamut 1.4.27 or later (including 1.8)
+ * Charybdis 1.0 or later
+ * DreamForge 4.6.7
+ * Hybrid 7 or later
+ * InspIRCd 1.0 or later (including 1.1)
+ * Plexus 2.0 or later (including 3.0)
+ * PTlink 6.15 or later
+ * RageIRCd 2.0 beta-6 or later
+ * Ratbox 2.0.6 or later
+ * ShadowIRCd 4.0 beta 7 or later
+ * Solid IRCd 3.4.6 or later
+ * UltimateIRCd 2.8.2 or later (including 3.0)
+ * UnrealIRCd 3.1.1 or later (including 3.2)
+ * ViagraIRCd 1.3 or later
+
+ Anope could also work with some of the daemons derived by the ones listed
+ above, but there's no support for them if they work or don't work.
+
+
+3) Installation
+
+ See the INSTALL file for instruction on installing Anope.
+
+
+4) Command Line Options
+
+ Normally, Anope can be run simply by invoking the "services" executable.
+ Anope will then use the defaults specified in the services.conf file, and
+ connect to the specified uplink server. Alternatively, any of the
+ following command-line options can be specified to change the default
+ values:
+
+ -remote server[:port] Connect to the specified server
+ -local host -or- Connect from the specified address (e.g. for
+ [host]:[port] multihomed servers)
+ -name servername Our server name (e.g. services.some.net)
+ -desc string Description of us (e.g. SomeNet Services)
+ -user username Username for Services' nicks (e.g. services)
+ -host hostname Hostname for Services' nicks (e.g. esper.net)
+ -dir directory Directory containing Services' data files
+ (e.g. /usr/local/lib/services)
+ -log filename Services log filename (e.g. services.log)
+ -update secs How often to update databases (in seconds)
+ -expire secs How often to check for nick/channel
+ expiration (in seconds)
+
+ Additionally, the following command-line options can be used to modify
+ the behavior of Anope:
+
+ -debug Enable debugging mode; more info sent to log (give
+ option more times for more info)
+ -readonly Enable read-only mode; no changes to databases
+ allowed, .db files and log not written
+ -skeleton Enable skeleton mode; like read-only mode, but only
+ OperServ is available
+ -nofork Do not fork after startup; log messages will be
+ written to terminal (as well as to the log file
+ if not in read-only mode)
+ -forceload Try to load as much of the databases as possible,
+ even if errors are encountered
+ -noexpire Expiration routines won't be run at all
+ -logchan Startup with logchan enabled
+ -version Display the version of Anope
+ -nothird Do not load the modules specified in ModulesAutoload
+ or ModulesDelayedAutoload in the config file
+ -protocoldebug Debug each incoming message after protocol parsing
+ -support Used for support, same as -debug -nofork -nothird
+
+ Upon starting, Anope will parse its command-line parameters, open its
+ logfile, then (assuming the -nofork option is not given) detach itself
+ and run in the background. If Anope encounters a problem reading the
+ database files or cannot connect to its uplink server, it will terminate
+ immediately; otherwise, it will run until the connection is terminated
+ (or a QUIT, SHUTDOWN, or RESTART command is sent; see OperServ's help).
+ In the case of an error, an appropriate error message will be written to
+ the log file.
+
+ If Anope is run with the "-readonly" command-line option, it can serve as
+ a "backup" to the full version of services. A "full" version of services
+ (run without -readonly) will automatically reintroduce its pseudo-clients
+ (NickServ, ChanServ, etc.), while a "backup" services will not, thus
+ allowing full services to be brought up at any time without disrupting
+ the network (and without having to take backup services down beforehand).
+
+ If Anope is run with the "-skeleton" command-line option, it will not try
+ to load the nickname or channel databases, and will respond with "service
+ is inactive" messages to any commands sent to NickServ, ChanServ,
+ MemoServ or BotServ. This can be useful as an emergency stopgap measure
+ when the main copy of Anope cannot be started.
+
+ The "-debug" option is useful if you find or suspect a problem in Anope.
+ Giving it once on the command line will cause all traffic to and from
+ services as well as some other debugging information to be recorded in
+ the log file; if you send a bug report, PLEASE include an excerpt from
+ the log file WITH DEBUGGING ACTIVE; we cannot emphasize enough how
+ important this is to tracking down problems. (You can also enable
+ debugging while Services is running using OperServ's SET DEBUG command.)
+ If you repeat the -debug option more than once, the debugging level will
+ be increased, which provides more detailed information but may also slow
+ Anope down considerably and make the log file grow dramatically faster
+ (in particular, at debug level 4 a message is written to the log for
+ every character received from the server). In general, a debug level of 1
+ is sufficient for the coding team to be able to trace a problem, because
+ all network traffic is included and we can usually reproduce the problem.
+
+ The "-forceload" option is provided to attempt recovery of data from
+ corrupted or truncated databases. Normally, if Anope encounters an error
+ writing to a database file, it will attempt to restore the original
+ version of the file and report an error to the logfile and through
+ WALLOPS. However, if this should fail (which normally should not happen),
+ or if Anope is terminated abruptly e.g. by kill -9 or a power failure,
+ then one or more of the databases may be corrupt. Normally, this will
+ cause Anope to abort the next time you try to run it; however, if yo
+ give the -forceload option to Anope, it will instead read as much as it
+ can, then skip to the next database. For obvious reasons, it's highly
+ recommended to keep backup copies of your databases in case something
+ does happen (since Anope will stop at the first error in a database, even
+ with -forceload, meaning you lose any data after that).
+
+5) Messages Translations
+
+ Anope has a powerful option in NickServ allowing users to choose what
+ language it must use when sending messages to users. Messages are stored
+ in language files (located in the lang directory).
+
+ Anope is currently provided with thirteen languages: Catalan, Dutch,
+ English, French, German, Greek, Hungarian, Italian, Polish, Portuguese,
+ Russian, Spanish and Turkish. If you want to translate Anope messages
+ into another language, follow this instructions:
+
+ * Copy the lang/en_us.l file to a meaningful name (for example, if
+ you would like to translate messages in Spanish, you would rename
+ it to es.l).
+
+ * Edit the file with your favorite text editor. Carefully read the
+ instructions given at the top of the file, and start translating
+ the whole file. The file is big, so make sure you have some coffee
+ available ;) Try to avoid the use of English words as much as
+ possible. If the new language contains only a few 'special'
+ characters, try and use latin representations of it, if possible.
+ Remember that most clients are only capable of handling the
+ ISO-8859-1 charset. Of course, if you are translating Anope to a
+ language with a totally different charset, such as Russian, feel
+ free to use the one that suites it best (and the one that is in use
+ by most speakers of that language ;)).
+
+ * When this is done, you have two solutions: either patch Services
+ source code so they take in account the new language file
+ (basically, you'll have to modify lang/Makefile, language.c and
+ maybe services.h), or send us the translated file so we can make
+ the patch and include your language in the next Anope release.
+
+ * Note that there is a language tool on bin/langtool.pl that can aid
+ the verification process on newly created language files. Try to
+ use it before you submit a language file.
+
+ When new major releases come out, you'll not have to retranslate the
+ whole file; the Changes.lang file will help you to know which messages
+ were added, modified or deleted.
+
+ If you did a language file translation, and want to let others use it,
+ please send it to dev@anope.org (don't forget to mention clearly your
+ (nick)name, your e-mail and the language name). You'll of course get full
+ credit for it, and will even get future final major releases before
+ anyone else to complete the translation!... ;)
+
+6) Contact
+
+ For announcements and discussions about Anope, please visit our
+ Portal and Forums at http://www.anope.org/ -- make sure you register
+ yourself and your network to get full benefits.
+
+ If you read the documentation carefully, and didn't find the answer to
+ your question, feel free to post on the website forums or join our irc
+ channel (irc.anope.org #anope). Once you join our Support channel, just
+ type "? report" for instructions on how to report a Bug. Be as precise as
+ possible when asking a question, because we have no extraordinary powers
+ and can't guess things if they aren't provided. The more precise you are,
+ the sooner you'll be likely to get an answer.
+
+ If you think you found a bug, add it to the bug tracking system
+ (http://bugs.anope.org) and - again - be as precise as possible. Also say
+ whether the bug happens always or under what circumstances, and anything
+ that could be useful to track your bug down. If you wrote a patch, send
+ it over. :)
diff --git a/docs/WIN32.txt b/docs/WIN32.txt
new file mode 100644
index 000000000..241390271
--- /dev/null
+++ b/docs/WIN32.txt
@@ -0,0 +1,209 @@
+Anope for Windows
+-----------------
+
+1) Building the Source
+2) Installation
+3) Compiling Modules
+4) Other compile options
+5) Credits
+
+1) Building the Source
+
+ NOTE: If you have downloaded one of the pre-compiled installers, you do
+ NOT need to complete this step, and you can proceed to step 2.
+
+ If you want to build Anope from source on a Win32 system, you will need
+ to follow this instructions:
+
+ 1) Download the required files:
+
+ * Current Anope source:
+ http://sourceforge.net/project/showfiles.php?group_id=94081
+
+ If you have Visual C++ 6, 7 (.NET 2002/2003) or 8 (2005) skip ahead to step 2, else you
+ need to download the following free components from Microsoft. Once
+ downloaded, install these packages.
+
+ * Microsoft Visual C++ 2008 Express Edition:
+ http://www.microsoft.com/express/vc/
+
+ or
+
+ * Microsoft Visual C++ 2005 Express Edition:
+ http://msdn.microsoft.com/vstudio/express/visualc/download/
+
+ then download and install:
+
+ * Microsoft Windows PlatformSDK: (Requires WGA validation)
+ http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
+
+ (NOTE: Although this says for Windows Server 2003, it does infact work on all supported
+ versions of Windows. When installing, you should select the Custom option, and ensure
+ that only the top selection, and the bottom selection are checked. This will cut down
+ install time dramatically)
+
+ * MySQL for Windows (only needed if building with MySQL enabled):
+ http://dev.mysql.com/
+
+ (NOTE: Anope can be compiled against MySQL Version 3.23 and above)
+
+
+ 2) Unpack the Anope tarball with your favorite uncompression program
+ (WinZip or WinRAR, etc).
+
+ 3) Bring up the Visual C++ Command Prompt; This will launch a
+ DOS Command Prompt like window, which will set the environment
+ properties needed to make Anope.
+
+ Change directories to where you unpacked the source code in step 2, by typing:
+
+ cd <path to extracted source>
+
+ e.g.
+
+ cd c:\anope-trunk
+
+ 4) You now need to configure Anope to your requirements. At the prompt type:
+
+ Config.bat
+
+ NOTE: If you run an Anti-Virus program such as McAfee or Norton, you may
+ be unable to run this command due to the protection in place. Some Anti-
+ Virus programs may detect the Anope Configuration Tool as a worm, however
+ this is not the case. If you are prompted to allow or deny execution of
+ the script, you should choose allow. If the script fails to run, and no
+ notice is displayed, please check your Anti-Virus settings before seeking
+ assistance.
+
+ An interactive configuration program should guide you through the install
+ options, and then detect your Microsoft Visual C++ Library files. If it
+ fails to detect them, you should check you have everything installed.
+
+ If you cannot find whats causing the error, please visit our forums or
+ our IRC Support channel for assistance.
+
+ 5) You are now ready to compile. At the prompt type:
+
+ nmake -f Makefile.win32
+
+ Once you are back at the command prompt again, if there have been no
+ errors, you are ready to go.
+
+ Should you encounter errors with the installation process, check the
+ messages displayed for advice on resolving them. If you are unable to
+ resolve the issues yourself, seek assistance on our forums or in our
+ IRC Support channel.
+
+ 6) Anope will install the files where they belong. The only thing you need
+ to do is rename "data/example.conf" to be "data/services.conf".
+
+ You have now completed the building phase of Anope for Windows. You can
+ now move on to the next section, which is related to setting up Anope.
+
+2) Installation
+
+ Since Anope for Windows does not use a visual interface, you must do the
+ configuration with a text editor before proceeding with running Anope
+ itself.
+
+ NOTE: You may need to open the configuration file with Wordpad, or a text
+ editor which supports UNIX line endings. Opening the configuration file in
+ Notepad will cause strange characters to appear, and you may not be able to
+ edit the file correctly.
+
+ Open services.conf, and read through it carefully and adjust the settings
+ you think you need to adjust. Pay special attention to these settings:
+
+ A) IRCDModule: This is the name of an IRCd Module that Anope will use
+ to communicate with your server. Anope supports 15 IRCds,
+ so ensure you set the right value here.
+ B) RemoteServer: This is the address to your ircd, along with the port
+ and password. You should consult your ircd
+ documentation on how to link ircds.
+ C) ServicesRoot: Remove the # and change the names to your nick so you
+ can take control of services once they are online.
+ D) UserKey1/2/3: Remove the # infront of the three UserKey settings, and
+ change the parameters to numbers; around 6-7 digits will
+ do.
+
+ If you are unsure of the settings, you can go to the dos command prompt
+ and run "anope.exe -nofork -debug" and watch the information as it
+ attempts to connect.
+
+ You can launch services in two ways. If you are sure that the entered
+ configuration information is correct, simply double clicking the Anope
+ executable will cause it to start; no window will pop up. If you'd rather
+ have a more textual output, you can start at the dos prompt and type in
+ "anope.exe". If services are successfully started up the dos prompt will
+ seem to hang; at this point you can safely close the dos window.
+
+3) Compiling Modules
+
+ If you want to build other modules than the ones shipped by default, you
+ will need to modify the Makefile.inc.win32 file, in the src\modules folder.
+
+ A) Add modules; find the line stating "SRCS=" and add the name of the
+ file to the end of the line. So if you have two files:
+
+ SRCS=file.c file2.c
+
+ If you are compiling a folder of module components, such as the example
+ "catserv", you will need to add/change the "SUBS=" line. If you were
+ compiling the "catserv" example, the line would look like this:
+
+ SUBS=catserv
+
+ B) When you've done this, use the same command prompt you set up in part
+ 1, change directories to the src\modules folder, and type:
+
+ nmake -f Makefile.win32
+
+ followed afterwards, by:
+
+ nmake -f Makefile.win32 install
+
+ C) You should now be able to load your modules on IRC via OperServ, or via
+ the services.conf file.
+
+
+4) Other compile options
+
+ A) If you have trouble recompiling Anope, you should try:
+
+ nmake -f Makefile.win32 distclean
+
+ This will clean up the source directory and allow for chages to be applied
+ to previously compiled files.
+
+ B) A list of valid options are:
+
+ install
+ distclean
+ clean
+ spotless
+ all
+ core
+ protocols
+ mypasql
+ languages
+ modules
+
+ The syntax for these options is:
+
+ nmake -f Makefile.win32 [option]
+
+5) Credits
+
+ Anope is based on Epona and IRCServices. See CREDITS for more credits and
+ a complete list of all developers.
+
+ Anope's Windows-specific code is provided by:
+
+ * Dominick Meglio <codemastr@unrealircd.com>
+ * Trystan Scott Lee <trystan@nomadirc.net>
+ * Chris Hogben <heinz@anope.org>
+
+ Anope's Windows Installer was made using:
+
+ * NSIS 2.20 <http://nsis.sourceforge.net>
+