POE::Component::IRC::Plugin::Proxy.3pm

Langue: en

Version: 2008-07-22 (fedora - 05/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

POE::Component::IRC::Plugin::Proxy - A PoCo-IRC plugin that provides a lightweight IRC proxy/bouncer for POE::Component::IRC.

SYNOPSIS

  use strict;
  use warnings;
  use POE qw(Component::IRC Component::IRC::Plugin::Proxy Component::IRC::Connector);
 
  my $irc = POE::Component::IRC->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::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 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)

METHODS


"new"


new

Takes a number of arguments:

'password', the password to require from connecting clients;

'bindaddr', 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.

"current_channels"


current_channels

Takes no arguments, returns a list of the channels that the component is currently a member of.

"getsockname"


getsockname

Takes no arguments. Accesses the listeners getsockname() method. See POE::Wheel::SocketFactory for details of the return value;

"list_wheels"


list_wheels

Takes no arguments. Returns a list of wheel ids of the current connected clients.

"wheel_info"


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"


irc_proxy_up

Emitted when the listener is successfully started. ARG0 is the result of the listener getsockname().

"irc_proxy_connect"


irc_proxy_connect

Emitted when a client connects to the listener. ARG0 is the wheel ID of the client.

"irc_proxy_rw_fail"


irc_proxy_rw_fail

Emitted when the Wheel::ReadWrite fails on a connection. ARG0 is the wheel ID of the client.

"irc_proxy_authed"


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"


irc_proxy_close

Emitted when a connected client disconnects. ARG0 is the wheel ID of the client.

"irc_proxy_down"


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