mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 03:22:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
\section{\module{macdnr} ---
 | 
						|
         Interface to the Macintosh Domain Name Resolver}
 | 
						|
 | 
						|
\declaremodule{builtin}{macdnr}
 | 
						|
  \platform{Mac}
 | 
						|
\modulesynopsis{Interfaces to the Macintosh Domain Name Resolver.}
 | 
						|
 | 
						|
 | 
						|
This module provides an interface to the Macintosh Domain Name
 | 
						|
Resolver.  It is usually used in conjunction with the \refmodule{mactcp}
 | 
						|
module, to map hostnames to IP addresses.  It may not be available in
 | 
						|
all Mac Python versions.
 | 
						|
\index{Macintosh Domain Name Resolver}
 | 
						|
\index{Domain Name Resolver, Macintosh}
 | 
						|
 | 
						|
The \module{macdnr} module defines the following functions:
 | 
						|
 | 
						|
 | 
						|
\begin{funcdesc}{Open}{\optional{filename}}
 | 
						|
Open the domain name resolver extension.  If \var{filename} is given it
 | 
						|
should be the pathname of the extension, otherwise a default is
 | 
						|
used.  Normally, this call is not needed since the other calls will
 | 
						|
open the extension automatically.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{Close}{}
 | 
						|
Close the resolver extension.  Again, not needed for normal use.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{StrToAddr}{hostname}
 | 
						|
Look up the IP address for \var{hostname}.  This call returns a dnr
 | 
						|
result object of the ``address'' variation.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{AddrToName}{addr}
 | 
						|
Do a reverse lookup on the 32-bit integer IP-address
 | 
						|
\var{addr}.  Returns a dnr result object of the ``address'' variation.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{AddrToStr}{addr}
 | 
						|
Convert the 32-bit integer IP-address \var{addr} to a dotted-decimal
 | 
						|
string.  Returns the string.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{HInfo}{hostname}
 | 
						|
Query the nameservers for a \code{HInfo} record for host
 | 
						|
\var{hostname}.  These records contain hardware and software
 | 
						|
information about the machine in question (if they are available in
 | 
						|
the first place).  Returns a dnr result object of the ``hinfo''
 | 
						|
variety.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
\begin{funcdesc}{MXInfo}{domain}
 | 
						|
Query the nameservers for a mail exchanger for \var{domain}.  This is
 | 
						|
the hostname of a host willing to accept SMTP\index{SMTP} mail for the
 | 
						|
given domain.  Returns a dnr result object of the ``mx'' variety.
 | 
						|
\end{funcdesc}
 | 
						|
 | 
						|
 | 
						|
\subsection{DNR Result Objects \label{dnr-result-object}}
 | 
						|
 | 
						|
Since the DNR calls all execute asynchronously you do not get the
 | 
						|
results back immediately.  Instead, you get a dnr result object.  You
 | 
						|
can check this object to see whether the query is complete, and access
 | 
						|
its attributes to obtain the information when it is.
 | 
						|
 | 
						|
Alternatively, you can also reference the result attributes directly,
 | 
						|
this will result in an implicit wait for the query to complete.
 | 
						|
 | 
						|
The \member{rtnCode} and \member{cname} attributes are always
 | 
						|
available, the others depend on the type of query (address, hinfo or
 | 
						|
mx).
 | 
						|
 | 
						|
 | 
						|
% Add args, as in {arg1, arg2 \optional{, arg3}}
 | 
						|
\begin{methoddesc}[dnr result]{wait}{}
 | 
						|
Wait for the query to complete.
 | 
						|
\end{methoddesc}
 | 
						|
 | 
						|
% Add args, as in {arg1, arg2 \optional{, arg3}}
 | 
						|
\begin{methoddesc}[dnr result]{isdone}{}
 | 
						|
Return \code{1} if the query is complete.
 | 
						|
\end{methoddesc}
 | 
						|
 | 
						|
 | 
						|
\begin{memberdesc}[dnr result]{rtnCode}
 | 
						|
The error code returned by the query.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
\begin{memberdesc}[dnr result]{cname}
 | 
						|
The canonical name of the host that was queried.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
\begin{memberdesc}[dnr result]{ip0}
 | 
						|
\memberline{ip1}
 | 
						|
\memberline{ip2}
 | 
						|
\memberline{ip3}
 | 
						|
At most four integer IP addresses for this host.  Unused entries are
 | 
						|
zero.  Valid only for address queries.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
\begin{memberdesc}[dnr result]{cpuType}
 | 
						|
\memberline{osType}
 | 
						|
Textual strings giving the machine type an OS name.  Valid for ``hinfo''
 | 
						|
queries.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
\begin{memberdesc}[dnr result]{exchange}
 | 
						|
The name of a mail-exchanger host.  Valid for ``mx'' queries.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
\begin{memberdesc}[dnr result]{preference}
 | 
						|
The preference of this mx record.  Not too useful, since the Macintosh
 | 
						|
will only return a single mx record.  Valid for ``mx'' queries only.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
The simplest way to use the module to convert names to dotted-decimal
 | 
						|
strings, without worrying about idle time, etc:
 | 
						|
 | 
						|
\begin{verbatim}
 | 
						|
>>> def gethostname(name):
 | 
						|
...     import macdnr
 | 
						|
...     dnrr = macdnr.StrToAddr(name)
 | 
						|
...     return macdnr.AddrToStr(dnrr.ip0)
 | 
						|
\end{verbatim}
 |