diff --git a/docs/assets/img/bunkerweb_db.svg b/docs/assets/img/bunkerweb_db.svg
index a476a4b7a..43a56137c 100644
--- a/docs/assets/img/bunkerweb_db.svg
+++ b/docs/assets/img/bunkerweb_db.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ *11*1**1*11**11*1**1bw_instanceshostnamevarchar[256]portintserver_namevarchar[256]bw_servicesidvarchar[64]methodmethodsis_draftbooleanbw_global_valuessetting_idvarchar[256]valuevarchar[8192]suffixintmethodmethodsbw_plugin_pagesidintplugin_idvarchar[64]template_filelongblobtemplate_checksumvarchar[128]actions_filelongblobactions_checksumvarchar[128]bw_custom_configsidintservice_idvarchar[64]typecustom_config_typesnamevarchar[256]datalongblobchecksumvarchar[128]methodmethodsbw_services_settingsservice_idvarchar[64]setting_idvarchar[256]valuevarchar[8192]suffixintmethodmethodsbw_settingsidvarchar[256]namevarchar[256]plugin_idvarchar[64]contextcontexesdefaultvarchar[4096]helpvarchar[512]labelvarchar[256]regexvarchar[1024]typesettings_typesmultiplevarchar[128]bw_selectssetting_idvarchar[256]valuevarchar[256]bw_ui_usersidintusernamevarchar[256]passwordvarchar[60]is_two_factor_enabledbooleansecret_tokenvarchar[32]methodmethodsbw_jobs_cacheidintjob_namevarchar[128]service_idvarchar[64]file_namevarchar[256]datalongbloblast_updatedatetimechecksumvarchar[128]bw_jobsnamevarchar[128]plugin_idvarchar[64]file_namevarchar[256]everyschedulesreloadbooleansuccessbooleanlast_rundatetimebw_pluginsidvarchar[64]namevarchar[128]descriptionvarchar[256]versionvarchar[32]streamstream_typestypeplugin_typesmethodmethodsdatalongblobchecksumvarchar[128]bw_metadataidintis_initializedbooleanis_probooleanpro_expiredatetimepro_statuspro_status_enumpro_servicesintpro_overlappedbooleanlast_pro_checkdatetimefirst_config_savedbooleanautoconf_loadedbooleanscheduler_first_startbooleancustom_configs_changedbooleanexternal_plugins_changedbooleanpro_plugins_changedbooleanconfig_changedbooleaninstances_changedbooleanintegrationintegrationsversionvarchar
\ No newline at end of file
diff --git a/docs/requirements.in b/docs/requirements.in
index 6dff6d9c3..eebcd5b50 100644
--- a/docs/requirements.in
+++ b/docs/requirements.in
@@ -1,5 +1,5 @@
mike==2.0.0
mkdocs==1.5.3
-mkdocs-material[imaging]==9.5.11
+mkdocs-material[imaging]==9.5.12
mkdocs-print-site-plugin==2.3.6
pytablewriter==1.2.0
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 446d06d60..4700d8736 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -311,9 +311,9 @@ mkdocs==1.5.3 \
# -r requirements.in
# mike
# mkdocs-material
-mkdocs-material==9.5.11 \
- --hash=sha256:788ee0f3e036dca2dc20298d65e480297d348a44c9d7b2ee05c5262983e66072 \
- --hash=sha256:7af7f8af0dea16175558f3fb9245d26c83a17199baa5f157755e63d7437bf971
+mkdocs-material==9.5.12 \
+ --hash=sha256:5f69cef6a8aaa4050b812f72b1094fda3d079b9a51cf27a247244c03ec455e97 \
+ --hash=sha256:d6f0c269f015e48c76291cdc79efb70f7b33bbbf42d649cfe475522ebee61b1f
# via
# -r requirements.in
# mkdocs-print-site-plugin
@@ -426,9 +426,9 @@ pygments==2.17.2 \
--hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \
--hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367
# via mkdocs-material
-pymdown-extensions==10.7 \
- --hash=sha256:6ca215bc57bc12bf32b414887a68b810637d039124ed9b2e5bd3325cbb2c050c \
- --hash=sha256:c0d64d5cf62566f59e6b2b690a4095c931107c250a8c8e1351c1de5f6b036deb
+pymdown-extensions==10.7.1 \
+ --hash=sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584 \
+ --hash=sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4
# via mkdocs-material
pyparsing==3.1.1 \
--hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \
@@ -438,9 +438,9 @@ pytablewriter==1.2.0 \
--hash=sha256:0204a4bb684a22140d640f2599f09e137bcdc18b3dd49426f4a555016e246b46 \
--hash=sha256:4a30e2bb4bf5bc1069b1d2b2bc41947577c4517ab0875b23a5b194d296f543d8
# via -r requirements.in
-python-dateutil==2.8.2 \
- --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
- --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
+python-dateutil==2.9.0.post0 \
+ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
+ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via
# ghp-import
# typepy
diff --git a/src/common/core/jobs/jobs/anonymous-report.py b/src/common/core/jobs/jobs/anonymous-report.py
index 9f638fb95..ecb0cc1a3 100644
--- a/src/common/core/jobs/jobs/anonymous-report.py
+++ b/src/common/core/jobs/jobs/anonymous-report.py
@@ -43,10 +43,10 @@ try:
data: Dict[str, Any] = db.get_metadata()
data["is_pro"] = "yes" if data["is_pro"] else "no"
- data.pop("pro_expire", None)
- data.pop("pro_services", None)
- data.pop("pro_overlapped", None)
- data.pop("pro_status", None)
+
+ for key in data.copy():
+ if key not in ("version", "integration", "database_version", "is_pro"):
+ data.pop(key, None)
db_config = db.get_config(methods=True, with_drafts=True)
services = db_config.get("SERVER_NAME", {"value": ""})["value"].split(" ")
diff --git a/src/common/core/pro/jobs/download-pro-plugins.py b/src/common/core/pro/jobs/download-pro-plugins.py
index 4c79824b9..657b2c839 100644
--- a/src/common/core/pro/jobs/download-pro-plugins.py
+++ b/src/common/core/pro/jobs/download-pro-plugins.py
@@ -35,7 +35,7 @@ from Database import Database # type: ignore
from logger import setup_logger # type: ignore
from jobs import get_os_info, get_integration, get_version # type: ignore
-API_ENDPOINT = "https://api.staging.bunkerweb.io"
+API_ENDPOINT = "https://api.bunkerweb.io"
PREVIEW_ENDPOINT = "https://assets.bunkerity.com/bw-pro/preview"
TMP_DIR = Path(sep, "var", "tmp", "bunkerweb", "pro", "plugins")
PRO_PLUGINS_DIR = Path(sep, "etc", "bunkerweb", "pro", "plugins")
@@ -98,8 +98,16 @@ def install_plugin(plugin_dir: str, db, preview: bool = True) -> bool:
try:
- logger.info("Checking BunkerWeb Pro license key...")
db = Database(logger, sqlalchemy_string=getenv("DATABASE_URI"), pool=False)
+ db_metadata = db.get_metadata()
+ current_date = datetime.now()
+
+ # If we already checked in the last 10 minutes, skip the check
+ if db_metadata["last_pro_check"] and (current_date - db_metadata["last_pro_check"]).seconds < 600:
+ logger.info("Skipping the check for BunkerWeb Pro license (already checked in the last 10 minutes)")
+ sys_exit(0)
+
+ logger.info("Checking BunkerWeb Pro license key...")
data = {
"integration": get_integration(),
@@ -116,7 +124,6 @@ try:
"pro_services": 0,
}
metadata = {}
- db_metadata = db.get_metadata()
pro_license_key = getenv("PRO_LICENSE_KEY")
error = False
@@ -140,16 +147,17 @@ try:
else:
resp.raise_for_status()
- metadata = resp.json()
+ metadata = resp.json()["data"]
+ logger.debug(f"Got BunkerWeb Pro license metadata: {metadata}")
metadata["pro_expire"] = datetime.strptime(metadata["pro_expire"], "%Y-%m-%d") if metadata["pro_expire"] else None
if metadata["pro_expire"] and metadata["pro_expire"] < datetime.now():
metadata["pro_status"] = "expired"
if metadata["pro_services"] < int(data["service_number"]):
metadata["pro_overlapped"] = True
- metadata["is_pro"] = metadata["pro_status"] == "valid" and not metadata["pro_overlapped"]
+ metadata["is_pro"] = metadata["pro_status"] == "active" and not metadata["pro_overlapped"]
metadata = metadata or default_metadata
- db.set_pro_metadata(metadata)
+ db.set_pro_metadata(metadata | {"last_pro_check": current_date})
if metadata["is_pro"]:
logger.info("🚀 Your BunkerWeb Pro license is valid, checking if there are new or updated Pro plugins...")
@@ -163,7 +171,7 @@ try:
logger.error(f"Access denied to {API_ENDPOINT}/pro - please check your BunkerWeb Pro access at https://panel.bunkerweb.io/")
error = True
metadata = default_metadata
- db.set_pro_metadata(metadata)
+ db.set_pro_metadata(metadata | {"last_pro_check": current_date})
clean_pro_plugins(db)
elif resp.headers.get("Content-Type", "") != "application/octet-stream":
logger.error(f"Got unexpected content type: {resp.headers.get('Content-Type', 'missing')} from {API_ENDPOINT}/pro")
@@ -180,7 +188,7 @@ try:
message = "No BunkerWeb Pro license key provided"
logger.warning(f"{message}, only checking if there are new or updated preview versions of Pro plugins...")
- if db_metadata["pro_status"] == "valid":
+ if metadata["is_pro"]:
clean_pro_plugins(db)
resp = get(f"{PREVIEW_ENDPOINT}/v{data['version']}.zip", timeout=5, allow_redirects=True)
@@ -208,7 +216,7 @@ try:
# Install plugins
try:
- for plugin_dir in glob(temp_dir.joinpath("*").as_posix()):
+ for plugin_dir in glob(temp_dir.joinpath(data["version"] if metadata["is_pro"] else "", "*").as_posix()):
try:
if install_plugin(plugin_dir, db, not metadata["is_pro"]):
plugin_nbr += 1
diff --git a/src/common/db/Database.py b/src/common/db/Database.py
index 149578ac1..a2f6a7d77 100644
--- a/src/common/db/Database.py
+++ b/src/common/db/Database.py
@@ -300,12 +300,27 @@ class Database:
"pro_services": 0,
"pro_overlapped": False,
"pro_status": "invalid",
+ "last_pro_check": None,
}
database = self.database_uri.split(":")[0].split("+")[0]
with self.__db_session() as session:
with suppress(ProgrammingError, OperationalError):
data["database_version"] = (session.execute(text("SELECT sqlite_version()" if database == "sqlite" else "SELECT VERSION()")).first() or ["unknown"])[0]
- metadata = session.query(Metadata).with_entities(Metadata.version, Metadata.integration, Metadata.is_pro, Metadata.pro_expire, Metadata.pro_services, Metadata.pro_overlapped, Metadata.pro_status).filter_by(id=1).first()
+ metadata = (
+ session.query(Metadata)
+ .with_entities(
+ Metadata.version,
+ Metadata.integration,
+ Metadata.is_pro,
+ Metadata.pro_expire,
+ Metadata.pro_services,
+ Metadata.pro_overlapped,
+ Metadata.pro_status,
+ Metadata.last_pro_check,
+ )
+ .filter_by(id=1)
+ .first()
+ )
if metadata:
data.update(
{
@@ -316,6 +331,7 @@ class Database:
"pro_services": metadata.pro_services,
"pro_overlapped": metadata.pro_overlapped,
"pro_status": metadata.pro_status,
+ "last_pro_check": metadata.last_pro_check,
}
)
diff --git a/src/common/db/model.py b/src/common/db/model.py
index 72daa5616..292306ca3 100644
--- a/src/common/db/model.py
+++ b/src/common/db/model.py
@@ -275,6 +275,7 @@ class Metadata(Base):
pro_status = Column(PRO_STATUS_ENUM, default="invalid", nullable=False)
pro_services = Column(Integer, default=0, nullable=False)
pro_overlapped = Column(Boolean, default=False, nullable=False)
+ last_pro_check = Column(DateTime, nullable=True)
first_config_saved = Column(Boolean, nullable=False)
autoconf_loaded = Column(Boolean, default=False, nullable=True)
scheduler_first_start = Column(Boolean, nullable=True)
diff --git a/src/common/db/requirements.in b/src/common/db/requirements.in
index 3e23715a1..a4757858a 100644
--- a/src/common/db/requirements.in
+++ b/src/common/db/requirements.in
@@ -1,4 +1,4 @@
cryptography==42.0.5
psycopg[binary,pool]==3.1.18
PyMySQL==1.1.0
-sqlalchemy==2.0.27
+sqlalchemy==2.0.28
diff --git a/src/common/db/requirements.txt b/src/common/db/requirements.txt
index c1e93e467..31c0c92d5 100644
--- a/src/common/db/requirements.txt
+++ b/src/common/db/requirements.txt
@@ -235,56 +235,56 @@ pymysql==1.1.0 \
--hash=sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96 \
--hash=sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7
# via -r requirements.in
-sqlalchemy==2.0.27 \
- --hash=sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07 \
- --hash=sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71 \
- --hash=sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5 \
- --hash=sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d \
- --hash=sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131 \
- --hash=sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4 \
- --hash=sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac \
- --hash=sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51 \
- --hash=sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230 \
- --hash=sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5 \
- --hash=sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c \
- --hash=sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876 \
- --hash=sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb \
- --hash=sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d \
- --hash=sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5 \
- --hash=sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6 \
- --hash=sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910 \
- --hash=sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45 \
- --hash=sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6 \
- --hash=sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d \
- --hash=sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254 \
- --hash=sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8 \
- --hash=sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18 \
- --hash=sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951 \
- --hash=sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf \
- --hash=sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a \
- --hash=sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396 \
- --hash=sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f \
- --hash=sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8 \
- --hash=sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979 \
- --hash=sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc \
- --hash=sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c \
- --hash=sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a \
- --hash=sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32 \
- --hash=sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a \
- --hash=sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac \
- --hash=sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c \
- --hash=sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1 \
- --hash=sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd \
- --hash=sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4 \
- --hash=sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd \
- --hash=sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f \
- --hash=sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a \
- --hash=sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f \
- --hash=sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc \
- --hash=sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd \
- --hash=sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8 \
- --hash=sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01 \
- --hash=sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620
+sqlalchemy==2.0.28 \
+ --hash=sha256:0315d9125a38026227f559488fe7f7cee1bd2fbc19f9fd637739dc50bb6380b2 \
+ --hash=sha256:0d3dd67b5d69794cfe82862c002512683b3db038b99002171f624712fa71aeaa \
+ --hash=sha256:124202b4e0edea7f08a4db8c81cc7859012f90a0d14ba2bf07c099aff6e96462 \
+ --hash=sha256:1ee8bd6d68578e517943f5ebff3afbd93fc65f7ef8f23becab9fa8fb315afb1d \
+ --hash=sha256:243feb6882b06a2af68ecf4bec8813d99452a1b62ba2be917ce6283852cf701b \
+ --hash=sha256:2858bbab1681ee5406650202950dc8f00e83b06a198741b7c656e63818633526 \
+ --hash=sha256:2f60843068e432311c886c5f03c4664acaef507cf716f6c60d5fde7265be9d7b \
+ --hash=sha256:328529f7c7f90adcd65aed06a161851f83f475c2f664a898af574893f55d9e53 \
+ --hash=sha256:33157920b233bc542ce497a81a2e1452e685a11834c5763933b440fedd1d8e2d \
+ --hash=sha256:3eba73ef2c30695cb7eabcdb33bb3d0b878595737479e152468f3ba97a9c22a4 \
+ --hash=sha256:426f2fa71331a64f5132369ede5171c52fd1df1bd9727ce621f38b5b24f48750 \
+ --hash=sha256:45c7b78dfc7278329f27be02c44abc0d69fe235495bb8e16ec7ef1b1a17952db \
+ --hash=sha256:46a3d4e7a472bfff2d28db838669fc437964e8af8df8ee1e4548e92710929adc \
+ --hash=sha256:4a5adf383c73f2d49ad15ff363a8748319ff84c371eed59ffd0127355d6ea1da \
+ --hash=sha256:4b6303bfd78fb3221847723104d152e5972c22367ff66edf09120fcde5ddc2e2 \
+ --hash=sha256:56856b871146bfead25fbcaed098269d90b744eea5cb32a952df00d542cdd368 \
+ --hash=sha256:5da98815f82dce0cb31fd1e873a0cb30934971d15b74e0d78cf21f9e1b05953f \
+ --hash=sha256:5df5d1dafb8eee89384fb7a1f79128118bc0ba50ce0db27a40750f6f91aa99d5 \
+ --hash=sha256:68722e6a550f5de2e3cfe9da6afb9a7dd15ef7032afa5651b0f0c6b3adb8815d \
+ --hash=sha256:78bb7e8da0183a8301352d569900d9d3594c48ac21dc1c2ec6b3121ed8b6c986 \
+ --hash=sha256:81ba314a08c7ab701e621b7ad079c0c933c58cdef88593c59b90b996e8b58fa5 \
+ --hash=sha256:843a882cadebecc655a68bd9a5b8aa39b3c52f4a9a5572a3036fb1bb2ccdc197 \
+ --hash=sha256:87724e7ed2a936fdda2c05dbd99d395c91ea3c96f029a033a4a20e008dd876bf \
+ --hash=sha256:8c7f10720fc34d14abad5b647bc8202202f4948498927d9f1b4df0fb1cf391b7 \
+ --hash=sha256:8e91b5e341f8c7f1e5020db8e5602f3ed045a29f8e27f7f565e0bdee3338f2c7 \
+ --hash=sha256:943aa74a11f5806ab68278284a4ddd282d3fb348a0e96db9b42cb81bf731acdc \
+ --hash=sha256:9461802f2e965de5cff80c5a13bc945abea7edaa1d29360b485c3d2b56cdb075 \
+ --hash=sha256:9b66fcd38659cab5d29e8de5409cdf91e9986817703e1078b2fdaad731ea66f5 \
+ --hash=sha256:a6bec1c010a6d65b3ed88c863d56b9ea5eeefdf62b5e39cafd08c65f5ce5198b \
+ --hash=sha256:a921002be69ac3ab2cf0c3017c4e6a3377f800f1fca7f254c13b5f1a2f10022c \
+ --hash=sha256:aca7b6d99a4541b2ebab4494f6c8c2f947e0df4ac859ced575238e1d6ca5716b \
+ --hash=sha256:ad7acbe95bac70e4e687a4dc9ae3f7a2f467aa6597049eeb6d4a662ecd990bb6 \
+ --hash=sha256:af8ce2d31679006e7b747d30a89cd3ac1ec304c3d4c20973f0f4ad58e2d1c4c9 \
+ --hash=sha256:b4a2cf92995635b64876dc141af0ef089c6eea7e05898d8d8865e71a326c0385 \
+ --hash=sha256:bbda76961eb8f27e6ad3c84d1dc56d5bc61ba8f02bd20fcf3450bd421c2fcc9c \
+ --hash=sha256:bd7e4baf9161d076b9a7e432fce06217b9bd90cfb8f1d543d6e8c4595627edb9 \
+ --hash=sha256:bea30da1e76cb1acc5b72e204a920a3a7678d9d52f688f087dc08e54e2754c67 \
+ --hash=sha256:c61e2e41656a673b777e2f0cbbe545323dbe0d32312f590b1bc09da1de6c2a02 \
+ --hash=sha256:c6c4da4843e0dabde41b8f2e8147438330924114f541949e6318358a56d1875a \
+ --hash=sha256:d3499008ddec83127ab286c6f6ec82a34f39c9817f020f75eca96155f9765097 \
+ --hash=sha256:dbb990612c36163c6072723523d2be7c3eb1517bbdd63fe50449f56afafd1133 \
+ --hash=sha256:dd53b6c4e6d960600fd6532b79ee28e2da489322fcf6648738134587faf767b6 \
+ --hash=sha256:df40c16a7e8be7413b885c9bf900d402918cc848be08a59b022478804ea076b8 \
+ --hash=sha256:e0a5354cb4de9b64bccb6ea33162cb83e03dbefa0d892db88a672f5aad638a75 \
+ --hash=sha256:e0b148ab0438f72ad21cb004ce3bdaafd28465c4276af66df3b9ecd2037bf252 \
+ --hash=sha256:e23b88c69497a6322b5796c0781400692eca1ae5532821b39ce81a48c395aae9 \
+ --hash=sha256:fc4974d3684f28b61b9a90fcb4c41fb340fd4b6a50c04365704a4da5a9603b05 \
+ --hash=sha256:feea693c452d85ea0015ebe3bb9cd15b6f49acc1a31c28b3c50f4db0f8fb1e71 \
+ --hash=sha256:fffcc8edc508801ed2e6a4e7b0d150a62196fd28b4e16ab9f65192e8186102b6
# via -r requirements.in
typing-extensions==4.10.0 \
--hash=sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475 \
diff --git a/src/common/gen/requirements.in b/src/common/gen/requirements.in
index 0b5e9869c..1062cc2a9 100644
--- a/src/common/gen/requirements.in
+++ b/src/common/gen/requirements.in
@@ -2,4 +2,4 @@ docker==7.0.0
jinja2==3.1.3
kubernetes==29.0.0
python-dotenv==1.0.1
-redis==5.0.1
+redis==5.0.2
diff --git a/src/common/gen/requirements.txt b/src/common/gen/requirements.txt
index 63ecdef26..e2d6564b5 100644
--- a/src/common/gen/requirements.txt
+++ b/src/common/gen/requirements.txt
@@ -212,9 +212,9 @@ pyasn1-modules==0.3.0 \
--hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \
--hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d
# via google-auth
-python-dateutil==2.8.2 \
- --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
- --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
+python-dateutil==2.9.0.post0 \
+ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
+ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via kubernetes
python-dotenv==1.0.1 \
--hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \
@@ -273,9 +273,9 @@ pyyaml==6.0.1 \
--hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
--hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
# via kubernetes
-redis==5.0.1 \
- --hash=sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f \
- --hash=sha256:ed4802971884ae19d640775ba3b03aa2e7bd5e8fb8dfaed2decce4d0fc48391f
+redis==5.0.2 \
+ --hash=sha256:3f82cc80d350e93042c8e6e7a5d0596e4dd68715babffba79492733e1f367037 \
+ --hash=sha256:4caa8e1fcb6f3c0ef28dba99535101d80934b7d4cd541bbb47f4a3826ee472d1
# via -r requirements.in
requests==2.31.0 \
--hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
diff --git a/src/deps/requirements-deps.txt b/src/deps/requirements-deps.txt
index b6d49bbcd..39f10f188 100644
--- a/src/deps/requirements-deps.txt
+++ b/src/deps/requirements-deps.txt
@@ -4,9 +4,9 @@
#
# pip-compile --allow-unsafe --generate-hashes --strip-extras requirements-deps.in
#
-build==1.0.3 \
- --hash=sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b \
- --hash=sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f
+build==1.1.1 \
+ --hash=sha256:8ed0851ee76e6e38adce47e4bee3b51c771d86c64cf578d0c2245567ee200e73 \
+ --hash=sha256:8eea65bb45b1aac2e734ba2cc8dad3a6d97d97901a395bd0ed3e7b46953d2a31
# via pip-tools
certifi==2024.2.2 \
--hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \
diff --git a/src/deps/requirements.txt b/src/deps/requirements.txt
index 529c798b7..98f91b148 100644
--- a/src/deps/requirements.txt
+++ b/src/deps/requirements.txt
@@ -4,9 +4,9 @@
#
# pip-compile --allow-unsafe --generate-hashes --strip-extras requirements.in
#
-build==1.0.3 \
- --hash=sha256:538aab1b64f9828977f84bc63ae570b060a8ed1be419e7870b8b4fc5e6ea553b \
- --hash=sha256:589bf99a67df7c9cf07ec0ac0e5e2ea5d4b37ac63301c4986d1acb126aa83f8f
+build==1.1.1 \
+ --hash=sha256:8ed0851ee76e6e38adce47e4bee3b51c771d86c64cf578d0c2245567ee200e73 \
+ --hash=sha256:8eea65bb45b1aac2e734ba2cc8dad3a6d97d97901a395bd0ed3e7b46953d2a31
# via pip-tools
click==8.1.7 \
--hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \
diff --git a/src/ui/requirements.in b/src/ui/requirements.in
index fae61fa39..1583eab42 100644
--- a/src/ui/requirements.in
+++ b/src/ui/requirements.in
@@ -6,7 +6,7 @@ Flask_WTF==1.2.1
gunicorn[gthread]==21.2.0
importlib-metadata==7.0.1
pyotp==2.9.0
-python_dateutil==2.8.2
+python_dateutil==2.9.0.post0
qrcode==7.4.2
regex==2023.12.25
werkzeug==3.0.1
diff --git a/src/ui/requirements.txt b/src/ui/requirements.txt
index 0f65bb784..293a68de2 100644
--- a/src/ui/requirements.txt
+++ b/src/ui/requirements.txt
@@ -157,9 +157,9 @@ pypng==0.20220715.0 \
--hash=sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c \
--hash=sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1
# via qrcode
-python-dateutil==2.8.2 \
- --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \
- --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9
+python-dateutil==2.9.0.post0 \
+ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
+ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via -r requirements.in
qrcode==7.4.2 \
--hash=sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a \
diff --git a/tests/core/blacklist/api/requirements.txt b/tests/core/blacklist/api/requirements.txt
index 753bd5ed4..6694911c8 100644
--- a/tests/core/blacklist/api/requirements.txt
+++ b/tests/core/blacklist/api/requirements.txt
@@ -72,9 +72,9 @@ idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
# via anyio
-pydantic==2.6.2 \
- --hash=sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3 \
- --hash=sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7
+pydantic==2.6.3 \
+ --hash=sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a \
+ --hash=sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f
# via fastapi
pydantic-core==2.16.3 \
--hash=sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a \
diff --git a/tests/core/bunkernet/api/requirements.txt b/tests/core/bunkernet/api/requirements.txt
index 753bd5ed4..6694911c8 100644
--- a/tests/core/bunkernet/api/requirements.txt
+++ b/tests/core/bunkernet/api/requirements.txt
@@ -72,9 +72,9 @@ idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
# via anyio
-pydantic==2.6.2 \
- --hash=sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3 \
- --hash=sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7
+pydantic==2.6.3 \
+ --hash=sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a \
+ --hash=sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f
# via fastapi
pydantic-core==2.16.3 \
--hash=sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a \
diff --git a/tests/core/db/requirements.in b/tests/core/db/requirements.in
index 86aec741d..bd25798a9 100644
--- a/tests/core/db/requirements.in
+++ b/tests/core/db/requirements.in
@@ -1,4 +1,4 @@
cryptography==42.0.5
psycopg[binary,pool]==3.1.17
PyMySQL==1.1.0
-sqlalchemy==2.0.27
+sqlalchemy==2.0.28
diff --git a/tests/core/db/requirements.txt b/tests/core/db/requirements.txt
index c37293d1b..715af92bc 100644
--- a/tests/core/db/requirements.txt
+++ b/tests/core/db/requirements.txt
@@ -235,56 +235,56 @@ pymysql==1.1.0 \
--hash=sha256:4f13a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96 \
--hash=sha256:8969ec6d763c856f7073c4c64662882675702efcb114b4bcbb955aea3a069fa7
# via -r requirements.in
-sqlalchemy==2.0.27 \
- --hash=sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07 \
- --hash=sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71 \
- --hash=sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5 \
- --hash=sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d \
- --hash=sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131 \
- --hash=sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4 \
- --hash=sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac \
- --hash=sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51 \
- --hash=sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230 \
- --hash=sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5 \
- --hash=sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c \
- --hash=sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876 \
- --hash=sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb \
- --hash=sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d \
- --hash=sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5 \
- --hash=sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6 \
- --hash=sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910 \
- --hash=sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45 \
- --hash=sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6 \
- --hash=sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d \
- --hash=sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254 \
- --hash=sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8 \
- --hash=sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18 \
- --hash=sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951 \
- --hash=sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf \
- --hash=sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a \
- --hash=sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396 \
- --hash=sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f \
- --hash=sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8 \
- --hash=sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979 \
- --hash=sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc \
- --hash=sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c \
- --hash=sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a \
- --hash=sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32 \
- --hash=sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a \
- --hash=sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac \
- --hash=sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c \
- --hash=sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1 \
- --hash=sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd \
- --hash=sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4 \
- --hash=sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd \
- --hash=sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f \
- --hash=sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a \
- --hash=sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f \
- --hash=sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc \
- --hash=sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd \
- --hash=sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8 \
- --hash=sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01 \
- --hash=sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620
+sqlalchemy==2.0.28 \
+ --hash=sha256:0315d9125a38026227f559488fe7f7cee1bd2fbc19f9fd637739dc50bb6380b2 \
+ --hash=sha256:0d3dd67b5d69794cfe82862c002512683b3db038b99002171f624712fa71aeaa \
+ --hash=sha256:124202b4e0edea7f08a4db8c81cc7859012f90a0d14ba2bf07c099aff6e96462 \
+ --hash=sha256:1ee8bd6d68578e517943f5ebff3afbd93fc65f7ef8f23becab9fa8fb315afb1d \
+ --hash=sha256:243feb6882b06a2af68ecf4bec8813d99452a1b62ba2be917ce6283852cf701b \
+ --hash=sha256:2858bbab1681ee5406650202950dc8f00e83b06a198741b7c656e63818633526 \
+ --hash=sha256:2f60843068e432311c886c5f03c4664acaef507cf716f6c60d5fde7265be9d7b \
+ --hash=sha256:328529f7c7f90adcd65aed06a161851f83f475c2f664a898af574893f55d9e53 \
+ --hash=sha256:33157920b233bc542ce497a81a2e1452e685a11834c5763933b440fedd1d8e2d \
+ --hash=sha256:3eba73ef2c30695cb7eabcdb33bb3d0b878595737479e152468f3ba97a9c22a4 \
+ --hash=sha256:426f2fa71331a64f5132369ede5171c52fd1df1bd9727ce621f38b5b24f48750 \
+ --hash=sha256:45c7b78dfc7278329f27be02c44abc0d69fe235495bb8e16ec7ef1b1a17952db \
+ --hash=sha256:46a3d4e7a472bfff2d28db838669fc437964e8af8df8ee1e4548e92710929adc \
+ --hash=sha256:4a5adf383c73f2d49ad15ff363a8748319ff84c371eed59ffd0127355d6ea1da \
+ --hash=sha256:4b6303bfd78fb3221847723104d152e5972c22367ff66edf09120fcde5ddc2e2 \
+ --hash=sha256:56856b871146bfead25fbcaed098269d90b744eea5cb32a952df00d542cdd368 \
+ --hash=sha256:5da98815f82dce0cb31fd1e873a0cb30934971d15b74e0d78cf21f9e1b05953f \
+ --hash=sha256:5df5d1dafb8eee89384fb7a1f79128118bc0ba50ce0db27a40750f6f91aa99d5 \
+ --hash=sha256:68722e6a550f5de2e3cfe9da6afb9a7dd15ef7032afa5651b0f0c6b3adb8815d \
+ --hash=sha256:78bb7e8da0183a8301352d569900d9d3594c48ac21dc1c2ec6b3121ed8b6c986 \
+ --hash=sha256:81ba314a08c7ab701e621b7ad079c0c933c58cdef88593c59b90b996e8b58fa5 \
+ --hash=sha256:843a882cadebecc655a68bd9a5b8aa39b3c52f4a9a5572a3036fb1bb2ccdc197 \
+ --hash=sha256:87724e7ed2a936fdda2c05dbd99d395c91ea3c96f029a033a4a20e008dd876bf \
+ --hash=sha256:8c7f10720fc34d14abad5b647bc8202202f4948498927d9f1b4df0fb1cf391b7 \
+ --hash=sha256:8e91b5e341f8c7f1e5020db8e5602f3ed045a29f8e27f7f565e0bdee3338f2c7 \
+ --hash=sha256:943aa74a11f5806ab68278284a4ddd282d3fb348a0e96db9b42cb81bf731acdc \
+ --hash=sha256:9461802f2e965de5cff80c5a13bc945abea7edaa1d29360b485c3d2b56cdb075 \
+ --hash=sha256:9b66fcd38659cab5d29e8de5409cdf91e9986817703e1078b2fdaad731ea66f5 \
+ --hash=sha256:a6bec1c010a6d65b3ed88c863d56b9ea5eeefdf62b5e39cafd08c65f5ce5198b \
+ --hash=sha256:a921002be69ac3ab2cf0c3017c4e6a3377f800f1fca7f254c13b5f1a2f10022c \
+ --hash=sha256:aca7b6d99a4541b2ebab4494f6c8c2f947e0df4ac859ced575238e1d6ca5716b \
+ --hash=sha256:ad7acbe95bac70e4e687a4dc9ae3f7a2f467aa6597049eeb6d4a662ecd990bb6 \
+ --hash=sha256:af8ce2d31679006e7b747d30a89cd3ac1ec304c3d4c20973f0f4ad58e2d1c4c9 \
+ --hash=sha256:b4a2cf92995635b64876dc141af0ef089c6eea7e05898d8d8865e71a326c0385 \
+ --hash=sha256:bbda76961eb8f27e6ad3c84d1dc56d5bc61ba8f02bd20fcf3450bd421c2fcc9c \
+ --hash=sha256:bd7e4baf9161d076b9a7e432fce06217b9bd90cfb8f1d543d6e8c4595627edb9 \
+ --hash=sha256:bea30da1e76cb1acc5b72e204a920a3a7678d9d52f688f087dc08e54e2754c67 \
+ --hash=sha256:c61e2e41656a673b777e2f0cbbe545323dbe0d32312f590b1bc09da1de6c2a02 \
+ --hash=sha256:c6c4da4843e0dabde41b8f2e8147438330924114f541949e6318358a56d1875a \
+ --hash=sha256:d3499008ddec83127ab286c6f6ec82a34f39c9817f020f75eca96155f9765097 \
+ --hash=sha256:dbb990612c36163c6072723523d2be7c3eb1517bbdd63fe50449f56afafd1133 \
+ --hash=sha256:dd53b6c4e6d960600fd6532b79ee28e2da489322fcf6648738134587faf767b6 \
+ --hash=sha256:df40c16a7e8be7413b885c9bf900d402918cc848be08a59b022478804ea076b8 \
+ --hash=sha256:e0a5354cb4de9b64bccb6ea33162cb83e03dbefa0d892db88a672f5aad638a75 \
+ --hash=sha256:e0b148ab0438f72ad21cb004ce3bdaafd28465c4276af66df3b9ecd2037bf252 \
+ --hash=sha256:e23b88c69497a6322b5796c0781400692eca1ae5532821b39ce81a48c395aae9 \
+ --hash=sha256:fc4974d3684f28b61b9a90fcb4c41fb340fd4b6a50c04365704a4da5a9603b05 \
+ --hash=sha256:feea693c452d85ea0015ebe3bb9cd15b6f49acc1a31c28b3c50f4db0f8fb1e71 \
+ --hash=sha256:fffcc8edc508801ed2e6a4e7b0d150a62196fd28b4e16ab9f65192e8186102b6
# via -r requirements.in
typing-extensions==4.10.0 \
--hash=sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475 \
diff --git a/tests/core/greylist/api/requirements.txt b/tests/core/greylist/api/requirements.txt
index 753bd5ed4..6694911c8 100644
--- a/tests/core/greylist/api/requirements.txt
+++ b/tests/core/greylist/api/requirements.txt
@@ -72,9 +72,9 @@ idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
# via anyio
-pydantic==2.6.2 \
- --hash=sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3 \
- --hash=sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7
+pydantic==2.6.3 \
+ --hash=sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a \
+ --hash=sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f
# via fastapi
pydantic-core==2.16.3 \
--hash=sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a \
diff --git a/tests/core/redis/requirements.in b/tests/core/redis/requirements.in
index 0aa2c4cd5..01e2cfbb9 100644
--- a/tests/core/redis/requirements.in
+++ b/tests/core/redis/requirements.in
@@ -1,5 +1,5 @@
fastapi==0.110.0
-redis==5.0.1
+redis==5.0.2
requests==2.31.0
selenium<4.17.0
uvicorn[standard]==0.27.1
diff --git a/tests/core/redis/requirements.txt b/tests/core/redis/requirements.txt
index 491b2f3de..d139851da 100644
--- a/tests/core/redis/requirements.txt
+++ b/tests/core/redis/requirements.txt
@@ -192,9 +192,9 @@ outcome==1.3.0.post0 \
--hash=sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8 \
--hash=sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b
# via trio
-pydantic==2.6.2 \
- --hash=sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3 \
- --hash=sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7
+pydantic==2.6.3 \
+ --hash=sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a \
+ --hash=sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f
# via fastapi
pydantic-core==2.16.3 \
--hash=sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a \
@@ -339,9 +339,9 @@ pyyaml==6.0.1 \
--hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
--hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
# via uvicorn
-redis==5.0.1 \
- --hash=sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f \
- --hash=sha256:ed4802971884ae19d640775ba3b03aa2e7bd5e8fb8dfaed2decce4d0fc48391f
+redis==5.0.2 \
+ --hash=sha256:3f82cc80d350e93042c8e6e7a5d0596e4dd68715babffba79492733e1f367037 \
+ --hash=sha256:4caa8e1fcb6f3c0ef28dba99535101d80934b7d4cd541bbb47f4a3826ee472d1
# via -r requirements.in
requests==2.31.0 \
--hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
diff --git a/tests/core/reversescan/requirements.txt b/tests/core/reversescan/requirements.txt
index 0d2517bd6..439f6f9d3 100644
--- a/tests/core/reversescan/requirements.txt
+++ b/tests/core/reversescan/requirements.txt
@@ -170,9 +170,9 @@ idna==3.6 \
# via
# anyio
# requests
-pydantic==2.6.2 \
- --hash=sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3 \
- --hash=sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7
+pydantic==2.6.3 \
+ --hash=sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a \
+ --hash=sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f
# via fastapi
pydantic-core==2.16.3 \
--hash=sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a \
diff --git a/tests/core/whitelist/api/requirements.txt b/tests/core/whitelist/api/requirements.txt
index 753bd5ed4..6694911c8 100644
--- a/tests/core/whitelist/api/requirements.txt
+++ b/tests/core/whitelist/api/requirements.txt
@@ -72,9 +72,9 @@ idna==3.6 \
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
# via anyio
-pydantic==2.6.2 \
- --hash=sha256:37a5432e54b12fecaa1049c5195f3d860a10e01bdfd24f1840ef14bd0d3aeab3 \
- --hash=sha256:a09be1c3d28f3abe37f8a78af58284b236a92ce520105ddc91a6d29ea1176ba7
+pydantic==2.6.3 \
+ --hash=sha256:72c6034df47f46ccdf81869fddb81aade68056003900a8724a4f160700016a2a \
+ --hash=sha256:e07805c4c7f5c6826e33a1d4c9d47950d7eaf34868e2690f8594d2e30241f11f
# via fastapi
pydantic-core==2.16.3 \
--hash=sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a \