summaryrefslogtreecommitdiff
path: root/TODO
blob: 0fcc6fcb2f39e35def5698185f0866532b0914e9 (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
Legend:
	x = done
	? = unsure
	+ = in progress

1.9.1
-----
[x] Remove modules_unload_all fini + hack that goes with it
  [x] signal handling cleanup
[x] Seamless fantasy support for all ChanServ commands, instead of requiring bs_fantasy_*
  Remaining issues:
    [x] Allow fantasy to be disabled from some commands (e.g. FORBID?) seems unnecessary, really.
    [x] (think on this carefully): some commands (e.g. !help) need to strip the pre-provided channelname from them.
[x] HelpServ must die
[x] 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.
[x] Make NS ENFORCE/RELEASE stuff more sane, redo timers
[x] Support operoverride and such things (stop reversing mode changes from nonopped people where unnecessary) - done by Liber
[x] Settable oper flags (split into types containing privs+commands, allow each oper to be set to a type, like we do with insp?)

Outstanding issues:
- Add some events that were not present before but useful for future versions

1.9.2
-----
[ ] Redo database insanity.
  [ ] Move database load/save to a module
    [ ] realtime SQL/whatever module using events (possibly ongoing)
    [ ] 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)
[ ] IRCd capability support: don't rely on CAPAB, provide an interface to turn capabilities on specifically
[ ] Socket subsystem needs some serious loving
  [ ] Multiple sockets
  [ ] Asynchronous, using select() (multiple engines? not really needed..)
  [ ] Callbacks, event style, see also inspircd
  [ ] Asynchronous DNS?

Future
------
[ ] Move a (lot) of stuff to class members as a defined interface rather than copypasta everywhere (ns_set, ns_saset!)
[ ] 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?)
[ ] Add support for +k, +q, etc type umodes
[ ] Fix permanent channels support properly. This will require removing do_sjoin().
  [ ] burn do_sjoin with fire
[ ] fantasy: allow replies/notifications to fantasy commands to go to the channel via notice
[ ] 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").
[?] Update help to reflect the fact /msg memoserv set notify mail - works just fine ;)
[ ] 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)
[ ] 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)