
    TOg                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  SSKJ	r	J
r
  SSKJr  SSKJr  \R                  " \5      r\R$                  " \R&                  R)                  SS5      S	9   " S
 S5      rg)    N)List   )WhoisCommandFailedWhoisCommandTimeout)ParameterContext)DataContextLOGLEVELINFO)levelc                       \ rS rSrSS jrS\S\4S jrSS jrS	\	SS4S
 jr
S\\	   S\\	   4S jrS\\	   4S jrS\	4S jrS\	4S jrS\	4S jrSS jrS\	4S jrSrg)WhoisCliInterface   returnNc                     [         R                  " 5       S:H  U l        / U l        U R                  (       d&  [        R
                  " S5      (       a
  SS/U l        g g g )NWindowsstdbufz-o0)platformsystem
IS_WINDOWSSTDBUF_OFF_CMDshutilwhichselfs    \/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/whois/whoisCliInterface.py_specificOnNonWindowsPlatforms0WhoisCliInterface._specificOnNonWindowsPlatforms   sF     ( 1Y >)+6<<#9#9#+U"3D $:    pcdcc                     X l         Xl        g )N)r    r   )r   r   r    s      r   __init__WhoisCliInterface.__init__#   s    
 r   c                     [         R                  " 5       nSU-   nSn[        R                  U5        [        R
                  " U[        R                  [        R                  SS9  g)z_
Windows 'whois' command wrapper
https://docs.microsoft.com/en-us/sysinternals/downloads/whois
z-copy \\live.sysinternals.com\tools\whois.exe z(downloading dependencies: {copy_command}T)stdoutstderrshellN)osgetcwdlogdebug
subprocesscallPIPESTDOUT)r   foldercopy_commandmsgs       r    _tryInstallMissingWhoisOnWindows2WhoisCliInterface._tryInstallMissingWhoisOnWindows+   sK    
 G&P8		#??$$		
