The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

Net::DNS::Nameserver (3)
  • >> Net::DNS::Nameserver (3) ( Разные man: Библиотечные вызовы )
  •  

    NAME

    Net::DNS::Nameserver - DNS server class
     
    

    SYNOPSIS

    "use Net::DNS::Nameserver;"  

    DESCRIPTION

    Instances of the "Net::DNS::Nameserver" class represent simple DNS server objects. See ``EXAMPLE'' for an example.  

    METHODS

     

    new

     my $ns = Net::DNS::Nameserver->new(
            LocalAddr        => "10.1.2.3",
            LocalPort        => "5353",
            ReplyHandler => \&reply_handler,
            Verbose          => 1
     );
    
    

    Creates a nameserver object. Attributes are:

      LocalAddr             IP address on which to listen.  Defaults to INADDR_ANY.
      LocalPort             Port on which to listen.  Defaults to 53.
      ReplyHandler  Reference to reply-handling subroutine.  Required.
      Verbose               Print info about received queries.      Defaults to 0 (off).
    
    

    The ReplyHandler subroutine is passed the query name, query class, query type and optionally an argument containing header bit settings (see below). It must return the response code and references to the answer, authority, and additional sections of the response. Common response codes are:

      NOERROR       No error
      FORMERR       Format error
      SERVFAIL      Server failure
      NXDOMAIN      Non-existent domain (name doesn't exist)
      NOTIMP        Not implemented
      REFUSED       Query refused
    
    

    For advanced usage there is an optional argument containing an hashref with the settings for the "aa", "ra", and "ad" header bits. The argument is of the form "{ ad => 1, aa => 0, ra => 1 }".

    See RFC 1035 and the IANA dns-parameters file for more information:

      ftp://ftp.rfc-editor.org/in-notes/rfc1035.txt
      http://www.isi.edu/in-notes/iana/assignments/dns-parameters
    
    

    The nameserver will listen for both UDP and TCP connections. On Unix-like systems, the program will probably have to run as root to listen on the default port, 53.      A non-privileged user should
    be able to listen on ports 1024 and higher.

    Returns a Net::DNS::Nameserver object, or undef if the object couldn't be created.

    See ``EXAMPLE'' for an example.        
     

    main_loop

            $ns->main_loop;
    
    

    Start accepting queries.  

    EXAMPLE

    The following example will listen on port 5353 and respond to all queries for A records with the IP address 10.1.2.3.      All other queries will be
    answered with NXDOMAIN.  Authority and additional sections are left empty.
    The $peerhost variable catches the IP address of the peer host, so that additional filtering on its basis may be applied.

     #!/usr/bin/perl
    
    

     use Net::DNS;
     use strict;
     use warnings;
    
    

     sub reply_handler {
             my ($qname, $qclass, $qtype, $peerhost) = @_;
             my ($rcode, @ans, @auth, @add);
    
    

             if ($qtype eq "A") {
                     my ($ttl, $rdata) = (3600, "10.1.2.3");
                     push @ans, Net::DNS::RR->new("$qname $ttl $qclass $qtype $rdata");
                     $rcode = "NOERROR";
             } else {
             $rcode = "NXDOMAIN";
             }
    
    

             # mark the answer as authoritive (by setting the 'aa' flag
             return ($rcode, \@ans, \@auth, \@add, { aa => 1 });
     }
    
    

     my $ns = Net::DNS::Nameserver->new(
         LocalPort    => 5353,
         ReplyHandler => \&reply_handler,
         Verbose      => 1,
     ) || die "couldn't create nameserver object\n";
    
    

     $ns->main_loop;
    
    
     

    BUGS

    Net::DNS::Nameserver objects can handle only one query at a time.  

    COPYRIGHT

    Copyright (c) 1997-2002 Michael Fuhr.

    Portions Copyright (c) 2002-2003 Chris Reinhardt.

    All rights reserved. This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.  

    SEE ALSO

    perl(1), Net::DNS, Net::DNS::Resolver, Net::DNS::Packet, Net::DNS::Update, Net::DNS::Header, Net::DNS::Question, Net::DNS::RR, RFC 1035


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    METHODS
    new
    main_loop
    EXAMPLE
    BUGS
    COPYRIGHT
    SEE ALSO


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру