Legend: x = done ? = unsure + = in progress 1.9.0 ----- [x] additional field where users' masked host can be stored so both masked IP and vhost are available instead of just one. [x] no struct Uid bollocks. that's insane, and now, unnecessary that we store UID in BotInfo. [x] prevent deletion of core services via /bs bot [x] Module subsystem cleanup ('modules' branch) [x] Move modules to use classes somewhat (AnopeInit, AnopeFini) [x] Change MODULE_INIT to return a pointer [x] Remove duplicate module creation.. have loadModule return a pointer rather than creating one [x] Remove buffered loading/unloading, this makes os_modunload perm, but who cares [x] Mark os_modunload permanent. [x] 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. [x] Remove mod_current_* crap (involves passing Module * around a lot) [x] events.c [x] modules.c [x] commands.c [x] Redo moduleAdd|Get|Remove data to use class Extensible, etc. [x] remove old config, replace with insp-inspired (albeit bind format) config (CBX) [x] Clean up protocol [x] Fix anope_cmd_* stuff to just use IRCdProto methods directly [x] SendClientIntroduction should take a UID param, rather than generating one(?) [x] Fix permanent channels (+P) stuff. [x] Remove UnRestrictSAdmin, UseTS6, UseSVSHOLD [x] InspIRCd 1.2 support [x] Remove old (prior to 1.8.0) db compat [x] Establish a proper base for services pseudoclients [x] add ss_main StatServ Hal9000 to play with :) [x] burn automake with fire (CBX) 1.9.1 ----- [ ] Remove modules_unload_all fini + hack that goes with it [ ] signal handling cleanup [ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!) [ ] Redo database insanity. [ ] Move database load/save to a module [ ] realtime SQL/whatever module using events [ ] flatfile save on a periodic timer [ ] SANE password encryption - prefix password with the method it was encrypted with, allowing for *seamless* upgrading to different methods [ ] Salted SHA256 (contact Special for this) [ ] New database format (text, not binary - works very well for merging and so on) [ ] burn do_sjoin with fire [ ] Seamless fantasy support for all ChanServ commands, instead of requiring bs_fantasy_* [ ] HelpServ must die (1.9.1?) [ ] Command parser cleanup [ ] mod_current_buffer needs to go away and be replaced by a proper parser. Commands should then indicate how they want the buffer split. [ ] Fix permanent channels support properly. This will require removing do_sjoin(). [ ] Make NS ENFORCE/RELEASE stuff more sane, redo timers [ ] Add support for +k, +q, etc type umodes 1.9.2 ----- [ ] Socket subsystem needs some serious loving [ ] Multiple sockets [ ] Asynchronous, using select() (multiple engines? not really needed..) [ ] Callbacks, event style, see also inspircd [ ] Asynchronous DNS? [ ] CS SET INHABIT to keep pseudoclient in a channel after it empties to maintain banlists and such [?] Remote identification (1.9.1? will this break stuff?) [ ] Requires a rejig of how Alias vs Core works [ ] Language charset stuff, including collation (1.9.1? phoenix?) Future ------ [ ] 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?) [ ] generic database routines modules can use to create their own database [ ] generic way to check which modes a user has set (u->HasUmode(UMODE_OPER)) ? [ ] a way for a module to queue itself (or even another module) for unloading [ ] add overridden form of SendGlobops accepting BotInfo [ ] SendAkill should just take a pointer to the Akill class instead of millions of fields (same for some other stuff) [ ] chan_set_modes should take BotInfo, possibly with override for User *? [ ] 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"). [?] Mail memos? think on consequences of this [ ] Useful/common "third party" modules to core distro [ ] NS AJOIN [ ] Last used time on AKICK/access entries [ ] Channel access additions [ ] Method to store listmodes (more generically than AKICK, too) for e.g. +beI and extbans, etc. [ ] Setter [ ] Time added [ ] Time modified [ ] Expiry (useful?) [ ] Set forbidden channels +s [ ] 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) XXX: is SUSPEND overlapping with OS IGNORE functionality? [ ] Merge NS INFO blah ALL with NS INFO blah, if you're requesting info, you really want the info anyway. ? [ ] Channel passwords seem to be of limited use, think of a more appropriate way to handle this ? [ ] 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 [ ] AKILL/SGLINE/etc.. [ ] Setter [ ] Time added [ ] Time modified (can they be modified?) [ ] Time until expiry/expiry time (YES, time until expiry *instead of* expiry time, more human) [ ] 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) [ ] Settable oper flags (split into types containing privs+commands, allow each oper to be set to a type, like we do with insp?) [ ] NS MARK, CS MARK. Allow multiple marks. Combine into OS MARK? [ ] General options block, ability to turn LOGCHAN on from the config file.. [ ] Method to list suspended/forbidden nicks/channels? ? [ ] 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)") ? [ ] Review settings like NSModeOnID for whether they actually have a point existing (Rob says it does not - and that it should probably be a nickname setting) ? [ ] OS INJECT ? [ ] Drop CS SET ENTRYMSG, replace with a 'news' type system? (limited to a configured number of items, default 3)