File: //usr/lib/python3/dist-packages/twisted/test/__pycache__/test_socks.cpython-38.pyc
U
W[JE � @ s� d Z ddlZddlZddlmZmZ ddlmZ ddlm Z ddl
mZ ddlm
Z
ddlmZ G d d
� d
e
j�ZG dd� d�ZG d
d� dej�ZG dd� dej�ZG dd� dej�ZdS )z_
Tests for L{twisted.protocol.socks}, an implementation of the SOCKSv4 and
SOCKSv4a protocols.
� N)�defer�address)�DNSLookupError)� iterbytes)�socks)�
proto_helpers)�unittestc @ s, e Zd ZdZdZdd� Zdd� Zdd� ZdS ) �StringTCPTransportFNc C s | j S )N)�peer��self� r
�9/usr/lib/python3/dist-packages/twisted/test/test_socks.py�getPeer s zStringTCPTransport.getPeerc C s t �ddd�S )N�TCPz2.3.4.5�* )r �IPv4Addressr r
r
r �getHost s zStringTCPTransport.getHostc C s
d| _ d S )NT)�stringTCPTransport_closingr r
r
r �loseConnection s z!StringTCPTransport.loseConnection)�__name__�
__module__�__qualname__r r
r r r r
r
r
r r s
r c @ s e Zd ZdZdd� Zdd� ZdS )�FakeResolverReactorzP
Bare-bones reactor with deterministic behavior for the resolve method.
c C s
|| _ dS )z�
@type names: L{dict} containing L{str} keys and L{str} values.
@param names: A hostname to IP address mapping. The IP addresses are
stringified dotted quads.
N)�names)r r r
r
r �__init__( s zFakeResolverReactor.__init__c
C sD zt �| j| �W S tk
r> t �td|�d� �� Y S X dS )zQ
Resolve a hostname by looking it up in the C{names} dictionary.
z"FakeResolverReactor couldn't find zutf-8N)r �succeedr �KeyErrorZfailr �decode)r Zhostnamer
r
r �resolve1 s ��zFakeResolverReactor.resolveN)r r r �__doc__r r r
r
r
r r $ s r c @ s$ e Zd ZdZdZdd� Zdd� ZdS )�
SOCKSv4DriverNc G s: ||� }t � |_t�d||�|j_|�� || _t�|�S )Nr ) r � transportr r r
�connectionMade�driver_outgoingr r )r Zhost�port�klass�args�protor
r
r �connectClassE s zSOCKSv4Driver.connectClassc G s( ||� }|| _ |dkrd}t�d|f�S )Nr �� �6.7.8.9)�
driver_listenr r )r r% r&