X-Git-Url: http://git.hcoop.net/clinton/bobotpp.git/blobdiff_plain/91dddabdc921689e3da24b73497f9613bb03a1de..d1959b0c9978f123aac98cb04932d08df8a40065:/TODO diff --git a/TODO b/TODO dissimilarity index 83% index a7409c0..db39a60 100644 --- a/TODO +++ b/TODO @@ -1,47 +1,73 @@ -2.2 will be released when most of these are done - -General: -* Make String operator >> act like all other >>'s, and add getline? -* finish ISO C++-ification (remove deprecated uses of static, casts) -* Finish converting UserCommands to use Commands -* Audit code and see what data in classes should be made private and - have getters/setters added (e.g. logFileName in Bot--if this is - changed the log file doesn't change after the Bot is started). - -Scripting: -* Make bot:random use the Guile RNG instead of C RNG (better?) - - definition would be (define (bot:random) (random BIG_NUMBER)) - - Just use max-fixnum from the test scripts for BIG_NUMBER -* Add commands to delete a hook - - return an iterator to the hook and let the user kill it? - - this would require a new SMOB to be created -* Add Scheme utils function to convert "normal" dates into time since - 1970. -* Finish adding commands to Scheme for sending messages - (e.g. bot:send-CTCP to send a CTCP message) -* Add util functions for doing stuff like quoting CTCP messages -* Call hooks/public when bot sends a privmsg to a channel (read IRC - protocol spec for other stuff that might need this) - -Networking: -* Add a networked interface to guile repl - - Admins only - - SSH? Telnet? DCC-Chat? - - Access to repl will require user to authenticate - - Allow server to be disabled at run because of security... -* Fix DCC support - - Note that Socket will have a buffer overflow problem with DCC - because it uses a buffer of 512 characters, and a DCC line is not - limited to 512 chars like an IRC line is. The question is: should - I rewrite readLine to be more general (allocate buffer on the - fly) or rename readLine to ircReadLine and add a more general - readLine? I think I could use a static std::string and have it - grow as needed, with a default size of 512. -* Add Channel logging (log full text of channel if enabled) script -* Make connecting to irc.oftc.net work...I wonder if their ircd is b0rked - -Documentation: -* Work on Texinfo manual (especially scripting section) - -Other (post 2.2 release): -* Remove gh_* when Guile 1.8 is released \ No newline at end of file +Done (2.2): +* DCC CHAT min user level +* Lots of hooks related stuff that I never wrote down +* Abstract DCC support so that DCC FILE may be easily implemented +* Wrote config database class +* Compile without warnings +* bot:protection/[none|no-ban|no-kick|no-deop] constants +* bot:aop/[no|yes] constants +* Utils::valid_nickname_p should have a configurable max nick length +* More detailed script error reporting +* Commands::sendCTCP, Commands::sendCTCPReply +* Add DCC_CHAT_END hook for Scheme +* Implement ctcp-quote + +2.2.1: +* Finish Texinfo manual +* Implement ctcp-dequote +* Finish adding commands to Scheme for sending messages +* Finish adding hooks/send hooks + +2.4: +* Use configuration database class +* Extend AOP to support +v (0 = no op, 1 = +o, 2 = +v) +* Add !setcommandlevel (move ScriptCommands implementation to Commands + and add a UserCommands) +* Improve the help system +* Enhance the scripting layer + +2.4/3.0 (2.4 iff backwards compatibility is maintained, 3.0 otherwise): +General: +* Eliminate String class +* Finish converting UserCommands to use Commands +* Audit code and see what data in classes should be made private and + have getters/setters added (e.g. logFileName in Bot--if this is + changed the log file doesn't change after the Bot is started). +* DCC FILE support (sending and recieving) +* Possibly convert BotConfig to use boost::any instead of std::string + as t_value +* Remove StrinkTokenizer, replace with boost::tokenizer +* Remove string procedures from Utils, replace with boost::string_algo +* Use boost::timer for internal timers + +Scripting: +* Add commands to delete a hook + - return an iterator to the Hook + - this would require a new SMOB to be created + - Scheme could pass Hook objects around and do nifty things + - At least allow all hooks of a type with the same name field to be + deleted at once (also all hooks with the same name). Also allow + deleting based on the regexp + +Networking: +* Add a networked interface to guile repl + - This can (should) be done as a script, but requires non-coop threads + support to be done easily (and thus requires Guile 1.8) + - Admins only + - Telnet + - Store authorized users and passwords in bot.telnet file + - Bot master can add new telnet users + - MUST HAVE PASSWORD +* See if Socket::readLine could be sped up (profile it first to see if + it even matters) + +Definitely 3.0: +* Remove gh_* when Guile 1.8 is released +* Replace large select-loop in Bot::waitForInput with multithreaded + - To clarify: There will be one thread for DCCs and another thread + for the current irc server connection, each with its own select + loop. There may also be a thread for the network repls if I + implement those. + +Maybe: +* Make it possible to use Scheme functions in the Parser itself \ No newline at end of file