1
2
3
4
5
6 import socket
7 import sys
8
9 CHUNK_SIZE = 16 * 1024
10 MAX_BODY = 1024 * 112
11 DNS_TIMEOUT = 60
12
13 _allowed_ssl_args = ('keyfile', 'certfile', 'server_side',
14 'cert_reqs', 'ssl_version', 'ca_certs',
15 'do_handshake_on_connect', 'suppress_ragged_eofs')
16
18 for arg in ssl_args:
19 if arg not in _allowed_ssl_args:
20 raise TypeError('connect() got an unexpected keyword argument %r' % arg)
21
23 if not skt or not hasattr(skt, "close"): return
24 try:
25 skt.close()
26 except socket.error:
27 pass
28
30 chunk = "".join(("%X\r\n" % len(data), data, "\r\n"))
31 sock.sendall(chunk)
32
33 -def send(sock, data, chunked=False):
37
39 timeout = sock.gettimeout()
40 if timeout != 0.0:
41 try:
42 sock.setblocking(0)
43 return send(sock, data, chunked)
44 finally:
45 sock.setblocking(1)
46 else:
47 return send(sock, data, chunked)
48
50 for line in list(lines):
51 send(sock, line, chunked)
52
54 if hasattr(data, 'seek'):
55 data.seek(0)
56
57 while True:
58 binarydata = data.read(CHUNK_SIZE)
59 if binarydata == '': break
60 send(sock, binarydata, chunked)
61
62
63 if 'java' in sys.platform:
64 from javax.net.ssl import TrustManager, X509TrustManager
65 from jarray import array
66 from javax.net.ssl import SSLContext
68 '''Define a custom TrustManager which will blindly accept all certificates'''
69
72
75
78
79
80 trust_managers = array([TrustAllX509TrustManager()], TrustManager)
81 TRUST_ALL_CONTEXT = SSLContext.getInstance("SSL")
82 TRUST_ALL_CONTEXT.init(None, trust_managers, None)
83
84
85 DEFAULT_CONTEXT = SSLContext.getDefault()
86
88 '''Decorator function that will make it so the context of the decorated method
89 will run with our TrustManager that accepts all certificates'''
90 def wrapped(*args, **kwargs):
91
92 if 'java' in sys.platform:
93 from javax.net.ssl import SSLContext
94 SSLContext.setDefault(TRUST_ALL_CONTEXT)
95 try:
96 res = f(*args, **kwargs)
97 return res
98 finally:
99 SSLContext.setDefault(DEFAULT_CONTEXT)
100 else:
101 return f(*args, **kwargs)
102 return wrapped
103