git subrepo commit (merge) mailcow/src/mailcow-dockerized
subrepo:
subdir: "mailcow/src/mailcow-dockerized"
merged: "81fb18894"
upstream:
origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "4ca02ecee"
git-subrepo:
version: "0.4.6"
origin: "???"
commit: "???"
Update to upstream 2026-10. Local patches re-applied by hand
(no Unbound DNS for containers, IPv6 off by default, fake-MySQL
stubs in dockerapi, Postfix overrides, no .env symlink); dropped
the unused dovecot and clamd Dockerfile patches.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I2c2c194d1d436b841358685f5f94aef09eb19ae8
diff --git a/mailcow/src/mailcow-dockerized/data/Dockerfiles/dockerapi/main.py b/mailcow/src/mailcow-dockerized/data/Dockerfiles/dockerapi/main.py
index fca61bb..bf197bd 100644
--- a/mailcow/src/mailcow-dockerized/data/Dockerfiles/dockerapi/main.py
+++ b/mailcow/src/mailcow-dockerized/data/Dockerfiles/dockerapi/main.py
@@ -34,9 +34,9 @@
# Init redis client
if os.environ['REDIS_SLAVEOF_IP'] != "":
- redis_client = redis = await aioredis.from_url(f"redis://{os.environ['REDIS_SLAVEOF_IP']}:{os.environ['REDIS_SLAVEOF_PORT']}/0")
+ redis_client = redis = await aioredis.from_url(f"redis://{os.environ['REDIS_SLAVEOF_IP']}:{os.environ['REDIS_SLAVEOF_PORT']}/0", password=os.environ['REDISPASS'])
else:
- redis_client = redis = await aioredis.from_url("redis://redis-mailcow:6379/0")
+ redis_client = redis = await aioredis.from_url("redis://redis-mailcow:6379/0", password=os.environ['REDISPASS'])
# Init docker clients
sync_docker_client = docker.DockerClient(base_url='unix://var/run/docker.sock', version='auto')
@@ -90,7 +90,7 @@
if container._id == container_id:
container_info = await container.show()
return Response(content=json.dumps(container_info, indent=4), media_type="application/json")
-
+
res = {
"type": "danger",
"msg": "no container found"
@@ -110,12 +110,12 @@
return Response(content=json.dumps(res, indent=4), media_type="application/json")
@app.get("/containers/json")
-async def get_containers():
+async def get_containers(all: bool = False):
global dockerapi
containers = {}
try:
- for container in (await dockerapi.async_docker_client.containers.list()):
+ for container in (await dockerapi.async_docker_client.containers.list(all=all)):
container_info = await container.show()
containers.update({container_info['Id']: container_info})
return Response(content=json.dumps(containers, indent=4), media_type="application/json")
@@ -130,7 +130,7 @@
async def post_containers(container_id : str, post_action : str, request: Request):
global dockerapi
- try :
+ try:
request_json = await request.json()
except Exception as err:
request_json = {}
@@ -191,7 +191,7 @@
stats = json.loads(await dockerapi.redis_client.get(container_id + '_stats'))
return Response(content=json.dumps(stats, indent=4), media_type="application/json")
-
+
# PubSub Handler
async def handle_pubsub_messages(channel: aioredis.client.PubSub):
@@ -241,10 +241,10 @@
else:
dockerapi.logger.error("api call: missing container_name, post_action or request")
else:
- dockerapi.logger.error("Unknwon PubSub recieved - %s" % json.dumps(data_json))
+ dockerapi.logger.error("Unknown PubSub received - %s" % json.dumps(data_json))
else:
- dockerapi.logger.error("Unknwon PubSub recieved - %s" % json.dumps(data_json))
-
+ dockerapi.logger.error("Unknown PubSub received - %s" % json.dumps(data_json))
+
await asyncio.sleep(0.0)
except asyncio.TimeoutError:
pass