GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
POE::Component::Client::DNS::Recursive(3) User Contributed Perl Documentation POE::Component::Client::DNS::Recursive(3)

POE::Component::Client::DNS::Recursive - A recursive DNS client for POE

version 1.12

  use strict;
  use warnings;
  use Getopt::Long;

  use POE qw(Component::Client::DNS::Recursive);

  my $trace;
  GetOptions ('trace' => \$trace);

  my $host = shift || die "Nothing to query\n";
  my $type = shift;

  POE::Session->create(
    package_states => [
          'main', [qw(_start _response _trace)],
    ],
  );

  $poe_kernel->run();
  exit 0;

  sub _start {
    POE::Component::Client::DNS::Recursive->resolve(
          event => '_response',
          host => $host,
        ( $type ? ( type => $type ) : () ),
        ( $trace ? ( trace => $_[SESSION]->postback( '_trace' ) ) : () ),
    );
    return;
  }

  sub _trace {
    my $packet = $_[ARG1]->[0];
    return unless $packet;
    print $packet->string;
    return;
  }

  sub _response {
    my $packet = $_[ARG0]->{response};
    return unless $packet;
    print $packet->string;
    return;
  }

POE::Component::Client::DNS::Recursive is a POE component that implements a recursive DNS client.

POE sessions and components can spawn a POE::Component::Client::DNS::Recursive instance to perform a DNS query. The component will perform its task and return the results to the requesting session.

One may also enable tracing of the delegation path from the root name servers for the name being looked up.

"resolve"
Takes a number of options, only those marked as "mandatory" are required:

  'event', the event to emit when completed, mandatory;
  'host', what to look up, mandatory;
  'type', defaults to 'A' or 'PTR' if 'host' appears to be an IP address;
  'class', defaults to 'IN';
  'port', the port to use for DNS requests. Default is 53;
  'session', provide an alternative session to send the resultant event to;
  'trace', the event to send trace information to;
  'nameservers', an arrayref of IP addresses that the poco will use instead of built-in 'hints';
  'context', user defined data. Can be anything that can be stored in a scalar;
    

"event" and "trace" are discussed in the "OUTPUT EVENTS" section below.

"event" and "trace" may also be POE::Session postbacks.

"session" is only required if one wishes to send the resultant events to a different session than the calling one, or if the component is spawned with the POE::Kernel as its parent.

The output events from the component as specified in the "resolve" constructor.

If you have opted to use postbacks, then these parameters will be passed in the arrayref in "ARG1".

"event"
Emitted when the query has finished.

"ARG0" will contain a hashref with the following fields:

  host     => the host requested,
  type     => the type requested,
  class    => the class requested,
  context  => the context that was passed to us,
  response => a Net::DNS::Packet object,
  error    => an error message ( if applicable )
    

"response" contains a Net::DNS::Packet object on success or undef if the lookup failed. The Net::DNS::Packet object describes the response to the program's request. It may contain several DNS records. Please consult Net::DNS and Net::DNS::Packet for more information.

"error" contains a description of any error that has occurred. It is only valid if "response" is undefined.

"trace"
Emitted whenever an element of the delegation path from the root servers is found.

"ARG0" will be a Net::DNS::Packet object.

POE::Component::Client::DNS

Perl Programming

Chris Williams <chris@bingosnet.co.uk>

This software is copyright (c) 2017 by Chris Williams.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

2017-03-01 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.