
    !h"                    2   S r SSKJr  SSKrSSKrSSKrSSKrSSKJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \(       a  SSKJr  SSKJr  SSKJr  SSKJr  \R@                  " \!5      r"\#" 5       r$ " S S\RJ                  5      r&g)zU
Scrapy Telnet Console extension

See documentation in docs/topics/telnetconsole.rst
    )annotationsN)TYPE_CHECKINGAny)protocol)signals)NotConfigured)defers)print_engine_status)
listen_tcp)print_live_refs)telnet)Port)Self)Crawlerc                  Z    \ rS rSrS
S jr\SS j5       rSS jrSS jrSS jr	SS jr
Srg	)TelnetConsole)   c                6   UR                   R                  S5      (       d  [        eXl        SU l        UR                   R                  S5       Vs/ s H  n[        U5      PM     snU l        UR                   S   U l        UR                   S   U l	        UR                   S   U l
        U R                  (       d^  [        R                  " [        R                  " S5      5      R                  S5      U l
        [         R#                  S	U R                  5        U R                  R$                  R'                  U R(                  [$        R*                  5        U R                  R$                  R'                  U R,                  [$        R.                  5        g s  snf )
NTELNETCONSOLE_ENABLEDFTELNETCONSOLE_PORTTELNETCONSOLE_HOSTTELNETCONSOLE_USERNAMETELNETCONSOLE_PASSWORD   utf8zTelnet Password: %s)settingsgetboolr   crawlernoisygetlistint	portrangehostusernamepasswordbinasciihexlifyosurandomdecodeloggerinfor   connectstart_listeningengine_startedstop_listeningengine_stopped)selfr   xs      _/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/scrapy/extensions/telnet.py__init__TelnetConsole.__init__*   s)   ''(?@@ ' 
#,,445IJ%
JqCFJ%
 !))*>?	$--.FG$--.FG}}$,,RZZ];BB6JDMKK-t}}=$$T%9%97;Q;QR$$T%8%8':P:PQ%
s   Fc                    U " U5      $ N )clsr   s     r4   from_crawlerTelnetConsole.from_crawler>   s    7|    c                    [        U R                  U R                  U 5      U l        U R                  R	                  5       n[
        R                  SUR                  UR                  S.SU R                  0S9  g )Nz-Telnet console listening on %(host)s:%(port)d)r#   portr   )extra)r   r"   r#   r?   getHostr+   r,   r   )r2   hs     r4   r.   TelnetConsole.start_listeningB   s\    $T^^TYYE	II;VVQVV,dll+ 	 	
r=   c                8    U R                   R                  5         g r8   )r?   stopListeningr2   s    r4   r0   TelnetConsole.stop_listeningK   s    		!r=   c                   ^ ^^^ SSK JmJm  SSKJm   " UUU U4S jS5      nTR
                  " TR                  U" 5       5      $ )Nr   )manholer   )insultsc                  6   > \ rS rSrSr\U UUU4S j5       rSrg)&TelnetConsole.protocol.<locals>.PortalS   zAn implementation of IPortalc                H  > UR                   TR                   R                  S5      :X  a/  UR                  TR                  R                  S5      5      (       d  [	        S5      eTR
                  " TR                  TR                  TR                  5       5      nUS   US 4$ )Nr   zInvalid credentialsr   c                     g r8   r9   r9   r=   r4   <lambda>>TelnetConsole.protocol.<locals>.Portal.login.<locals>.<lambda>a   s    r=   )	r$   encodecheckPasswordr%   
ValueErrorTelnetBootstrapProtocolServerProtocolManhole_get_telnet_vars)	self_credentialsmind
interfacesr   rJ   rI   r2   r   s	        r4   login,TelnetConsole.protocol.<locals>.Portal.loginV   s      ((DMM,@,@,HH#11$--2F2Fv2NOO$%:;;!99**GOOT=R=R=T #1x>>r=   r9   N)__name__
__module____qualname____firstlineno____doc__r	   r]   __static_attributes__)rJ   rI   r2   r   s   r4   PortalrL   S   s    .
? 
?r=   re   )twisted.conchrI   r   twisted.conch.insultsrJ   TelnetTransportAuthenticatingTelnetProtocol)r2   re   rJ   rI   r   s   ` @@@r4   r   TelnetConsole.protocolN   s0    11	? 	?  %%f&I&I68TTr=   c                  ^  T R                   R                  (       d   eT R                   R                  T R                   R                  R                  T R                   T R                   R                  T R                   R                  T R                   R
                  U 4S j[        R                  [        SS.
nT R                   R                  R                  [        US9  U$ )Nc                 B   > [        T R                  R                  5      $ r8   )r
   r   enginerF   s   r4   rP   0TelnetConsole._get_telnet_vars.<locals>.<lambda>o   s    .t||/B/BCr=   zmThis is Scrapy telnet console. For more info see: https://docs.scrapy.org/en/latest/topics/telnetconsole.html)
rm   spiderr   
extensionsstatsr   estpprefshelp)telnet_vars)r   rm   ro   rp   rq   r   pprintr   r   send_catch_logupdate_telnet_vars)r2   rv   s   ` r4   rX   TelnetConsole._get_telnet_varse   s    ||""""ll))ll))00||,,11\\''--C$J'
 	++,>K+Xr=   )r   r#   r   r%   r?   r"   r$   N)r   r   )r   r   returnr   )r{   None)r{   ztelnet.TelnetTransport)r{   zdict[str, Any])r_   r`   ra   rb   r5   classmethodr;   r.   r0   r   rX   rd   r9   r=   r4   r   r   )   s1    R(  
"U.r=   r   )'rc   
__future__r   r&   loggingr(   rw   typingr   r   twisted.internetr   scrapyr   scrapy.exceptionsr   scrapy.utils.decoratorsr	   scrapy.utils.enginer
   scrapy.utils.reactorr   scrapy.utils.trackrefr   rf   r   twisted.internet.tcpr   typing_extensionsr   scrapy.crawlerr   	getLoggerr_   r+   objectry   ServerFactoryr   r9   r=   r4   <module>r      st    #   	  % %  + * 3 + 1$) '& 
		8	$ X MH** Mr=   