AnyEvent-Ident
view release on metacpan or search on metacpan
lib/AnyEvent/Ident.pm view on Meta::CPAN
package AnyEvent::Ident;
use strict;
use warnings;
use Exporter ();
our @ISA = qw( Exporter );
our @EXPORT_OK = qw( ident_server ident_client );
# ABSTRACT: Simple asynchronous ident client and server
our $VERSION = '0.08'; # VERSION
# keep the server object in scope so that
# we don't unbind from the port. If you
# don't want this, then use the OO interface
# for ::Server instead.
my $keep = [];
sub ident_server ($$$;$)
{
my $hostname = shift;
my $port = shift;
my $cb = shift;
require AnyEvent::Ident::Server;
my $server = AnyEvent::Ident::Server
->new( hostname => $hostname, port => $port, %{ $_[0] || {} } )
->start($cb);
push @$keep, $server;
return $server;
}
sub ident_client ($$$$$)
{
my $hostname = shift;
my $port = shift;
require AnyEvent::Ident::Client;
AnyEvent::Ident::Client
->new( hostname => $hostname, port => $port )
->ident(@_);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
AnyEvent::Ident - Simple asynchronous ident client and server
=head1 VERSION
version 0.08
=head1 SYNOPSIS
client:
use AnyEvent::Ident qw( ident_client );
ident_client '127.0.0.1', 113, $server_port, $client_port, sub {
my($res) = @_; # isa AnyEvent::Client::Response
if($res->is_success)
{
print "user: ", $res->username, "\n"
print "os: ", $res->os, "\n"
}
else
{
warn "Ident error: " $res->error_type;
}
};
server:
use AnyEvent::Ident qw( ident_server );
ident_server '127.0.0.1', 113, sub {
my $tx = shift;
if($tx->req->server_port == 400
&& $tx->req->client_port == 500)
{
$tx->reply_with_user('UNIX', 'grimlock');
}
else
{
$tx->reply_with_error('NO-USER');
}
};
=head1 DESCRIPTION
This module provides a simple procedural interface to L<AnyEvent::Ident::Client> and
L<AnyEvent::Ident::Server>.
=head1 FUNCTIONS
=head2 ident_server
my $server = ident_server $hostname, $port, $callback;
my $server = ident_server $hostname, $port, $callback, \%opt;
Start an ident server listening to the address given by C<$hostname>
on port C<$port>. For each request C<$callback> will be called and
passed in an instance of L<AnyEvent::Ident::Transaction>.
C<%opt> is optional hash of arguments. See L<AnyEvent::Ident::Server#CONSTRUCTOR>
for legal key/value pairs and defaults.
( run in 0.596 second using v1.01-cache-2.11-cpan-2398b32b56e )