]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - ChangeLog
fix: TCPSocked.gethostbyname is deprecated
[user/henk/code/ruby/rbot.git] / ChangeLog
index 78d551bf93d48906827a76add9cbbfac476ad045..069742397c5366c084317b51b775aaf66f5fd7b6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,482 @@
+2007-04-12  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Basic class extensions: Module#define_structure() method. Syntax:
+               define_structure :SomeName, :attr_a, :attr_b
+       is equivalent to
+               SomeName = Struct.new("SomeName", :attr_a, :attr_b)
+       except that the new Struct is not created if it already exists and the
+       attributes list is the same.
+
+2007-03-31  Dmitry Kim <dmitry.kim@gmail.com>
+
+       * HttpUtil: major rework. get_response() method now respects
+       caching (can be turned off via options) and supports different HTTP
+       methods (GET (default), HEAD and POST) and ranged requests. get() and
+       head() methods are now just a thin wrappers around get_request().
+       Semantics for user-supplied &block has been made consistent across
+       these methods.
+       * HttpUtil: get_cached() method has been removed (obsoleted by new
+       get()). post() method has been added. get_partial() method for ranged
+       requests has been added. Net::HTTPResponse partial_body() method has
+       been removed (mostly because it won't play well with future HTTP
+       encodings support), please use get_partial() or get_request() instead.
+       * Utils: http_get() method has been removed (long obsoleted by
+       HttpUtil)
+       * different plugins: modified to accomodate for HttpUtil changes.
+
+2007-03-24  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * HttpUtil: new get_response method to follow redirects and get an
+       Net::HTTPResponse object with an open connection, allowing partial
+       body retrieval.
+       * HttpUtil: extend Net::HTTPResponse with a #partial_body() method. The
+       method take an argument (max bytes to download) and an optional block;
+       the method yields all the partial content that it's being downloaded,
+       instead of the single chunks yield by #read_body().
+       * url plugin: use the new HttpUtil methods.
+       * url plugin: do not block while trying to get link info.
+
+2007-03-14  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Socket filtering: socket data, both input and output, can now be
+       filtered. This is used for example to transcode all input and output
+       so that messages are internally managed as UTF-8. By default, the bot
+       will try cp1252 (Windows Western European) encoding for non-UTF-8
+       strings. Thanks to jsn (Dmitry Kim <dmitry.kim@gmail.com>).
+
+2007-03-10  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * IRC settings: ability to change the IRC name for the bot. Thanks to
+       jsn (Dmitry Kim <dmitry.kim@gmail.com>).
+       * Plugin: allow customization of the plugin load path. Thanks to
+       jsn (Dmitry Kim <dmitry.kim@gmail.com>).
+
+2007-02-20  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Timers: failing timer actions don't prevent the global timer ticker
+       from functioning properly.
+       * Shiritori plugin: new word game,  contributed by Yaohan Chen
+       <yaohan.chen@gmail.com>. People take turns to continue a chain of
+       words by saying words that begin with the final letter(s) of the
+       previous word.
+       * IRC messages are not UTF-8: Most of the string processing across
+       rbot is done against IRC messages, which do not have a well-defined
+       encoding. Although many clients are now using UTF-8, there is no
+       guarantee that an arbitrary string received from IRC will be UTF-8
+       encoded. We have to force ASCII (byte-wise/charset agnostic) matching
+       because otherwise some strings can give problems: in particular, for
+       example, the bytesequence "\340\350\354\362\371" (that is the aeiou
+       vowels, each with a grave accent) will cause the string to be
+       considered up to the "\354" (i with grave accent) only: so either the
+       rest of the message is ignored, or the matching fails.
+
+2007-02-18  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Plugin: Provide a plugin.header file with boilerplate plugin
+       title/author/copyright/license information. Authors of new plugins are
+       encouraged to use it. Many existing plugins have been changed to
+       follow the same spec.
+       * NickServ plugin: delegate #identified() to other plugins after
+       successfull identification. Also provide #identified?() method to test
+       if the bot has successfully identified. Not perfect yet (gets reset
+       after a rescan.)
+
+2007-02-15  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Plugin: new unreplied() method to handle PRIVMSGs which have not
+       been replied to.
+       * Regexp: more regexp madness. BasicUserMessage and derivate classes
+       now have a new method parse_channel_list() to parse list of channel
+       names.
+
+2007-02-12  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Remote Service Provider: from an idea by halorgium <rbot@spork.in>,
+       initial steps towards a DRb-based remote service provider for rbot.
+       When complete, it will give plugins the ability to listen to
+       'messages' from remote clients connected to the bot, allowing for such
+       things as svn notification without RSS polling, remote control of
+       the bot, or even (why not?) botnets.
+       * Remote Service Provider: BotModules can now include the
+       RemoteBotModule interface that provides them with the remote_map()
+       method that works just like the map() method, but for remote commands
+       * Remote Service Provider: Remote clients can now login remotely
+       before executing commands. This in fact integrates the remote access
+       auth security with the User/BotUser used on IRC itself.
+
+2007-02-08  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Languages: Japanese support with language files, salutations, larts
+       and praises, thanks to hagabaka (Yaohan Chen <yaohan.chen@gmail.com>)
+
+2007-02-05  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * sendmsg improvements: the bot sendmsg() method and all the methods
+       that rely on it (say(), notice(), and message methods such as reply())
+       now accept an option hash to customize its behaviour.
+               * :newlines, which can be set to either :split or :join,
+               depending on whether newlines in messages should be used as
+               split-points, or should be be replaced by some string (defined
+               in the :join_with option)
+               * :max_lines, which determines the maximum number of lines to be
+               sent by each messages. Last line is truncated (see next
+               options). Set to nil to have no limits.
+               * :overlong, which determines the behaviour when overlong lines
+               are to be sent; possible values are :split or :truncate.
+               * If :overlong is set to :split, :split_at determines the
+               string/regexp to split at; default is /\s+/, other usual
+               choice could be /\s+\|\s+/.
+               * If :overlong is set to :split, the :purge_split option
+               determines whether the :split_at expression should be removed
+               from the next lines (defaults to true).
+               * If :overlong is set to :truncate, the value of the option
+               :truncate_text is replaced at the end of the truncated line
+       * LinkBot plugin: initial commit of a plugin to handle messages from
+       eggdrops and other bots that act as cross-network channel links.
+       Suggested by hagabaka (Yaohan Chen <yaohan.chen@gmail.com>)
+
+
+2007-02-03  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Plugin message mapper: Enhancements to the :requirements option.
+       When the requirement of a parameter is a regular expression with
+       capturing groups /(...)/, the corresponding map parameters will be
+       assigned (by default) the first non-nil capture instead of the whole
+       regular expression. If a specific capture group is desired instead,
+       the requirement should be in the form
+               [/some regexp/, integer_index_of_the_desired_group]
+       or in the form
+               {
+               :regexp => /some regexp/,
+               :index => integer_index_of_the_desired_group
+               }
+       and a nil index will still give the default behavior.
+       If you want the whole regular expression to be the matched parameter
+       value, there are three options: use an index of 0, wrap the whole
+       regular expression in a capturing group, or use non-capturing groups
+       /(?:...)/. The latter is preferred because it's much faster.
+       When exploiting the capturing groups feature, please try to remember
+       to use /\s+/ instead of plain spaces / /, unless it's absolutely
+       necessary to have single spaces.
+
+2007-02-02  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Plugin message mapper: Requirements (as set by the :requirements
+       hash) are now embedded in the regular expression matcher rather than
+       being cheked separately afterwards.
+
+2007-01-30  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * New IRC Framework: Server methods to retrieve a Channel or User are
+       now more robust to empty or nil nicks and channel names passed as
+       parameters.
+
+2007-01-29  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Timer rescheduling: it is now possible to reschedule the period
+       any particular Action is taken by issuing the command
+               @bot.timer.reschedule(handle, new_period)
+       where +handle+ is a timer handle returned by the @bot.timer.add() that
+       created the action, and new_period is the new period for the Action.
+
+2007-01-23  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Reduced saving: the salut, lart, and quotes plugin now only save
+       their datafiles if anything changed since last time. This speeds up
+       operations such as saving and rescanning; it also allow hand-editing
+       of the data files while the bot is running, since a rescan will load
+       the changed data files without overwriting them with a useless save
+       before. Of course this only works if there are no pending changes in
+       the running bot.
+
+2007-01-12  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Server timeout: rework the server timeout code. Instead of PINGing
+       the server unconditionally every server.ping_timeout seconds, we only
+       PING it if we don't receive anything in the user-chosen timeout (lazy
+       PING). The code rewrite also seems to have fixed the "bot stalling
+       doing nothing" problem, which seemed to have been a consequence of
+       @socket.select not having a timeout.
+
+2006-11-01  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * SSL support: patch from Robin H. Johnson <robbat2@gentoo.org>
+
+2006-10-28  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * A-Z game: try to guess the word the bot is thinking of: every miss
+       helps by reducing the range of allowed words, until it's so small
+       around the correct one that you can't miss it.
+
+2006-10-27  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Flood protection: first attempt at penalty-based flood protection.
+       This should make rbot much less prone to Excess Floods *and* still
+       serve normally without excessive delays.
+
+2006-10-25  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * HttpUtil: Strings returned by get_cached now have a cached? method
+       which returns true or false depending on whether the result was taken
+       from the cache or not; this can be exploited by plugins that parse the
+       result in some particular way, since they can now skip the parsing
+       stage if they cache the parse result.
+
+2006-10-24  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * HttpUtil: initial implementation of proper caching based on
+       last-modified and etag HTTP headers
+
+2006-10-17  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Salut plugin: handles (multilingual) salutations (hello/goodbye)
+
+2006-10-15  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Language stuff: plugins can now handle language changes in a natural
+       fashion. lart is the first plugin to make use of this. NOTE: this
+       is not (yet) backwards compatible: the old larts/praises files from
+       previous rbot setups have to be renamed manually
+       * Language stuff: italian translations
+       * Utils.safe_save(filename): allows 'safe' saving of a file: it needs a
+       block, to which it will yield a temporary file on which operations can
+       be carried out. When the block returns, the tempfile will be renamed to
+       the given filename
+
+2006-09-21  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * New Auth Framework: restore backwards compatibility: 'auth
+       <masterpassword>' and 'login owner <masterpassword>' both work.
+       * Topic plugin: cleanups. Implement 'topic undo'. 'topic undo' after a
+       'topic undo' undoes the last undo.
+
+2006-09-09  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * New Auth Framework: rbot was opping anyone who asked for it (opme
+       plugin). Fixed, and cleaned up.
+
+2006-09-01  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * New Auth Framework: document and fine tune permissions view the auth
+       core botmodule.
+       * Version: when run from a svn checkout, the bot now tries to report
+       which svn revision it's at, and if there are local changes
+
+2006-08-31  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Nickserv plugin: bot will now try to inform nickserv when password
+       is changed. Moreover it's not necessary to specify the nick anymore if
+       you want to change the password for the current bot nick. Also do some
+       internal cleanups while we're at it.
+
+2006-08-29  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Script plugin: new (UNSAFE!) echo functions. Just like eval, but
+       m.replies the result of the evaluation.
+       * New Auth Framework: config keys now have their own permissions. So
+       you can allow people to view or edit only some of the config values.
+       auth.password defaults to false. Still needs some work.
+
+2006-08-26  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Plugin message mapper: new implementation. Multi-word parameters now
+       need not be the last, and it is possible to retrieve the entire
+       substring with preserved whitespace by using to_s. Also, parts of the
+       map string can be bracketed to make them optional. Examples:
+               remind :user [about] *stuff
+       will respond to
+               remind me about washing my teeth
+       and also to
+               remind me washing my teeth
+       It is possible to have parameters in brackets, in which case they will
+       be optional too, and default to nil or [] (resp. single- and
+       multi-word parameters) unless an alternative is provided in the
+       :defaults hash for the message map options.
+       * Script plugin: new (UNSAFE!) eval function. Not documented in help.
+       Not permitted by default.
+
+2006-08-25 Mark Kretschmann <markey@web.de>
+
+       * Added quiz plugin, a multiplayer trivia quiz game.
+
+2006-08-20  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Topic plugin: fix a bug that prevented it from loading
+       correctly.
+       * New IRC Framework: make sure that NOTICEs and PRIVMSGs do not
+       raise an exception when the target is in one of the special forms
+       #<mask> or $<mask>. Needs some work, though, since this case should be
+       handled specifically.
+
+2006-08-17  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Fix help: It got broken while rearranging the plugin stuff, now it's
+       properly fixed.
+       * New Auth Framework: forgot to create the InvalidPassword exception.
+       It's a RuntimeError now.
+       * Fix help: this time for real (or so I hope).
+       * New IRC Framework: topic plugin now works correctly.
+       * New Auth Framework: nickserv plugin now defaults to false for its
+       auth, so that only owner can do stuff with it
+       * New Auth Framework: fix horrible typo, assignment instead of
+       equality test when checking for the username during login.
+       * Keywords plugin: tell and forget work again without 'keyword' before
+       them.
+
+2006-08-12  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Subregistry: force prefix to be a String with to_s
+
+2006-08-11  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * AutoOp plugin: adapted to the new IRC framework.
+       * AutoOp plugin: trigger autoop on nick change too.
+       * New Auth Framework: allow? method now informs a user when they don't
+       have permission to do what they asked for.
+       * New nickreply and nickokay methods: they act like the old reply
+       method, but include the nick of the user the bot is replying to when
+       talking in public. The usual reply method can be configured to act
+       like this as default.
+
+2006-08-10  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Fix a bug in new IRC Framework: the list of channels a quitting user was
+       on was not built correctly, causing an exception when the user was not
+       in the first channel in the list of channels.
+       * Fix a bug in new Auth Framework: BotUser's name is changed via
+       username=, not name=.
+       * New HalfLife 2 plugin from ocr: queries online servers for online
+       status and number of users.
+
+2006-08-07  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Add kick method to kernel: plugins can now use
+               @bot.kick channel, user, reason
+       to kick a user from a channel
+       * RSS plugin: fix rewatch_rss method
+       * RSS plugin: the different ways to represent channels before and
+       after the New IRC Framework was causing strange problems such as
+       watched feed not being listed as such, undeletable watches, double
+       watches etc. Fix this by checking both for the Channel objects and
+       their to_s form when checking for watches or deleting them.
+
+2006-08-06  Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+       * Updating the ChangeLog again: describe the new stuff in trunk which
+       will be made available in the next release. Use Gnu style for new
+       changelog entries (yyyy-mm-dd name <email address>\n<tab> ...):
+       there's a macro for this since at least Vim 6.x and higher, called by
+       <Leader>o (default leader: slash (\))
+       * New IRC Framework: Server, Channels, User, Netmasks etc are all
+       proper Ruby objects. The better organization will allow multi-server
+       connections to be implemented more easily
+       * Modularize core: split the internal functionality from what can be
+       implemented as botmodules (which work just the same as plugins). Move
+       Configuration, Basics and Auth out of the 'kernel' into core
+       botmodules.
+       * New Auth Framework: BotUsers are now Ruby objects with attached
+       PermissionSets which define what the BotUser can do, by channel if
+       necessary. The new framework allows very fine-grained control while
+       still being very easy to manage for elementary usage. BotUser data can
+       be exported and imported, but no backwards compatibility has been
+       implemented yet. Most plugins still have to be updated to the new
+       command-path-based mechanism.
+
+Sun Aug 06 17:33:55 BST 2006  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * 0.9.10 released
+       * Changes: Lots of new and updated plugins, including one to poll RSS feeds.
+       A first step towards a better auth system (total revamp due in 0.9.11).
+       Improvements to network and server code which should provide greater
+       stability. A new message queueing mechanism with bitrate throttling. A new
+       logging framework for debugging and tracing the activities of the bot. A
+       new split-db registry system for better performance and transactional
+       usage of bdb for resilience. More integration with Nickserv where
+       available including optional automatic ghost-killing.
+
+Wed Sep 07 20:16:46 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Fixed quit, broke it last commit
+       * Fixed trap() for win32
+
+Sun Aug 21 13:29:55 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * fix for bug in quakenet plugin (trac #14)
+       * multiple fixes for unescaped bot nick in regexp's (trac #13)
+
+Fri Aug 12 20:51:38 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * fix up autoop plugin a bit
+
+Thu Aug 11 00:13:11 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Added two plugins from Robin Kearney <robin@riviera.org.uk>
+       * Threat (US threat level :P)
+       * bash (bash.org quotes)
+
+Thu Aug 11 00:04:31 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Patches from "Alexey I. Froloff" <raorn@altlinux.ru>
+       * Do not use "/home/#{Etc.getlogin}/" for default home directory, use
+       "#{Etc.getpwnam(Etc.getlogin).dir}/" instead.
+       * Do not try to load same plugin from different locations.  Added ability
+       to disable system-wide plugins - create PLUGIN.rb.disabled in user's
+       plugins directory.
+       * For example, to disable freshmeat plugin installed in /usr/share/rbot/plugins/freshmeat.rb one can create empty file ~/.rbot/plugins/freshmeat.rb.disabled
+
+Mon Aug 08 23:08:01 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * new markov plugin for random inane chat
+
+Sun Aug 07 18:20:24 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * stop insult plugin being used to insult the bot
+
+Sun Aug 07 17:53:06 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * workaround for people without YAML::load_file
+       * quit message for restart
+
+Sun Aug 07 15:11:07 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * fix address_prefix, broken in 0.9.9, reported by ruskie.
+
+Sat Aug 06 00:54:34 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Released 0.9.9
+
+Fri Aug 05 23:55:20 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * few more tweaks preparing to release 0.9.9
+
+Thu Aug 04 23:03:30 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Improved ircd recognition of rfc2812.rb
+       * de-string'd, de-cap'd rfc2812.rb, looks less shouty now
+       * moved the Q auth stuff (for quakenet) into a new qauth plugin (untested!)
+       * finish fixing the httputil
+
+Thu Aug 04 00:11:52 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Tweaked the debug() stuff a bit. Need to do this more cleanly really
+       * Added a fair bit of documentation for some of the new features
+
+Wed Aug 03 15:25:07 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Added french language file (TODO most of the plugins just talk english)
+       * The way the Enum configs were set up, it wasn't possible to add language
+       files to rbot at runtime (the directory was only scanned at startup). Now
+       you can set a values Proc, which is called to return a list of allowed
+       values whenever it's queried.
+       * Added Config module for determining where we were installed.
+       Unfortunately rubygems is a total whore in this regard, and I hope the
+       current hackery I have to do to support it becomes redundant in the
+       future.
+
+Wed Aug 03 00:31:41 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
+
+  * Added Rakefile, tweaked gemspec
+
 Tue Aug 02 16:27:36 BST 2005  Tom Gilbert <tom@linuxbrit.co.uk>
 
   * Fixed the new http.proxy* settings, they work!