POE::Component::IRC::PUsernContributed PePOE::Component::IRC::Plugin::Proxy(3)NAMEPOE::Component::IRC::Plugin::Proxy - A PoCo-IRC plugin that provides a
lightweight IRC proxy/bouncer
SYNOPSIS
use strict;
use warnings;
use POE qw(Component::IRC::State Component::IRC::Plugin::Proxy Component::IRC::Plugin::Connector);
my $irc = POE::Component::IRC::State->spawn();
POE::Session->create(
package_states => [
main => [ qw(_start) ],
],
heap => { irc => $irc },
);
$poe_kernel->run();
sub _start {
my ($kernel, $heap) = @_[KERNEL, HEAP];
$heap->{irc}->yield( register => 'all' );
$heap->{proxy} = POE::Component::IRC::Plugin::Proxy->new( bindport => 6969, password => "m00m00" );
$heap->{irc}->plugin_add( 'Connector' => POE::Component::IRC::Plugin::Connector->new() );
$heap->{irc}->plugin_add( 'Proxy' => $heap->{proxy} );
$heap->{irc}->yield ( connect => { Nick => 'testbot', Server => 'someserver.com' } );
return;
}
DESCRIPTIONPOE::Component::IRC::Plugin::Proxy is a POE::Component::IRC plugin that
provides lightweight IRC proxy/bouncer server to your
POE::Component::IRC bots. It enables multiple IRC clients to be hidden
behind a single IRC client-server connection.
Spawn a POE::Component::IRC::State session and add in a
POE::Component::IRC::Plugin::Proxy plugin object, specifying a bindport
and a password the connecting IRC clients have to use. When the
component is connected to an IRC network a listening port is opened by
the plugin for multiple IRC clients to connect.
Neat, huh? >;o)
This plugin will activate POE::Component::IRC's raw events ("irc_raw")
by calling "$irc->raw_events(1)".
This plugin requires the IRC component to be POE::Component::IRC::State
or a subclass thereof.
METHODS
"new"
Takes a number of arguments:
'password', the password to require from connecting clients;
'bindaddress', a local address to bind the listener to, default is
'localhost';
'bindport', what port to bind to, default is 0, ie. randomly allocated
by OS;
Returns an object suitable for passing to POE::Component::IRC's
"plugin_add" method.
"getsockname"
Takes no arguments. Accesses the listeners "getsockname" method. See
POE::Wheel::SocketFactory for details of the return value;
"list_wheels"
Takes no arguments. Returns a list of wheel ids of the current
connected clients.
"wheel_info"
Takes one parameter, a wheel ID to query. Returns undef if an invalid
wheel id is passed. In a scalar context returns the time that the
client connected in unix time. In a list context returns a list
consisting of the peer address, port, tthe connect time and the lag in
seconds for that connection.
OUTPUT
The plugin emits the following POE::Component::IRC events:
"irc_proxy_up"
Emitted when the listener is successfully started. "ARG0" is the result
of the listener "getsockname".
"irc_proxy_connect"
Emitted when a client connects to the listener. "ARG0" is the wheel ID
of the client.
"irc_proxy_rw_fail"
Emitted when the POE::Wheel::ReadWrite fails on a connection. "ARG0" is
the wheel ID of the client.
"irc_proxy_authed"
Emitted when a connecting client successfully negotiates an IRC session
with the plugin. "ARG0" is the wheel ID of the client.
"irc_proxy_close"
Emitted when a connected client disconnects. "ARG0" is the wheel ID of
the client.
"irc_proxy_down"
Emitted when the listener is successfully shutdown. "ARG0" is the
result of the listener "getsockname".
QUIRKS
Connecting IRC clients will not be able to change nickname. This is a
feature.
AUTHOR
Chris 'BinGOs' Williams
SEE ALSO
POE::Component::IRC
POE::Component::IRC::State
perl v5.14.12010-11POE::Component::IRC::Plugin::Proxy(3)