From d002ea19526bf8e976c8b9aa9204f5c1f6b4d7f7 Mon Sep 17 00:00:00 2001 From: Adam- Date: Sun, 2 May 2010 04:37:17 +0000 Subject: Moved CODING, TODO, and Changes* to docs/. Removed unused empty file install-sh. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2926 5417fbe8-f217-4b02-8779-1006273d7864 --- CMakeLists.txt | 2 +- CODING | 170 ------------------------------------ Changes | 99 --------------------- Changes.conf | 51 ----------- Changes.lang | 251 ------------------------------------------------------ TODO | 80 ----------------- docs/CODING | 170 ++++++++++++++++++++++++++++++++++++ docs/Changes | 99 +++++++++++++++++++++ docs/Changes.conf | 51 +++++++++++ docs/Changes.lang | 251 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ docs/TODO | 80 +++++++++++++++++ install-sh | 0 12 files changed, 652 insertions(+), 652 deletions(-) delete mode 100644 CODING delete mode 100644 Changes delete mode 100644 Changes.conf delete mode 100644 Changes.lang delete mode 100644 TODO create mode 100644 docs/CODING create mode 100644 docs/Changes create mode 100644 docs/Changes.conf create mode 100644 docs/Changes.lang create mode 100644 docs/TODO delete mode 100644 install-sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 82485ccf2..0efe64fbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -427,7 +427,7 @@ if(WIN32) install(FILES ${Anope_SOURCE_DIR}/anope.bat DESTINATION bin ) - install(FILES ${Anope_SOURCE_DIR}/Changes ${Anope_SOURCE_DIR}/Changes.conf ${Anope_SOURCE_DIR}/Changes.lang + install(FILES ${Anope_SOURCE_DIR}/docs/Changes ${Anope_SOURCE_DIR}/docs/Changes.conf ${Anope_SOURCE_DIR}/docs/Changes.lang DESTINATION . ) endif(WIN32) diff --git a/CODING b/CODING deleted file mode 100644 index 21f4fa2d2..000000000 --- a/CODING +++ /dev/null @@ -1,170 +0,0 @@ -Orginally pulled from: http://www.inspircd.org/wiki/Coding_Guidelines -Yes, I'm aware the formatting of this document is ugly. It'll be fixed when someone cares. Read the wiki page if you want pretty for now. - ---- - - -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. - - Indentation - Tabs. Tabs. ONLY TABS. Use a single tab for each level of indentation, for example: - int main() - { - if (condition) - { - code - } - } - - - Separation - Always put a space in between a keyword like if/while and the condition, for example: - if (foo == bar) - NOT - if(foo == bar) - - Braces - Always put braces opening and closing blocks on separate lines, see the identation 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(); } - }; - - Templates - Where possible, use templates rather than #defines. Avoid use of RTTI. - 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.) - - 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". - - 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'. - - 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. - - Use of STL - For more information on use of STL in InspIRCd, please see the separate STL FAQ. - - 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. - - 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. - - Linefeeds - Unix linefeeds only please. We do not like to see our screens covered in ^M. :-) - - 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. - - 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. - - 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/Changes b/Changes deleted file mode 100644 index d73c1c190..000000000 --- a/Changes +++ /dev/null @@ -1,99 +0,0 @@ -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 diferent encryptions -A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dieing -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 identiifed 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 - -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 - 2009 -F Segfault on shutdown - -Provided by Adam - 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 - 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. - -Provided by Liber - 2009 -F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary) - -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) - -Provided by mooncup - 2009 -F Automatically reapply vhost on hs off for unreal. diff --git a/Changes.conf b/Changes.conf deleted file mode 100644 index c25bbe80a..000000000 --- a/Changes.conf +++ /dev/null @@ -1,51 +0,0 @@ -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 maxiumum 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 - -** 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. diff --git a/Changes.lang b/Changes.lang deleted file mode 100644 index 32f3cd243..000000000 --- a/Changes.lang +++ /dev/null @@ -1,251 +0,0 @@ -Anope Version 1.9.2 --------------------- -*** New Strings: - CHAN_INVITE_OTHER_SUCCESS - NICK_HELP_CONFIRM_OPER - CHAN_QOP_DISABLED - CHAN_QOP_NICKS_ONLY - CHAN_QOP_ADDED - CHAN_QOP_MOVED - CHAN_QOP_NO_SUCH_ENTRY - CHAN_QOP_NOT_FOUND - CHAN_QOP_DELETED - CHAN_QOP_DELETED_ONE - CHAN_QOP_DELETED_SEVERAL - CHAN_QOP_LIST_EMPTY - CHAN_QOP_LIST_HEADER - CHAN_QOP_CLEAR - CHAN_HELP_QOP - CHAN_QOP_SYNTAX - CHAN_HELP_CMD_QOP - CHAN_HELP_SET_PASSWORD - CHAN_LEVEL_AUTOOWNER - CHAN_LEVEL_OWNER - CHAN_LEVEL_OWNERME - CHAN_ACCESS_VIEW_XOP_FORMAT - CHAN_ACCESS_VIEW_AXS_FORMAT - CHAN_SET_PERSIST_SYNTAX - CHAN_SET_PERSIST_ON - CHAN_SET_PERSIST_OFF - CHAN_INFO_OPT_PERSIST - BOT_UNASSIGN_PERSISTANT_CHAN - CHAN_HELP_SET_PERSIST - NICK_RESETPASS_SYNTAX - NICK_RESETPASS_SUBJECT - NICK_RESETPASS_MESSAGE - NICK_RESETPASS_COMPLETE - NICK_CONFIRM_EXPIRED - NICK_CONFIRM_SUCCESS - NICK_HELP_CMD_RESETPASS - NICK_HELP_RESETPASS - CHAN_UNBANNED_OTHER - OPER_HELP_SYNC - OPER_HELP_CMD_SQLSYNC - OPER_SYNC_UPDATING - OPER_SYNC_UPDATED - -*** Mod Strings: - CHAN_HELP_SET - CHAN_REGISTER_SYNTAX - CHAN_ACCESS_SYNTAX - CHAN_HELP_ACCESS - CHAN_HELP_SET - NICK_HELP_CONFIRM - CHAN_UNBAN_SYNTAX - CHAN_HELP_CMD_UNBAN - CHAN_HELP_UNBAN - -*** Del Strings: - CHAN_PASSWORD_IS - CHAN_SET_PASSWORD_FAILED - CHAN_PASSWORD_CHANGED - CHAN_IDENTIFY_SUCCEEDED - CHAN_IDENTIFY_FAILED - CHAN_HELP_IDENTIFY - CHAN_IDENTIFY_SYNTAX - CHAN_HELP_CMD_IDENTIFY - CHAN_LOGOUT_FOUNDER_FAILED - CHAN_LOGOUT_SUCCEDED - CHAN_LOGOUT_NOT_LOGGEDIN - CHAN_LOGOUT_ALL_SUCCEEDED - CHAN_SERVADMIN_HELP_LOGOUT - CHAN_HELP_LOGOUT - CHAN_LOGOUT_SERVADMIN_SYNTAX - CHAN_LOGOUT_SYNTAX - CHAN_HELP_CMD_LOGOUT - CHAN_GETPASS_UNAVAILABLE - CHAN_GETPASSWORD_IS - CHAN_SERVADMIN_HELP_GETPASS - CHAN_GETPASS_SYNTAX - CHAN_HELP_CMD_GETPASS - CHAN_SENDPASS_SUBJECT - CHAN_SENDPASS_HEAD - CHAN_SENDPASS_LINE_1 - CHAN_SENDPASS_LINE_2 - CHAN_SENDPASS_LINE_3 - CHAN_SENDPASS_LINE_4 - CHAN_SENDPASS_LINE_5 - CHAN_SENDPASS_OK - CHAN_SENDPASS_UNAVAILABLE - CHAN_HELP_SENDPASS - CHAN_SENDPASS_SYNTAX - CHAN_HELP_CMD_SENDPASS - OPER_DEFCON_NO_CONF - -Anope Version 1.9.1 --------------------- -*** New Strings: - COMMAND_REQUIRES_PERM - COMMAND_IDENTIFY_REQUIRED - COMMAND_CANNOT_USE - COMMAND_CAN_USE - NICK_STATUS_REPLY - NICK_INFO_SERVICES_OPERTYPE - CHAN_LOGOUT_NOT_LOGGEDIN - CHAN_INVITE_ALREADY_IN - CHAN_INVITE_SUCCESS - CHAN_OP_SYNTAX - CHAN_HALFOP_SYNTAX - CHAN_VOICE_SYNTAX - CHAN_PROTECT_SYNTAX - CHAN_OWNER_SYNTAX - CHAN_DEOP_SYNTAX - CHAN_DEHALFOP_SYNTAX - CHAN_DEVOICE_SYNTAX - CHAN_DEPROTECT_SYNTAX - CHAN_DEOWNER_SYNTAX - CHAN_KICK_SYNTAX - CHAN_BAN_SYNTAX - MEMO_STAFF_SYNTAX - OPER_JUPE_INVALID_SERVER - -*** Mod Strings: - NICK_LOGOUT_SERVICESADMIN - CHAN_STATUS_SYNTAX - CHAN_GETKEY_KEY - MEMO_SET_NOTIFY_SYNTAX - BOT_REASON_BADWORD - BOT_BOTLIST_EMPTY - OPER_IGNORE_SYNTAX - OPER_DEFCON_SYNTAX - OPER_HELP_EXCEPTION - OPER_HELP_SESSION - NEWS_LOGON_SYNTAX - NEWS_OPER_SYNTAX - NEWS_RANDOM_SYNTAX - NEWS_HELP_LOGON - NEWS_HELP_OPER - NEWS_HELP_RANDOM - NICK_HELP_STATUS - NICK_HELP_SENDPASS - NICK_SERVADMIN_HELP - NICK_SERVADMIN_HELP_LOGOUT - NICK_SERVADMIN_HELP_DROP - NICK_SERVADMIN_HELP_INFO - NICK_SERVADMIN_HELP_LIST - NICK_SERVADMIN_HELP_ALIST - NICK_SERVADMIN_HELP_GLIST - CHAN_HELP_SET_RESTRICTED - CHAN_HELP_OP - CHAN_HELP_DEOP - CHAN_HELP_VOICE - CHAN_HELP_DEVOICE - CHAN_HELP_HALFOP - CHAN_HELP_DEHALFOP - CHAN_HELP_PROTECT - CHAN_HELP_DEPROTECT - CHAN_HELP_OWNER - CHAN_HELP_DEOWNER - CHAN_HELP_KICK - CHAN_HELP_CLEAR - CHAN_HELP_GETKEY - CHAN_HELP_SENDPASS - CHAN_SERVADMIN_HELP - CHAN_SERVADMIN_HELP_LOGOUT - CHAN_SERVADMIN_HELP_DROP - CHAN_SERVADMIN_HELP_SET - CHAN_SERVADMIN_HELP_INFO - CHAN_SERVADMIN_HELP_LIST - MEMO_HELP_SET_NOTIFY - MEMO_HELP_STAFF - OPER_HELP_CMD_CHANKILL - OPER_HELP_STATS - OPER_HELP_IGNORE - OPER_HELP_UMODE - OPER_HELP_ULINE - OPER_HELP_SVSNICK - OPER_HELP_SET - BOT_HELP - BOT_SERVADMIN_HELP_BOT - BOT_SERVADMIN_HELP_SET - HOST_DELALL_SYNTAX - HOST_SET_SYNTAX - HOST_SETALL_SYNTAX - HOST_DEL_SYNTAX - -*** Del Strings: - PERMISSION_DENIED - RAW_DISABLED - HELP_LIMIT_SERV_OPER - HELP_LIMIT_SERV_ADMIN - HELP_LIMIT_SERV_ROOT - HELP_LIMIT_IRC_OPER - HELP_LIMIT_HOST_SETTER - HELP_LIMIT_HOST_REMOVER - NICK_STATUS_0 - NICK_STATUS_1 - NICK_STATUS_2 - NICK_STATUS_3 - NICK_INFO_SERVICES_OPER - NICK_INFO_SERVICES_ADMIN - NICK_INFO_SERVICES_ROOT - CHAN_MUST_REGISTER_NICK - CHAN_MUST_IDENTIFY_NICK - OPER_ADMIN_SYNTAX - OPER_ADMIN_SKELETON - OPER_ADMIN_EXISTS - OPER_ADMIN_REACHED_LIMIT - OPER_ADMIN_ADDED - OPER_ADMIN_NOT_FOUND - OPER_ADMIN_NO_MATCH - OPER_ADMIN_DELETED - OPER_ADMIN_DELETED_ONE - OPER_ADMIN_DELETED_SEVERAL - OPER_ADMIN_LIST_EMPTY - OPER_ADMIN_LIST_HEADER - OPER_ADMIN_LIST_FORMAT - OPER_ADMIN_CLEAR - OPER_ADMIN_MOVED - OPER_OPER_SYNTAX - OPER_OPER_SKELETON - OPER_OPER_EXISTS - OPER_OPER_REACHED_LIMIT - OPER_OPER_ADDED - OPER_OPER_NOT_FOUND - OPER_OPER_NO_MATCH - OPER_OPER_DELETED - OPER_OPER_DELETED_ONE - OPER_OPER_DELETED_SEVERAL - OPER_OPER_LIST_EMPTY - OPER_OPER_LIST_HEADER - OPER_OPER_LIST_FORMAT - OPER_OPER_CLEAR - OPER_OPER_MOVED - OPER_SET_SQL_ON - OPER_SET_SQL_OFF - OPER_SET_SQL_ERROR - OPER_SET_SQL_ERROR_INIT - OPER_SET_SQL_ERROR_DISABLED - OPER_RAW_SYNTAX - HELP_HELP - HELP_HELP_BOT - HELP_HELP_HOST - OPER_HELP_CMD_OPER - OPER_HELP_CMD_ADMIN - OPER_HELP_OPER - OPER_HELP_ADMIN - OPER_HELP_SET_SQL - OPER_HELP_RAW - HOST_ID - HOST_NOT_REGGED - HOST_OFF_UNREAL diff --git a/TODO b/TODO deleted file mode 100644 index 8fb8a8b3a..000000000 --- a/TODO +++ /dev/null @@ -1,80 +0,0 @@ -Legend: - x = done - ? = unsure - + = in progress - -1.9.2 ------ -[x] Redo database insanity. - [x] Move database load/save to a module - [x] realtime SQL/whatever module using events (possibly ongoing) - [x] flatfile save on a periodic timer - [x] SANE password encryption - prefix password with the method it was encrypted with, allowing for *seamless* upgrading to different methods - [x] Salted SHA256 (contact Special for this) - [x] New database format (text, not binary - works very well for merging and so on) -[x] generic database routines modules can use to create their own database -[?] IRCd capability support: don't rely on CAPAB, provide an interface to turn capabilities on specifically -[x] Socket subsystem needs some serious loving - [x] Multiple sockets - [x] Asynchronous, using select() (multiple engines? not really needed..) - [x] Callbacks, event style, see also inspircd -[x] generic way to check which modes a user has set (u->HasUmode(UMODE_OPER)) -[x] way for one module to depend on another... not like 2 MOD_HEADs and it being unpredictable which is loaded first.. - the MOD_HEAD MOD_TAIL allows for too few combinations (interface code of insp, hooks code of insp?) -[x] Last used time on AKICK/access entries -[x] Channel passwords seem to be of limited use, think of a more appropriate way to handle this -[+] General options block, ability to turn LOGCHAN on from the config file.. -[x] Docs directory cleanup -[x] Fix permanent channels support properly -[x] CS SET INHABIT to keep pseudoclient in a channel after it empties to maintain banlists and such -[x] Set forbidden channels +s -[x] SendAkill should just take a pointer to the Akill class instead of millions of fields (same for some other stuff) -[x] burn do_sjoin with fire -[x] Channel access additions - [x] Setter - [x] Last used - -Future ------- -[ ] Asynchronous DNS -[ ] CIDR Akills, session exceptions, etc -[ ] Hashing system for storing just about everything needs to die -[ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!) -[?] Remote identification (1.9.1? will this break stuff?) -[ ] Language charset stuff, including collation (1.9.1? phoenix?) -[ ] Add support for +k, +q, etc type umodes -[ ] fantasy: allow replies/notifications to fantasy commands to go to the channel via notice -[?] a way for a module to queue itself (or even another module) for unloading -[ ] Language system is disgusting, it must die. - [ ] Modules should also have a way to add strings programatically - [ ] Should be able to add many strings by dropping a file in a set location. - [ ] I forsee this working via a function rather than defines, as it seems to do now: e.g. _("NS_NICK_IS_REGISTERED"). -[?] Update help to reflect the fact /msg memoserv set notify mail - works just fine ;) -[ ] Useful/common "third party" modules to core distro - [ ] NS AJOIN -[+] Method to store listmodes (more generically than AKICK, too) for e.g. +beI and extbans, etc. -[ ] Channel access additions - [ ] Time added - [ ] Time modified - [ ] Expiry (useful?) -[ ] NS INFO: seperate field for last seen realhost, shown to SRA only -[ ] NS SUSPEND: show suspender and reason, probably to sopers only (see CS SUSPEND) -[ ] Merge NS INFO blah ALL with NS INFO blah, if you're requesting info, you really want the info anyway. -[?] Don't allow soper accounts to expire -[?] Reason for CS SET RESTRICTED -[ ] NS IDENTIFY changes - [?] Last failed identify? Maybe more useful for sopers only, so users don't get unnecessarily worried - [?] Last successful login time/ip? perhaps both of these should be a new nick setting -[x] AKILL/SGLINE/etc.. - [x] Setter - [x] Time added - [+] Time modified (can they be modified?) - [ ] Time until expiry/expiry time (YES, time until expiry *instead of* expiry time, more human) - [x] Reason - [ ] Unique IDs on each AKILL/blah so that networks may use them as ticket IDs -[ ] HS ACTIVATE -ALL (rob sez this all needs reviewing) -[?] NS MARK, CS MARK. Allow multiple marks. Combine into OS MARK? (AKA os_info) -[?] MS IGNORE. Make it take nick (accounts) or n!u@h masks. Fake success of memo send still, but send to opers? -[?] More "friendly" date displays of some things like registration time ("November 7th 2006 (2 years, 0 months, 0 days ago)") -[?] OS INJECT -[?] Drop CS SET ENTRYMSG, replace with a 'news' type system? (limited to a configured number of items, default 3) diff --git a/docs/CODING b/docs/CODING new file mode 100644 index 000000000..21f4fa2d2 --- /dev/null +++ b/docs/CODING @@ -0,0 +1,170 @@ +Orginally pulled from: http://www.inspircd.org/wiki/Coding_Guidelines +Yes, I'm aware the formatting of this document is ugly. It'll be fixed when someone cares. Read the wiki page if you want pretty for now. + +--- + + +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. + + Indentation + Tabs. Tabs. ONLY TABS. Use a single tab for each level of indentation, for example: + int main() + { + if (condition) + { + code + } + } + + + Separation + Always put a space in between a keyword like if/while and the condition, for example: + if (foo == bar) + NOT + if(foo == bar) + + Braces + Always put braces opening and closing blocks on separate lines, see the identation 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(); } + }; + + Templates + Where possible, use templates rather than #defines. Avoid use of RTTI. + 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.) + + 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". + + 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'. + + 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. + + Use of STL + For more information on use of STL in InspIRCd, please see the separate STL FAQ. + + 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. + + 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. + + Linefeeds + Unix linefeeds only please. We do not like to see our screens covered in ^M. :-) + + 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. + + 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. + + 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 new file mode 100644 index 000000000..d73c1c190 --- /dev/null +++ b/docs/Changes @@ -0,0 +1,99 @@ +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 diferent encryptions +A Added configuration options to allow Anope to reconnect if it disconnects from the uplink instead of dieing +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 identiifed 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 + +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 - 2009 +F Segfault on shutdown + +Provided by Adam - 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 - 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. + +Provided by Liber - 2009 +F Support operoverride and such things (stop reversing changes from nonopped people where unnecessary) + +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) + +Provided by mooncup - 2009 +F Automatically reapply vhost on hs off for unreal. diff --git a/docs/Changes.conf b/docs/Changes.conf new file mode 100644 index 000000000..c25bbe80a --- /dev/null +++ b/docs/Changes.conf @@ -0,0 +1,51 @@ +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 maxiumum 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 + +** 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. diff --git a/docs/Changes.lang b/docs/Changes.lang new file mode 100644 index 000000000..32f3cd243 --- /dev/null +++ b/docs/Changes.lang @@ -0,0 +1,251 @@ +Anope Version 1.9.2 +-------------------- +*** New Strings: + CHAN_INVITE_OTHER_SUCCESS + NICK_HELP_CONFIRM_OPER + CHAN_QOP_DISABLED + CHAN_QOP_NICKS_ONLY + CHAN_QOP_ADDED + CHAN_QOP_MOVED + CHAN_QOP_NO_SUCH_ENTRY + CHAN_QOP_NOT_FOUND + CHAN_QOP_DELETED + CHAN_QOP_DELETED_ONE + CHAN_QOP_DELETED_SEVERAL + CHAN_QOP_LIST_EMPTY + CHAN_QOP_LIST_HEADER + CHAN_QOP_CLEAR + CHAN_HELP_QOP + CHAN_QOP_SYNTAX + CHAN_HELP_CMD_QOP + CHAN_HELP_SET_PASSWORD + CHAN_LEVEL_AUTOOWNER + CHAN_LEVEL_OWNER + CHAN_LEVEL_OWNERME + CHAN_ACCESS_VIEW_XOP_FORMAT + CHAN_ACCESS_VIEW_AXS_FORMAT + CHAN_SET_PERSIST_SYNTAX + CHAN_SET_PERSIST_ON + CHAN_SET_PERSIST_OFF + CHAN_INFO_OPT_PERSIST + BOT_UNASSIGN_PERSISTANT_CHAN + CHAN_HELP_SET_PERSIST + NICK_RESETPASS_SYNTAX + NICK_RESETPASS_SUBJECT + NICK_RESETPASS_MESSAGE + NICK_RESETPASS_COMPLETE + NICK_CONFIRM_EXPIRED + NICK_CONFIRM_SUCCESS + NICK_HELP_CMD_RESETPASS + NICK_HELP_RESETPASS + CHAN_UNBANNED_OTHER + OPER_HELP_SYNC + OPER_HELP_CMD_SQLSYNC + OPER_SYNC_UPDATING + OPER_SYNC_UPDATED + +*** Mod Strings: + CHAN_HELP_SET + CHAN_REGISTER_SYNTAX + CHAN_ACCESS_SYNTAX + CHAN_HELP_ACCESS + CHAN_HELP_SET + NICK_HELP_CONFIRM + CHAN_UNBAN_SYNTAX + CHAN_HELP_CMD_UNBAN + CHAN_HELP_UNBAN + +*** Del Strings: + CHAN_PASSWORD_IS + CHAN_SET_PASSWORD_FAILED + CHAN_PASSWORD_CHANGED + CHAN_IDENTIFY_SUCCEEDED + CHAN_IDENTIFY_FAILED + CHAN_HELP_IDENTIFY + CHAN_IDENTIFY_SYNTAX + CHAN_HELP_CMD_IDENTIFY + CHAN_LOGOUT_FOUNDER_FAILED + CHAN_LOGOUT_SUCCEDED + CHAN_LOGOUT_NOT_LOGGEDIN + CHAN_LOGOUT_ALL_SUCCEEDED + CHAN_SERVADMIN_HELP_LOGOUT + CHAN_HELP_LOGOUT + CHAN_LOGOUT_SERVADMIN_SYNTAX + CHAN_LOGOUT_SYNTAX + CHAN_HELP_CMD_LOGOUT + CHAN_GETPASS_UNAVAILABLE + CHAN_GETPASSWORD_IS + CHAN_SERVADMIN_HELP_GETPASS + CHAN_GETPASS_SYNTAX + CHAN_HELP_CMD_GETPASS + CHAN_SENDPASS_SUBJECT + CHAN_SENDPASS_HEAD + CHAN_SENDPASS_LINE_1 + CHAN_SENDPASS_LINE_2 + CHAN_SENDPASS_LINE_3 + CHAN_SENDPASS_LINE_4 + CHAN_SENDPASS_LINE_5 + CHAN_SENDPASS_OK + CHAN_SENDPASS_UNAVAILABLE + CHAN_HELP_SENDPASS + CHAN_SENDPASS_SYNTAX + CHAN_HELP_CMD_SENDPASS + OPER_DEFCON_NO_CONF + +Anope Version 1.9.1 +-------------------- +*** New Strings: + COMMAND_REQUIRES_PERM + COMMAND_IDENTIFY_REQUIRED + COMMAND_CANNOT_USE + COMMAND_CAN_USE + NICK_STATUS_REPLY + NICK_INFO_SERVICES_OPERTYPE + CHAN_LOGOUT_NOT_LOGGEDIN + CHAN_INVITE_ALREADY_IN + CHAN_INVITE_SUCCESS + CHAN_OP_SYNTAX + CHAN_HALFOP_SYNTAX + CHAN_VOICE_SYNTAX + CHAN_PROTECT_SYNTAX + CHAN_OWNER_SYNTAX + CHAN_DEOP_SYNTAX + CHAN_DEHALFOP_SYNTAX + CHAN_DEVOICE_SYNTAX + CHAN_DEPROTECT_SYNTAX + CHAN_DEOWNER_SYNTAX + CHAN_KICK_SYNTAX + CHAN_BAN_SYNTAX + MEMO_STAFF_SYNTAX + OPER_JUPE_INVALID_SERVER + +*** Mod Strings: + NICK_LOGOUT_SERVICESADMIN + CHAN_STATUS_SYNTAX + CHAN_GETKEY_KEY + MEMO_SET_NOTIFY_SYNTAX + BOT_REASON_BADWORD + BOT_BOTLIST_EMPTY + OPER_IGNORE_SYNTAX + OPER_DEFCON_SYNTAX + OPER_HELP_EXCEPTION + OPER_HELP_SESSION + NEWS_LOGON_SYNTAX + NEWS_OPER_SYNTAX + NEWS_RANDOM_SYNTAX + NEWS_HELP_LOGON + NEWS_HELP_OPER + NEWS_HELP_RANDOM + NICK_HELP_STATUS + NICK_HELP_SENDPASS + NICK_SERVADMIN_HELP + NICK_SERVADMIN_HELP_LOGOUT + NICK_SERVADMIN_HELP_DROP + NICK_SERVADMIN_HELP_INFO + NICK_SERVADMIN_HELP_LIST + NICK_SERVADMIN_HELP_ALIST + NICK_SERVADMIN_HELP_GLIST + CHAN_HELP_SET_RESTRICTED + CHAN_HELP_OP + CHAN_HELP_DEOP + CHAN_HELP_VOICE + CHAN_HELP_DEVOICE + CHAN_HELP_HALFOP + CHAN_HELP_DEHALFOP + CHAN_HELP_PROTECT + CHAN_HELP_DEPROTECT + CHAN_HELP_OWNER + CHAN_HELP_DEOWNER + CHAN_HELP_KICK + CHAN_HELP_CLEAR + CHAN_HELP_GETKEY + CHAN_HELP_SENDPASS + CHAN_SERVADMIN_HELP + CHAN_SERVADMIN_HELP_LOGOUT + CHAN_SERVADMIN_HELP_DROP + CHAN_SERVADMIN_HELP_SET + CHAN_SERVADMIN_HELP_INFO + CHAN_SERVADMIN_HELP_LIST + MEMO_HELP_SET_NOTIFY + MEMO_HELP_STAFF + OPER_HELP_CMD_CHANKILL + OPER_HELP_STATS + OPER_HELP_IGNORE + OPER_HELP_UMODE + OPER_HELP_ULINE + OPER_HELP_SVSNICK + OPER_HELP_SET + BOT_HELP + BOT_SERVADMIN_HELP_BOT + BOT_SERVADMIN_HELP_SET + HOST_DELALL_SYNTAX + HOST_SET_SYNTAX + HOST_SETALL_SYNTAX + HOST_DEL_SYNTAX + +*** Del Strings: + PERMISSION_DENIED + RAW_DISABLED + HELP_LIMIT_SERV_OPER + HELP_LIMIT_SERV_ADMIN + HELP_LIMIT_SERV_ROOT + HELP_LIMIT_IRC_OPER + HELP_LIMIT_HOST_SETTER + HELP_LIMIT_HOST_REMOVER + NICK_STATUS_0 + NICK_STATUS_1 + NICK_STATUS_2 + NICK_STATUS_3 + NICK_INFO_SERVICES_OPER + NICK_INFO_SERVICES_ADMIN + NICK_INFO_SERVICES_ROOT + CHAN_MUST_REGISTER_NICK + CHAN_MUST_IDENTIFY_NICK + OPER_ADMIN_SYNTAX + OPER_ADMIN_SKELETON + OPER_ADMIN_EXISTS + OPER_ADMIN_REACHED_LIMIT + OPER_ADMIN_ADDED + OPER_ADMIN_NOT_FOUND + OPER_ADMIN_NO_MATCH + OPER_ADMIN_DELETED + OPER_ADMIN_DELETED_ONE + OPER_ADMIN_DELETED_SEVERAL + OPER_ADMIN_LIST_EMPTY + OPER_ADMIN_LIST_HEADER + OPER_ADMIN_LIST_FORMAT + OPER_ADMIN_CLEAR + OPER_ADMIN_MOVED + OPER_OPER_SYNTAX + OPER_OPER_SKELETON + OPER_OPER_EXISTS + OPER_OPER_REACHED_LIMIT + OPER_OPER_ADDED + OPER_OPER_NOT_FOUND + OPER_OPER_NO_MATCH + OPER_OPER_DELETED + OPER_OPER_DELETED_ONE + OPER_OPER_DELETED_SEVERAL + OPER_OPER_LIST_EMPTY + OPER_OPER_LIST_HEADER + OPER_OPER_LIST_FORMAT + OPER_OPER_CLEAR + OPER_OPER_MOVED + OPER_SET_SQL_ON + OPER_SET_SQL_OFF + OPER_SET_SQL_ERROR + OPER_SET_SQL_ERROR_INIT + OPER_SET_SQL_ERROR_DISABLED + OPER_RAW_SYNTAX + HELP_HELP + HELP_HELP_BOT + HELP_HELP_HOST + OPER_HELP_CMD_OPER + OPER_HELP_CMD_ADMIN + OPER_HELP_OPER + OPER_HELP_ADMIN + OPER_HELP_SET_SQL + OPER_HELP_RAW + HOST_ID + HOST_NOT_REGGED + HOST_OFF_UNREAL diff --git a/docs/TODO b/docs/TODO new file mode 100644 index 000000000..8fb8a8b3a --- /dev/null +++ b/docs/TODO @@ -0,0 +1,80 @@ +Legend: + x = done + ? = unsure + + = in progress + +1.9.2 +----- +[x] Redo database insanity. + [x] Move database load/save to a module + [x] realtime SQL/whatever module using events (possibly ongoing) + [x] flatfile save on a periodic timer + [x] SANE password encryption - prefix password with the method it was encrypted with, allowing for *seamless* upgrading to different methods + [x] Salted SHA256 (contact Special for this) + [x] New database format (text, not binary - works very well for merging and so on) +[x] generic database routines modules can use to create their own database +[?] IRCd capability support: don't rely on CAPAB, provide an interface to turn capabilities on specifically +[x] Socket subsystem needs some serious loving + [x] Multiple sockets + [x] Asynchronous, using select() (multiple engines? not really needed..) + [x] Callbacks, event style, see also inspircd +[x] generic way to check which modes a user has set (u->HasUmode(UMODE_OPER)) +[x] way for one module to depend on another... not like 2 MOD_HEADs and it being unpredictable which is loaded first.. + the MOD_HEAD MOD_TAIL allows for too few combinations (interface code of insp, hooks code of insp?) +[x] Last used time on AKICK/access entries +[x] Channel passwords seem to be of limited use, think of a more appropriate way to handle this +[+] General options block, ability to turn LOGCHAN on from the config file.. +[x] Docs directory cleanup +[x] Fix permanent channels support properly +[x] CS SET INHABIT to keep pseudoclient in a channel after it empties to maintain banlists and such +[x] Set forbidden channels +s +[x] SendAkill should just take a pointer to the Akill class instead of millions of fields (same for some other stuff) +[x] burn do_sjoin with fire +[x] Channel access additions + [x] Setter + [x] Last used + +Future +------ +[ ] Asynchronous DNS +[ ] CIDR Akills, session exceptions, etc +[ ] Hashing system for storing just about everything needs to die +[ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!) +[?] Remote identification (1.9.1? will this break stuff?) +[ ] Language charset stuff, including collation (1.9.1? phoenix?) +[ ] Add support for +k, +q, etc type umodes +[ ] fantasy: allow replies/notifications to fantasy commands to go to the channel via notice +[?] a way for a module to queue itself (or even another module) for unloading +[ ] Language system is disgusting, it must die. + [ ] Modules should also have a way to add strings programatically + [ ] Should be able to add many strings by dropping a file in a set location. + [ ] I forsee this working via a function rather than defines, as it seems to do now: e.g. _("NS_NICK_IS_REGISTERED"). +[?] Update help to reflect the fact /msg memoserv set notify mail - works just fine ;) +[ ] Useful/common "third party" modules to core distro + [ ] NS AJOIN +[+] Method to store listmodes (more generically than AKICK, too) for e.g. +beI and extbans, etc. +[ ] Channel access additions + [ ] Time added + [ ] Time modified + [ ] Expiry (useful?) +[ ] NS INFO: seperate field for last seen realhost, shown to SRA only +[ ] NS SUSPEND: show suspender and reason, probably to sopers only (see CS SUSPEND) +[ ] Merge NS INFO blah ALL with NS INFO blah, if you're requesting info, you really want the info anyway. +[?] Don't allow soper accounts to expire +[?] Reason for CS SET RESTRICTED +[ ] NS IDENTIFY changes + [?] Last failed identify? Maybe more useful for sopers only, so users don't get unnecessarily worried + [?] Last successful login time/ip? perhaps both of these should be a new nick setting +[x] AKILL/SGLINE/etc.. + [x] Setter + [x] Time added + [+] Time modified (can they be modified?) + [ ] Time until expiry/expiry time (YES, time until expiry *instead of* expiry time, more human) + [x] Reason + [ ] Unique IDs on each AKILL/blah so that networks may use them as ticket IDs +[ ] HS ACTIVATE -ALL (rob sez this all needs reviewing) +[?] NS MARK, CS MARK. Allow multiple marks. Combine into OS MARK? (AKA os_info) +[?] MS IGNORE. Make it take nick (accounts) or n!u@h masks. Fake success of memo send still, but send to opers? +[?] More "friendly" date displays of some things like registration time ("November 7th 2006 (2 years, 0 months, 0 days ago)") +[?] OS INJECT +[?] Drop CS SET ENTRYMSG, replace with a 'news' type system? (limited to a configured number of items, default 3) diff --git a/install-sh b/install-sh deleted file mode 100644 index e69de29bb..000000000 -- cgit