python-socks 2.4.4__py3-none-any.whl → 2.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,6 +65,28 @@ class Socks5AsyncConnector(AsyncConnector):
65
65
  data = conn.send(request)
66
66
  await stream.write_all(data)
67
67
 
68
- data = await stream.read()
68
+ data = await self._read_reply(stream)
69
69
  reply: socks5.ConnectReply = conn.receive(data)
70
70
  return reply
71
+
72
+ # noinspection PyMethodMayBeStatic
73
+ async def _read_reply(self, stream: AsyncSocketStream) -> bytes:
74
+ data = await stream.read_exact(4)
75
+ if data[0] != socks5.SOCKS_VER:
76
+ return data
77
+ if data[1] != socks5.ReplyCode.SUCCEEDED:
78
+ return data
79
+ if data[2] != socks5.RSV:
80
+ return data
81
+
82
+ addr_type = data[3]
83
+
84
+ if addr_type == socks5.AddressType.IPV4:
85
+ data += await stream.read_exact(6)
86
+ elif addr_type == socks5.AddressType.IPV6:
87
+ data += await stream.read_exact(18)
88
+ elif addr_type == socks5.AddressType.DOMAIN:
89
+ host_len, *_ = await stream.read_exact(1)
90
+ data += await stream.read_exact(host_len + 2)
91
+
92
+ return data
@@ -56,6 +56,28 @@ class Socks5SyncConnector(SyncConnector):
56
56
  data = conn.send(request)
57
57
  stream.write_all(data)
58
58
 
59
- data = stream.read()
59
+ data = self._read_reply(stream)
60
60
  reply: socks5.ConnectReply = conn.receive(data)
61
61
  return reply
62
+
63
+ # noinspection PyMethodMayBeStatic
64
+ def _read_reply(self, stream: SyncSocketStream) -> bytes:
65
+ data = stream.read_exact(4)
66
+ if data[0] != socks5.SOCKS_VER:
67
+ return data
68
+ if data[1] != socks5.ReplyCode.SUCCEEDED:
69
+ return data
70
+ if data[2] != socks5.RSV:
71
+ return data
72
+
73
+ addr_type = data[3]
74
+
75
+ if addr_type == socks5.AddressType.IPV4:
76
+ data += stream.read_exact(6)
77
+ elif addr_type == socks5.AddressType.IPV6:
78
+ data += stream.read_exact(18)
79
+ elif addr_type == socks5.AddressType.DOMAIN:
80
+ host_len, *_ = stream.read_exact(1)
81
+ data += stream.read_exact(host_len + 2)
82
+
83
+ return data
python_socks/_version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  __title__ = 'python-socks'
2
- __version__ = '2.4.4'
2
+ __version__ = '2.5.1'
@@ -1,29 +1,28 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-socks
3
- Version: 2.4.4
3
+ Version: 2.5.1
4
4
  Summary: Core proxy (SOCKS4, SOCKS5, HTTP tunneling) functionality for Python
5
5
  Home-page: https://github.com/romis2012/python-socks
6
6
  Author: Roman Snegirev
7
7
  Author-email: snegiryev@gmail.com
8
8
  License: Apache 2
9
9
  Keywords: socks socks5 socks4 http proxy asyncio trio curio anyio
10
- Platform: UNKNOWN
11
10
  Description-Content-Type: text/markdown
12
11
  License-File: LICENSE.txt
13
12
  Provides-Extra: anyio
14
- Requires-Dist: anyio (<5.0.0,>=3.3.4) ; extra == 'anyio'
13
+ Requires-Dist: anyio<5.0.0,>=3.3.4; extra == "anyio"
15
14
  Provides-Extra: asyncio
16
- Requires-Dist: async-timeout (>=3.0.1) ; extra == 'asyncio'
15
+ Requires-Dist: async-timeout>=3.0.1; extra == "asyncio"
17
16
  Provides-Extra: curio
18
- Requires-Dist: curio (>=1.4) ; extra == 'curio'
17
+ Requires-Dist: curio>=1.4; extra == "curio"
19
18
  Provides-Extra: trio
20
- Requires-Dist: trio (>=0.16.0) ; extra == 'trio'
19
+ Requires-Dist: trio>=0.16.0; extra == "trio"
21
20
 
22
21
  ## python-socks
23
22
 
