diff options
| author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-05-02 04:37:17 +0000 |
|---|---|---|
| committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-05-02 04:37:17 +0000 |
| commit | d002ea19526bf8e976c8b9aa9204f5c1f6b4d7f7 (patch) | |
| tree | d3736014372ca68781c0fa8ded2c1d0dd6ac7890 /docs | |
| parent | 05eb3fd2d675b8363ac88d4c54a63b9f13c32c70 (diff) | |
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
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/CODING | 170 | ||||
| -rw-r--r-- | docs/Changes | 99 | ||||
| -rw-r--r-- | docs/Changes.conf | 51 | ||||
| -rw-r--r-- | docs/Changes.lang | 251 | ||||
| -rw-r--r-- | docs/TODO | 80 |
5 files changed, 651 insertions, 0 deletions
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() + { + <tab>if (condition) + <tab>{ + <tab><tab>code + <tab>} + } + + + 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 <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. + +Provided by Liber <Liber@jasonirc.net> - 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 <mooncup@anonnet.org> - 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) |
