NAME

App::Pocoirc - A command line tool for launching POE::Component::IRC clients

DESCRIPTION

This distribution provides a generic way to launch IRC clients which use POE::Component::IRC. The main features are:

  • Prints useful status information (to your terminal and/or a log file)

  • Will daemonize if you so wish

  • Supports a configuration file

  • Offers a user friendly way to pass arguments to POE::Component::IRC

  • Supports multiple IRC components and lets you specify which plugins to load locally (one object per component) or globally (single object)

CONFIGURATION

nick: foobar1234
username: foobar

global_plugins:
  - [CTCP]

local_plugins:
  - [BotTraffic]

networks:
  - name:   freenode
    server: irc.freenode.net
    local_plugins:
      - [AutoJoin, { Channels: ['#foodsfdsf'] } ]

  - name:   magnet
    server: irc.perl.org
    nick:   hlagherf32fr

The configuration file is in YAML or JSON format. It consists of a hash containing global_plugins, local_plugins, networks, lib, log_file, and default parameters to POE::Component::IRC. Only networks is required.

lib is an array of directories containing Perl modules (e.g. plugins). Just like Perl's -I.

log_file is the path to a log to which status messages will be written.

Networks

The networks option should be an array of network hashes. A network hash consists of name, local_plugins, and parameters to POE::Component::IRC. Only name (and server if not defined at the top level) is required. The POE::Component::IRC parameters specified in this hash will override the ones specified at the top level.

Plugins

The global_plugins and local_plugins options should consist of an array containing the short plugin class name (e.g. 'AutoJoin') and optionally a hash of arguments to that plugin. App::Pocoirc will first try to load POE::Component::IRC::Plugin::your_plugin before trying to load your_plugin.

The plugins in global_plugins will be instantiated once and then added to all IRC components. Note: not all plugins are designed to be used with multiple IRC components simultaneously.

If you specify local_plugins at the top level, it will serve as a default list of local plugins, which can be overridden in a network hash.

OUTPUT

Here is some example output from the program:

$ pocoirc -f example/config.yml
2010-09-26 02:49:41 Started (pid 27534)
2010-09-26 02:49:41 Constructing global plugins
2010-09-26 02:49:41 [freenode]  Constructing local plugins
2010-09-26 02:49:41 [freenode]  Spawning IRC component
2010-09-26 02:49:41 [magnet]    Constructing local plugins
2010-09-26 02:49:41 [magnet]    Spawning IRC component
2010-09-26 02:49:41 [freenode]  Registering plugins
2010-09-26 02:49:41 [magnet]    Registering plugins
2010-09-26 02:49:41 [freenode]  Connecting to IRC
2010-09-26 02:49:41 [magnet]    Connecting to IRC
2010-09-26 02:49:41 [freenode]  Added plugin Whois3
2010-09-26 02:49:41 [freenode]  Added plugin ISupport3
2010-09-26 02:49:41 [freenode]  Added plugin DCC3
2010-09-26 02:49:41 [magnet]    Added plugin Whois6
2010-09-26 02:49:41 [magnet]    Added plugin ISupport6
2010-09-26 02:49:41 [magnet]    Added plugin DCC6
2010-09-26 02:49:41 [freenode]  Added plugin CTCP2
2010-09-26 02:49:41 [freenode]  Added plugin AutoJoin2
2010-09-26 02:49:41 [freenode]  Added plugin PocoircStatus2
2010-09-26 02:49:41 [magnet]    Added plugin CTCP2
2010-09-26 02:49:41 [magnet]    Added plugin PocoircStatus2
2010-09-26 02:49:41 [magnet]    Connected to server 217.168.153.160
2010-09-26 02:49:41 [freenode]  Connected to server 130.237.188.200
2010-09-26 02:49:41 [magnet]    Server notice: *** Looking up your hostname...
2010-09-26 02:49:41 [magnet]    Server notice: *** Checking Ident
2010-09-26 02:49:41 [freenode]  Server notice: *** Looking up your hostname...
2010-09-26 02:49:41 [freenode]  Server notice: *** Checking Ident
2010-09-26 02:49:41 [freenode]  Server notice: *** Found your hostname
2010-09-26 02:49:41 [magnet]    Server notice: *** Found your hostname
2010-09-26 02:49:51 [magnet]    Server notice: *** No Ident response
2010-09-26 02:49:51 [magnet]    Logged in to server electret.shadowcat.co.uk with nick hlagherf32fr
2010-09-26 02:49:55 [freenode]  Server notice: *** No Ident response
2010-09-26 02:49:55 [freenode]  Logged in to server lindbohm.freenode.net with nick foobar1234
2010-09-26 02:50:00 [freenode]  Joined channel #foodsfdsf
2010-09-26 02:50:15 Exiting due to SIGINT
2010-09-26 02:50:15 Waiting up to 5 seconds for IRC server(s) to disconnect us
2010-09-26 02:50:15 [magnet]    Error from IRC server: Closing Link: 212-30-192-157.static.simnet.is ()
2010-09-26 02:50:15 [magnet]    Disconnected from server 217.168.153.160
2010-09-26 02:50:15 [magnet]    Shutting down
2010-09-26 02:50:15 [freenode]  Quit from IRC (Client Quit)
2010-09-26 02:50:15 [magnet]    Deleted plugin DCC6
2010-09-26 02:50:15 [magnet]    Deleted plugin ISupport6
2010-09-26 02:50:15 [magnet]    Deleted plugin CTCP2
2010-09-26 02:50:15 [magnet]    Deleted plugin Whois6
2010-09-26 02:50:15 [magnet]    Deleted plugin PocoircStatus2
2010-09-26 02:50:15 [freenode]  Error from IRC server: Closing Link: 212-30-192-157.static.simnet.is (Client Quit)
2010-09-26 02:50:15 [freenode]  Disconnected from server 130.237.188.200
2010-09-26 02:50:15 [freenode]  Shutting down
2010-09-26 02:50:15 [freenode]  Deleted plugin DCC3
2010-09-26 02:50:15 [freenode]  Deleted plugin AutoJoin2
2010-09-26 02:50:15 [freenode]  Deleted plugin CTCP2
2010-09-26 02:50:15 [freenode]  Deleted plugin Whois3
2010-09-26 02:50:15 [freenode]  Deleted plugin PocoircStatus2
2010-09-26 02:50:15 [freenode]  Deleted plugin ISupport3

AUTHOR

Hinrik Örn Sigurðsson, hinrik.sig@gmail.com

LICENSE AND COPYRIGHT

Copyright 2010 Hinrik Örn Sigurðsson

This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.