24
- [![Build Status](https://api.travis-ci.com/romis2012/python-socks.svg?branch=master)](https://travis-ci.com/github/romis2012/python-socks)
25
- [![Coverage Status](https://coveralls.io/repos/github/romis2012/python-socks/badge.svg?branch=master&_=q)](https://coveralls.io/github/romis2012/python-socks?branch=master)
26
- [![PyPI version](https://badge.fury.io/py/python-socks.svg)](https://badge.fury.io/py/python-socks)
23
+ [![CI](https://github.com/romis2012/python-socks/actions/workflows/ci.yml/badge.svg)](https://github.com/romis2012/python-socks/actions/workflows/ci.yml)
24
+ [![Coverage Status](https://codecov.io/gh/romis2012/python-socks/branch/master/graph/badge.svg)](https://codecov.io/gh/romis2012/python-socks)
25
+ [![PyPI version](https://badge.fury.io/py/python-socks.svg)](https://pypi.python.org/pypi/python-socks)
27
26
  <!--
28
27
  [![Downloads](https://pepy.tech/badge/python-socks/month)](https://pepy.tech/project/python-socks)
29
28
  -->
@@ -272,5 +271,3 @@ manager = ProxyPoolManager('socks5://user:password@127.0.0.1:1080')
272
271
  response = manager.request('GET', 'https://check-host.net/ip')
273
272
  print(response.data)
274
273
  ```
275
-
276
-
@@ -3,7 +3,7 @@ python_socks/_abc.py,sha256=_kK5iWNYpHuWRxhK-e6GQdVgRYxcioKIGnSYy2QzAK8,1422
3
3
  python_socks/_errors.py,sha256=l2j03Zna_EJhNqF3yApTYuQ147BcY0k74pkT4HAlRp4,245
4
4
  python_socks/_helpers.py,sha256=WTqOACKhJ80bCLWqeoXHPKp6YWCg66vLtai5AM7HJNY,2517
5
5
  python_socks/_types.py,sha256=dgQifNf2mIwdKoX7YmI91H_lUsW9-Y0ZkZGlIV6_NNw,90
6
- python_socks/_version.py,sha256=Pv5AAIV-qZ0R6Jf9jjO-CwEOcWQRrk_YLWYJ4TyyKbI,49
6
+ python_socks/_version.py,sha256=waVCGDO0xm0lsHLCWwdAO5RLbVjIh1slonwdS2KQAuA,49
7
7
  python_socks/_connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  python_socks/_connectors/abc.py,sha256=1fgjPiv64UAMiJDsJXYr-GofPGhuHTwTzaodQfrzf7Q,397
9
9
  python_socks/_connectors/factory_async.py,sha256=y9JGVk-ub9FMuQlIp2s5y95F7JMvA2fEdWGRKLUpRXc,997
@@ -12,8 +12,8 @@ python_socks/_connectors/http_async.py,sha256=sCkEporEkm5yr5S08JjzX9VHtXjEsIqrfI
12
12
  python_socks/_connectors/http_sync.py,sha256=BecdB5J8fIAMkNCgTgJqrdF82uIwBVjzoZmefKear34,878
13
13
  python_socks/_connectors/socks4_async.py,sha256=dlQ-AwJ9gNBWMth-E4PxxfW17oWBF2Blxp71HeO80gM,1131
14
14
  python_socks/_connectors/socks4_sync.py,sha256=m0KixzO5jQ6qHHtA5Muq7HcPjTdYPLM4AlTmWZr3SmY,1100
15
- python_socks/_connectors/socks5_async.py,sha256=gZRg3NI-kLLVngcYe0QcG5-xiJzMmBeDstSsScD5nrU,1934
16
- python_socks/_connectors/socks5_sync.py,sha256=myRtE1doIe5_xhuavsRM0BqiKbvoKKrcCckd-lEnnmY,1750
15
+ python_socks/_connectors/socks5_async.py,sha256=A4ZXY-znAaVGpeKNyRdbiW0V3-EgHODNMneDJ-LlEKI,2703
16
+ python_socks/_connectors/socks5_sync.py,sha256=kxT4bQgbsY32BnlnAJFhHtqRz7LnC2ncG7W_Py1pfQo,2482
17
17
  python_socks/_protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  python_socks/_protocols/errors.py,sha256=4XqU4AqgrWaedmUVGMjd6TvQKXv3mV0H76s5lf8aazY,150
19
19
  python_socks/_protocols/http.py,sha256=h6uLgiNbqrd8HUk-nX5lOnCoYRjrZWaQ2CjbOB6QDHI,4451
@@ -69,8 +69,8 @@ python_socks/sync/v2/_connect.py,sha256=eqMKsH2wVnGZhV24_t9QfsNhjbnKtnipj7wzSNct
69
69
  python_socks/sync/v2/_proxy.py,sha256=-38o3QxE_FfJjQ88SK2YqBlWQgeNQQfYkGsFtYHWq94,3400
70
70
  python_socks/sync/v2/_ssl_transport.py,sha256=MURwzvKu-S2-MI7o8KaZTvvBFOiiKIu5R0ERVIMvERE,6088
71
71
  python_socks/sync/v2/_stream.py,sha256=Jq89x1xmIX3L_v-WyS1nRTItjTnYTcDcfDblsANxfJI,1544
72
- python_socks-2.4.4.dist-info/LICENSE.txt,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
73
- python_socks-2.4.4.dist-info/METADATA,sha256=iOMqV2-rIzzGU9V2CgYn2I2RN4mxjiFT0iJTEqlKdPk,7057
74
- python_socks-2.4.4.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
75
- python_socks-2.4.4.dist-info/top_level.txt,sha256=7qyDAVwjTZ0sIYG1iatFbE-SLpWhONjaoMQ0Ib2DX0Q,13
76
- python_socks-2.4.4.dist-info/RECORD,,
72
+ python_socks-2.5.1.dist-info/LICENSE.txt,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
73
+ python_socks-2.5.1.dist-info/METADATA,sha256=ihKmlCJb6PxXQWRcIPjiYIJBuYUq5wuSp8LxAJzzwEk,7010
74
+ python_socks-2.5.1.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
75
+ python_socks-2.5.1.dist-info/top_level.txt,sha256=7qyDAVwjTZ0sIYG1iatFbE-SLpWhONjaoMQ0Ib2DX0Q,13
76
+ python_socks-2.5.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.36.2)
2
+ Generator: setuptools (73.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5