§
    ÈtºfÙ  ã                   óÐ   — d Z ddlZ e edd¦  «        ¦  «         e eej        d¦  «        ¦  «        z
  Z e edd¦  «        ¦  «        Z G d„ d¦  «        Z G d„ d	¦  «        Z	dS )
zF
Helpers for URI and method injection tests.

@see: U{CVE-2019-12387}
é    Né€   Úasciié   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚMethodInjectionTestsMixina9  
    A mixin that runs HTTP method injection tests.  Define
    L{MethodInjectionTestsMixin.attemptRequestWithMaliciousMethod} in
    a L{twisted.trial.unittest.SynchronousTestCase} subclass to test
    how HTTP client code behaves when presented with malicious HTTP
    methods.

    @see: U{CVE-2019-12387}
    c                 ó   — t          ¦   «         ‚)z÷
        Attempt to send a request with the given method.  This should
        synchronously raise a L{ValueError} if either is invalid.

        @param method: the method (e.g. C{GET })

        @param uri: the URI

        @type method:
        ©ÚNotImplementedError©ÚselfÚmethods     ú`/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/web/test/injectionhelpers.pyÚ!attemptRequestWithMaliciousMethodz;MethodInjectionTestsMixin.attemptRequestWithMaliciousMethod   s   € õ "Ñ#Ô#Ð#ó    c                 óè   — |                       t          ¦  «        5 }d}|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t	          |j        ¦  «        d¦  «         dS )zƒ
        Issuing a request with a method that contains a carriage
        return and line feed fails with a L{ValueError}.
        s   GET
X-Injected-Header: valueNú^Invalid method)ÚassertRaisesÚ
ValueErrorr   ÚassertRegexÚstrÚ	exception)r   Úcmr   s      r   Útest_methodWithCLRFRejectedz5MethodInjectionTestsMixin.test_methodWithCLRFRejected(   s¬   € ð
 ×Ò�zÑ*Ô*ð 	;¨bØ7ˆFØ×2Ò2°6Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	×Ò�˜Rœ\Ñ*Ô*Ð,=Ñ>Ô>Ð>Ð>Ð>ó   ›?¿AÁAc                 ó   — t           D ]…}dt          |g¦  «        fz  }|                      t          ¦  «        5 }|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         Œ†dS )z€
        Issuing a request with a method that contains unprintable
        ASCII characters fails with a L{ValueError}.
        ó   GET%sNr   )ÚUNPRINTABLE_ASCIIÚ	bytearrayr   r   r   r   r   r   ©r   Úcr   r   s       r   Ú'test_methodWithUnprintableASCIIRejectedzAMethodInjectionTestsMixin.test_methodWithUnprintableASCIIRejected2   sÔ   € õ
 #ð 	Cð 	CˆAØ¥¨A¨3¡¤Ð 1Ñ1ˆFØ×"Ò"¥:Ñ.Ô.ð ?°"Ø×6Ò6°vÑ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?à×Ò�S ¤Ñ.Ô.Ð0AÑBÔBÐBÐBð		Cð 	Có   ¸AÁA	Á!A	c                 ó   — t           D ]…}dt          |g¦  «        fz  }|                      t          ¦  «        5 }|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         Œ†dS )zx
        Issuing a request with a method that contains non-ASCII
        characters fails with a L{ValueError}.
        r   Nr   )ÚNONASCIIr   r   r   r   r   r   r   r   s       r   Útest_methodWithNonASCIIRejectedz9MethodInjectionTestsMixin.test_methodWithNonASCIIRejected=   sÔ   € õ
 ð 	Cð 	CˆAØ¥¨A¨3¡¤Ð 1Ñ1ˆFØ×"Ò"¥:Ñ.Ô.ð ?°"Ø×6Ò6°vÑ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?à×Ò�S ¤Ñ.Ô.Ð0AÑBÔBÐBÐBð		Cð 	Cr"   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r!   r%   © r   r   r   r      sb   € € € € € ðð ð$ð $ð $ð?ð ?ð ?ð	Cð 	Cð 	Cð	Cð 	Cð 	Cð 	Cð 	Cr   r   c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚURIInjectionTestsMixina  
    A mixin that runs HTTP URI injection tests.  Define
    L{MethodInjectionTestsMixin.attemptRequestWithMaliciousURI} in a
    L{twisted.trial.unittest.SynchronousTestCase} subclass to test how
    HTTP client code behaves when presented with malicious HTTP
    URIs.
    c                 ó   — t          ¦   «         ‚)zÃ
        Attempt to send a request with the given URI.  This should
        synchronously raise a L{ValueError} if either is invalid.

        @param uri: the URI.

        @type method:
        r	   r   s     r   ÚattemptRequestWithMaliciousURIz5URIInjectionTestsMixin.attemptRequestWithMaliciousURIR   s   € õ "Ñ#Ô#Ð#r   c                 óè   — |                       t          ¦  «        5 }d}|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t	          |j        ¦  «        d¦  «         dS )z†
        Issuing a request with a URI whose host contains a carriage
        return and line feed fails with a L{ValueError}.
        s   http://twisted
.invalid/pathNú^Invalid URI©r   r   r.   r   r   r   ©r   r   Úuris      r   Útest_hostWithCRLFRejectedz0URIInjectionTestsMixin.test_hostWithCRLFRejected]   ó«   € ð
 ×Ò�zÑ*Ô*ð 	5¨bØ4ˆCØ×/Ò/°Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	×Ò�˜Rœ\Ñ*Ô*¨NÑ;Ô;Ð;Ð;Ð;r   c                 ó   — t           D ]…}dt          |g¦  «        fz  }|                      t          ¦  «        5 }|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         Œ†dS )zƒ
        Issuing a request with a URI whose host contains unprintable
        ASCII characters fails with a L{ValueError}.
        ó   http://twisted%s.invalid/OKNr0   ©r   r   r   r   r.   r   r   r   ©r   r    r3   r   s       r   Ú)test_hostWithWithUnprintableASCIIRejectedz@URIInjectionTestsMixin.test_hostWithWithUnprintableASCIIRejectedg   óÓ   € õ
 #ð 	@ð 	@ˆAØ0µI¸q¸c±N´NÐ3DÑDˆCØ×"Ò"¥:Ñ.Ô.ð 9°"Ø×3Ò3°CÑ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9à×Ò�S ¤Ñ.Ô.°Ñ?Ô?Ð?Ð?ð		@ð 	@r"   c                 ó   — t           D ]…}dt          |g¦  «        fz  }|                      t          ¦  «        5 }|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         Œ†dS )z{
        Issuing a request with a URI whose host contains non-ASCII
        characters fails with a L{ValueError}.
        r7   Nr0   ©r$   r   r   r   r.   r   r   r   r9   s       r   Útest_hostWithNonASCIIRejectedz4URIInjectionTestsMixin.test_hostWithNonASCIIRejectedr   óÓ   € õ
 ð 	@ð 	@ˆAØ0µI¸q¸c±N´NÐ3DÑDˆCØ×"Ò"¥:Ñ.Ô.ð 9°"Ø×3Ò3°CÑ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9à×Ò�S ¤Ñ.Ô.°Ñ?Ô?Ð?Ð?ð		@ð 	@r"   c                 óè   — |                       t          ¦  «        5 }d}|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t	          |j        ¦  «        d¦  «         dS )z†
        Issuing a request with a URI whose path contains a carriage
        return and line feed fails with a L{ValueError}.
        s   http://twisted.invalid/
pathNr0   r1   r2   s      r   Útest_pathWithCRLFRejectedz0URIInjectionTestsMixin.test_pathWithCRLFRejected}   r5   r   c                 ó   — t           D ]…}dt          |g¦  «        fz  }|                      t          ¦  «        5 }|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         Œ†dS )zƒ
        Issuing a request with a URI whose path contains unprintable
        ASCII characters fails with a L{ValueError}.
        ó   http://twisted.invalid/OK%sNr0   r8   r9   s       r   Ú)test_pathWithWithUnprintableASCIIRejectedz@URIInjectionTestsMixin.test_pathWithWithUnprintableASCIIRejected‡   r;   r"   c                 ó   — t           D ]…}dt          |g¦  «        fz  }|                      t          ¦  «        5 }|                      |¦  «         ddd¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         Œ†dS )z{
        Issuing a request with a URI whose path contains non-ASCII
        characters fails with a L{ValueError}.
        rC   Nr0   r=   r9   s       r   Útest_pathWithNonASCIIRejectedz4URIInjectionTestsMixin.test_pathWithNonASCIIRejected’   r?   r"   N)r&   r'   r(   r)   r.   r4   r:   r>   rA   rD   rF   r*   r   r   r,   r,   I   s•   € € € € € ðð ð	$ð 	$ð 	$ð<ð <ð <ð	@ð 	@ð 	@ð	@ð 	@ð 	@ð<ð <ð <ð	@ð 	@ð 	@ð	@ð 	@ð 	@ð 	@ð 	@r   r,   )
r)   ÚstringÚ	frozensetÚranger   Ú	printabler   r$   r   r,   r*   r   r   ú<module>rK      së   ððð ð €€€à�I˜e˜e A s™mœmÑ,Ô,¨y¨yØ€IˆfÔ Ñ(Ô(ñ0ô 0ñ Ð ð ˆ9�U�U˜3 ‘_”_Ñ%Ô%€ð6Cð 6Cð 6Cð 6Cð 6Cñ 6Cô 6Cð 6CðrR@ð R@ð R@ð R@ð R@ñ R@ô R@ð R@ð R@ð R@r   