§
    Ètºf.  ã                   óz  — d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ ddlmZmZ  ed¦  «        Z ed¦  «        Ze�d dlmZmZ  ee¦  «         G d„ d¦  «        ¦   «         Z e€dne€dndZ! G d„ dej"        ¦  «        Z# G d„ dej"        ¦  «        Z$dS )é    )Úimplementer)Ú
IConchUser)ÚAllowAnonymousAccessÚ'InMemoryUsernamePasswordDatabaseDontUse)Ú	AnonymousÚ
IAnonymousÚIUsernamePasswordÚUsernamePassword)ÚLoginDenied)ÚPortal)ÚIReactorProcess)ÚUserDatabase)ÚrequireModule)Úunittesté   )Ú
StubClientÚStubConnectionÚcryptographyztwisted.conch.unixN)ÚUnixConchUserÚUnixSSHRealmc                   ó.   — e Zd ZdZd„ Zdi dddddfd„ZdS )ÚMockProcessSpawnerzC
    An L{IReactorProcess} that logs calls to C{spawnProcess}.
    c                 ó   — g | _         d S )N)Ú_spawnProcessCalls)Úselfs    ú[/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/test/test_unix.pyÚ__init__zMockProcessSpawner.__init__(   s   € Ø"$ˆÔÐÐó    © Nr   c
                 óN   — | j                              |||||||||	dœ	¦  «         dS )zQ
        Log a call to C{spawnProcess}. Do not actually spawn a process.
        )	ÚprocessProtocolÚ
executableÚargsÚenvÚpathÚuidÚgidÚusePTYÚchildFDsN)r   Úappend)
r   r!   r"   r#   r$   r%   r&   r'   r(   r)   s
             r   ÚspawnProcesszMockProcessSpawner.spawnProcess+   sN   € ð 	Ô×&Ò&à#2Ø(ØØØØØØ Ø$ð
ð 
ñ	
ô 	
ð 	
ð 	
ð 	
r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r+   r   r   r   r   r   "   sX   € € € € € ðð ð%ð %ð %ð ØØØØØØð
ð 
ð 
ð 
ð 
ð 
r   r   zCannot run without cryptographyzUnix system requiredc                   ó   — e Zd ZeZdd„ZdS )ÚTestSSHSessionForUnixConchUserÚreturnNc                 óÐ  — t          ¦   «         }d}d}|                     ||¬¦  «         |                      t          d|¦  «         t	          ¦   «         }t          |¦  «        }t          t          ¦   «         ¬¦  «        |_        t           	                    ||¬¦  «        }d}dg}| 
                    ||¦  «         |j        \  }	|                      ||	d	         d
         ¦  «         dS )zn
        C{execCommand} sets the C{HOME} environment variable to the avatar's home
        directory.
        z/made/up/path/Úuser©ÚhomeÚpwd)Ú	transport)ÚreactorNznot-actually-executedr$   ÚHOME)r   ÚaddUserÚpatchÚunixr   r   r   r   ÚconnÚSSHSessionForUnixConchUserÚexecCommandr   ÚassertEqual)
r   ÚuserdbÚhomeDirectoryÚuserNameÚmockReactorÚavatarÚsessionÚprotocolÚcommandÚcalls
             r   ÚtestExecCommandEnvironmentz9TestSSHSessionForUnixConchUser.testExecCommandEnvironmentU   sÛ   € õ
 ‘”ˆØ(ˆØˆØ�Š�x mˆÑ4Ô4Ð4Ø�
Š
•4˜ Ñ'Ô'Ð'Ý(Ñ*Ô*ˆÝ˜xÑ(Ô(ˆÝ$­z©|¬|Ð<Ñ<Ô<ˆŒÝ×1Ò1°&À+Ð1ÑNÔNˆØˆØ*Ð+ˆØ×Ò˜H gÑ.Ô.Ð.ØÔ/‰ˆØ×Ò˜¨¨U¬°FÔ(;Ñ<Ô<Ð<Ð<Ð<r   ©r2   N)r,   r-   r.   Ú
shouldSkipÚskiprK   r   r   r   r1   r1   R   s-   € € € € € Ø€Dð=ð =ð =ð =ð =ð =r   r1   c                   ó&   — e Zd ZdZeZdd„Zdd„ZdS )ÚTestUnixSSHRealmz$
    Tests for L{UnixSSHRealm}.
    r2   Nc                 ó$  — t          ¦   «         }d}|                     d|¬¦  «         |                      t          d|¦  «         t	          d¬¦  «        }t          t          ¦   «         |g¦  «        }t          dd¦  «        }|                     |dt          ¦  «        }|  
                    |¦  «        \  }}}	|                      |t          ¦  «         t          |t          ¦  «        sJ ‚|                      |                     ¦   «         |¦  «         dS )	zt
        L{UnixSSHRealm} is an L{IRealm} whose C{.requestAvatar} method returns
        a L{UnixConchUser}.
        z/testing/home/valuer4   r5   r7   s   password)r4   s   userN)r   r;   r<   r=   r   r   r   r
   Úloginr   ÚsuccessResultOfÚassertIsInstancer   Ú
