From 73bba58319fede2adb9b8c4d8c6bedf10edeff2b Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Sun, 18 Jan 2026 14:09:43 -0700 Subject: [PATCH 1/3] fix_container_permissions: rewrite to use mwscript --- miraheze/swift/fix_container_permissions.py | 36 +++++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/miraheze/swift/fix_container_permissions.py b/miraheze/swift/fix_container_permissions.py index 4d5b219..3bc5a69 100644 --- a/miraheze/swift/fix_container_permissions.py +++ b/miraheze/swift/fix_container_permissions.py @@ -1,15 +1,37 @@ +import argparse import re import subprocess -import argparse -def fix_container_perms(wiki: str) -> None: - out = subprocess.run(['sudo', '-u', 'www-data', 'php', '/srv/mediawiki/1.43/maintenance/run.php', 'CreateWiki:SetContainersAccess', '--wiki', wiki], capture_output=True, text=True) - matches = re.findall(r"Making sure 'mwstore:\/\/miraheze-swift\/([^']+)' [^\n]+\.failed\.", out.stdout) - for match in matches: - subprocess.run(['swift', 'post', '--read-acl', 'mw:media', '--write-acl', 'mw:media', f'miraheze-{wiki}-{match}'], check=True) +def run_mwscript_setcontainersaccess(wiki: str, check: bool) -> subprocess.CompletedProcess[str]: + return subprocess.run( + ['mwscript', 'CreateWiki:SetContainersAccess', wiki], + capture_output=True, + text=True, + check=check + ) - subprocess.run(['sudo', '-u', 'www-data', 'php', '/srv/mediawiki/1.43/maintenance/run.php', 'CreateWiki:SetContainersAccess', '--wiki', wiki]) + +def fix_container_perms(wiki: str) -> None: + out = run_mwscript_setcontainersaccess(wiki, check=False) + matches = re.findall( + r"Making sure 'mwstore:\/\/miraheze-swift\/([^']+)' exists\.\.\.[^\n]*failed\.", + (out.stdout or '') + '\n' + (out.stderr or '') + ) + + for container in matches: + subprocess.run( + [ + 'swift', + 'post', + '--read-acl', 'mw:media', + '--write-acl', 'mw:media', + f'miraheze-{wiki}-{container}', + ], + check=True + ) + + run_mwscript_setcontainersaccess(wiki, check=True) def main() -> None: From 627b91b007592d925889a1b77009e5b84243ee6f Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Sun, 18 Jan 2026 14:12:23 -0700 Subject: [PATCH 2/3] Fix --- miraheze/swift/fix_container_permissions.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/miraheze/swift/fix_container_permissions.py b/miraheze/swift/fix_container_permissions.py index 3bc5a69..dcab1e6 100644 --- a/miraheze/swift/fix_container_permissions.py +++ b/miraheze/swift/fix_container_permissions.py @@ -5,10 +5,10 @@ def run_mwscript_setcontainersaccess(wiki: str, check: bool) -> subprocess.CompletedProcess[str]: return subprocess.run( - ['mwscript', 'CreateWiki:SetContainersAccess', wiki], + ['mwscript', 'CreateWiki:SetContainersAccess', wiki, '--yes'], capture_output=True, text=True, - check=check + check=check, ) @@ -16,7 +16,7 @@ def fix_container_perms(wiki: str) -> None: out = run_mwscript_setcontainersaccess(wiki, check=False) matches = re.findall( r"Making sure 'mwstore:\/\/miraheze-swift\/([^']+)' exists\.\.\.[^\n]*failed\.", - (out.stdout or '') + '\n' + (out.stderr or '') + (out.stdout or '') + '\n' + (out.stderr or ''), ) for container in matches: @@ -28,7 +28,7 @@ def fix_container_perms(wiki: str) -> None: '--write-acl', 'mw:media', f'miraheze-{wiki}-{container}', ], - check=True + check=True, ) run_mwscript_setcontainersaccess(wiki, check=True) From eab7d8f7485628eaf3f9fc564e38d90b84e24021 Mon Sep 17 00:00:00 2001 From: CosmicAlpha Date: Sun, 18 Jan 2026 14:15:20 -0700 Subject: [PATCH 3/3] Don't change regex for now --- miraheze/swift/fix_container_permissions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miraheze/swift/fix_container_permissions.py b/miraheze/swift/fix_container_permissions.py index dcab1e6..7f3f685 100644 --- a/miraheze/swift/fix_container_permissions.py +++ b/miraheze/swift/fix_container_permissions.py @@ -15,7 +15,7 @@ def run_mwscript_setcontainersaccess(wiki: str, check: bool) -> subprocess.Compl def fix_container_perms(wiki: str) -> None: out = run_mwscript_setcontainersaccess(wiki, check=False) matches = re.findall( - r"Making sure 'mwstore:\/\/miraheze-swift\/([^']+)' exists\.\.\.[^\n]*failed\.", + r"Making sure 'mwstore:\/\/miraheze-swift\/([^']+)' [^\n]+\.failed\.", (out.stdout or '') + '\n' + (out.stderr or ''), )