python-socks 2.4.4__py3-none-any.whl → 2.5.0__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.
@@ -3,6 +3,7 @@ import socket
3
3
  from .._abc import AsyncSocketStream, AsyncResolver
4
4
  from .abc import AsyncConnector
5
5
 
6
+ from .._protocols.errors import ReplyError
6
7
  from .._protocols import socks5
7
8
  from .._helpers import is_ip_address
8
9
 
@@ -65,6 +66,15 @@ class Socks5AsyncConnector(AsyncConnector):
65
66
  data = conn.send(request)
66
67
  await stream.write_all(data)
67
68
 
68
- data = await stream.read()
69
+ data = await stream.read_exact(4)
70
+ if data[3] == socks5.AddressType.IPV4:
71
+ data += await stream.read_exact(6)
72
+ elif data[3] == socks5.AddressType.IPV6:
73
+ data += await stream.read_exact(18)
74
+ elif data[3] == socks5.AddressType.DOMAIN:
75
+ data += await stream.read_exact(int.from_bytes(await stream.read_exact(1)) + 2)
76
+ else: # pragma: no cover
77
+ raise ReplyError(f'Invalid address type: {data[3]:#02X}')
78
+
69
79
  reply: socks5.ConnectReply = conn.receive(data)
70
80
  return reply
@@ -3,6 +3,7 @@ import socket
3
3
  from .._abc import SyncSocketStream, SyncResolver
4
4
  from .abc import SyncConnector
5
5
 
6
+ from .._protocols.errors import ReplyError
6
7
  from .._protocols import socks5
7
8
  from .._helpers import is_ip_address
8
9
 
@@ -56,6 +57,15 @@ class Socks5SyncConnector(SyncConnector):
56
57
  data = conn.send(request)
57
58
  stream.write_all(data)
58
59
 
59
- data = stream.read()
60
+ data = stream.read_exact(4)
61
+ if data[3] == socks5.AddressType.IPV4:
62
+ data += stream.read_exact(6)
63
+ elif data[3] == socks5.AddressType.IPV6:
64
+ data += stream.read_exact(18)
65
+ elif data[3] == socks5.AddressType.DOMAIN:
66
+ data += stream.read_exact(int.from_bytes(stream.read_exact(1)) + 2)
67
+ else: # pragma: no cover
68
+ raise ReplyError(f'Invalid address type: {data[3]:#02X}')
69
+
60
70
  reply: socks5.ConnectReply = conn.receive(data)
61
71
  return reply
python_socks/_version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  __title__ = 'python-socks'
2
- __version__ = '2.4.4'
2
+ __version__ = '2.5.0'
@@ -1,29 +1,28 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-socks
3
- Version: 2.4.4
3
+ Version: 2.5.0
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=3BvpvFG4zPWrLEEv8Ldtw2rIXRnWsseKynCtjZBLORw,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=XufGdX5NRQridwOmUyMHwL0eNIygG8WHa583SMilFX4,2423
16
+ python_socks/_connectors/socks5_sync.py,sha256=r3Q-u8VjEoxWj0QuW7wuNQjyQzRc0Rcungs-6JcRlM8,2215
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.0.dist-info/LICENSE.txt,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
73
+ python_socks-2.5.0.dist-info/METADATA,sha256=mDM73fWuSRo_6HX2Cl0WLdUPOpOAI7gSJ_tyPW1WeCY,7018
74
+ python_socks-2.5.0.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
75
+ python_socks-2.5.0.dist-info/top_level.txt,sha256=7qyDAVwjTZ0sIYG1iatFbE-SLpWhONjaoMQ0Ib2DX0Q,13
76
+ python_socks-2.5.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.36.2)
2
+ Generator: setuptools (70.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5