diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/ASTYLE | 1 | ||||
-rw-r--r-- | docs/AUTHORS.txt | 92 | ||||
-rw-r--r-- | docs/BUGS | 1 | ||||
-rw-r--r-- | docs/C++CASTING | 111 | ||||
-rw-r--r-- | docs/CMakeLists.txt | 6 | ||||
-rw-r--r-- | docs/CODING | 239 | ||||
-rw-r--r-- | docs/Changes | 715 | ||||
-rw-r--r-- | docs/Changes.conf | 364 | ||||
-rw-r--r-- | docs/DEFCON | 8 | ||||
-rw-r--r-- | docs/EVENTS | 34 | ||||
-rw-r--r-- | docs/INSTALL | 28 | ||||
-rw-r--r-- | docs/INSTALL.fr | 30 | ||||
-rw-r--r-- | docs/LANGUAGE | 2 | ||||
-rw-r--r-- | docs/MODULES | 6 | ||||
-rw-r--r-- | docs/NEWS | 6 | ||||
-rw-r--r-- | docs/README | 16 | ||||
-rw-r--r-- | docs/REDIS | 6 | ||||
-rw-r--r-- | docs/RPC/RPC | 21 | ||||
-rw-r--r-- | docs/RPC/jsonrpc.js | 183 | ||||
-rw-r--r-- | docs/RPC/jsonrpc.php (renamed from docs/XMLRPC/xmlrpc.php) | 37 | ||||
-rw-r--r-- | docs/RPC/rpc_data.md | 309 | ||||
-rw-r--r-- | docs/RPC/rpc_message.md | 67 | ||||
-rw-r--r-- | docs/TOOLS | 25 | ||||
-rw-r--r-- | docs/WIN32.txt | 6 | ||||
-rw-r--r-- | docs/XMLRPC/XMLRPC | 29 |
25 files changed, 1107 insertions, 1235 deletions
diff --git a/docs/ASTYLE b/docs/ASTYLE deleted file mode 100644 index be8cf2325..000000000 --- a/docs/ASTYLE +++ /dev/null @@ -1 +0,0 @@ -astyle --style=java --indent=tab --brackets=break-closing --indent-switches --indent-cases --brackets=break diff --git a/docs/AUTHORS.txt b/docs/AUTHORS.txt new file mode 100644 index 000000000..adb941aa9 --- /dev/null +++ b/docs/AUTHORS.txt @@ -0,0 +1,92 @@ +Since the first commit in March 2004 88 people have submitted patches, commits, +and other useful contributions to Anope. These people, ordered by the number of +contributions they have made, are: + + * Adam <adam@anope.org> + * Sadie Powell <sadie@witchery.services> + * Robin Burchell <w00t@inspircd.org> + * Naram Qashat <cyberbotx@anope.org> + * Pieter Bootsma <geniusdex@anope.org> + * Jens Voss <dukepyrolator@anope.org> + * David Robson <rob@anope.org> + * Florian Schulze <certus@anope.org> + * Daniel Engel <dane@zero.org> + * Trystan S. Lee <trystan@nomadirc.net> + * Robby <robby@chatbelgie.be> + * Charles Kingsley <chaz@anope.org> + * Lee Holmes <lethality@anope.org> + * Gabriel Acevedo H. <drstein@anope.org> + * Jan Milants <viper@anope.org> + * Adam Kramer <ribosome@anope.org> + * Attila Molnar <attilamolnar@hush.com> + * Michael Wobst <wobst.michael@web.de> + * Mark Summers <mark@goopler.net> + * Matt Schatz <genius3000@g3k.solutions> + * Daniel Vassdal <shutter@canternet.org> + * MatthewM <mcm@they-got.us> + * PeGaSuS <droider.pc@gmail.com> + * Sebastian V. <hal9000@denorastats.org> + * Alvaro Toledo <atoledo@keldon.org> + * Dragone2 <dragone2@risposteinformatiche.it> + * Björn Stiddien <keeper@anope.org> + * n0kS Phr33d0m <god@politeia.in> + * Hendrik Jäger <gitcommit@henk.geekmail.org> + * k4be <k4be@pirc.pl> + * Thomas Fargeix <t.fargeix@gmail.com> + * Bram Matthys <syzop@vulnscan.org> + * Federico G. Schwindt <fgsch@lodoss.net> + * Val Lorentz <progval+git@progval.net> + * Alexander Barton <alex@barton.de> + * CaPa CuL <capacul@gmail.com> + * Cronus <cronus@nite-serv.com> + * H7-25 <simos@simosnap.org> + * Jyzee <jyzee.git@gmail.com> + * Sebastian Barfurth <github@afreshmelon.com> + * Zantox <jyoerger10@msn.com> + * Zoddo <zoddo.ino@gmail.com> + * Dominic Hargreaves <dom@earth.li> + * Michael Hazell <michaelhazell@hotmail.com> + * Robert Scheck <robert@fedoraproject.org> + * Dennis Friis <peavey@inspircd.org> + * Filippo Cortigiani <simos@simosnap.org> + * Michał Zegan <webczat_200@poczta.onet.pl> + * AlphaTech <alphat3ch@icloud.com> + * Austin Ellis <siniStar@IRC4Fun.net> + * bonnedav <theD_2011@hotmail.com> + * Denis M. (Phr33d0m) <god@politeia.in> + * Harakiri <harakiri@overstack.fr> + * Marcin Łabanowski <marcin@6irc.net> + * Matt Ullman <matt@airraidsirens.com> + * Michael Stapelberg <michael@robustirc.net> + * Alexander Maassen <outsider@twingoversum.scarynet.org> + * artemiiav <artemiiav@gmail.com> + * blackbeard420 <blackbeard@blackbeard420.me> + * BoGu5 <bogus@onzin.org> + * Chris Langsenkamp <chris@langsenkamp.com> + * Clem Morton + * Daniel Oaks <danneh@danneh.net> + * Fabio Scotoni <cculex@gmail.com> + * ItsOnlyBinary + * Jason Foster <retsofaj@gmail.com> + * Jeremy <jeremy@ssnet.ca> + * Josh Soref + * KindOne <ineedalifetoday@live.com> + * linuxdaemon + * Mantas Mikulėnas <grawity@gmail.com> + * Matthew Beeching <jobe@mdbnet.co.uk> + * Michael <michaelhazell@hotmail.com> + * Mingjie Shen <shen497@purdue.edu> + * nekoswag + * Peter Tseng <pht24@cornell.edu> + * Romain Rivière <lecoyote@lecoyote.org> + * Sam James (sam_c) <sam@cmpct.info> + * ShutterQuick <shutter@canternet.org> + * Sketch <denverfreeburn@outlook.com> + * Tim Gunter <tim@vanillaforums.com> + * Toni Kaija <diftraku@gmail.com> + * Victor Coss <gtaxl@gtaxl.net> + * VisioN <vision@myirc.us> + * westor <westor7@gmail.com> + * Wilson Birney <wpb@360scada.com> + * Yann Sionneau <yann@sionneau.net> + * Zach Bloomquist <zrbq@live.com> diff --git a/docs/BUGS b/docs/BUGS deleted file mode 100644 index 38398be01..000000000 --- a/docs/BUGS +++ /dev/null @@ -1 +0,0 @@ -For all bug reports / updates please see https://github.com/anope/anope/issues diff --git a/docs/C++CASTING b/docs/C++CASTING deleted file mode 100644 index eed640bec..000000000 --- a/docs/C++CASTING +++ /dev/null @@ -1,111 +0,0 @@ -C++-style Casting -================= - -In C, you can cast in one of two ways: - -(type)var -type(var) - -The problem with C-style casting is that it allows a programmer to get away -with too much, and is also not designed to handle C++ classes. - -C++ has 4 types of casting in addition to allowing C-style casting. They are: - -static_cast -const_cast -dynamic_cast -reinterpret_cast - -The syntax is usually *_cast<type>(var). - -static_cast ------------ - -From my experience, this cast is closest to C-style casting for non-pointer -types as well as between some (but not all) pointer types. This type of cast, -like C-style casting, is performed at compile-time. static_cast can also do -a downcast of a derived class to a base class, but only if the base class is -not a virtual base class. Sometimes the result of this cast can become -undefined. static_cast is a bit more strict that C-style casting, though. It -disallows certain class conversions that would've been allowed with a C-style -cast. static_cast also doesn't allow you to cast to an incomplete type. In -these cases, I would try either dynamic_cast or reinterpret_cast. - -const_cast ----------- - -This cast is mainly to add or remove const-ness or volatile-ness from a -variable. This is safer than using a C-style cast to change the const-ness -of a variable. In most cases if you try to use one of the other casts and it -complains about const-ness, you will want to either use this cast instead or -wrap the other cast around this cast. An example: - -const int *a; -static_cast<void *>(a); <-- This will fail. - -To remedy the above, you would might try this: - -const int *a; -const_cast<void *>(a); <-- But this will still fail. - -The real solution is this: - -const int *a; -static_cast<void *>(const_cast<int *>(a)); - -It is not recommended to use const_cast on the this variable within a member -function of a class that is declared const. Instead you should use the mutable -keyword on the variable in the class's definition. - -dynamic_cast ------------- - -This cast can only be used on pointers or references to classes. It can cast a -derived class to a base class, a derived class to another derived class -(provided that both are children of the same base class), or a base class to a -derived class. You can also use this to cast a class to void *. This cast is -done at run-time as opposed to the other casts, and relies on C++'s RTTI to be -enabled. It is meant to be used on polymorphic classes, so use static_cast on -non-polymorphic classes. - -derived-to-base conversions are actually done statically, so you use either -dynamic_cast or static_cast on them, regardless of if the classes are -polymorphic or not. - -derived-to-derived or base-to-derived conversions, however, rely on run-time -type information, and this cast is used on those classes that are polymorphic. -This is safer than C-style casting in that an invalid pointer conversion will -return a NULL pointer, and an invalid reference conversion will throw a -Bad_cast exception. - -Note that in Anope we prefer if Anope::debug_cast is used. -This uses dynamic_cast (and checks for a NULL pointer return) on debug builds -and static_cast on release builds, to speed up the program because of dynamic_cast's -reliance on RTTI. - -reinterpret_cast ----------------- - -This cast I would use only as a last resort if static_cast isn't allowed on a -conversion. It allows for conversions between two unrelated types, such as -going from char * to int *. It can also be used to convert a pointer to an -integral type and vica versa. The sites I've read mention how the result is -non-portable, which I assume means the resulting object code is non-portable, -so since the code is compiled on many systems anyways, I don't see this as -being a huge issue. It is recommended to only use this if necessary, though. - -Links -===== - -The following links are web sites I've used to get this information, and might -describe some of the above a bit better than I have. :P - -https://www.acm.org/crossroads/xrds3-1/ovp3-1.html -http://www.cplusplus.com/doc/tutorial/typecasting.html -http://www.codeguru.com/forum/showthread.php?t=312456 -https://web.archive.org/web/20170810222238/http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html -https://www.microsoft.com/en-us/download/details.aspx?id=55984 -https://en.wikibooks.org/wiki/C%2B%2B_Programming/Type_Casting -https://web.archive.org/web/20160510114447/http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=134 - --- CyberBotX, Nov 23, 2008 diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 082b1da0e..64387fc73 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -6,10 +6,10 @@ if(WIN32) if(IN_SOURCE) # Add README.txt to list of files for CPack to ignore add_to_cpack_ignored_files("README.txt$" TRUE) - endif(IN_SOURCE) - set(DOCS Changes Changes.conf DEFCON FAQ INSTALL LANGUAGE MODULES NEWS ${CMAKE_CURRENT_BINARY_DIR}/README.txt WIN32.txt) + endif() + set(DOCS Changes Changes.conf DEFCON FAQ INSTALL LANGUAGE MODULES ${CMAKE_CURRENT_BINARY_DIR}/README.txt WIN32.txt) install(FILES ${DOCS} DESTINATION ${DOC_DIR} ) set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/README.txt") -endif(WIN32) +endif() diff --git a/docs/CODING b/docs/CODING deleted file mode 100644 index 6c56d0ddf..000000000 --- a/docs/CODING +++ /dev/null @@ -1,239 +0,0 @@ -Originally pulled from: https://wiki.inspircd.org/Coding_Guidelines - ---- - -InspIRCd Coding Guidelines - -The following are a set of guidelines for writing patches to InspIRCd, or for -creating modules for distribution with the official package. These guidelines -were written a time after InspIRCd development started, and so not all code -yet follows these. This will be rectified with time. - - -1. Comments - - * Multi Line - Multiple line comments should follow the C-style comment, for example: - /* - * This is a multiple line comment, huzzah.. - */ - - * Single Line - Single line comments should also be in the C style, for example: - /* This is a boring one-line comment */ - - * Doxygen commenting - If you wish your comment to show in doxygen, the comment should be directly - above the item you are documenting (a class, function, enum, etc) and the - first line should be "/**". For example: - /** This is a doxygen multiline comment. - * Description of thingymebob here. - */ - - The first line after the "**" is used as the short description of the item - (up to the full stop) and everything afterwards as the detailed description. - - -2. Indentation - - Tabs. Tabs. ONLY TABS. Use a single tab for each level of indentation, - for example: - int main() - { - <tab>if (condition) - <tab>{ - <tab><tab>code - <tab>} - } - - -3. Separation - - Always put a space in between a keyword like if/while and the condition, - for example: - if (foo == bar) - NOT - if(foo == bar) - - -4. Braces - - Always put braces opening and closing blocks on separate lines, see the - indentation example. For example, place braces like this: - if (apples == "green") - { - cout << "Apples are green" << endl; - } - - and not: - if (apples == "green") { - cout << "Apples are green" << endl; - } - - The one exception to this is if you are declaring a class method which is - only one line long, in that case the following is acceptable in most cases: - class foo : public bar - { - foo() { } - getrandomfoo() { return rand(); } - }; - - -5. Templates - - Where possible, use templates rather than #defines. Avoid use of RTTI. - - -6. Structs - - Structs should be declared in the following fashion: - struct BodyPartBasket - { - int arms; - int legs; - int scrotalsacs; - }; - and not like this: - typedef struct - { - int arms; - int legs; - int scrotalsacs; - } BodyPartBasket; - - The second way is not required in C++ to be able to do this: - BodyPartBasket mybasket; - - Plus, placing the name at the bottom of the declaration makes readability - more difficult (as you have to scroll down to the bottom of the struct to - find its name). (where possible, call them classes rather than structs.) - - -7. Variable naming - - Class and struct names should be in camel case with a leading capital letter, - for example "MyBagOfBones" and not "my_bag_of_bones" or "mybagofbones". - Variable names can be in either camel case with a leading capital letter or - alternatively all lower case, so long as the same naming convention is - adhered to throughout the class. No classes or variables should be named in - capitals unless this makes sense for the name (for example "class DNS"). - Constants and enum values should always be completely in CAPITALS and - underscores may be used, for example: - enum DecayState - { - DECAYED_MOULDY = 0, - DECAYED_SMELLY = 1, - DECAYED_MAGGOTS = 2 - }; - All value names in an enum should be started with the same text which should - be related in some way to the enum's use. For example "DNS_CNAME, DNS_A, - DNS_AAAA". - - -8. Use of references - - Wherever possible, when dealing with any complex class, pass a const reference - rather than a copy of the class. For example: - MyThingy::MyThingy(const std::string &thingyvalue) - { - } - Of course, if you intended to change the string you can just omit the 'const'. - - -9. Use of char pointers - - Whenever you use char pointers (char*, char**) try to use const equivalents. - This is much safer and avoids ugly and dangerous casts. For example: - MyThingy::Thingify(const char* const* wotsits) - { - } - If it is possible without performance loss, consider avoiding char pointers - altogether and using std::string instead. - - -10. Use of STL - - For more information on use of STL in InspIRCd, please see the separate - STL FAQ. - - -11. Making copies of data - - Never ever make a copy of a piece of data unless it is absolutely necessary. - For example, don't use strlcpy() to make a copy of the const char* string - returned by std::string::c_str(), if the change can be done to the std::string - itself. The same goes for unnecessary variable assignments, especially those - which assign large classes. - - -12. namespace std - - Avoid the following: - using namespace std; - It might take a bit more typing, but things work better if you don't set - (then later assume) the namespace -- specify it explicitly when you want to - use it. - - -13. Linefeeds - - Unix linefeeds only please. We do not like to see our screens covered in ^M. - - -14. Portability - - Always make sure your code is portable to all supported operating systems, - remember of course that as of 1.1.8 this includes windows. Don't write code - that only works on windows, or only works on Linux. Test your code on all - platforms or ask for help from other developers who have the platforms you - want to test on. - - * new() and delete(), malloc() and free() - Apart from the fact that using malloc() and free() is bad practice in C++ - code, you must never use malloc() or free() in InspIRCd, within its modules - or within the core. This is because if you use malloc() or free() in windows, - the memory is claimed from the program's local heap. - In windows, each shared object (module, dll) has its own heap, which is - protected from other dlls and executables. To get around this issue and - allow more posix-like memory access from other dlls in the program (other - modules), InspIRCd overrides the operators new and delete to ensure that - memory allocated by them comes from the windows global heap. If you use - malloc() and free() for this, the ircd will segfault when another module - tries to access the memory you have allocated! - - * strdup() - As with malloc(), above, strdup() should be avoided. Where strdup() is - absolutely necessary, use strnewdup() which is our strdup() implementation - that calls operator new instead of using malloc(). - char arrays allocated by strnewdup() should be deleted with operator delete[]. - - * CoreExport and DllImport - Prefix all types you want to import or export to other modules with CoreExport - and DllImport macros. These do nothing in POSIX operating systems, however - in windows these are expanded to the instructions __declspec(dllimport) and - __declspec(dllexport) respectively depending on where they are used and how. - - -15. External Dependencies - - If a module is compiled as standard, or the code is part of the core, you must - not use any dependencies that are not available as standard on all supported - operating systems beyond libstdc++, libc, and whatever else is currently - required to build the core. Modules which use nonstandard dependencies belong - in the modules/extra directory. - - -16. Profiling and Performance - - It is one thing to assume that code performs bad, it is another thing to prove - that it actually is. A lot of experienced programmers talk about 'premature - optimisation', and here is what it means: if you have a piece of code called - once on startup that takes 10 seconds instead of one second to run, and a - piece of code that takes 0.05 seconds to run when it should take 0.01, and - it is called once per second, the second piece of code is the priority. - - In other words, make sure that what you think is slow, and a performance - problem in Insp actually is. - To do this, use the callgrind tool from Valgrind (valgrind --tool=cachegrind - bin/inspircd -nofork -debug), and kcachegrind (or similar) to view the output - files. diff --git a/docs/Changes b/docs/Changes index ab8f1c1d7..9445a9063 100644 --- a/docs/Changes +++ b/docs/Changes @@ -1,497 +1,240 @@ -Anope Version 2.0.18-git +Anope Version 2.1.14-git ------------------------ -Backported better sendmail error messages from 2.1. -Fixed building Anope with CMake 4. -Fixed compatibility with MariaDB. -Fixed counting email addresses in ns_maxemail. -Fixed importing user ICQ and URL data from 1.8. -Fixed operserv/ignore not being prioritised first. -Fixed resetting the stats with operserv/stats. -Updated the Dutch translation. - -Anope Version 2.0.17 --------------------- -Fixed importing large flatfile databases into SQL. -Fixed marking channels as permanent. -Fixed serialising unset boolean extension items. -Fixed the documentation about how to import SQL databases. -Fixed the documentation of options:usemail. -Fixed the location of the geoipupdate CSV files. -Fixed translating memo emails. -Fixed unnecessary SQL updates caused by dereferencing user accounts. -Increased the size of the chanstats letter and word count columns. -Updated the location of the Anope IRC channels. +Added a matcher for the InspIRCd oper extban. +Bumped the minimum required CMake version to 3.20. +Fixed stripping IRC formatting codes from messages. +Redocumented the ns_sasl module. +Removed hardcoded command names from several messages. -Anope Version 2.0.16 +Anope Version 2.1.13 -------------------- -Added a workaround for users matching expired sqlines. -Fixed a copy/paste error in webcpanel. -Fixed a crash in db_flatfile caused by trying to serialize data without a type. -Fixed duplicate messages when synconset/syncongroup is set. -Fixed expiring channel suspensions. -Fixed expiring forbids. -Fixed expiring nick suspensions. -Fixed feature detection on InspIRCd. -Fixed InspIRCd account cloaks causing CHGHOST spam when a user also has a services vhost. -Fixed joining users to channels with a key set on InspIRCd. -Fixed logging users out fully when their nick gets suspended. -Fixed marking boolean columns in SQL as TEXT instead of INT. -Fixed matching extbans on InspIRCd and implement missing matchers. -Fixed operserv/sqline expiry on UnrealIRCd -Fixed respecting --noexpire in cs_suspend and ns_suspend. -Fixed sending emails to nicks ending with a backslash. -Fixed sending SVSTOPIC when topiclock is loaded on InspIRCd. -Fixed some SQL tables taking up too much space on disk. -Fixed the default config for channel suspensions. -Fixed the TIME message on InspIRCd. -Fixed trying to escape SQL data when not connected to MySQL. -Fixed {ldap,sql}_authentication creating zombie accounts on expiry. - -Anope Version 2.0.15 +Added a Config check to ensure users actually want to use the development branch. +Added a flag to the version string when Anope is compiled in reproducible mode. +Added a warning on rehash when the max password is longer than the maximum bcrypt password length. +Added an ALLTIME handler on InspIRCd. +Added an opt-out for extended XML-RPC types. +Added RPC messages for sending global messages. +Added support for importing cs_set_misc and ns_set_misc data from Atheme. +Added support for importing news from Atheme. +Added support for oper-only quit messages. +Added support for the experimental "services cloak" system from the InspIRCd development branch. +Added support for using defines from the environment. +Added support for using defines within the value of a variable. +Blacklisted an old version of an UnrealIRCd module that is known to send malformed S2S messages. +Changed RPC events to be registered as core services. +Changed the database to refer to accounts by their account identifier instead of their display nick. +Changed the syntax of defines from "foo" to "${foo}". +Deduplicated JSON generation code in the jsonrpc module. +Fixed a warning when importing an Atheme account that uses external authentication. +Fixed counting email addresses in ns_maxemail. +Fixed db_atheme creating duplicate accounts, bots, and nicks when importing over an existing database. +Fixed deleting old database backups after Anope has been restarted. +Fixed importing user metadata from Anope 1.8. +Fixed including a port in uplink messages when connecting to a UNIX socket endpoint. +Fixed memo ignores being erroneously case sensitive. +Fixed modules with third-party dependencies writing generic log messages instead of module log messages. +Fixed not performing SQL database updates in some rare circumstances. +Fixed sending global messages with the default sender. +Imported mkauthors from InspIRCd and used it to generate docs/AUTHORS.txt +Moved around a bunch of module headers. +Moved database serialization from the serializable to the serializable type. +Moved the SASL protocol interface to its own service. +Refactored handling S2S metadata on InspIRCd. +Updated more messages to use gettext plural forms. + +Anope Version 2.1.12 -------------------- -Fixed a race condition in changing the nick of a user. -Fixed being able to reset the password of suspended accounts. -Fixed chanserv/suspend info not being visible to regular users. -Fixed removing entries by an alias in chanserv/access and chanserv/xop. -Fixed various grammar issues in messages. -Made the SASL PLAIN implementation more robust. +Added an example JavaScript library for accessing the RPC interface. +Added an option to require specifying the server name when running destructive network commands like restart or shutdown. +Added support for importing X-line identifiers from Atheme. +Added support for JSON-RPC to the RPC interface. +Added support for killing SASL users that fail to log in repeatedly. +Added support for more RPC response types to the RPC interface. +Added support for multiple targets in chanserv/modes. +Added support for SSL client certificate fallback fingerprints on InspIRCd. +Added the anope. prefix to the channel and user RPC events and moved them to the rpc_data module. +Added the anope.listChannels, anope.listServers, anope.listUsers, and anope.server RPC events to the new rpc_data module. +Added the OPERONLY, UNUSED and VANITY filters to botserv/botlist. +Added the system.listMethods RPC event to the new rpc_system module. +Deprecated support for InspIRCd v3 (scheduled to be removed in around a year). +Fixed enc_bcrypt silently truncating passwords longer than 71 characters. +Fixed ns_set_language being able to be loaded when Anope was built without language support. +Fixed sql_authentication not being able to use the IP address of a RPC, SASL, or web user in SQL queries. +Made modules that use third-party libraries log the version in use on load. +Redesigned the RPC interface to add support for emitting multiple data types. +Replaced the opers RPC event with rpc.listOpers and rpc.oper events in the new rpc_data module. Updated the Dutch translation. -Updated the French translation. -Updated the Turkish translation. -Anope Version 2.0.14 +Anope Version 2.1.11 -------------------- -Added support for sqlining channels on UnrealIRCd. -Fixed a crash when trying to access config for non-loaded modules. -Fixed detection of the InspIRCd nopartmsg module. -Fixed not getting memo notifications when authing with SASL. -Fixed not serialising dontkickops/dontkickvoices in botserv/kick. -Fixed sending emails with the wrong kind of line terminator. -Fixed sending log messages from a renamed pseudoclient. -Fixed telling users their passcode is incorrect when they need to authenticate in nickserv/confirm. -Fixed the Config script freezing on some versions of util-linux. -Updated the Windows packaging scripts to use dependencies from Conan. - -Anope Version 2.0.13 --------------------- -Fixed a crash on some compilers when trying to call methods on a null pointer -Fixed a crash when encountering an unterminated commented config block -Fixed erroneously rejecting spaces in fantasy:name -Fixed marking services pseudoclients as an oper on InspIRCd -Fixed not checking user@ip as well as user@host when logging into an operator account -Fixed setting the vhost/vident during SASL on UnrealIRCd -Updated the German translation -Updated the Italian translation - -Anope Version 2.0.12 --------------------- -Added account confirmation to the web panel -Added the regex_pcre2 module which provides regex/pcre with PCRE2 -Documented the cs_no_expire channel default -Fixed config validation mistakenly allowing spaces in some fields -Fixed the bahamut protocol module not knowing about halfops -Fixed writing a flatfile database not being atomic -Updated the hybrid protocol module for recent protocol changes - -Anope Version 2.0.11 --------------------- -Fixed ldap on OpenLDAP 2.5+ -Fixed not using utf-8 encoding for outgoing email -Fixed ns_resetpass not returning a response for XMLRPC -Fixed some message params being sent as <middle> instead of <trailing> -Fixed unsetting vhosts on unreal4 -Fixed username validity checking on ircd-hybrid -Send the oper mode for services pseudoclients on InspIRCd -Updated the pl_PL translation -Updated unreal4 for various protocol changes - -Anope Version 2.0.10 +Added support for database migrations to the mysql module. +Added support for renicking users to their UID when enforcing nickname protection. +Added support for sending channel URLs to joining users. +Allowed selecting languages using a shorter version of their name. +Changed various messages to use human-readable durations instead of seconds. +Improved the creation of expiry and duration messages. +Improved the translation system with support for plural forms. +Reworked how guest nicknames are generated. +Simplified how account identifiers are allocated. + +Anope Version 2.1.10 -------------------- -Add support for channel SQLines on InspIRCd -Change default protocol module from inspircd20 to inspircd3 -Change the character set used by chanstats and irc2sql to utf8mb4 -Fix a ton of typos in messages -Fix being able to override MAXLIST on InspIRCd -Fix blocking on boot when trying to upgrade SQL databases without account identifiers -Fix not flushing the ERROR message on squit -Fix using an invalidated iterator when deleting bots -Fix various harmless compiler warnings -Fix webcpanel not using the forwarded IP -Show the account name in nickserv/info - -Anope Version 2.0.9 -------------------- -Fix a regression from 2.0.8 that prevented serialising to MySQL -Send account identifiers to InspIRCd on SASL logins too -Fix a query bug in irc2sql - -Anope Version 2.0.8 -------------------- -Add +K channel mode for ircd-hybrid -Add immutable identifiers to user accounts -Fix build on systems that use musl libc -Fix help of global/global not showing the correct origin nick -Fix not removing vhosts when an nick is dropped -Fix parsing channel metadata on InspIRCd 3+ -Fix parsing kicks on InspIRCd 3+ -Fix parsing topic changes on InspIRCd 3+ -Fix topiclock on InspIRCd -Modernize the ircd-hybrid protocol module - - -Anope Version 2.0.7 -------------------- -Fix not sending login data on successful NickServ GROUP -Fix m_httpd to not consider headers to be case sensitive -Add InspIRCd 3 protocol support -Add 'n' email token for use in the email change template -Add logging for NickServ UNGROUP -Fix setting swhois on UnrealIRCd -Add nickserv/recover permission to allow opers to recover other users -Fix superadmin not being removed when deopering -Fix setting nickserv access list in webcpanel -Add support for post-handshake SASL in Unreal 4.2.2+ -Add logging for channel memo deletionso - -Anope Version 2.0.6 -------------------- -Log client IP for web clients running commands via webcpanel -Fix log file path for the config file could not be opened log message -Allow nickserv/group to be used via XMLRPC -Fix logsearch without wildcards -Support cidr exempts in m_dnsbl -Add support for IPv6 dnsbls -Add +u and +L channel modes for ircd-hybrid -Set +x after hostserv/off on InspIRCd and UnrealIRCd -Fix chanserv/mode not being able to set extbans -Send CHGIDENT/CHGHOST on SVSLOGIN on InspIRCd -Fix escaping replies from commands in webcpanel -Enable require_oper for all opers added via operserv/oper -Advertise SASL mechanisms to UnrealIRCd servers - -Anope Version 2.0.5 -------------------- -Fix negative levels to not match users with negative access -Fix memo sender to always be the account name of the sender -Allow unregistered users to use the ChanServ seen command -Fix secureops to not be enforced on operators with the chanserv/administration privilege -Fix command name in HELP syntax messages to always be upper case -Show unconfirmed nickname messages on registration in webcpanel -Fix NickServ SET EMAIL to be executable via XMLRPC -Fix OperServ USERLIST/CHANLIST to accept regexes -Allow OperServ USERLIST to also match realname syntax (n!u@h#r) -Fix db_old importing languages to use the UTF-8 version -Fix m_dns to return REFUSED if no answers could be found -Fix ns_maxemail to be case insensitive -Add MemoServ READ ALL command -Add support for NickServ GROUP to be executed via XMLRPC -Add support for logging hostname/ip of SASL authentication attempts, if supported by IRCd - -Anope Version 2.0.4 -------------------- -Add notice rpc method to XMLRPC -Fix access check in cs_updown to not allow actions on users with equal access -Fix randomnews to work when there are more than 'newscount' random news -Fix crash from handling nick introduction collisions on unreal4 -Add support for GCC6 -Fix handling /join 0 on ratbox -Fix saset display to update the account of the proper user -Fix nickserv/confirm to send account and +r when appropriate -Fix chankill to not add duplicate akills -Allow nickserv/maxemail to disregard gmail style aliases when comparing emails -Fix chanserv/mode when setting listmodes with CIDR ranges -Fix reported expiry time when the time is divisible by 1 year -Clarify botserv repeat kicker help and allow setting repeat times to 1 -Send vident/vhost with SASL login -Add support for SASL reauth -Fix log and database backup directories to be properly created by the installer - -Anope Version 2.0.3 -------------------- -Add support for UnrealIRCd 4 -Fix cs_access to respect chanserv/access/list privilege -Fix cs_access to match level -1 as every user, not any level <0 -Fix problems related to object destruction order when using db_sql_live -Show memo notify settings in ms_info -Fix some actions bumping channels last used time that shouldn't have -Add maxlogins configuration directive to limit the number of concurrent logins to one account -Fix race with auto svsnick on ghost sometimes causing nick collisions instead -Fix saset language reply -Show akill/sxlines ids in VIEW -Fix crash when an oper is configured in both the configuration and via os_oper -Fix m_ldap reconnect logic not properly setting protocol and network timeout settings -Fix crash from unloading regex modules when regex xlines exist -Fix irc2sql to store away messages -Add notice method to m_xmlrpc_main -Fix numerics on InspIRCd from being sent to user UID -Fix usermode +I on UnrealIRCd to be considered oper only -Fix crash in webcpanel when deleting your own access on a channel -Fix webcpanel allowing suspended users to login -Fix hs_off on InspIRCd to not desync active user host -Fix bs_bot to not allow colliding bots into users -Don't allow hostserv modules to load if there is no hostserv -Fix ns_register allowing bot nicks to be registered through webcpanel -Don't update chanserv keepmodes during inhabit -Fix build on cmake 2.4 -Allow searching emails by wildcard in ns_getemail - -Anope Version 2.0.2 -------------------- -Fix keepmodes preventing the first user of a channel from being deopped -Fix SQlines that don't begin with # from matching channels -Made cs_clone behave like the help describes, copying many settings and lists by default -Allow cs_clone to clone levels, too -Update Hybrid protocol module for 8.2 -Fix not unescaping all characters sent over XMLRPC -Fix crash when os_mode is used to destroy channels, like when unsetting permanent channel mode from an empty channel -Allow users with topic change privilege to change the topic instead of requiring them to use ChanServ's topic command -Fix negatively locking param modes in default mlock -Change entrymsg to check for the SET privilege, not real founder -Allow configuring characters allowed in nicknames -Fix crash when non users register channels externally (like XMLRPC) -Remove operserv/exception MOVE, it did not function correctly. Instead reorder the list by deleting/adding entries. -Allow flood ttb to be 0. -Enforce mlock when disabling defcon modes -Fix cs_mode not being able to apply mlock on register -Add log message when users send memos -Fix old collide timers from staying around after successful identify. Fixes being able to identify and logout and still being hit by the old timers. -Fix undefined behavior in cs_mode which usually crashes when clearing large list modes -Show all opertypes in operserv/info, even if no opers use them - -Anope Version 2.0.1 -------------------- -Fix access entries on accounts sometimes not updating when a user's display name changes -Fix ns_group to properly validate the account of the user against the target -Fix os_stats not saving max user count and time when using SQL -Fix nickalias's 'nc' field sometimes not being updated when using SQL -Fix several crashes on Windows related to being unable to load modules -Fix bs_bot change not properly reintroducing bots after changing their ident, host, or realname - -Add English language file to allow users to easily modify language strings -Add configuring which mode cs_ban sets, and added a MUTE command to BotServ's fantasy -Allow SVSPART to take an optional reason -Allow cs_list to search channel topics and descriptions - -Anope Version 2.0.0 -------------------- -Added irc2sql stats module - -Anope Version 1.9.9 -------------------- -A Added a better webpanel template, removed the old one -A Added SQL logging support -A Added Redis database support -A Added ability to configure what privileges XOP commands give -U Updated Dutch language file, from Robby <robby@chat.be> -U Updated Spanish language file, from Isaac Fontal <i_fontal@hotmail.com> -F Fix build on Solaris and OSX -F Fixed setting BotServ's default settings in the config -F Fixed some names of config items, including NickServ's kill protect - -Anope Version 1.9.8 -------------------- -A Ability to configure fantasy commands in the config -A Add SVSJOIN and SVSPART commands -F Fix "leave" channel log level from not logging -F Fix users able to "resend" their registration mail with registration set to admin only -F Fix build on OpenBSD -F Fix not logging debug logs to the logfile when debug mode is enabled -F Fix defcon timeout timer -F Fix crash in os_forbid with expiring entries -F Fix several issues with db_sql_live - -Anope Version 1.9.7 -------------------- -A Added ability for using regex as patterns for various commands -A Extended ability of operserv/akill to also match against nick and realname -A Added chanserv:require configuration option -A Added nickserv:unregistered_notice and nickserv:registration configuration option -A Added options:casemap configuration option -A Added a web panel -A db_sql_live now allows all tables to be "live", not just a select few - -Anope Version 1.9.6 -------------------- -A Added ability to configure emails sent by services -A Added chanserv/up and chanserv/down -A Added m_proxyscan -A Added more configurability for what vhosts are valid -A Added chanserv/log -A Added ability to configure ChanServ privileges -A Added a new database format -A Added SQLite support -A Added more verbose messages on startup -A Added ability for chanserv/suspend and nickserv/suspend to take an expiry time -A Added no nickname ownership config option -A Added m_rewrite -A Added akill IDs -F Fixed crash in clearusers -F Fixed crash in /os oper info -F Fixed eventfd Config check to work properly on OpenVZ - -Anope Version 1.9.5 -------------------- -A Extended LDAP support -A Added os_oper, os_kill, os_forbid, m_statusupdate, cs_sync, and bs_autoassign -A Added a new configuration file format -A Added a new commands system -A Added a new access system, and cs_flags -F Fixed not logging debug logs to file -F Fixed the mail delay time -F Fixed sending account data for unconfirmed nicks -F Fixed poll() engine build on FreeBSD -F Fixed really large HELP replies being truncated -F Fixed sometimes appending !*@* to valid hosts on access lists -F Fixed m_ssl sometimes failing connecting for no reason -F Fixed crash in cs_entrymsg -F Fixed setting -P on channels with only a botserv bot in it -F Fixed modemanager complaining about prefixless modes on InspIRCd - -Anope Version 1.9.4 -------------------- -A Automatically set channel founder to the user with the highest access if there is no successor -A /chanserv clone command to copy settings from one channel to another. -A /chanserv mode command -A Ability for users to delete their own access in channels -A Added support for Plexus 3 -A Readded in support for /cs op/deop/etc to op/deop you in all channels -A Added LDAP support -A Added live SQL support -A Added support for learning tracking/storing/locking all modes at runtime -A Added m_alias -A Added support for XMLRPC queries -A Added /botserv set msg -A Added /operserv config -A Added /ns cert -A Added /operserv login -F Changed the GHOST command to not allow ghosting unidentified users if the RECOVER command exists -F Some failed logic in /operserv exception that prevents proper exceptions from being added -F Fixed the anope_os_sxlines MySQL table and code to work after restarting - -Anope Version 1.9.3 -------------------- -A Added italics BotServ kicks support -A Tell users when their nicks expire in /ns glist and /ns info -A Added SSL support -A Prevent negative mode changes, kicks, bans, and autokicks from affecting people with the 'god' user mode (On UnrealIRCd, usermode +q) -A Added nickserv/auxpex permission -A Added nickserv ungroup command -A Renamed the SGLINE to be SNLINE -A Added /chanserv saset command -A Added threads for mail sending -A Added m_dnsbl and an asynchronous DNS system -A Added a new language system that uses gettext -A Added m_mysql which uses threads to execute queries -A Added many subcommand modules for some commands, eg ns_set_autoop, ns_set_email, etc -A Added a new logging system that is a bit more flexible -A Added cs_set_misc and ns_set_misc to add miscellaneous set commands -A Added os_modreload, which allows reloading some modules not normally unloadable, like the protocol module -A Added FOUNDER access level -A Made OperServ, Global, MemoServ, and ChanServ optional -F Shutting down if a config reload fails -F Autoid to live through restarts on Unreal -F Storing vhosts in MySQL -F Not flushing the anope_extra table before rewriting database -F Anoperc start/stop to send the globaloncycle global, and fixed anoperc rehash to really rehash -F Fixed a potential crash if HostServ or BotServ was disabled - -Anope Version 1.9.2 -------------------- -A K alias to chanserv kick command -A KB alias to chanserv ban command -A The ability to register empty nonregistered channels -A Flatfile plaintext databases and removed old binary ones -A Added in live updating SQL and the ability to execute commands through SQL (see docs/MYSQL) -A Added support for many more modes into Anope and the ability to have generic support for modes unknown to Anope -A Added a mode stacker to combine many mode changes into fewer -A Added in the CS SET PERSIST command which can be used to keep service bots in channels even when the channel is empty -A Added AUTOOWNER OWNER and OWNERME into CS LEVELS -A Added ns_resetpass module to the core -A CS ACCESS VIEW which shows who added the access and last time used -A Last used time to CS AKICK VIEW -A Added a sha_256 encryption module -A Added the ability to load multiple encryption modules, and the ability to seamlessly convert your database between different encryptions -A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dying -A Added support for linking with IPv6 -F Unban command to accept an optional nick arg -F Some typos in services.conf -F Crash when users change their host that are identified to a group, but not a nick -F Host length checking in HS SET(ALL) and HS REQUEST -F Only show if a user is online in NS INFO if they are really identified for the group of the nick they are on -F Crash when using BSSmartJoin -F Converting access entries to access from xop when a users access is below voice -F A bad pointer passed to the OnDelEvent which could cause some 3rd party modules to crash -F CS FORBID allows to you forbid unregistered channels -F The -nothird command line option to work -F ms_rsend to really work -F SQUITing juped servers on InspIRCd1.2+ - -Anope Version 1.9.1 -------------------- -F Don't enforce akick/forbidden/etc.-restrictions on clients on ulined servers. -F Remove modules_unload_all fini + hack that goes with it. -F Signal handling cleanup. -A Seamless fantasy support on all ChanServ commands, instead of requiring bs_fantasy_*. -F Allow fantasy to be disabled on some commands (e.g. FORBID). -F Some commands (e.g. !help) need to strip the pre-provided channelname from them. -D HelpServ removed -F Command parser cleanup: mod_current_buffer removed and replaced with proper parser. Commands now indicate how they want the buffer split. -F Make NS ENFORCE/RELEASE stuff more sane, redo timers. -A Opertypes (similar to InspIRCd's opertypes) - -Provided by Ankit <ankit@nevitus.com> - 2009 -F Segfault on shutdown - -Provided by Adam <adam@anope.org> - 2009 -F NickServ registration is sometimes denied. -F Applied patch from Adam to fix some potential screwups -F More fixes to bs_bot from Adam, plus an extra fix within DoAdd not covered in Adam's patch. -F Fix bs_bot to use the correct parameters, patch from Adam. -F Fix for bug #1004, based from second half of patch from Adam. -F Partial patch by Adam, commenting fix for #1006 for future reference. -F Forward-port r1946: Patch by Adam fixing #1006 (originally caused by #922): modes set by ChanServ are reversed. Thanks! - -Provided by DukePyrolator <dukepyrolator@gmx.de> - 2009 -F Patch converting all match calls to new method, thanks! -F Add 'w' and 'y' support to dotime(), also prevent an overflow. -F Allow NS STATUS from unregistered users, thanks DP! -F Wild pointers do not a happy Anope make. Thanks DP :) -F Allow NS REGISTER to unregistered nicks, silly oversight. Thanks DP! :) -F Fix call order, thanks to DP -F Pass the right array to do_umode(), fixes mode tracking on Unreal. Thanks to DukePyrolator (yet again :P) -F Fix bs_set help, thanks to DukePyrolator! :) -F Fix two segfaults, noted by DukePyrolator. Thanks! -F Fix part one of #1010, reported by DukePyrolator. (Language settings are not respected in message sending.) Thanks! -F Memory leak on +beI modes. +Added support for NEXTBANS on UnrealIRCd. +Changed hostmask access entries added by nick to use that nick as the default description. +Changed modes to be handled internally in their split form. +Changed ns_cert to notify a user that their certificate is being automatically added to their account. +Fixed matching users against extended bans. +Fixed parsing name-only extended bans on InspIRCd. +Fixed respecting the preferred extended ban format on InspIRCd. +Fixed the name of the cron script in the docs. +Updated the list of supported IRCds. +Updated the location of the Anope IRC channels + +Anope Version 2.1.9 +------------------- +Bumped the minimum supported version of UnrealIRCd to 6. +Fixed granting IRC operator status to services operators. +Fixed making users an IRC operator on InspIRCd. +Fixed nonicknameownership on InspIRCd v4. +Fixed some messages not being translatable. +Fixed the Argon2 module not having test vectors. +Increased the default nickname expiry period to one year. + +Anope Version 2.1.8 +------------------- +Added account identifiers to the nickserv/info output. +Added support for bool, float, and uint SQL columns. +Added the ability to automatically determine SQL column types based on the native type. +Added UNIX socket support to mysql module. +Changed smartjoin to use SendClearBans where available. +Dropped support for MinGW in favour of native builds. +Fixed parsing named extbans on InspIRCd. +Fixed parsing SVSMODE and SVS2MODE from UnrealIRCd. +Fixed sending global messages to remotely linked servers. +Removed the services server name from the CTCP version response. + +Anope Version 2.1.7 +------------------- +Added importing of akick reasons, forbid reasons, opers and session exceptions to db_atheme. +Added support for sending tag messages. +Added the ability to look up account information of an authenticated user. +Fixed a crash in ns_cert when an IRC user is not present during a nick registration. +Fixed a null pointer dereference in the global module. +Fixed a rare memory leak in os_akill and os_sxline. +Improved the performance of some code that looks up the primary nick from an account. +Removed the broken Catalan, Hungarian, and Russian translations. +Reworked the protocol interface for sending messages. +Updated the Turkish translation. -Provided by Liber <Liber@jasonirc.net> - 2009 -F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary) +Anope Version 2.1.6 +------------------- +Added opportunistic upgrading of TLS fingerprints to more secure algorithms on InspIRCd. +Added support for logging out partially connected users on Plexus. +Added the account registration time to nickserv/info. +Changed ns_cert to automatically add a TLS fingerprint to new accounts if available. +Clarified that a non-deprecated encryption module must be loaded. +Fixed creating the runtime directory on Windows. +Fixed mistakenly allowing badpasslimit to be set to a negative value. +Fixed parsing backup TLS fingerprints on InspIRCd. +Fixed parsing the flood mode on UnrealIRCd. +Fixed parsing the history mode on UnrealIRCd. +Fixed various iterator invalidation issues. +Partially rewrote the Portuguese translation. +Removed some incorrect strings from the Turkish translation. +Renamed the --modulesdir option to --moduledir to match the name of other path options. + +Anope Version 2.1.5 +------------------- +Added an example systemd unit file. +Added support for BIGLINES on UnrealIRCd. +Bumped the minimum supported version of Bahamut to 2.0. +Fixed truncating messages in global/global and global/server. +Improved building Anope for use as a system package. +Updated the Turkish translation. -Anope Version 1.9.0 -------------------- -F Modified compile to use g++ -F Improve protocol modules support (classes, virtual methods, etc) -F Move core services to use BotInfo -F Move BotInfo and related methods into a class -F Move modules into a class -F Fixed ns resending of passcode issue -F Modules now delete themselves -F additional field where users' masked host can be stored so both masked IP and vhost are available instead of just one. -F No struct Uid, ugly, and, unnecessary that we store UID in BotInfo. -F Prevent deletion of core services via /bs bot -F Module subsystem cleanup ('modules' branch) -F Move modules to use classes somewhat (AnopeInit, AnopeFini) -F Change MODULE_INIT to return a pointer -F Remove duplicate module creation.. have loadModule return a pointer rather than creating one -F Remove buffered loading/unloading, this makes os_modunload perm, but who cares -F Remove 'delayed' loading, this is necessary because of before/after connected to ircd (ircd is before, rest after), I'm sure this can be done better. -A Remove old config, replace with insp-inspired (albeit bind format) config (CBX) -F Clean up protocol modules a bit -A InspIRCd 1.2 support -F Remove old (prior to 1.8.0) db compat -F Establish a proper base for services pseudoclients -F Add ss_main StatServ Hal9000 to play with :) -F Burn automake with fire (CBX) +Anope Version 2.1.4 +------------------- +Added a check for a non-deprecated encryption module on start. +Added a way for protocol modules to report an error to the uplink. +Added more account settings to the webcpanel. +Added self-test functionality for all encryption modules. +Added support for challenge authentication on InspIRCd. +Added support for importing databases from Atheme. +Added support for sending client tags on UnrealIRCd. +Added support for the InspIRCd 1206 (v4) protocol. +Added the --nopid option to disable writing a pid file. +Added the enc_argon2 module to encrypt passwords with Argon2. +Added the enc_sha2 module to encrypt passwords with HMAC-SHA-2. +Added the global/queue command for queueing multi-line messages. +Added the global/server command for sending messages to an individual server. +Added the PASSWORD category to operserv/stats to view password encryption methods. +Added the verify-only enc_posix module to validate passwords from Atheme that were encrypted with Argon2. +Changed nickserv/drop to use confirmation codes to confirm a nickname drop. +Changed various paths to be relative to the data and config directories. +Converted some IRCDProto member functions to variables. +Converted the enc_md5, enc_none, enc_old, enc_sha1, and enc_sha256 modules to be verify-only. +Deduplicated page headers and footers in the webcpanel templates. +Deprecated the enc_sha256 module. +Fixed inconsistent spelling/casing of email, vhost, and vident. +Fixed various bugs in the inspircd module. +Improved portability of email sending. +Improved protocol debug messages. +Improved the performance and reliability of internal conversion logic. +Improved the randomness of randomly generated numbers. +Refactored the enc_bcrypt module and exposed it as an encryption context. +Removed several duplicate translation strings. +Replaced the custom MD5 implementation in enc_md5 with a vendored one. +Replaced the custom SHA256 implementation in enc_sha256 with a vendored one. +The ldap_authentication, ldap_oper, sql_authentication, sql_log, and sql_oper modules are now always enabled. + +Anope Version 2.1.3 +------------------- +Added alternate command suggestions when a user runs an invalid command. +Added support for the IRCv3 +draft/channel-context tag. +Added support for the IRCv3 +draft/reply tag. +Allow using more than one fingerprint in an oper block. +Changed chanserv/drop to use confirmation codes to confirm a channel drop. +Cleaned up more of the codebase to use Modern C++17. +Enabled using more field limits sent by the IRC server instead of requiring the user to configure them. +Fixed NickServ lying about the minimum password length. +Fixed a crash when sending emails. +Fixed bs_kick not using the correct kick message for automatic kicks. +Increased the security of randomly generated confirmation codes. +Removed the ns_access module and associated cs_secure and ns_secure options. +Removed the ns_status module. +Reworked how messages are sent in protocol modules to allow sending message tags. + +Anope Version 2.1.2 +------------------- +Bumped the minimum OpenSSL version to 1.1.0. +Bumped the minimum GnuTLS version to 3.0.0. +Disabled SSLv3 support in the m_ssl_openssl module. +Modernized mutex and thread code to use Modern C++. +Normalised the program exit codes. +Updated the Dutch translation. +Updated the French translation. -Provided by mooncup <mooncup@anonnet.org> - 2009 -F Automatically reapply vhost on hs off for unreal. +Anope Version 2.1.1 +------------------- +Added the UNBANME privilege to allow users to unban themselves. +Fixed building on Windows systems without chgrp/chmod. +Fixed creating sockets in the m_dns, m_httpd, m_proxyscan, and m_redis modules. +Fixed reading the values of command line arguments. +Moved core privilege descriptions to the example configs. +Updated the Italian translation. +Updated the Polish translation. + +Anope Version 2.1.0 +------------------- +Added support for access list entry descriptions. +Added support for linking over a UNIX socket. +Added support for server-initiated logins and logouts on UnrealIRCd. +Added support for server-initiated logouts on InspIRCd. +Added support for the ANONYMOUS SASL mechanism. +Allowed users to opt-out of being added to channel access lists. +Cleaned up the codebase to use Modern C++17. +Modernized the build system to use a modern version of CMake. +Removed support for using insecure encryption methods as the primary method. +Removed the Windows-only anopesmtp tool. +Removed the two day X-line cap. +Updated all references to IRCServices to refer to Anope instead. diff --git a/docs/Changes.conf b/docs/Changes.conf index 14574cc88..3c19e63cb 100644 --- a/docs/Changes.conf +++ b/docs/Changes.conf @@ -1,244 +1,142 @@ -Anope Version 2.0.18-git +Anope Version 2.1.14-git ------------------------ -No significant changes. - -Anope Version 2.0.17 --------------------- -No significant changes. - -Anope Version 2.0.16 --------------------- -No significant changes. - -Anope Version 2.0.15 --------------------- -No significant changes. +Added options:codelength (defaults to 15). +Changed the default value for {enc_sha2}:algorithm to "sha512". +Changed the default value for {ns_seen}:purgetime to "90d". +Changed the syntax for template variables in mail:emailchange_message, mail:emailchange_subject, mail:memo_message, mail:memo_subject, mail:registration_message, mail:registration_subject,, mail:reset_message, mail:reset_subject, {chanserv}:signkickformat, {dnsbl}:blacklist:reason, {ldap_authentication}:search_filter, {ldap_oper}:binddn, {ldap_oper}:search_filter, {nickserv}:unregistered_notice, {os_session}:sessionlimitexceeded, {proxyscan}:proxyscan:reason. -Anope Version 2.0.14 +Anope Version 2.1.13 -------------------- -Added mail:content_type to allow customizing the content type of emails. - -Anope Version 2.0.13 +Added options:linelength (defaults to 120). +Added the db_json module. +Added the rpc_message module. +Added {nickserv}:defaultprotect (defaults to 1m). +Added {nickserv}:maxprotect (defaults to 10m). +Added {nickserv}:minprotect (defaults to 10s) +Added {xmlrpc}:enable_i8 (defaults to yes). +Added {xmlrpc}:enable_nil (defaults to yes). +Changed the syntax for using defines (all existing defines will need to be updated). +Removed {nickserv}:kill (replaced by custom protection timer durations). +Removed {nickserv}:killquick (replaced by custom protection timer durations). +Removed {ns_set_kill}:allowkillimmed (replaced by custom protection timer durations). +Renamed the nickserv/saset/kill command to nickserv/saset/protect. +Renamed the nickserv/saset/kill oper privilege to nickserv/saset/protect. +Renamed the nickserv/set/kill command to nickserv/set/protect. +Renamed the ns_set_kill module to ns_set_protect. +Renamed the sasl module to ns_sasl and moved it to nickserv.example.conf. + +Anope Version 2.1.12 -------------------- -No significant changes. - -Anope Version 2.0.12 +Added the jsonrpc module. +Added the rpc_data module. +Added the rpc_system module. +Added {hostserv}:activate_on_deoper (defaults to yes). +Added {os_shutdown}:requirename (defaults to yes). +Moved nickserv/set/keepmodes and nickserv/saset/keepmodes to the ns_set_keepmodes module. +Moved the xmlrpc module to extra. +Renamed the xmlrpc_main module to rpc_main. + +Anope Version 2.1.11 -------------------- -Added the regex_pcre2 module +Moved nickserv/set/kill and nickserv/saset/kill to the ns_set_kill module. +Moved {ns_set}:allowkillimmed to {ns_set_kill}:allowkillimmed. +Replaced {nickserv}:guestnickprefix with {nickserv}:guestnick (defaults to Guest####). -Anope Version 2.0.11 +Anope Version 2.1.10 -------------------- -No significant changes. +Added options:servicealias (defaults to no) +Moved nickserv/set/message and nickserv/saset/message to the ns_set_message module. +Removed options:useprivmsg (replaced by loading the ns_set_message module to enable). +Removed options:usestrictprivmsg (feature unusable on modern servers, consider migrating to options:servicealias instead). -Anope Version 2.0.10 --------------------- -No significant changes. - -Anope Version 2.0.9 +Anope Version 2.1.9 ------------------- No significant changes. -Anope Version 2.0.8 -------------------- -Fix ns_register:unconfirmedexpire not being used - -Anope Version 2.0.7 -------------------- -Add nickserv/recover permission -Add inspircd3 protocol module -Add default permission for chanstats saset chanstats command - -Anope Version 2.0.6 -------------------- -Mark enc_md5 and enc_sha1 as deprecated. Their use has been discouraged for years, and they will be removed in a future release. -Exempt all of 127.0.0.0/8 from m_dnsbl by default -Load m_sasl by default -Fix documentation for nickserv default option ns_keep_modes - -Anope Version 2.0.5 -------------------- -No significant changes. - -Anope Version 2.0.4 -------------------- -Removed m_sasl_dh-aes and m_sasl_dh-blowfish - -Anope Version 2.0.3 -------------------- -Add operserv/chankill to default globops log -Add ns_identify:maxlogins to limit the max number of concurrent logins per account -Document ns_no_expire nickserv default -Remove default session exception expiry time - -Anope Version 2.0.2 -------------------- -Add an operserv/oper/modify privilege, required to use oper add and oper del -Add a chanserv/access/list privilege, which allow readonly access to ChanServ access and akick lists -Changed m_dnsbl's result configuration to be more extensible -Add 'max' setting to cs_mode -Add 'nickchars' setting to networkinfo -Add 'botserv/fantasy', 'chanserv/access/list', and 'operserv/oper/modify' oper privileges -Fix 'emailchange_message' to include the proper email address -Set a default permission on operserv/defcon - -Anope Version 2.0.1 -------------------- -Add MUTE command to BotServ fantasy configuration -Document memo_mail option in nickserv.conf -Add 'show' setting to ns_info and cs_info to control which fields are shown to non opers - -Anope Version 2.0.0 -------------------- -options:passlen, enforceruser, enforcerhost, releasetimeout, and guestnickprefix moved to nickserv's module configuration -options:hideregisteredcommands added -m_ssl renamed to m_ssl_openssl -mail:restrict removed - -Anope Version 1.9.9 -------------------- -There is not many config changes between 1.9.8 and 1.9.9, however many of the -options have been moved around to make more sense, too many to list here, -so get a new config. - -Anope Version 1.9.8 -------------------- -networkinfo:chanlen added -options:user and options:group added -nickserv:modesonid added to set modes on everyone who identifies -nickserv:kill and nickserv:killquick added to configure NickServ's kill timeout -nickserv:restoreonrecover added to try to restore a user's session after a ghost -command:group added -fantasy block added -dns block has been moved to modules.conf as a part of m_dns - -Anope Version 1.9.7 -------------------- -operserv:notifications removed in favor of log{} blocks -options:regexengine added -options:casemap added -chanserv:require added -nickserv:registration added, emailregistration removed. -nickserv:unregistered_notice added - -Anope Version 1.9.6 -------------------- -service:channels added to join services to channels -mail block modified to allow configuring of email messages -oper:host and oper:vhost added -oper:require_oper added -options:nonicknameownership added -operserv:akillids added -nickserv/access oper privilege added - -Anope Version 1.9.5 -------------------- -Don't even try it, get a new config and start over. - -Anope Version 1.9.4 -------------------- -** ADDED CONFIGURATION DIRECTIVES ** -memoserv:modules added ms_ignore -chanserv:modules added cs_clone and cs_mode -nickserv:suspendexpire and nickserv:forbidexpire added -chanserv:suspendexpire and chanserv:forbidexpire added -module added cs_entrymsg -nickserv:modules added ns_ajoin, ns_cert -options:nomlock added -log:target added globops -nickserv:confirmemailchanges added -operserv:modules added os_config, os_login - -** MODIFIED CONFIGURATION DIRECTIVES ** -operserv:notifications removed osglobal, osmode, oskick, osakill, ossnline, ossqline, osszline, osnoop, osjupe, getpass, setpass, forbid, drop -renamed nickserv:preregexpire to nickserv:unconfirmedexpire - -** DELETED CONFIGURATION DIRECTIVES ** -opertype:commands removed operserv/umode -operserv:modules removed os_umode - -Anope Version 1.9.3 -------------------- -** ADDED CONFIGURATION DIRECTIVES ** -nickserv/auspex privilege added -SSL module added for SSL support -opertype:inherits added to allow opertypes to inherit commands and privs from other opertypes -Various nickserv/saset/* and chanserv/saset/* opertype command privileges added -nickserv:modules added many new ns_set_command modules -chanserv:modules added many new cs_set_command modules -opertype:commands added nickserv/saset/* and chanserv/saset/* -options:socketengine added to choose what socket engine to use -module:cs_set_misc and module:ns_set_misc added to replace the old set url/icq/email modules -options:hideprivilegedcommands added to hide privileged commands from normal users -log block added to customize logging -dns block added to configure dns settings -m_dnsbl added -mysql configuration block added - -** MODIFIED CONFIGURATION DIRECTIVES ** -opertype:commands changed operserv/sgline to opserv/snline -operserv:modules changed os_sgline to os_snline -operserv:modules added os_modreload -operserv:sglineexpiry changed to operserv:snlineexpiry -operserv:killonsgline changed to operserv:killonsnline -operserv:notifications ossgline changed ossnline -memoserv was made optional -moved operserv:global configuration into its own global block -chanserv was made optional - -** DELETED CONFIGURATION DIRECTIVES ** -serverinfo:helpchannel removed because it has been readded in m_helpchan -networkinfo:logchannel, logbot, logusers, logmaxusers, logchannel, and options:keeplogs removed because of the log block -dumpcore because it really didn't do anything - -Anope Version 1.9.2 -------------------- -** ADDED CONFIGURATION DIRECTIVES ** -options:enablelogchannel added to auto turn on the logchannel on startup -options:mlock added to configure the default mlock modes on new channels -options:database added for the database modules -options:botmodes added to configure modes BotServ bots should use -options:userlen added to configure maximum ident length -options:hostlen added to configure maximum hostname length -options:database added to configure what database modules to use -options:passlen added to specify the maximum length of passwords -uplink:ipv6 added to enable IPv6 connectivity -options:maxretries added to specify the number of reconnect attempts allowed -options:retrywait added to specify how long to wait between reconnect attempts -opertype command chanserv/aop/list removed as it was unnecessary, use chanserv/access/list instead - -** MODIFIED CONFIGURATION DIRECTIVES ** -options:encryption added enc_sha256 -chanserv:modules added cs_unban -nickserv:modules added ns_resetpass - -** DELETED CONFIGURATION DIRECTIVES ** -nickserv:database deleted because of new database system -nickserv:prenickdatabase deleted because of new database system -chanserv:database deleted because of the new database system -botserv:database deleted because of the new database system -hostserv:database deleted because of the new database system -operserv:database deleted because of the new database system -operserv:newsdatabase deleted because of the new database system -operserv:exceptiondatabase deleted because of the new database system -hs_request:database deleted because of the new database system -os_ignore:database deleted because of the new database system -serverinfo:localport deleted - -Anope Version 1.9.1 -------------------- -** ADDED CONFIGURATION DIRECTIVES ** -Opertypes have been added, through the opertype blocks. -Services Operators are now specified in the oper blocks. - -** MODIFIED CONFIGURATION DIRECTIVES ** -botserv:modules no longer contains bs_fantasy* modules, fantasy is now seamless. -operserv:modules has replaced os_logonnews, os_opernews, and os_randomnews with os_news. -operserv:modules no longer contains os_admin and os_oper modules, removed in favor of oper blocks. -operserv:notifications no longer contains osraw due to removal of OS RAW. - -** DELETED CONFIGURATION DIRECTIVES ** -Nick tracking has been removed as an option. -Restricting of NS GETPASS and CS GETPASS removed in favor of opertypes. -Host Setters were removed in favor of opertypes. -HelpServ has been removed entirely. -operserv:disableraw removed due to removal of OS RAW. +Anope Version 2.1.8 +------------------- +Added the nickserv/drop/display oper privilege. +Added {nickserv}:preservedisplay (defaults to no). + +Anope Version 2.1.7 +------------------- +Moved nickserv/set/language and nickserv/saset/language to the ns_set_language module. +Renamed the FANTASIA channel privilege to FANTASY. +Renamed {cs_suspend}:expire to {cs_suspend}:suspendexpire. + +Anope Version 2.1.6 +------------------- +Added {ns_cert}:automatic (defaults to yes). +Removed {hybrid,inspircd,solanum,unrealircd}:use_server_side_mlock (now always enabled). +Removed {inspircd}:use_server_side_topiclock (now always enabled). + +Anope Version 2.1.5 +------------------- +Added the nickserv/drop/override and chanserv/drop/override oper privileges. + +Anope Version 2.1.4 +------------------- +Added the db_atheme module. +Added the enc_argon2 module. +Added the enc_posix module. +Added the enc_sha2 module. +Added the gl_queue module. +Added the gl_server module. +Added the global/queue oper privilege. +Added the global/server oper privilege. +Changed serverinfo:motd to be relative to the config directory. +Changed serverinfo:pid to be relative to the data directory. +Changed the default value of mail:sendmailpath to "/usr/sbin/sendmail -it". +Changed the default value of {chanserv}:accessmax to 1000. +Changed the default value of {chanserv}:inhabit to 1 minute. +Changed the default value of {cs_mode}:max to 50. +Changed the default value of {ms_ignore}:max to 50. +Removed options:seed (not needed with modern random number generation). +Replaced {webcpanel}:template with {webcpanel}:template_dir (defaults to webcpanel/templates/default). + +Anope Version 2.1.3 +------------------- +Added options:didyoumeandifference (defaults to 4). +Added support for multiple SSL fingerprints in oper:certfp. +Added the chanserv/cert oper privilege for modifying other user's certificate lists. +Changed networkinfo:chanlen to default to 32 if not set. +Changed networkinfo:hostlen to default to 64 if not set. +Changed networkinfo:modelistsize to default to 100 if not set. +Changed networkinfo:nicklen to default to 31 if not set. +Changed networkinfo:userlen to default to 10 if not set. +Increased the default maximum password length to 50 characters. +Increased the default minimum password length to 10 characters. +Removed the cs_secure option in {chanserv}:defaults (now always enabled as support for nick access lists has been removed). +Removed the nickserv/saset/secure command (support for nick access lists has been removed). +Removed the nickserv/saset/secure oper privilege (support for nick access lists has been removed). +Removed the nickserv/set/secure command (support for nick access lists has been removed). +Removed the nickserv/status command (obsolete with modern IRCv3 extensions and the removal of nick access lists). +Removed the ns_access module (support for nick access lists has been removed). +Removed the ns_secure option in {nickserv}:defaults (now always enabled as support for nick access lists has been removed). + +Anope Version 2.1.2 +------------------- +Added {ssl_openssl}:tlsv10 for configuring whether TLSv1.0 is usable (defaults to no). +Added {ssl_openssl}:tlsv11 for configuring whether TLSv1.1 is usable (defaults to yes). +Added {ssl_openssl}:tlsv12 for configuring whether TLSv1.2 is usable (defaults to yes). +Removed the m_ prefix from the names of the chanstats, dns, dnsbl, helpchan, httpd, ldap, ldap_oper, mysql, proxyscan, redis, regex_pcre2, regex_posix, regex_stdlib, regex_tre, rewrite, sasl, sql_log, sql_oper, sqlite, ssl_gnutls, ssl_openssl, xmlrpc, and xmlrpc_main modules. +Removed {ssl_openssl}:sslv3 (now always disabled). + +Anope Version 2.1.1 +------------------- +Added the m_regex_stdlib module. +Removed the m_regex_pcre module (use m_regex_pcre2 instead). + +Anope Version 2.1.0 +------------------- +Added nickserv:minpasslen for configuring the minimum password length (defaults to 8). +Removed nickserv:strictpasswords (obsolete now nickserv:minpasslen exists). +Removed the inspircd12 and inspircd20 modules (use inspircd instead). +Removed the ns_getpass module (no supported encryption modules). +Removed the os_oline module (no supported IRCds). +Removed the unreal module (use unrealircd instead). +Renamed nickserv:passlen to nickserv:maxpasslen. +Renamed the charybdis module to solanum. +Renamed the inspircd3 module to inspircd. +Renamed the unreal4 module to unrealircd. +Replaced uplink:ipv6 with uplink:protocol (defaults to ipv4). diff --git a/docs/DEFCON b/docs/DEFCON index aaf2d8a26..16fe2388b 100644 --- a/docs/DEFCON +++ b/docs/DEFCON @@ -10,7 +10,7 @@ Anope DefCon 1) Introduction - Anope 1.6 onwards supports a unique protection mechanism based on the + Anope 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: @@ -23,7 +23,7 @@ Anope DefCon 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 + It is used to prevent abuse to both Anope, and the IRCd on which they are running. Also to protect the users, primarily in the event of Clones and/or FloodBOT attacks. @@ -50,8 +50,8 @@ Anope DefCon Force Chan Mode Use Reduced Session Limit KILL any new clients trying to connect - Services will ignore everyone but opers - Services will silently ignore everyone but opers + Ignore everyone but opers + Silently ignore everyone but opers AKILL all new clients trying to connect No new memos sent to block MemoServ attacks diff --git a/docs/EVENTS b/docs/EVENTS deleted file mode 100644 index 54e9c87a5..000000000 --- a/docs/EVENTS +++ /dev/null @@ -1,34 +0,0 @@ -Anope Internal Events ---------------------- - -1) Intro -2) Using Events - -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. - - Additionally 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) Using Events - - Each Event in Anope calls a function. - You must override these functions in your main modules class. - The full list of functions and parameters are in modules.h. In this - case, you would be overriding OnJoinChannel() and OnPartChannel() like so: - - void OnJoinChannel(User *u, Channel *c) anope_override { } - void OnPartChannel(User *u, Channel *c) anope_override { } - - Some of these event overrides can be used to prevent or allow things to - happen that would normally not be allowed or denied. You can also use - ModuleManager (not explained here) to set control which order the modules - are queried (when multiple modules hook to the same event). - - The "anope_override" identifier is for compatibility with C++11. - Its usage is highly recommended. diff --git a/docs/INSTALL b/docs/INSTALL index 6835f24cd..608921500 100644 --- a/docs/INSTALL +++ b/docs/INSTALL @@ -27,7 +27,7 @@ Note: You should also read the README and FAQ files! cmake --version If it's installed, you will get a line that says something similar to - "cmake version 2.8.12.2". If the version is less than 2.4 or you get + "cmake version 3.28.3". If the version is less than 3.20.0 or you get an error saying the command was not found, you will not be able to use CMake unless you install it yourself into your home directory. CMake can be downloaded from: @@ -37,7 +37,7 @@ Note: You should also read the README and FAQ files! Next, unpack the package in your home directory, and go into the created directory. - If there are any extra modules you want to enable, such as m_mysql, run + If there are any extra modules you want to enable, such as mysql, run the 'extras' script to enable them. If you do not know you can come back later and enable them. @@ -52,8 +52,8 @@ Note: You should also read the README and FAQ files! cause trouble on your network if passwords are not encrypted, or read the memos of any user. - Now go into the conf directory (by default, ~/services/conf). Copy the example - configuration file (example.conf) to services.conf, and open the latter + Now go into the conf directory (by default, ~/anope/conf). Copy the example + configuration file (anope.example.conf) to anope.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 @@ -71,11 +71,11 @@ Note: You should also read the README and FAQ files! * IMPORTANT: Back up your old databases! * If you are upgrading to a new major release, ALWAYS restart a - fresh configuration file from example.conf. + fresh configuration file from anope.example.conf. 3) Setting up the IRCd - Services acts as an IRC server with pseudo-clients on it. To link them to + Anope acts as an IRC server with pseudo-clients on it. To link them to your network, you'll need to configure your IRCd to allow services to link. The configuration varies depending on the IRCd, but you will probably need @@ -83,7 +83,7 @@ Note: You should also read the README and FAQ files! a shared block), and be sure that the IRCd is listening on the given port in the link block. - Example link configurations can be found in example.conf for some of the + Example link configurations can be found in anope.example.conf for some of the popular IRCds. Don't forget to /rehash your IRCd to apply changes. @@ -91,16 +91,16 @@ Note: You should also read the README and FAQ files! 4) Starting Anope Go into the directory where binaries were installed (by default, this is - ~/services/bin). Type ./services to launch Anope. + ~/anope/bin). Type ./anope 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 + Give Anope 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 + to launch Anope with ./anope -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 @@ -111,17 +111,17 @@ Note: You should also read the README and FAQ files! A crontab entry will allow you to check periodically whether Anope is still running, and restart it if not. - First rename the example.chk script that is in Anope path (by default, - this is ~/services/conf) to services.chk and edit it. You'll need to + First rename the cron.example.sh script that is in Anope path (by default, + this is ~/anope/conf) to cron.sh 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 + marked as executable by typing chmod +x cron.sh, 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/conf/services.chk >/dev/null 2>&1 + */5 * * * * /home/ircd/anope/conf/cron.sh >/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 diff --git a/docs/INSTALL.fr b/docs/INSTALL.fr index e4fa167dd..c88538767 100644 --- a/docs/INSTALL.fr +++ b/docs/INSTALL.fr @@ -27,7 +27,7 @@ Note : Vous devrez également lire les fichiers README et FAQ ! cmake --version Si CMake est installé, vous aurez une ligne qui dit quelque chose comme - "cmake version 2.8.12.2". Si la version est inférieure à 2.4 ou si vous + "cmake version 3.28.3". Si la version est inférieure à 3.20.0 ou si vous obtenez une erreur disant que la commande n'a pas été trouvée, vous ne pourrez pas utiliser CMake à moins de l'installer vous-même dans votre répertoire home. CMake peut être téléchargé ici : @@ -37,7 +37,7 @@ Note : Vous devrez également lire les fichiers README et FAQ ! Ensuite, décompressez le package dans votre répertoire home, et allez dans le répértoire qui vient d'être créé. - Si il y a des modules facultatifs que vous voulez activer comme m_mysql, + Si il y a des modules facultatifs que vous voulez activer comme mysql, exécuter le script 'extras' pour les activer. Si vous ne savez pas, vous pouvez les activer plus tard. @@ -49,15 +49,15 @@ Note : Vous devrez également lire les fichiers README et FAQ ! Allez dans le dossier build (cd build) et tapez make et make install. Ceci va installer tous les fichiers nécessaires dans les dossiers que vous avez indiqués avec le script Config et régler les permissions des - fichiers. Vous devez vous assurer que le répertoire data n'est pas + fichiers. Vous devez vous assurer que le répertoire data n'est pas accessible par les autres utilisateurs, car des utilisateurs malveillants pourraient causer des problèmes sur votre réseau, si les mots de passe ne sont pas chiffrés, ou lire les mémos de tous les utilisateurs. - Allez maintenant dans le répertoire conf (par défaut, ~/services/conf). - Copiez l'exemple de fichier de configuration (example.conf) en - services.conf et ouvrez ce dernier avec votre éditeur de texte favori. + Allez maintenant dans le répertoire conf (par défaut, ~/anope/conf). + Copiez l'exemple de fichier de configuration (anope.example.conf) en + anope.conf et ouvrez ce dernier avec votre éditeur de texte favori. Il contient toutes les directives de configuration qu'Anope va utiliser en démarrant. Lisez attentivement les instructions contenues dans le fichier. L'utilisation des valeurs par défaut n'est pas toujours @@ -78,11 +78,11 @@ Note : Vous devrez également lire les fichiers README et FAQ ! * IMPORTANT : Sauvegardez vos anciennes bases de données ! * Si vous mettez à jour vers une nouvelle version majeure, recommencez *toujours* toute votre configuration à partir du - fichier example.conf. + fichier anope.example.conf. 3) Configuration de l'IRCd - Les Services agissent comme un serveur IRC avec des pseudo-clients. + Anope agit comme un serveur IRC avec des pseudo-clients. Pour les relier à votre réseau, vous aurez besoin de configurer votre IRCd pour permettre aux services de se connecter. @@ -92,14 +92,14 @@ Note : Vous devrez également lire les fichiers README et FAQ ! sur le port donné dans le bloc link. Des exemples de configurations de bloc link peuvent être trouvés dans - le fichier example.conf pour certains des IRCd les plus populaires. + le fichier anope.example.conf pour certains des IRCd les plus populaires. Souvenez-vous de /rehash votre IRCd pour appliquer les changements. 4) Mettre en route Anope Allez dans le répertoire où les fichiers binaires ont été installés - (par défaut, ~/services/bin). Tapez ./services pour lancer Anope. + (par défaut, ~/anope/bin). Tapez ./anope pour lancer Anope. S'il y a des erreurs de syntaxe dans le fichier de configuration, elles seront affichées à l'écran. Corrigez-les jusqu'à ce qu'il n'y en ait @@ -109,7 +109,7 @@ Note : Vous devrez également lire les fichiers README et FAQ ! réseau, car certains IRCds sur certains systèmes peuvent être très lents pour le processus de liaison. Si rien ne se passe après environ une minute, il y a probablement un problème de configuration. Essayez - de lancer Anope en mode debug avec ./services -debug -nofork pour voir + de lancer Anope en mode debug avec ./anope -debug -nofork pour voir toutes les erreurs rencontrées et essayez de les corriger. Si vous avez besoin d'aide pour résoudre des erreurs, n'hésitez pas à @@ -121,11 +121,11 @@ Note : Vous devrez également lire les fichiers README et FAQ ! Une entrée crontab vous permettra de vérifier périodiquement si Anope est toujours en cours d'exécution et de le redémarrer s'il n'est pas. - D'abord renommez le script example.chk qui est dans les dossiers - d'Anope (par défaut, ~/services/conf) en services.chk et modifiez-le. + D'abord renommez le script cron.example.sh qui est dans les dossiers + d'Anope (par défaut, ~/anope/conf) en cron.sh et modifiez-le. Vous aurez besoin de modifier la partie CONFIGURATION du fichier. Assurez-vous ensuite que le fichier est marqué comme exécutable en - tapant chmod +x services.chk et essayez de lancer le script pour voir + tapant chmod +x cron.sh et essayez de lancer le script pour voir si cela fonctionne (Anope ne doit pas être en marche lorsque vous testez cela ;)) @@ -133,7 +133,7 @@ Note : Vous devrez également lire les fichiers README et FAQ ! crontab -e. Cela va ouvrir l'éditeur de texte par défaut avec le fichier crontab. Entrez la ligne suivante (avec le chemin correct) : - */5 * * * * /home/ircd/services/conf/services.chk > /dev/null 2>&1 + */5 * * * * /home/ircd/anope/conf/cron.sh > /dev/null 2>&1 Le */5 au début signifie "vérifier toutes les 5 minutes". Vous pouvez remplacer le 5 par un autre numéro si vous voulez (mais moins de 60). diff --git a/docs/LANGUAGE b/docs/LANGUAGE index a8acdd31b..bc6705039 100644 --- a/docs/LANGUAGE +++ b/docs/LANGUAGE @@ -28,7 +28,7 @@ Anope Multi Language Support Anope uses gettext (https://www.gnu.org/software/gettext/) to translate messages for users. To add a new language install gettext and run `msginit -l language -o anope.language.po -i anope.pot`. For example if I was translating to Spanish I could run `msginit -l es_ES -o anope.es_ES.po -i anope.pot`. Open the newly generating .po file and start - translating. Once you are done simply rerun ./Config; make && make install and add the language to your services.conf. + translating. Once you are done simply rerun ./Config; make && make install and add the language to your anope.conf. Note that on Windows it is not quite this simple, windows.cpp must be edited and Anope recompiled and restarted. Poedit (https://poedit.net/) is a popular po file editor, and we recommend using it or another editor designed to edit diff --git a/docs/MODULES b/docs/MODULES index 845bf25fd..e22ab3d7d 100644 --- a/docs/MODULES +++ b/docs/MODULES @@ -12,7 +12,7 @@ Anope Modules 1) Introduction - Anope 1.6 onwards supports external modules. External modules are pieces + Anope 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. @@ -22,7 +22,7 @@ Anope Modules 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/data/modules). + be ~/anope/data/modules). 2. Compile Anope as usual using ./Config. The "make" process will now compile module support into Anope, and compile the default sample @@ -98,7 +98,7 @@ Anope Modules 1. Make sure you're in the main source directory. (usually anope-1.X.XX/) 2. Run ./Config to find and configure modules, then `cd build`. 3. Run `make` to compile Anope, and any modules. - 4. Run `make install` to copy the compiled binaries to the ~/services/ + 4. Run `make install` to copy the compiled binaries to the ~/anope/ directory. You can now use /msg OperServ MODLOAD to load the new modules. diff --git a/docs/NEWS b/docs/NEWS deleted file mode 100644 index 07911e66c..000000000 --- a/docs/NEWS +++ /dev/null @@ -1,6 +0,0 @@ -Highlighted News in Anope 1.9 -============================= - -* Added in live updating SQL and the ability to execute commands through SQL -* Re-designed configuration file -* Code refresh / rewrite into C++ diff --git a/docs/README b/docs/README index 68b8ba78d..94883daf0 100644 --- a/docs/README +++ b/docs/README @@ -1,7 +1,7 @@ Anope -- a set of IRC services for IRC networks ----------------------------------------------- -Anope is 2003-2024 Anope Team <team@anope.org>. +Anope is 2003-2025 Anope Team <team@anope.org>. Based on Epona 2000-2002 PegSoft <epona@pegsoft.net>. Based on Services 1996-1999 Andrew Church <achurch@achurch.org>. @@ -120,7 +120,7 @@ Table of Contents 2) Presentation - Anope is a set of Services for IRC networks that allows users to manage + 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. @@ -166,14 +166,14 @@ Table of Contents Anope currently works with: - * Bahamut 1.4.27 or later (including 1.8) - * Charybdis 3.4 or later + * Bahamut 2.0 or later + * InspIRCd 3 or later * ircd-hybrid 8.2.23 or later - * InspIRCd 1.2 or later + * ircd-ratbox 3 or later * ngIRCd 19.2 or later * Plexus 3 or later - * Ratbox 2.0.6 or later - * UnrealIRCd 3.2 or later + * Solanum (all versions) + * UnrealIRCd 6 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. @@ -225,7 +225,7 @@ Table of Contents 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.) + debugging while Anope is running using OperServ's SET DEBUG command.) If you repeat use --debug=<level>, 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 general, diff --git a/docs/REDIS b/docs/REDIS index 8f7a076fd..603fa034a 100644 --- a/docs/REDIS +++ b/docs/REDIS @@ -1,4 +1,4 @@ -Starting in Anope 1.9.9, Anope has Redis database support (https://redis.io/). +Anope has Redis database support (https://redis.io/). This document explains the data structure used by Anope, and explains how keyspace notification works. @@ -149,12 +149,12 @@ Table of Contents Which returns a new object ID for me, in this example it will be "8". Now I can create the object: - HMSET hash:BotInfo:8 nick redis user redis host services.anope.org realname "Services for IRC Networks" + HMSET hash:BotInfo:8 nick redis user redis host services.anope.org realname "Anope IRC Services" Note if you are using HSET instead of HMSET you will need to use a transaction, as shown in the above example. If you are watching your services logs you will immediately see: - USERS: redis!redis@services.anope.org (Services for IRC Networks) connected to the network (services.anope.org) + USERS: redis!redis@services.anope.org (Anope IRC Services) connected to the network (services.anope.org) And the bot redis will be in BotServ's bot list. Notice how ids:BotInfo and the value keys are updated automatically. diff --git a/docs/RPC/RPC b/docs/RPC/RPC new file mode 100644 index 000000000..eee81c632 --- /dev/null +++ b/docs/RPC/RPC @@ -0,0 +1,21 @@ +RPC using JSON-RPC and XML-RPC (using PECL's xmlrpc_encode_request and xmlrpc_decode functions) is supported. + +This allows external applications, such as websites, to execute remote procedure calls to Anope in real time. + +Currently there are 5 supported RPC calls, provided by rpc_main: + +checkAuthentication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password + is correct for the account name, useful for making login pages on websites. + +command - Takes three parameters, a service name (BotServ, ChanServ, NickServ), a user name (whether online or not), and the command + to execute. This will execute the given command to Anope using the given service name. If the user given is online, the + command reply will go to them, if not it is returned by RPC. + +stats - Takes no parameters, returns miscellaneous stats that can be found in the /operserv stats command. + +RPC was designed to be used with db_sql, and will not return any information that can be pulled from the SQL +database, such as accounts and registered channel information. It is instead used for pulling realtime data such +as users and channels currently online. For examples on how to use these calls in PHP, see xmlrpc.php in docs/RPC. + +Also note that when using XMLRPC the parameter named "id" is reserved for query ID. If you pass a query to Anope containing a value for id. it will +be stored by Anope and the same id will be passed back in the result. diff --git a/docs/RPC/jsonrpc.js b/docs/RPC/jsonrpc.js new file mode 100644 index 000000000..b726678a2 --- /dev/null +++ b/docs/RPC/jsonrpc.js @@ -0,0 +1,183 @@ +// SPDX-License-Identifier: CC0-1.0 +"use strict"; + +/** Implements methods for accessing an Anope JSON-RPC server. */ +class AnopeRPC { + + /** + * Initializes a new AnopeRPC instance with the specified RPC host. + * + * @param {string} The RPC host base URL. + */ + constructor(host) { + this.host = host; + } + + /** + * Executes an arbitrary RPC query. + * + * @param {string} method The name of the method to execute. + * @param {...*} params The parameters pass to the method. + * @returns {*} The result of the RPC query. + */ + async run(method, ...params) { + const request = JSON.stringify({ + "jsonrpc": "2.0", + "method": method, + "params": params, + "id": Math.random().toString(36).slice(2) + }); + const response = await fetch(this.host, { + method: 'POST', + body: request + }); + if (!response.ok) { + throw new Error(`HTTP returned ${response.status}`) + } + const json = await response.json(); + if ("error" in json) { + throw new Error(`JSON-RPC returned ${json.error.code}: ${json.error.message}`) + } + if ("result" in json) { + return json.result; + } + return null; + } + + /** + * Retrieves a list of channels. + * + * Requires the rpc_data module to be loaded. + * + * @returns {array} An array of channel names. + */ + listChannels() { + return this.run("anope.listChannels"); + } + + /** + * Retrieves information about the specified channel. + * + * Requires the rpc_data module to be loaded. + * + * @param {string} name The name of the channel. + * @returns {object} An object containing information about the channel. + */ + channel(name) { + return this.run("anope.channel", name); + } + + /** + * Retrieves a list of services operators. + * + * Requires the rpc_data module to be loaded. + * + * @returns {array} An array of channel names. + */ + listOpers() { + return this.run("anope.listOpers"); + } + + /** + * Retrieves information about the specified services operator. + * + * Requires the rpc_data module to be loaded. + * + * @param {string} name The name of the services operator. + * @returns {object} An object containing information about the services operator. + */ + oper(name) { + return this.run("anope.oper", name); + } + + /** + * Retrieves a list of servers. + * + * Requires the rpc_data module to be loaded. + * + * @returns {array} An array of servers names. + */ + listServers() { + return this.run("anope.listServers"); + } + + /** + * Retrieves information about the specified server. + * + * Requires the rpc_data module to be loaded. + * + * @param {string} name The name of the server. + * @returns {object} An object containing information about the server. + */ + server(name) { + return this.run("anope.server", name); + } + + /** + * Retrieves a list of users. + * + * Requires the rpc_data module to be loaded. + * + * @returns {array} An array of channel names. + */ + listUsers() { + return this.run("anope.listUsers"); + } + + /** + * Retrieves information about the specified user. + * + * Requires the rpc_data module to be loaded. + * + * @param {string} nick The nick of the user. + * @returns {object} An object containing information about the user. + */ + user(nick) { + return this.run("anope.user", nick); + } + + /** + * Sends a message to every user on the network. + * + * Requires the rpc_message module to be loaded. + * + * @param {...*} messages One or more messages to send. + */ + messageNetwork(...messages) { + return this.run("anope.messageNetwork", ...messages); + } + + /** + * Sends a message to every user on the specified server. + * + * Requires the rpc_message module to be loaded. + * + * @param {string} name The name of the server. + * @param {...*} messages One or more messages to send. + */ + messageServer(server, ...messages) { + return this.run("anope.messageServer", server, ...messages); + } + + /** + * Sends a message to the specified user. + * + * Requires the rpc_message module to be loaded. + * + * @param {string} source The source pseudoclient to send the message from. + * @param {string} target The target user to send the message to. + * @param {...*} messages One or more messages to send. + */ + messageUser(source, target, ...messages) { + return this.run("anope.messageUser", source, target, ...messages); + } +} + +/* +const arpc = new AnopeRPC("http://127.0.0.1:8080/jsonrpc"); +arpc.listServers().then(servers => { + console.log(servers); +}).catch (error => { + console.log(error); +}); +*/ diff --git a/docs/XMLRPC/xmlrpc.php b/docs/RPC/jsonrpc.php index ac378811c..4e9b52ba9 100644 --- a/docs/XMLRPC/xmlrpc.php +++ b/docs/RPC/jsonrpc.php @@ -1,23 +1,23 @@ <?php /** - * XMLRPC Functions + * JSON-RPC functions * - * (C) 2003-2024 Anope Team + * (C) 2003-2025 Anope Team * Contact us at team@anope.org */ -class AnopeXMLRPC +class AnopeRPC { /** - * The XMLRPC host + * The RPC host * * @var string */ private $host; /** - * Initiate a new AnopeXMLRPC instance + * Initiate a new AnopeRPC instance * * @param $host */ @@ -27,7 +27,7 @@ class AnopeXMLRPC } /** - * Run an XMLRPC command. Name should be a query name and params an array of parameters, eg: + * Run an RPC command. Name should be a query name and params an array of parameters, eg: * $this->raw("checkAuthentication", ["adam", "qwerty"]); * If successful returns back an array of useful information. * @@ -40,14 +40,19 @@ class AnopeXMLRPC */ public function run($name, $params) { - $xmlquery = xmlrpc_encode_request($name, $params); + $request = json_encode([ + "jsonrpc" => "2.0", + "id" => uniqid(), + "method" => $name, + "params" => $params, + ]); $context = stream_context_create(["http" => [ "method" => "POST", - "header" => "Content-Type: text/xml", - "content" => $xmlquery]]); + "header" => "Content-Type: application/json", + "content" => $request]]); $inbuf = file_get_contents($this->host, false, $context); - $response = xmlrpc_decode($inbuf); + $response = json_decode($inbuf, true); if ($response) { return $response; @@ -85,8 +90,8 @@ class AnopeXMLRPC { $ret = $this->run("checkAuthentication", [$account, $pass]); - if ($ret && $ret["result"] == "Success") { - return $ret["account"]; + if ($ret && array_key_exists("result", $ret) && array_key_exists("account", $ret["result"])) { + return $ret["result"]["account"]; } return null; @@ -112,7 +117,7 @@ class AnopeXMLRPC */ public function channel($channel) { - return $this->run("channel", [$channel]); + return $this->run("anope.channel", [$channel]); } /** @@ -127,7 +132,7 @@ class AnopeXMLRPC */ public function notice($source, $target, $message) { - return $this->run("notice", [$source, $target, $message]); + return $this->run("anope.messageUser", [$source, $target, $message]); } /** @@ -138,8 +143,8 @@ class AnopeXMLRPC */ public function user($user) { - return $this->run("user", [$user]); + return $this->run("anope.user", [$user]); } } -$anope = new AnopeXMLRPC("http://127.0.0.1:8080/xmlrpc"); +$anope = new AnopeRPC("http://127.0.0.1:8080/jsonrpc"); diff --git a/docs/RPC/rpc_data.md b/docs/RPC/rpc_data.md new file mode 100644 index 000000000..9ba1ae8ac --- /dev/null +++ b/docs/RPC/rpc_data.md @@ -0,0 +1,309 @@ +# Anope `rpc_data` RPC interface + +## `anope.listChannels` + +Lists all channels that exist on the network. + +### Parameters + +*None* + +### Errors + +*Only standard RPC errors* + +### Result + +Returns an array of channel names. + +#### Example + +```json +["#chan1", "#chan2", "#chan3"] +``` + +## `anope.channel` + +Retrieves information about the specified channel. + +### Parameters + +Index | Description +----- | ----------- +0 | The name of the channel. + +### Errors + +Code | Description +------ | ----------- +-32099 | The specified channel does not exist. + +### Result + +Returns a map containing information about the channel. + +Key | Type | Description +--- | ---- | ----------- +created | uint | The UNIX time at which the channel was originally created. +listmodes | map | List modes which are set on the channel keyed by the mode character. +modes | array[string] | Flag and parameter modes which are set on the channel. +name | string | The name of the channel. +registered | boolean | Whether the channel is registered. +topic | map or null | The channel topic or null if no topic is set. +topic.setat | uint | The time at which the topic was set. +topic.setby | string | The nick or nuh of the user who set the topic. +topic.value | string | The text of the topic. +users | array[string] | The users that are current in the channel prefixed by their status mode prefixes. + +#### Example + +```json +{ + "created": 1740402691, + "listmodes": { + "b": ["foo!bar@baz", "account:bax"], + }, + "modes": ["+knrt", "secret"], + "name": "#chan1", + "registered": true, + "topic": { + "setat": 1740404706, + "setby": "nick1", + "value": "Example channel topic" + }, + "users": ["@nick1", "nick2"] +} +``` + +## `anope.listOpers` + +Lists all services operators that exist on the network. + +### Parameters + +*None* + +### Errors + +*Only standard RPC errors* + +### Result + +Returns an array of services operator names. + +#### Example + +```json +["nick1", "nick2", "nick3"] +``` + +## `anope.oper` + +Retrieves information about the specified services operator. + +### Parameters + +Index | Description +----- | ----------- +0 | The name of the services operator. + +### Errors + +Code | Description +------ | ----------- +-32099 | The specified services operator does not exist. + +### Result + +Returns a map containing information about the services operator. + +Key | Type | Description +--- | ---- | ----------- +fingerprints | array[string] or null | The client certificate fingerprints that a user must be using to log in as this services operator or null if there are no client certificate restrictions. +hosts | array[string] or null | The user@ip and user@ip masks that a user must be connecting from to log in as this services operator or null if there are no host restrictions. +name | string | The name of the services operator. +operonly | boolean | Whether a user has to be a server operator to log in as this services operator. +opertype | map | The oper type associated with the services operator opertype. +opertype.commands | array[string] | The commands that the services operator type can use. +opertype.name | string | The name of the services operator type. +opertype.privileges | array[string] | The privileges that the services operator type has. +password | boolean | Whether a user has to specify a password to log in as the services operator. +vhost | string or null | The vhost of the services operator or null if there is no vhost. + +#### Example + +```json +{ + "fingerprints": null, + "hosts": ["*@*.example.com"], + "name": "stest", + "operonly": true, + "opertype": { + "commands": ["hostserv/*", "operserv/session"], + "name": "Helper", + "privileges": ["chanserv/no-register-limit"] + }, + "password": false, + "vhost": null +} +``` + +## `anope.listServers` + +Lists all servers that exist on the network. + +### Parameters + +*None* + +### Errors + +*Only standard RPC errors* + +### Result + +Returns an array of server names. + +#### Example + +```json +["irc1.example.com", "irc2.example.com", "services.example.com"] +``` + +## `anope.server` + +Retrieves information about the specified server. + +### Parameters + +Index | Description +----- | ----------- +0 | The name of the server. + +### Errors + +Code | Description +------ | ----------- +-32099 | The specified server does not exist. + +### Result + +Returns a map containing information about the server. + +Key | Type | Description +--- | ---- | ----------- +description | string | The description of the server. +downlinks | array[string] | The servers which are behind this server +juped | boolean | Whether the server has been juped. +name | string | The name of the server. +sid | string or null | The unique immutable identifier of the server or null if the IRCd does not use SIDs. +synced | boolean | Whether the server has finished syncing. +ulined | boolean | Whether the server is U-lined. +uplink | string or null | The server in front of this server or null if it is the services server. + +#### Example + +```json +{ + "description": "Anope IRC Services", + "downlinks": ["irc.example.com"], + "juped": false, + "name": "services.example.com", + "sid": "00B", + "synced": true, + "ulined": true, + "uplink": null +} +``` + +## `anope.listUsers` + +Lists all users that exist on the network. + +### Parameters + +*None* + +### Errors + +*Only standard RPC errors* + +### Result + +Returns an array of user nicknames. + + +#### Example + +```json +["nick1", "nick2", "nick3"] +``` + +## `anope.user` + +Retrieves information about the specified user. + +### Parameters + +Index | Description +----- | ----------- +0 | The nickname of the user. + +### Errors + +Code | Description +------ | ----------- +-32099 | The specified user does not exist. + +### Result + +Returns a map containing information about the user. + +Key | Type | Description +--- | ---- | ----------- +account | map or null | The user's account or null if they are not logged in to an account. +account.display | string | The display nickname of the account. +account.opertype | string or null | The account's oper type or null if the account is not a services operator. +account.uniqueid | uint | The unique immutable identifier of the account. +address | string | The IP address the user is connecting from. +channels | array[string] | The channels that the user is in prefixed by their status mode prefixes. +chost | string or null | The cloaked hostname of the user or null if they have no cloak. +fingerprint | string or null | The fingerprint of the user's client certificate or null if they are not using one. +host | string | The real hostname of the user. +ident | string | The username (ident) of the user. +modes | array[string] | Flag and parameter modes which are set on the user. +nick | string | The nickname of the user. +nickchanged | uint | The time at which the user last changed their nickname. +real | string | The real name of the user. +server | string | The server that the user is connected to. +signon | uint | The time at which the user connected to the network. +uid | string or null | The unique immutable identifier of the user or null if the IRCd does not use UIDs. +vhost | string or null | The virtual host of the user or null if they have no vhost. +vident | string or null | The virtual ident (username) of the user or null if they have no vident. + +#### Example + +```json +{ + "account": { + "display": "nick1", + "opertype": "Services Root", + "uniqueid": "17183514657819486040" + }, + "address": "127.0.0.1", + "channels": ["@#chan1", "#chan2"], + "chost": "localhost", + "fingerprint": null, + "host": "localhost", + "id": "9TSAAAAAA", + "ident": "user1", + "modes": ["+r"], + "nick": "nick1", + "nickchanged": 1740408318, + "real": "An IRC User", + "server": "irc.example.com", + "signon": 1740408296, + "vhost": "staff.example.com", + "vident": null, +} +``` diff --git a/docs/RPC/rpc_message.md b/docs/RPC/rpc_message.md new file mode 100644 index 000000000..de91767ae --- /dev/null +++ b/docs/RPC/rpc_message.md @@ -0,0 +1,67 @@ +# Anope `rpc_message` RPC interface + +## `anope.messageNetwork` + +Sends a message to all users on the network. + +### Parameters + +Index | Description +----- | ----------- +0+ | One or more messages to send. + +### Errors + +Code | Description +------ | ----------- +-32099 | The global service is not available. + +### Result + +This procedure returns no result. + +## `anope.messageServer` + +Sends a message to all users on the specified server. + +### Parameters + +Index | Description +----- | ----------- +0 | The name of the server to message users on. +1+ | One or more messages to send. + +### Errors + +Code | Description +------ | ----------- +-32099 | The global service is not available. +-32098 | The specified server does not exist. + +### Result + +This procedure returns no result. + +## `anope.messageUser` + +Sends a message to the specified user. + +### Parameters + +Index | Description +----- | ----------- +0 | The source pseudoclient to send the message from. +1 | The target user to send the message to. +2+ | One or more messages to send. + +### Errors + +Code | Description +------ | ----------- +-32099 | The specified source does not exist. +-32098 | The specified target does not exist. + +### Result + +This procedure returns no result. + diff --git a/docs/TOOLS b/docs/TOOLS deleted file mode 100644 index 5e8f139cb..000000000 --- a/docs/TOOLS +++ /dev/null @@ -1,25 +0,0 @@ -Anope Bundled Tools -------------------- - -1) Anope SMTP Client - - Provided with Anope is a simple SMTP client which can be used instead of - programs like SendMail in some cases. - - The SMTP client can be used instead of sendmail for use with Anope's mail - options. To use the SMTP client instead of sendmail, find the line in your - services configuration file (services.conf) that defines sendmailpath. On - that line, change the path to your services installation directory, then - followed by "bin/anopesmtp" and the IP address of a valid SMTP server. It - should look like this: - - sendmailpath = "/home/anope/services/bin/anopesmtp 127.0.0.1" - - If the SMTP client doesn't send mail, or if there's an other problem with - it, you can enable debug mode by passing the --debug flag after the server - address. This should generate a log file of what happened when it tried - to connect to the SMTP server. - - Credits: - Originally written by Dominick Meglio <codemastr@unrealircd.com> - Ported to *nix by Trystan Scott Lee <trystan@nomadirc.net> diff --git a/docs/WIN32.txt b/docs/WIN32.txt index 2880cb0e0..bf7153010 100644 --- a/docs/WIN32.txt +++ b/docs/WIN32.txt @@ -70,7 +70,7 @@ Anope for Windows If you cannot find whats causing the error, please visit our forums or
our IRC Support channel for assistance.
- Some Anope modules require third party libraries, such as m_mysql and
+ Some Anope modules require third party libraries, such as mysql and
the SSL modules. If these libraries are installed in nonstandard
locations, cmake will probably not find them and should be told where
they are by passing their location to Config.
@@ -103,7 +103,7 @@ Anope for Windows INSTALL within the Solution Explorer. Right-click on INSTALL and choose Build.
When you have done this, all the files will be installed to where they belong.
- The only thing you need to do is rename "data/example.conf" to be "data/services.conf",
+ The only thing you need to do is rename "data/anope.example.conf" to be "data/anope.conf",
and then follow the steps to set up Anope.
You have now completed the building phase of Anope for Windows. You can
@@ -120,7 +120,7 @@ Anope for Windows 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
+ Open anope.conf, and read through it carefully and adjust the settings
you think you need to adjust.
If you are unsure of the settings, you can go to the dos command prompt
diff --git a/docs/XMLRPC/XMLRPC b/docs/XMLRPC/XMLRPC deleted file mode 100644 index 52f2248a6..000000000 --- a/docs/XMLRPC/XMLRPC +++ /dev/null @@ -1,29 +0,0 @@ -Starting with Anope 1.9.4 XMLRPC using PHP's xmlrpc_encode_request and xmlrpc_decode functions is supported. -This allows external applications, such as websites, to execute remote procedure calls to Anope in real time. - -Currently there are 5 supported XMLRPC calls, provided by m_xmlrpc_main: - -checkAuthentication - Takes two parameters, an account name and a password. Checks if the account name is valid and the password - is correct for the account name, useful for making login pages on websites. - -command - Takes three parameters, a service name (BotServ, ChanServ, NickServ), a user name (whether online or not), and the command - to execute. This will execute the given command to Anope using the given service name. If the user given is online, the - command reply will go to them, if not it is returned by XMLRPC. - -stats - Takes no parameters, returns miscellaneous stats that can be found in the /operserv stats command. - -channel - Takes one parameter, a channel name, and returns real time information regarding that channel, such as users, modes - (ban lists and such), topic etc. - -user - Takes one parameter, a user name, and returns real time information regarding that user. - -opers - Takes no parameters, returns opertypes, their privileges and commands. - -notice - Takes three parameters, source user, target user, and message. Sends a message to the user. - -XMLRPC was designed to be used with db_sql, and will not return any information that can be pulled from the SQL -database, such as accounts and registered channel information. It is instead used for pulling realtime data such -as users and channels currently online. For examples on how to use these calls in PHP, see xmlrpc.php in docs/XMLRPC. - -Also note that the parameter named "id" is reserved for query ID. If you pass a query to Anope containing a value for id. it will -be stored by Anope and the same id will be passed back in the result. |