123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """
- Proxy requests to avoid SSRF
- """
- import os
- from httpx import get as _get
- from httpx import head as _head
- from httpx import options as _options
- from httpx import patch as _patch
- from httpx import post as _post
- from httpx import put as _put
- from requests import delete as _delete
- SSRF_PROXY_HTTP_URL = os.getenv('SSRF_PROXY_HTTP_URL', '')
- SSRF_PROXY_HTTPS_URL = os.getenv('SSRF_PROXY_HTTPS_URL', '')
- requests_proxies = {
- 'http': SSRF_PROXY_HTTP_URL,
- 'https': SSRF_PROXY_HTTPS_URL
- } if SSRF_PROXY_HTTP_URL and SSRF_PROXY_HTTPS_URL else None
- httpx_proxies = {
- 'http://': SSRF_PROXY_HTTP_URL,
- 'https://': SSRF_PROXY_HTTPS_URL
- } if SSRF_PROXY_HTTP_URL and SSRF_PROXY_HTTPS_URL else None
- def get(url, *args, **kwargs):
- return _get(url=url, *args, proxies=httpx_proxies, **kwargs)
- def post(url, *args, **kwargs):
- return _post(url=url, *args, proxies=httpx_proxies, **kwargs)
- def put(url, *args, **kwargs):
- return _put(url=url, *args, proxies=httpx_proxies, **kwargs)
- def patch(url, *args, **kwargs):
- return _patch(url=url, *args, proxies=httpx_proxies, **kwargs)
- def delete(url, *args, **kwargs):
- if 'follow_redirects' in kwargs:
- if kwargs['follow_redirects']:
- kwargs['allow_redirects'] = kwargs['follow_redirects']
- kwargs.pop('follow_redirects')
- if 'timeout' in kwargs:
- timeout = kwargs['timeout']
- if timeout is None:
- kwargs.pop('timeout')
- elif isinstance(timeout, tuple):
- # check length of tuple
- if len(timeout) == 2:
- kwargs['timeout'] = timeout
- elif len(timeout) == 1:
- kwargs['timeout'] = timeout[0]
- elif len(timeout) > 2:
- kwargs['timeout'] = (timeout[0], timeout[1])
- else:
- kwargs['timeout'] = (timeout, timeout)
- return _delete(url=url, *args, proxies=requests_proxies, **kwargs)
- def head(url, *args, **kwargs):
- return _head(url=url, *args, proxies=httpx_proxies, **kwargs)
- def options(url, *args, **kwargs):
- return _options(url=url, *args, proxies=httpx_proxies, **kwargs)
|