def __init__(self, client, proxy_infos):
        assert(proxy_infos.type in ('http', 'https')), "HTTPConnectProxy expects an http(s) proxy description"
        assert(client.domain == AF_INET), "HTTP CONNECT only handles INET address family"
        assert(client.type == SOCK_STREAM), "HTTP CONNECT only handles SOCK_STREAM"
        assert(client.status == IoStatus.CLOSED), "HTTPConnectProxy expects a closed client"
        AbstractProxy.__init__(self, client, proxy_infos)

        self._transport = TCPClient(self._proxy.host, self._proxy.port)
        self._transport.connect("notify::status", self._on_transport_status)
        self._transport.connect("error", self._on_transport_error)
        self._http_parser = HTTPParser(self._transport)
        self._http_parser.connect("received", self._on_proxy_response)
    def _post_open(self):
        AbstractProxy._post_open(self)
        proxy_protocol  = 'CONNECT %s:%s HTTP/1.1\r\n' % (self.host, self.port)
        proxy_protocol += 'Proxy-Connection: Keep-Alive\r\n'
        proxy_protocol += 'Pragma: no-cache\r\n'
        proxy_protocol += 'User-Agent: %s/%s\r\n' % (GNet.NAME, GNet.VERSION)
        if self._proxy.user:
            auth = base64.encodestring(self._proxy.user + ':' + self._proxy.password).strip()
            proxy_protocol += 'Proxy-authorization: Basic ' + auth + '\r\n'
        proxy_protocol += '\r\n'

        self._http_parser.enable()
        self._transport.send(proxy_protocol)
Exemple #3
0
    def _post_open(self):
        AbstractProxy._post_open(self)
        proxy_protocol = 'CONNECT %s:%s HTTP/1.1\r\n' % (self.host, self.port)
        proxy_protocol += 'Proxy-Connection: Keep-Alive\r\n'
        proxy_protocol += 'Pragma: no-cache\r\n'
        proxy_protocol += 'User-Agent: %s/%s\r\n' % (GNet.NAME, GNet.VERSION)
        if self._proxy.user:
            auth = base64.encodestring(self._proxy.user + ':' +
                                       self._proxy.password).strip()
            proxy_protocol += 'Proxy-authorization: Basic ' + auth + '\r\n'
        proxy_protocol += '\r\n'

        self._http_parser.enable()
        self._transport.send(proxy_protocol)
Exemple #4
0
    def _post_open(self):
        AbstractProxy._post_open(self)
        user = self._proxy.user

        proxy_protocol  = struct.pack('!BBH', SOCKS4Proxy.PROTOCOL_VERSION,
                SOCKS4Proxy.CONNECT_COMMAND, self.port)

        for part in self.host.split('.'):
           proxy_protocol += struct.pack('B', int(part))

        proxy_protocol += user
        proxy_protocol += struct.pack('B', 0)

        self._delimiter_parser.enable()
        self._transport.send(proxy_protocol)
Exemple #5
0
    def _post_open(self):
        AbstractProxy._post_open(self)
        host = self._client.get_property("host")
        port = self._client.get_property("port")
        user = self._proxy.user

        proxy_protocol = struct.pack('!BBH', SOCKS4Proxy.PROTOCOL_VERSION,
                                     SOCKS4Proxy.CONNECT_COMMAND, port)

        for part in host.split('.'):
            proxy_protocol += struct.pack('B', int(part))

        proxy_protocol += user
        proxy_protocol += struct.pack('B', 0)

        self._transport.send(proxy_protocol)
Exemple #6
0
    def _post_open(self):
        AbstractProxy._post_open(self)
        host = self._client.get_property("host")
        port = self._client.get_property("port")
        user = self._proxy.user

        proxy_protocol  = struct.pack('!BBH', SOCKS4Proxy.PROTOCOL_VERSION,
                SOCKS4Proxy.CONNECT_COMMAND, port)

        for part in host.split('.'):
           proxy_protocol += struct.pack('B', int(part))

        proxy_protocol += user
        proxy_protocol += struct.pack('B', 0)

        self._transport.send(proxy_protocol)
Exemple #7
0
    def __init__(self, client, proxy_infos):
        assert (proxy_infos.type in (
            'http',
            'https')), "HTTPConnectProxy expects an http(s) proxy description"
        assert (client.domain == AF_INET
                ), "HTTP CONNECT only handles INET address family"
        assert (client.type == SOCK_STREAM
                ), "HTTP CONNECT only handles SOCK_STREAM"
        assert (client.status == IoStatus.CLOSED
                ), "HTTPConnectProxy expects a closed client"
        AbstractProxy.__init__(self, client, proxy_infos)

        self._transport = TCPClient(self._proxy.host, self._proxy.port)
        self._transport.connect("notify::status", self._on_transport_status)
        self._transport.connect("error", self._on_transport_error)
        self._http_parser = HTTPParser(self._transport)
        self._http_parser.connect("received", self._on_proxy_response)
Exemple #8
0
    def __init__(self, client, proxy_infos):
        assert(proxy_infos.type == 'socks4'), \
                "SOCKS4Proxy expects a socks4 proxy description"
        # TODO : implement version 4a of the protocol to allow proxy-side name resolution
        assert(client.domain == AF_INET), \
                "SOCKS4 CONNECT only handles INET address family"
        assert(client.type == SOCK_STREAM), \
                "SOCKS4 CONNECT only handles SOCK_STREAM"
        assert(client.status == IoStatus.CLOSED), \
                "SOCKS4Proxy expects a closed client"
        AbstractProxy.__init__(self, client, proxy_infos)

        self._transport = TCPClient(self._proxy.host, self._proxy.port)
        self._transport.connect("notify::status", self._on_transport_status)
        self._transport.connect("error", self._on_transport_error)

        self._delimiter_parser = DelimiterParser(self._transport)
        self._delimiter_parser.delimiter = 8
        self._delimiter_parser.connect("received", self._on_proxy_response)
Exemple #9
0
    def __init__(self, client, proxy):
        assert(proxy.type in ('socks', 'socks5')), \
                "SOCKS5Proxy expects a socks5 proxy description"
        assert(client.domain == AF_INET), \
                "SOCKS5 CONNECT only handles INET address family"
        assert(client.type == SOCK_STREAM), \
                "SOCKS5 CONNECT only handles SOCK_STREAM"
        assert(client.status == IoStatus.CLOSED), \
                "SOCKS5Proxy expects a closed client"
        AbstractProxy.__init__(self, client, proxy)

        self._transport = TCPClient(self._proxy.host, self._proxy.port)
        self._transport.connect("notify::status", self._on_transport_status)
        self._transport.connect("error", self._on_transport_error)

        self._delimiter_parser = DelimiterParser(self._transport)
        self._delimiter_parser.connect("received", self._on_proxy_response)

        self._state = None
        self._must_auth = False
Exemple #10
0
 def _pre_open(self, io_object=None):
     AbstractProxy._pre_open(self)
Exemple #11
0
 def _post_open(self):
     AbstractProxy._post_open(self)
     self._delimiter_parser.enable()
     self._send_nego_msg()