isinstancerA   Ú
getHomeDir)
r   rB   r6   ÚpwdbÚpÚcredsÚresultÚresultInterfacerF   Úlogouts
             r   Útest_unixSSHRealmz"TestUnixSSHRealm.test_unixSSHRealmq   s÷   € õ
 ‘”ˆØ$ˆØ�Š�v DˆÑ)Ô)Ð)Ø�
Š
•4˜ Ñ'Ô'Ð'Ý6¸KÐHÑHÔHˆÝ•<‘>”> D 6Ñ*Ô*ˆõ
 $4°G¸[Ñ#IÔ#IˆØ—’˜ ¥jÑ1Ô1ˆØ*.×*>Ò*>¸vÑ*FÔ*FÑ'ˆ˜ Ø×Ò˜f¥mÑ4Ô4Ð4Ý˜&¥-Ñ0Ô0Ð0Ð0Ð0Ø×Ò˜×*Ò*Ñ,Ô,¨dÑ3Ô3Ð3Ð3Ð3r   c                 ó,  — t          t          ¦   «         t          ¦   «         g¦  «        }|                     t	          t          ¦   «         ¦  «        dt          ¦  «        }|                      |¦  «        }|                      |j	        t          ¦  «         dS )z?
        L{UnixSSHRealm} will refuse anonymous logins.
        N)r   r   r   rR   r   r   r   ÚfailureResultOfrT   Úvaluer   )r   rX   rZ   ÚloginDenieds       r   Ú"test_unixSSHRefusesAnonymousLoginsz3TestUnixSSHRealm.test_unixSSHRefusesAnonymousLogins‡   st   € õ •<‘>”>Õ$8Ñ$:Ô$:Ð#;Ñ<Ô<ˆØ—’�¥I¡K¤KÑ0Ô0°$½
ÑCÔCˆØ×*Ò*¨6Ñ2Ô2ˆØ×Ò˜kÔ/µÑ=Ô=Ð=Ð=Ð=r   rL   )r,   r-   r.   r/   rM   rN   r]   rb   r   r   r   rP   rP   j   sM   € € € € € ðð ð €Dð4ð 4ð 4ð 4ð,>ð >ð >ð >ð >ð >r   rP   )%Úzope.interfacer   Útwisted.conch.interfacesr   Útwisted.cred.checkersr   r   Útwisted.cred.credentialsr   r   r	   r
   Útwisted.cred.errorr   Útwisted.cred.portalr   Útwisted.internet.interfacesr   Útwisted.python.fakepwdr   Útwisted.python.reflectr   Útwisted.trialr   Útest_sessionr   r   r   r=   Útwisted.conch.unixr   r   r   rM   ÚTestCaser1   rP   r   r   r   ú<module>rp      s  ðð 'Ð &Ð &Ð &Ð &Ð &à /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø &Ð &Ð &Ð &Ð &Ð &Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø /Ð /Ð /Ð /Ð /Ð /Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø "Ð "Ð "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4àˆ}˜^Ñ,Ô,€Ø€}Ð)Ñ*Ô*€àÐØ>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð €ˆ_ÑÔð#
ð #
ð #
ð #
ð #
ñ #
ô #
ñ Ôð#
ðP Ðð &Ð%ð €|ð 
 Ð	à	ð ð=ð =ð =ð =ð = XÔ%6ñ =ô =ð =ð0$>ð $>ð $>ð $>ð $>�xÔ(ñ $>ô $>ð $>ð $>ð $>r   