|
|
|
|
@ -48,25 +48,26 @@ def make_request(method, url, max_retries=SSRF_DEFAULT_MAX_RETRIES, **kwargs):
|
|
|
|
|
write=dify_config.SSRF_DEFAULT_WRITE_TIME_OUT,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if "ssl_verify" not in kwargs:
|
|
|
|
|
kwargs["ssl_verify"] = HTTP_REQUEST_NODE_SSL_VERIFY
|
|
|
|
|
|
|
|
|
|
ssl_verify = kwargs.pop("ssl_verify")
|
|
|
|
|
|
|
|
|
|
retries = 0
|
|
|
|
|
while retries <= max_retries:
|
|
|
|
|
try:
|
|
|
|
|
if dify_config.SSRF_PROXY_ALL_URL:
|
|
|
|
|
with httpx.Client(proxy=dify_config.SSRF_PROXY_ALL_URL, verify=HTTP_REQUEST_NODE_SSL_VERIFY) as client:
|
|
|
|
|
with httpx.Client(proxy=dify_config.SSRF_PROXY_ALL_URL, verify=ssl_verify) as client:
|
|
|
|
|
response = client.request(method=method, url=url, **kwargs)
|
|
|
|
|
elif dify_config.SSRF_PROXY_HTTP_URL and dify_config.SSRF_PROXY_HTTPS_URL:
|
|
|
|
|
proxy_mounts = {
|
|
|
|
|
"http://": httpx.HTTPTransport(
|
|
|
|
|
proxy=dify_config.SSRF_PROXY_HTTP_URL, verify=HTTP_REQUEST_NODE_SSL_VERIFY
|
|
|
|
|
),
|
|
|
|
|
"https://": httpx.HTTPTransport(
|
|
|
|
|
proxy=dify_config.SSRF_PROXY_HTTPS_URL, verify=HTTP_REQUEST_NODE_SSL_VERIFY
|
|
|
|
|
),
|
|
|
|
|
"http://": httpx.HTTPTransport(proxy=dify_config.SSRF_PROXY_HTTP_URL, verify=ssl_verify),
|
|
|
|
|
"https://": httpx.HTTPTransport(proxy=dify_config.SSRF_PROXY_HTTPS_URL, verify=ssl_verify),
|
|
|
|
|
}
|
|
|
|
|
with httpx.Client(mounts=proxy_mounts, verify=HTTP_REQUEST_NODE_SSL_VERIFY) as client:
|
|
|
|
|
with httpx.Client(mounts=proxy_mounts, verify=ssl_verify) as client:
|
|
|
|
|
response = client.request(method=method, url=url, **kwargs)
|
|
|
|
|
else:
|
|
|
|
|
with httpx.Client(verify=HTTP_REQUEST_NODE_SSL_VERIFY) as client:
|
|
|
|
|
with httpx.Client(verify=ssl_verify) as client:
|
|
|
|
|
response = client.request(method=method, url=url, **kwargs)
|
|
|
|
|
|
|
|
|
|
if response.status_code not in STATUS_FORCELIST:
|
|
|
|
|
|