mirror of
https://github.com/certbot/certbot.git
synced 2026-07-30 18:04:31 +02:00
remove source_address arg (#9418)
This commit is contained in:
+1
-18
@@ -15,20 +15,12 @@ from typing import Set
|
|||||||
from typing import Text
|
from typing import Text
|
||||||
from typing import Tuple
|
from typing import Tuple
|
||||||
from typing import Union
|
from typing import Union
|
||||||
import warnings
|
|
||||||
|
|
||||||
import josepy as jose
|
import josepy as jose
|
||||||
import OpenSSL
|
import OpenSSL
|
||||||
import requests
|
import requests
|
||||||
from requests.adapters import HTTPAdapter
|
from requests.adapters import HTTPAdapter
|
||||||
from requests.utils import parse_header_links
|
from requests.utils import parse_header_links
|
||||||
# We're capturing the warnings described at
|
|
||||||
# https://github.com/requests/toolbelt/issues/331 until we can remove this
|
|
||||||
# dependency in Certbot 2.0.
|
|
||||||
with warnings.catch_warnings():
|
|
||||||
warnings.filterwarnings("ignore", "'urllib3.contrib.pyopenssl",
|
|
||||||
DeprecationWarning)
|
|
||||||
from requests_toolbelt.adapters.source import SourceAddressAdapter
|
|
||||||
|
|
||||||
from acme import challenges
|
from acme import challenges
|
||||||
from acme import crypto_util
|
from acme import crypto_util
|
||||||
@@ -489,14 +481,10 @@ class ClientNetwork:
|
|||||||
:param bool verify_ssl: Whether to verify certificates on SSL connections.
|
:param bool verify_ssl: Whether to verify certificates on SSL connections.
|
||||||
:param str user_agent: String to send as User-Agent header.
|
:param str user_agent: String to send as User-Agent header.
|
||||||
:param float timeout: Timeout for requests.
|
:param float timeout: Timeout for requests.
|
||||||
:param source_address: Optional source address to bind to when making
|
|
||||||
requests. (deprecated since 1.30.0)
|
|
||||||
:type source_address: str or tuple(str, int)
|
|
||||||
"""
|
"""
|
||||||
def __init__(self, key: jose.JWK, account: Optional[messages.RegistrationResource] = None,
|
def __init__(self, key: jose.JWK, account: Optional[messages.RegistrationResource] = None,
|
||||||
alg: jose.JWASignature = jose.RS256, verify_ssl: bool = True,
|
alg: jose.JWASignature = jose.RS256, verify_ssl: bool = True,
|
||||||
user_agent: str = 'acme-python', timeout: int = DEFAULT_NETWORK_TIMEOUT,
|
user_agent: str = 'acme-python', timeout: int = DEFAULT_NETWORK_TIMEOUT) -> None:
|
||||||
source_address: Optional[Union[str, Tuple[str, int]]] = None) -> None:
|
|
||||||
self.key = key
|
self.key = key
|
||||||
self.account = account
|
self.account = account
|
||||||
self.alg = alg
|
self.alg = alg
|
||||||
@@ -507,11 +495,6 @@ class ClientNetwork:
|
|||||||
self._default_timeout = timeout
|
self._default_timeout = timeout
|
||||||
adapter = HTTPAdapter()
|
adapter = HTTPAdapter()
|
||||||
|
|
||||||
if source_address is not None:
|
|
||||||
warnings.warn("Support for source_address is deprecated and will be "
|
|
||||||
"removed soon.", DeprecationWarning, stacklevel=2)
|
|
||||||
adapter = SourceAddressAdapter(source_address)
|
|
||||||
|
|
||||||
self.session.mount("http://", adapter)
|
self.session.mount("http://", adapter)
|
||||||
self.session.mount("https://", adapter)
|
self.session.mount("https://", adapter)
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ install_requires = [
|
|||||||
'pyrfc3339',
|
'pyrfc3339',
|
||||||
'pytz>=2019.3',
|
'pytz>=2019.3',
|
||||||
'requests>=2.20.0',
|
'requests>=2.20.0',
|
||||||
'requests-toolbelt>=0.3.0',
|
|
||||||
'setuptools>=41.6.0',
|
'setuptools>=41.6.0',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -791,32 +791,5 @@ class ClientNetworkWithMockedResponseTest(unittest.TestCase):
|
|||||||
self.net.post('uri', self.obj, content_type=None, new_nonce_url='new_nonce_uri')
|
self.net.post('uri', self.obj, content_type=None, new_nonce_url='new_nonce_uri')
|
||||||
|
|
||||||
|
|
||||||
class ClientNetworkSourceAddressBindingTest(unittest.TestCase):
|
|
||||||
"""Tests that if ClientNetwork has a source IP set manually, the underlying library has
|
|
||||||
used the provided source address."""
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.source_address = "8.8.8.8"
|
|
||||||
|
|
||||||
def test_source_address_set(self):
|
|
||||||
with mock.patch('warnings.warn') as mock_warn:
|
|
||||||
net = ClientNetwork(key=None, alg=None, source_address=self.source_address)
|
|
||||||
mock_warn.assert_called_once()
|
|
||||||
self.assertIn('source_address', mock_warn.call_args[0][0])
|
|
||||||
for adapter in net.session.adapters.values():
|
|
||||||
self.assertIn(self.source_address, adapter.source_address)
|
|
||||||
|
|
||||||
def test_behavior_assumption(self):
|
|
||||||
"""This is a test that guardrails the HTTPAdapter behavior so that if the default for
|
|
||||||
a Session() changes, the assumptions here aren't violated silently."""
|
|
||||||
# Source address not specified, so the default adapter type should be bound -- this
|
|
||||||
# test should fail if the default adapter type is changed by requests
|
|
||||||
net = ClientNetwork(key=None, alg=None)
|
|
||||||
session = requests.Session()
|
|
||||||
for scheme in session.adapters:
|
|
||||||
client_network_adapter = net.session.adapters.get(scheme)
|
|
||||||
default_adapter = session.adapters.get(scheme)
|
|
||||||
self.assertEqual(client_network_adapter.__class__, default_adapter.__class__)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main() # pragma: no cover
|
unittest.main() # pragma: no cover
|
||||||
|
|||||||
Reference in New Issue
Block a user