r   kc                 \   [         R                  S   R                  S5      nU HX  n[         R                  R	                  X15      n[         R                  R                  U5      (       d  MH  X@R                  l          g    U R                  R                  (       a  U R                  5         g g )Npath;)
r(   environsplitr7   joinexistsr   cmdtryInstallMissingWhoisOnWindowsr3   )r   r5   pathsr7   wpaths        r   (_onWindowsFindWhoisCliAndInstallIfNeeded:WhoisCliInterface._onWindowsFindWhoisCliAndInstallIfNeeded<   sv    

6"((-DGGLL)Eww~~e$$#	  7722113 3r   whoisCommandListc                    U R                   R                  S:X  ag  Sn[        R                  R	                  U5      (       a0  [        R                  R                  SU5      U R                   l        OU R                  U5        U R                   R                  /nU R                   R                  (       a'  USSU R                  U R                   R                  /-   $ USSU R                  /-   $ )Nwhoisz	whois.exe.z-vz	-nobanner)	r   r=   r(   r7   r<   r;   rA   serverdomain)r   rC   r5   s      r   _makeWhoisCommandToRunWindows/WhoisCliInterface._makeWhoisCommandToRunWindowsG   s     77;;'! Aww~~a   ggll32==a@ GGKK=77>>#t[$++tww~~&VVV4dkk"BBBr   c                    U R                   R                  /nSU R                   R                  ;   a%  U R                   R                  R                  S5      nU R                  (       a  U R	                  US9$ U R                   R
                  (       a  US/-   nU R                   R                  (       a  USU R                   R                  /-   nXR                  /-   $ )N )rC   z	--verbosez-h)r   r=   r:   r   rI   extractServersrG   rH   )r   rC   s     r   _makeWhoisCommandToRun(WhoisCliInterface._makeWhoisCommandToRunX   s    '+ww{{m$''++#ww{{005??55!1 6   77!!/;-?77>>/42HH;;-//r   c                    U R                    n[        R                  U5        U R                  R                  SL a  U R
                  R                  S;  a  SU R                   ;   a  U R                   R                  SS5      $ SU R                   ;   a  U R                   R                  SS5      $ U R                  R                  (       a  U R                   $ [        U R                   5      e[        U R                   5      $ )NF)r   r   zfgets: Connection reset by peer zconnect: Connection refused)rawWhoisResultStringr*   r+   r   ignore_returncodeprocessHandle
returncodereplace
simplisticr   str)r   r2   s     r   _postProcessingResult'WhoisCliInterface._postProcessingResultj   s    **+		#77$$-$2D2D2O2OW]2]0D4M4MM00889Z\^__,0I0II00889VXZ[[ww!!000$T%>%>??4,,--r   c                    [         R                  " U R                  U R                  5       -   [         R                  [         R
                  U R                  R                  S5      (       a  SS0OS S9 U l        SU R                  R                   3n[        R                  U5         U R                  R                  U R                  R                  S9S   R                  SS	9U l        U R)                  5       sS S S 5        $ ! [         R                    a  nU R                  R#                  5         U R                  R                  5       S   R                  SS	9U l        U R                  R$                  (       a  U R                  (       d&  S
U R                  R                   S3n['        U5      Ue S nANS nAff = f! , (       d  f       g = f)Nz.jpLANGen)r%   r&   envztimout: )timeoutr   ignoreerrorsztimeout: query took more then z seconds)r,   Popenr   rN   r.   r/   rH   endswithrT   r   r_   r*   r+   communicatedecoderR   TimeoutExpiredkillparse_partial_responser   rY   )r   r2   exs      r   _runWhoisCliOnThisOs&WhoisCliInterface._runWhoisCliOnThisOs|   s    $"="="????$$"&++"6"6u"="=4	

 TWW__-.CIIcN;,0,>,>,J,J GGOO -K - - &&)	 )  --/5
 
 ,, 	;""''),0,>,>,J,J,LQ,O,V,V^f,V,g) ww55T=V=V:477??:K8TC-c2: >W	;
 
s8   34F?(AD*F?F<BF72F?7F<<F??
Gc                 4   [         R                  " S5      nU SU R                   S3n[         R                  R	                  U5      (       a1  [        USS9 nUR                  5       R                  SS9sS S S 5        $ [        S5      e! , (       d  f       N= f)	NTEST_WHOIS_PYTHON/z/inputrb)moder`   ra   rQ   )	r(   getenvrH   r7   r<   openreadrf   r   )r   testDirpathToTestFilefs       r   $_returnWhoisPythonFromStaticTestData6WhoisCliInterface._returnWhoisPythonFromStaticTestData   sx    ))/0#9Adkk]&977>>.))n40Avvxh7 10 !$$	 10s   B		
Bc                 x    SR                  U R                  R                  5      U l        U R	                  5         g )NrF   )r;   r    dListrH   r   r   s    r   initWhoisCliInterface.init   s&    88DGGMM2++-r   c                    [         R                  " S5      (       a  U R                  5       $ U R                  R                  (       a*  [
        R                  " U R                  R                  5        U R                  5       $ )Nrn   )r(   rr   rx   r   	slow_downtimesleeprk   r   s    r   !executeWhoisQueryOrReturnFileData3WhoisCliInterface.executeWhoisQueryOrReturnFileData   sW    
 99())<<>> 77JJtww(()((**r   )r   r   r    rH   r   rT   rR   )r   N)__name__
__module____qualname____firstlineno__r   r   r   r"   r3   rX   rA   r   rI   rN   rY   rk   rx   r|   r   __static_attributes__ r   r   r   r      s    4 
"	4# 	4$ 	4Cs)C 
cC"0S	 0$.s .$0c 0@	%c 	%.+3 +r   r   )r,   r   r(   r   r   loggingtypingr   
exceptionsr   r   context.parameterContextr   context.dataContextr   	getLoggerr   r*   basicConfigr9   getr   r   r   r   <module>r      sf      
   
 7 ,!   "**..V< =]+ ]+r   