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
log_file: /my/log.file
lib: ['/my/modules']
global_plugins:
- [CTCP]
local_plugins:
- [BotTraffic]
networks:
freenode:
server: irc.freenode.net
local_plugins:
- [AutoJoin, { Channels: ['#foodsfdsf'] } ]
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 file to which status messages will be written.
Networks
The networks
option should be hash of network hashes. The keys are the names of the networks. A network hash can contain local_plugins
and parameters to POE::Component::IRC. None are required, except server
if not defined at the top level. 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. When figuring out the correct package name, 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 (POE::Component::IRC::State)
2010-09-26 02:49:41 [magnet] Constructing local plugins
2010-09-26 02:49:41 [magnet] Spawning IRC component (POE::Component::IRC::State)
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.