"�@Wa � @ s� d Z d d l Z y d d l Z d d l Z Wn0 e k r` d d l j Z d d l j Z Yn Xd d l Z d d � Z Gd d � d e j � Z Gd d � d e j � Z Gd d � d e j e j � Z e d k r~d d l Z y e e j d � Z Wn e e f k rd Z Yn Xe j e e j d e � � Z e d e j d � j � j � � e d e j d � j � j � � d S)z� SocksiPy + urllib2 handler version: 0.3 author: e<e@tr0ll.in> This module provides a Handler which you can use with urllib2 to allow it to tunnel your connection through a socks.sockssocket socket, with out monkey patching the original socket... � Nc C s | j � } | j | � | S)N)�copy�update)�a�b�d� r �/sockshandler.py� merge_dict s r c @ s4 e Z d Z d d d d d d � Z d d � Z d S)�SocksiPyConnectionNTc O s5 | | | | | | f | _ t j j | | | � d S)N)� proxyargs�httplib�HTTPConnection�__init__) �self� proxytype� proxyaddr� proxyport�rdns�username�password�args�kwargsr r r r s zSocksiPyConnection.__init__c C sp t j � | _ | j j | j � t | j � t t f k rP | j j | j � | j j | j | j f � d S)N) �socks� socksocket�sock�setproxyr �type�timeout�int�float� settimeout�connect�host�port)r r r r r! s zSocksiPyConnection.connect)�__name__� __module__�__qualname__r r! r r r r r s r c @ s4 e Z d Z d d d d d d � Z d d � Z d S)�SocksiPyConnectionSNTc O s5 | | | | | | f | _ t j j | | | � d S)N)r r �HTTPSConnectionr ) r r r r r r r r r r r r r '