From 80e2705f2b841c44cc5d558731cf3747b692691e Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Thu, 8 Feb 2024 11:07:10 +0100 Subject: [PATCH] Connect to Redis without verifying SSL certificates Fixes #4028 --- http_service/bugbug_http/app.py | 12 ++++++++++-- http_service/bugbug_http/models.py | 11 ++++++++++- http_service/bugbug_http/worker.py | 12 ++++++++++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/http_service/bugbug_http/app.py b/http_service/bugbug_http/app.py index 8451f4e151..0cd68aa392 100644 --- a/http_service/bugbug_http/app.py +++ b/http_service/bugbug_http/app.py @@ -10,6 +10,7 @@ from dataclasses import dataclass, field from datetime import datetime, timedelta from typing import Any, Callable, Sequence +from urllib.parse import urlparse import orjson import zstandard @@ -63,8 +64,15 @@ ) application = Flask(__name__) -redis_url = os.environ.get("REDIS_URL", "redis://localhost/0") -redis_conn = Redis.from_url(redis_url) +url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0")) +assert url.hostname is not None +redis_conn = Redis( + host=url.hostname, + port=url.port if url.port is not None else 6379, + password=url.password, + ssl=True, + ssl_cert_reqs=None, +) # Kill jobs which don't finish within 12 minutes. JOB_TIMEOUT = 12 * 60 diff --git a/http_service/bugbug_http/models.py b/http_service/bugbug_http/models.py index 50b91b3447..30029befe0 100644 --- a/http_service/bugbug_http/models.py +++ b/http_service/bugbug_http/models.py @@ -8,6 +8,7 @@ from datetime import timedelta from functools import lru_cache from typing import Sequence +from urllib.parse import urlparse import orjson import requests @@ -39,7 +40,15 @@ ] DEFAULT_EXPIRATION_TTL = 7 * 24 * 3600 # A week -redis = Redis.from_url(os.environ.get("REDIS_URL", "redis://localhost/0")) +url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0")) +assert url.hostname is not None +redis = Redis( + host=url.hostname, + port=url.port if url.port is not None else 6379, + password=url.password, + ssl=True, + ssl_cert_reqs=None, +) MODEL_CACHE: ReadthroughTTLCache[str, Model] = ReadthroughTTLCache( timedelta(hours=1), lambda m: Model.load(f"{m}model") diff --git a/http_service/bugbug_http/worker.py b/http_service/bugbug_http/worker.py index 9f1ae64d34..6016c46a7b 100644 --- a/http_service/bugbug_http/worker.py +++ b/http_service/bugbug_http/worker.py @@ -6,6 +6,7 @@ import os import sys +from urllib.parse import urlparse from redis import Redis from rq import Connection, Worker @@ -24,8 +25,15 @@ def main(): # Provide queue names to listen to as arguments to this script, # similar to rq worker - redis_url = os.environ.get("REDIS_URL", "redis://localhost/0") - redis_conn = Redis.from_url(redis_url) + url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0")) + assert url.hostname is not None + redis_conn = Redis( + host=url.hostname, + port=url.port if url.port is not None else 6379, + password=url.password, + ssl=True, + ssl_cert_reqs=None, + ) with Connection(connection=redis_conn): qs = sys.argv[1:] or ["default"]