From 1a525df8ad59d7c06436e8c30e1f079a81eb2570 Mon Sep 17 00:00:00 2001 From: Norman Stanke Date: Sat, 25 Jul 2015 13:47:10 +0200 Subject: [PATCH] Add Mail-in-a-Box version status check. --- management/daemon.py | 18 +++++++++++++ management/status_checks.py | 18 ++++++++++--- management/templates/index.html | 9 ++----- management/templates/system-status.html | 16 +++++++++++ management/templates/version.html | 36 ------------------------- management/utils.py | 22 +++++++++++++++ 6 files changed, 73 insertions(+), 46 deletions(-) delete mode 100644 management/templates/version.html diff --git a/management/daemon.py b/management/daemon.py index af15b1c3..b48b9030 100755 --- a/management/daemon.py +++ b/management/daemon.py @@ -402,6 +402,24 @@ def backup_status(): from backup import backup_status return json_response(backup_status(env)) +@app.route('/system/privacy/enable', methods=["POST"]) +@authorized_personnel_only +def privacy_status_enable(): + config = utils.load_settings() + config["PRIVACY"] = 'True' + utils.write_settings(config) + + return "Ok" + +@app.route('/system/privacy/disable', methods=["POST"]) +@authorized_personnel_only +def privacy_status_disable(): + config = utils.load_settings() + config["PRIVACY"] = 'False' + utils.write_settings(config) + + return "Ok" + # MUNIN @app.route('/munin/') diff --git a/management/status_checks.py b/management/status_checks.py index 7c89b30f..2e227cc3 100755 --- a/management/status_checks.py +++ b/management/status_checks.py @@ -16,7 +16,7 @@ from dns_update import get_dns_zones, build_tlsa_record, get_custom_dns_config, from web_update import get_web_domains, get_default_www_redirects, get_domain_ssl_files from mailconfig import get_mail_domains, get_mail_aliases -from utils import shell, sort_domains, load_env_vars_from_file +from utils import shell, sort_domains, load_env_vars_from_file, load_settings def run_checks(rounded_values, env, output, pool): # run systems checks @@ -149,6 +149,7 @@ def check_service(i, service, env): def run_system_checks(rounded_values, env, output): check_ssh_password(env, output) check_software_updates(env, output) + check_miab_version(env, output) check_system_aliases(env, output) check_free_disk_space(rounded_values, env, output) @@ -805,11 +806,11 @@ def list_apt_updates(apt_update=True): return pkgs def what_version_is_this(env): - # This function runs `git describe` on the Mail-in-a-Box installation directory. + # This function runs `git describe --abbrev=0` on the Mail-in-a-Box installation directory. # Git may not be installed and Mail-in-a-Box may not have been cloned from github, # so this function may raise all sorts of exceptions. miab_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - tag = shell("check_output", ["/usr/bin/git", "describe"], env={"GIT_DIR": os.path.join(miab_dir, '.git')}).strip() + tag = shell("check_output", ["/usr/bin/git", "describe", "--abbrev=0"], env={"GIT_DIR": os.path.join(miab_dir, '.git')}).strip() return tag def get_latest_miab_version(): @@ -818,6 +819,17 @@ def get_latest_miab_version(): import urllib.request return re.search(b'TAG=(.*)', urllib.request.urlopen("https://mailinabox.email/bootstrap.sh?ping=1").read()).group(1).decode("utf8") +def check_miab_version(env, output): + + config = load_settings() + + if config['PRIVACY'] == 'True': + output.print_warning("Mail-in-a-Box version check disabled.") + elif what_version_is_this(env) != get_latest_miab_version(): + output.print_error("Mail-in-a-Box is outdated. To find the latest version and for upgrade instructions, see https://mailinabox.email/. ") + else: + output.print_ok("Mail-in-a-Box is up to date. You are running version %s." % what_version_is_this(env)) + def run_and_output_changes(env, pool, send_via_email): import json from difflib import SequenceMatcher diff --git a/management/templates/index.html b/management/templates/index.html index 6e970761..28a89113 100644 --- a/management/templates/index.html +++ b/management/templates/index.html @@ -114,7 +114,6 @@
  • Contacts/Calendar
  • Web
  • -
  • Version