Unix and Linux Discussions Tagged with irc |
|
Thread / Thread Starter |
Last Post |
Replies |
Views |
Forum |
|
|
|
2 |
3,646 |
UNIX for Beginners Questions & Answers |
|
|
|
12 |
3,185 |
UNIX for Advanced & Expert Users |
|
|
|
2 |
4,145 |
UNIX for Dummies Questions & Answers |
|
|
|
1 |
2,002 |
Solaris |
|
|
|
0 |
10,627 |
News, Links, Events and Announcements |
|
|
|
2 |
3,034 |
Web Development |
|
|
|
0 |
4,844 |
UNIX for Dummies Questions & Answers |
|
|
|
0 |
842 |
Software Releases - RSS News |
|
|
|
0 |
1,067 |
Software Releases - RSS News |
|
|
|
0 |
1,031 |
Software Releases - RSS News |
|
|
|
0 |
812 |
Software Releases - RSS News |
|
|
|
0 |
1,045 |
Software Releases - RSS News |
|
|
|
0 |
1,036 |
Software Releases - RSS News |
|
|
|
10 |
10,538 |
Shell Programming and Scripting |
|
|
|
0 |
1,014 |
Software Releases - RSS News |
|
|
|
1 |
6,058 |
UNIX for Advanced & Expert Users |
|
|
|
1 |
3,001 |
UNIX for Dummies Questions & Answers |
|
|
|
2 |
4,850 |
UNIX for Dummies Questions & Answers |
POE::Component::IRC::Cookbook::Resolver(3pm) User Contributed Perl Documentation POE::Component::IRC::Cookbook::Resolver(3pm)
NAME
POE::Component::IRC::Cookbook::Resolver - A bot that can resolve DNS records
SYNOPSIS
This bot uses POE::Component::Client::DNS to DNS records for channel members.
DESCRIPTION
#!/usr/bin/env perl
use strict;
use warnings;
use IRC::Utils qw(parse_user);
use POE;
use POE::Component::Client::DNS;
use POE::Component::IRC::State;
use POE::Component::IRC::Plugin::AutoJoin;
use POE::Component::IRC::Plugin::BotCommand;
POE::Session->create(
package_states => [
main => [ qw(_start irc_botcmd_resolve dns_response) ]
],
);
$poe_kernel->run();
sub _start {
my $heap = $_[HEAP];
my $irc = POE::Component::IRC::State->spawn(
Nick => 'resolver_bot',
Server => 'irc.freenode.net',
);
$heap->{irc} = $irc;
$irc->plugin_add('AutoJoin', POE::Component::IRC::Plugin::AutoJoin->new(
Channels => [ '#test_channel1', '#test_channel2' ]
));
$irc->plugin_add('BotCommand', POE::Component::IRC::Plugin::BotCommand->new(
Commands => {
resolve => 'Usage: resolve <host>'
}
));
$heap->{dns} = POE::Component::Client::DNS->spawn();
$irc->yield(register => 'botcmd_resolve');
$irc->yield('connect');
return;
}
sub irc_botcmd_resolve {
my $dns = $_[HEAP]->{dns};
my $nick = parse_user( $_[ARG0] );
my ($channel, $host) = @_[ARG1, ARG2];
my $res = $dns->resolve(
event => 'dns_response',
host => $host,
context => {
channel => $channel,
nick => $nick,
},
);
$poe_kernel->yield(dns_response => $res) if $res;
return;
}
sub dns_response {
my $irc = $_[HEAP]->{irc};
my $res = $_[ARG0];
my @answers = $res->{response}
? map { $_->rdatastr } $res->{response}->answer()
: ();
$irc->yield(
'privmsg',
$res->{context}->{channel},
$res->{context}->{nick} . (@answers
? ": @answers"
: ': no answers for "' . $res->{host} . '"')
);
return;
}
AUTHOR
Hinrik Oern Sigur`sson, hinrik.sig@gmail.com
perl v5.14.2 2011-12-07 POE::Component::IRC::Cookbook::Resolver(3pm)