From e30364a5106683ba1a29424a95de0378eb3d4f3c Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Mon, 23 Jul 2018 16:30:32 +0530 Subject: [PATCH] mediawiki: Override Debian settings in FreedomBoxSettings.php Avoiding manual edits to LocalSettings.php by overriding the configuration in another file called FreedomBoxSettings.php and including it in LocalSettings.php. This avoids bugs and makes configuration changes trivial. Signed-off-by: Joseph Nuthalapati --- actions/mediawiki | 70 +++-------------------- data/etc/mediawiki/FreedomBoxSettings.php | 19 ++++++ setup.py | 1 + 3 files changed, 29 insertions(+), 61 deletions(-) create mode 100644 data/etc/mediawiki/FreedomBoxSettings.php diff --git a/actions/mediawiki b/actions/mediawiki index 8784c5add..f46699abc 100755 --- a/actions/mediawiki +++ b/actions/mediawiki @@ -21,7 +21,6 @@ Configuration helper for MediaWiki. import argparse import os -import re import subprocess import sys import tempfile @@ -30,7 +29,7 @@ from plinth import action_utils from plinth.utils import generate_password, grep MAINTENANCE_SCRIPTS_DIR = "/usr/share/mediawiki/maintenance" -CONF_FILE = '/var/lib/mediawiki/LocalSettings.php' +CONF_FILE = '/etc/mediawiki/FreedomBoxSettings.php' def parse_arguments(): @@ -85,68 +84,17 @@ def subcommand_setup(_): ]) subprocess.run(['chmod', '-R', 'o-rwx', data_dir], check=True) subprocess.run(['chown', '-R', 'www-data:www-data', data_dir], check=True) - _change_article_path() - _disable_public_registrations() - _disable_anonymous_editing() - _change_logo() - _enable_file_uploads() + include_custom_config() -def _disable_public_registrations(): - """Edit MediaWiki configuration to disable public registrations.""" - if not grep(r'\$wgGroupPermissions.*createaccount', CONF_FILE): - with open(CONF_FILE, 'a') as file_handle: - file_handle.write( - "$wgGroupPermissions['*']['createaccount'] = false;\n") - - -def _disable_anonymous_editing(): - """Edit MediaWiki configuration to allow anonymous users from editing. - - MediaWiki instances typically get a lot of spam bots. +def include_custom_config(): + """Include FreedomBox specific configuration in LocalSettings.php """ - if not grep(r'\$wgGroupPermissions.*edit', CONF_FILE): - with open(CONF_FILE, 'a') as file_handle: - file_handle.write("$wgGroupPermissions['*']['edit'] = false;\n") - - -def _change_logo(): - """Change the placeholder logo to MediaWiki's official logo""" - lines = open(CONF_FILE, 'r').readlines() - with open(CONF_FILE, 'w') as file_handle: - for line in lines: - if re.match('^\s*\$wgLogo', line): - line = line.replace('assets/wiki.png', 'assets/mediawiki.png') - - file_handle.write(line) - -def _change_article_path(): - lines = open(CONF_FILE, 'r').readlines() - with open(CONF_FILE, 'a') as file_handle: - conf_line = "" - for line in lines: - if not re.match('^\s*\$wgArticlePath', line): - conf_line = "$wgArticlePath = \"/mediawiki/$1\";\n" - if not re.match('^\s*\$wgUsePathInfo', line): - conf_line = conf_line+"$wgUsePathInfo = true;\n"; - file_handle.write(conf_line) - - -def _enable_file_uploads(): - """Enable file uploads in mediawiki""" - conf_line = '$wgEnableUploads = true;\n' - conf_updated = False - with open(CONF_FILE, 'r') as conf_file: - lines = conf_file.readlines() - with open(CONF_FILE, 'w') as conf_file: - for line in lines: - if "$wgEnableUploads" in line: - conf_file.write(conf_line) - conf_updated = True - else: - conf_file.write(line) - if not conf_updated: - conf_file.write(conf_line) + local_settings_conf = '/etc/mediawiki/LocalSettings.php' + if not grep(r'FreedomBoxSettings', local_settings_conf): + with open(local_settings_conf, 'a') as conf_file: + conf_file.write( + 'include dirname(__FILE__)."/FreedomBoxSettings.php";\n') def subcommand_change_password(arguments): diff --git a/data/etc/mediawiki/FreedomBoxSettings.php b/data/etc/mediawiki/FreedomBoxSettings.php new file mode 100644 index 000000000..b22059810 --- /dev/null +++ b/data/etc/mediawiki/FreedomBoxSettings.php @@ -0,0 +1,19 @@ +