
    b                         d dl Zd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
Z
dZd Zd ad Z G d dej                  Z G d	 d
ej                  Zd Z e             dS )    N)Timer)dnsFc                     t           rPt          j                                         t	          d| z             t          j                                         d S d S )Nz[00;36m%s[00m)VERBOSEsysstdoutflushprint)msgs    J/usr/lib/python3/dist-packages/samba/tests/dns_forwarder_helpers/server.pydebugr       sV     
%+,,,
     c                     t          j                    }|j        |_        t           j        |_        t           j        |_        d|_        d|_        t          |_
        |S )Ni  i  )r   res_recnameDNS_QTYPE_CNAMErr_typeDNS_QCLASS_INrr_classttllength	SERVER_IDrdata)dataquestionrs      r   answer_questionr   *   sD    A]AF#AI"AJAEAHAGHr   c                        e Zd Zd Zd Zd ZdS )
DnsHandlerc                    t          j        t          j        |          }t	          d           t	          |                                           t          ||j        d                   }|K|gdz  |_        |xj	        dz  c_	        t	          d           t	          |                                           |xj
        t          j        z  c_
        t          j        |          S )Nzanswering this question:r      zthe answer was: )ndr
ndr_unpackr   name_packetr   __ndr_print__r   	questionsanswersancount	operationDNS_FLAG_REPLYndr_pack)selfr   answers      r   make_answerzDnsHandler.make_answer6   s    ~cot44()))d  ""### t~a'899"8a<DLLLALL$%%%$$$&&'''#,,|D!!!r   c                 \    |                      |          } |j        || j                   d S )N)r.   sendtoclient_address)r,   r   socketr-   s       r   really_handlezDnsHandler.really_handleG   s2    !!$''fd122222r   c                    | j         \  }}t          t          d| j        d         d           t	          j        d|                                          }|r;t          |                    d                    a	t          dt          z             d S t          t          | j        ||g          }|                                 d S )Nz: r   z wrote:s   ^timeout\s+([\d.]+)$r!   ztiming out at %s)requestr   r   r1   rematchstripfloatgrouptimeoutr   r3   start)r,   r   r2   mts        r   handlezDnsHandler.handleK   s    |fD,?,B,B,BCDDD H,djjll;; 	AGGAJJ''G$w.///F'4-f~>>						r   N)__name__
__module____qualname__r.   r3   r?    r   r   r   r   5   sA        " " ""3 3 3    r   r   c                        e Zd Z fdZ xZS )TestUDPServerc                     |d                              d          dk    rt          j        | _        nt          j        | _        t          t          j        |                               ||           d S )Nr   :)	findr2   AF_INET6address_familyAF_INETsuperSocketServer	UDPServer__init__)r,   server_addressRequestHandlerClass	__class__s      r   rP   zTestUDPServer.__init__Z   sb    !!!#&&",,"(/D"(.Dl$d++44^EXYYYYYr   )r@   rA   rB   rP   __classcell__)rS   s   @r   rE   rE   Y   sA        Z Z Z Z Z Z Z Z Zr   rE   c                      t           j        dd          \  } }at          | t	          |          ft
                    }|                                 d S )Nr!   )r   argvr   rE   intr   serve_forever)hostportservers      r   mainr\   a   sJ    HQRRLD$	D#d)),j99F
r   )socketserverrN   r2   r   	threadingr   samba.dcerpcr   	samba.ndrr"   r6   r   r   r;   r   BaseRequestHandlerr   rO   rE   r\   rC   r   r   <module>rb      s  * $ # # #  



                   				
     " " " " "0 " " "HZ Z Z Z ZL* Z Z Z   r   