POE::Component::IRC::PUsernContributed PPOE::Component::IRC::Plugin::Proxy(3p)



NAME
       POE::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;
        }

DESCRIPTION
       POE::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.12.2                      2010-1POE::Component::IRC::Plugin::Proxy(3p)
