POE-Component-Server-IRC
view release on metacpan or search on metacpan
t/ts6_25_list1.t view on Meta::CPAN
my $filter = POE::Filter::Stackable->new();
$filter->push( POE::Filter::Line->new( InputRegexp => '\015?\012', OutputLiteral => "\015\012" ),
POE::Filter::IRCD->new( debug => 0 ), );
push @{ $heap->{testc} }, Test::POE::Client::TCP->spawn( alias => $tag, filter => $filter, address => '127.0.0.1', port => $heap->{port}, prefix => $tag );
}
return;
}
sub _launch_harpo {
my ($kernel,$heap) = @_[KERNEL,HEAP];
foreach my $tag ( qw[harpo] ) {
my $filter = POE::Filter::Stackable->new();
$filter->push( POE::Filter::Line->new( InputRegexp => '\015?\012', OutputLiteral => "\015\012" ),
POE::Filter::IRCD->new( debug => 0 ), );
push @{ $heap->{testc} }, Test::POE::Client::TCP->spawn( alias => $tag, filter => $filter, address => '127.0.0.1', port => $heap->{port}, prefix => $tag );
}
return;
}
sub _launch_client {
my ($kernel,$heap) = @_[KERNEL,HEAP];
my $filter = POE::Filter::Stackable->new();
$filter->push( POE::Filter::Line->new( InputRegexp => '\015?\012', OutputLiteral => "\015\012" ),
POE::Filter::IRCD->new( debug => 0 ), );
my $tag = 'client';
$heap->{client} = Test::POE::Client::TCP->spawn( alias => $tag, filter => $filter, address => '127.0.0.1', port => $heap->{port}, prefix => $tag );
return;
}
sub testc_registered {
my ($kernel,$sender) = @_[KERNEL,SENDER];
pass($_[STATE]);
$kernel->post( $sender, 'connect' );
return;
}
sub client_connected {
my ($kernel,$heap,$sender) = @_[KERNEL,HEAP,SENDER];
pass($_[STATE]);
$kernel->post( $sender, 'send_to_server', { command => 'NICK', params => [ 'bobbins' ], colonify => 0 } );
$kernel->post( $sender, 'send_to_server', { command => 'USER', params => [ 'bobbins', '*', '*', 'bobbins along' ], colonify => 1 } );
return;
}
sub groucho_connected {
my ($kernel,$heap,$sender) = @_[KERNEL,HEAP,SENDER];
pass($_[STATE]);
$kernel->post( $sender, 'send_to_server', { command => 'PASS', params => [ 'foo', 'TS', '6', '7UP' ], } );
$kernel->post( $sender, 'send_to_server', { command => 'CAPAB', params => [ 'KNOCK UNDLN DLN TBURST GLN ENCAP UNKLN KLN CHW IE EX HOPS SVS CLUSTER EOB QS' ], colonify => 1 } );
$kernel->post( $sender, 'send_to_server', { command => 'SERVER', params => [ 'groucho.server.irc', '1', 'Open the door and come in!!!!!!' ], colonify => 1 } );
$kernel->post( $sender, 'send_to_server', { command => 'SVINFO', params => [ '6', '6', '0', time() ], colonify => 1 } );
$uidts = time() - 20;
$kernel->post( $sender, 'send_to_server', { prefix => '7UP', command => 'SID', params => [ 'fake.server.irc', 2, '4AK', 'This is a fake server' ] } );
$kernel->post( $sender, 'send_to_server', { prefix => '7UP', command => 'UID', params => [ 'groucho', '1', $uidts, '+aiow', 'groucho', 'groucho.marx', '0', $g_gen->_state_gen_uid(), '0', 'Groucho Marx' ], colonify => 1 } );
$kernel->post( $sender, 'send_to_server', { prefix => '7UPAAAAAA', command => 'AWAY', params => [ 'A minute and a huff' ], colonify => 1 } );
my $i = 0;
my @uids;
while( $i++ < 150 ) {
my $str = shift @users;
next if !$str;
my ($nick,$usr,$host) = split m/[!@]/, $str;
my $uid = $g_gen->_state_gen_uid();
push @uids, $uid;
$kernel->post( $sender, 'send_to_server', { prefix => '7UP', command => 'UID', params => [ $nick, '1', ($uidts-int(rand(1000))), '+i', $usr, $host, '0', $uid, '0', $usr ], colonify => 1 } );
}
$kernel->post( $sender, 'send_to_server', { prefix => '7UP', command => 'SJOIN', params => [ ( time() - 50 ), '#marxbros', '+nt', '@7UPAAAAAA' ], colonify => 1 } );
foreach my $chan ( sort keys %channels ) {
my $len = 28 + length $chan;
my $mode = ( $channels{$chan}{mode} || '+nt' );
my $rec = [ $channels{$chan}{ts}, $chan, $mode ];
my $j = 0; my $buf = '';
UID: while ( $j < $channels{$chan}{users} ) {
my $uid = $uids[$j];
$j++;
if (length(join ' ', $buf, '1', $uid)+$len+1 > 510) {
$kernel->post( $sender, 'send_to_server',
{
prefix => '7UP',
command => 'SJOIN',
params => [ @$rec, $buf ],
colonify => 1,
}
);
$buf = $uid;
next UID;
}
$buf = join ' ', $buf, $uid;
$buf =~ s!^\s+!!;
}
if ($buf) {
$kernel->post( $sender, 'send_to_server',
{
prefix => '7UP',
command => 'SJOIN',
params => [ @$rec, $buf ],
colonify => 1,
}
);
}
if ( $channels{$chan}{topic} ) {
$kernel->post( $sender, 'send_to_server', { prefix => '7UP', command => 'TBURST',
params => [ $channels{$chan}{ts}, $chan, $channels{$chan}{tts}, $channels{$chan}{setby}, $channels{$chan}{topic} ], colonify => 1 } );
}
}
$kernel->post( $sender, 'send_to_server', { command => 'EOB', prefix => '7UP' } );
$kernel->post( $sender, 'send_to_server', { command => 'EOB', prefix => '4AK' } );
$kernel->post( $sender, 'send_to_server', { command => 'PING', params => [ '7UP' ], colonify => 1 } );
return;
}
sub harpo_connected {
my ($kernel,$heap,$sender) = @_[KERNEL,HEAP,SENDER];
pass($_[STATE]);
$kernel->post( $sender, 'send_to_server', { command => 'PASS', params => [ 'foo', 'TS', '6', '9T9' ], } );
$kernel->post( $sender, 'send_to_server', { command => 'CAPAB', params => [ 'KNOCK UNDLN DLN TBURST GLN ENCAP UNKLN KLN CHW IE EX HOPS SVS CLUSTER EOB QS' ], colonify => 1 } );
$kernel->post( $sender, 'send_to_server', { command => 'SERVER', params => [ 'harpo.server.irc', '1', 'Open the door and come in!!!!!!' ], colonify => 1 } );
$kernel->post( $sender, 'send_to_server', { command => 'SVINFO', params => [ '6', '6', '0', time() ], colonify => 1 } );
$uidts = time() - 50;
$kernel->post( $sender, 'send_to_server', { prefix => '9T9', command => 'UID', params => [ 'harpo', '1', $uidts, '+aiow', 'harpo', 'harpo.marx', '0', $h_gen->_state_gen_uid(), '0', 'Harpo Marx' ], colonify => 1 } );
my $i = 0;
my @uids;
while( $i++ < 150 ) {
my $str = shift @users;
next if !$str;
my ($nick,$usr,$host) = split m/[!@]/, $str;
my $uid = $h_gen->_state_gen_uid();
push @uids, $uid;
$kernel->post( $sender, 'send_to_server', { prefix => '9T9', command => 'UID', params => [ $nick, '1', ($uidts-int(rand(1000))), '+i', $usr, $host, '0', $uid, '0', $usr ], colonify => 1 } );
}
$kernel->post( $sender, 'send_to_server', { prefix => '9T9', command => 'SJOIN', params => [ ( time() - 50 ), '#marxbros', '+nt', '@9T9AAAAAA' ], colonify => 1 } );
foreach my $chan ( sort keys %channels ) {
my $len = 27 + length $chan;
my $rec = [ $channels{$chan}{ts}, $chan, '+nt' ];
my $j = 0; my $buf = '';
UID: while ( $j < $channels{$chan}{users} ) {
my $uid = $uids[$j];
$j++;
if (length(join ' ', $buf, '1', $uid)+$len+1 > 510) {
$kernel->post( $sender, 'send_to_server',
{
prefix => '9T9',
command => 'SJOIN',
params => [ @$rec, $buf ],
colonify => 1,
}
);
$buf = $uid;
next UID;
}
$buf = join ' ', $buf, $uid;
$buf =~ s!^\s+!!;
}
if ($buf) {
$kernel->post( $sender, 'send_to_server',
{
prefix => '9T9',
command => 'SJOIN',
params => [ @$rec, $buf ],
colonify => 1,
}
);
}
if ( $channels{$chan}{topic} ) {
$kernel->post( $sender, 'send_to_server', { prefix => '9T9', command => 'TBURST',
params => [ $channels{$chan}{ts}, $chan, $channels{$chan}{tts}, $channels{$chan}{setby}, $channels{$chan}{topic} ], colonify => 1 } );
}
}
$kernel->post( $sender, 'send_to_server', { command => 'EOB', prefix => '9T9' } );
$kernel->post( $sender, 'send_to_server', { command => 'PING', params => [ '9T9' ], colonify => 1 } );
return;
}
sub client_input {
my ($heap,$sender,$in) = @_[HEAP,SENDER,ARG0];
#diag($in->{raw_line}, "\n");
my $prefix = $in->{prefix};
my $cmd = $in->{command};
my $params = $in->{params};
if ( $cmd eq 'MODE' && $prefix =~ m!^bobbins! ) {
pass($cmd);
$heap->{322} = 0;
$poe_kernel->post($sender, 'send_to_server', { command => 'LIST' } );
return;
}
if ( $cmd eq '321' ) {
( run in 0.431 second using v1.01-cache-2.11-cpan-71847e10f99 )