NAME
POE::Component::IRC::Plugin::Console - a lightweight debugging and control console for POE::Component::IRC bots.
SYNOPSIS
use POE qw(Component::IRC Component::IRC::Plugin::Console);
my ($nickname) = 'Flibble' . $$;
my ($ircname) = 'Flibble the Sailor Bot';
my ($ircserver) = 'irc.blahblahblah.irc';
my ($port) = 6667;
my ($bindport) = 6969;
my (@channels) = ( '#Blah', '#Foo', '#Bar' );
my ($irc) = POE::Component::IRC->spawn(
nick => $nickname,
server => $ircserver,
port => $port,
ircname => $ircname,
) or die "Oh noooo! $!";
POE::Session->create(
package_states => [
'main' => [ qw(_start irc_001 irc_console_service irc_console_connect
irc_console_authed irc_console_close irc_console_rw_fail) ],
],
);
$poe_kernel->run();
exit 0;
sub _start {
$irc->plugin_add( 'Console' => POE::Component::IRC::Plugin::Console->new(
bindport => $bindport, password => "opensesame" );
$irc->yield( register => 'all' );
$irc->yield( connect => { } );
undef;
}
sub irc_001 {
$irc->yield( join => $_ ) for @channels;
undef;
}
sub irc_console_service {
my ($getsockname) = $_[ARG0];
undef;
}
sub irc_console_connect {
my ($peeradr,$peerport,$wheel_id) = @_[ARG0,ARG1,ARG2];
undef;
}
sub irc_console_authed {
my ($wheel_id) = $_[ARG0];
undef;
}
sub irc_console_close {
my ($wheel_id) = $_[ARG0];
undef;
}
sub irc_console_rw_fail {
my ($peeradr,$peerport) = @_[ARG0,ARG1];
undef;
}
DESCRIPTION
POE::Component::IRC::Plugin::Console is a POE::Component::IRC plugin that provides an interactive console running over the loopback network. One connects to the listening socket using a telnet client ( or equivalent ), authenticate using the applicable password. Once authed one will receive all events that are processed through the component. One may also issue all the documented component commands.
CONSTRUCTOR
- new
-
Takes two arguments:
'password', the password to set for *all* console connections; 'bindport', specify a particular port to bind to, defaults to 0, ie. randomly allocated;
METHODS
- getsockname
-
Gives access to the underlying listener's getsockname() method. See POE::Wheel::SocketFactory for details.
EVENTS
The plugin generates the following additional POE::Component::IRC events:
- irc_console_service
-
Emitted when a listener is successfully spawned. ARG0 is the result of getsockname(), see above for details.
- irc_console_connect
-
Emitted when a client connects to the console. ARG0 is the peeradr, ARG1 is the peer port and ARG2 is the wheel id of the connection.
- irc_console_authed
-
Emitted when a client has successfully provided a valid password. ARG0 is the wheel id of the connection.
- irc_console_close
-
Emitted when a client terminates a connection. ARG0 is the wheel id of the connection.
- irc_console_rw_fail
-
Emitted when a wheel::rw could not be created on a socket. ARG0 is the peeradr, ARG1 is the peer port.
AUTHOR
Chris 'BinGOs' Williams