summaryrefslogtreecommitdiff
path: root/TODO
blob: 9b96a7f5f12899c10defedb71f32e6ae98bf369a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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
[ ] Module subsystem cleanup ('modules' branch)
  [x] Move modules to use classes somewhat (AnopeInit, AnopeFini)
  [x] Change MODULE_INIT to return a pointer
  [ ] Remove mod_current_* crap (involves passing Module * around a lot)
  [ ] 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
    [ ] Mark os_modunload permanent.
  [ ] 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.
  [ ] mod_current_buffer needs to go away and be replaced by a proper parser. Commands should then indicate how they want the buffer split.
  [ ] Remove modules_unload_all fini + hack that goes with it
[+] remove old config, replace with insp-inspired (albeit bind format) config (CBX)
[ ] burn automake with fire (1.9.1?)
[x] SendClientIntroduction should take a UID param, rather than generating one(?)
[+] Clean up protocol
  [x] Fix anope_cmd_* stuff to just use IRCdProto methods directly
  [ ] Fix command parsing (TBD)
[?] Remote identification (1.9.1? will this break stuff?)
[?] Immediate protection enforcement
[+] InspIRCd 1.2 support

1.9.1
-----
[ ] 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_*

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


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?)
[ ] A way for one module to interact with another.. moduleGetData() only works for current module..
	moduleGetData() needs to die in a fire.

	We should replace this with proper inheritance of a class MetadataObject, which allows Shrink(), Extend(), GetExt().
	We may also wish to add additional methods for laziness (ShrinkString(), ExtendString(), GetExt()), as most of the use
	of metadata is strings, but not all.

	This also allows modules to tie whatever data they want onto any object.

[ ] 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)