From 867911f2768e4497b08441d6ee0ce13912b60536 Mon Sep 17 00:00:00 2001 From: Matthew Grotke Date: Sun, 24 May 2026 03:47:34 -0400 Subject: [PATCH] Development --- docker/routlin-dash/app/action_clear_ddns_log.py | 11 ++++++++++- docker/routlin-dash/app/view_page.py | 3 +++ docker/routlin-dash/data/page_content.json | 8 ++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/docker/routlin-dash/app/action_clear_ddns_log.py b/docker/routlin-dash/app/action_clear_ddns_log.py index 8b52051..f3144a1 100644 --- a/docker/routlin-dash/app/action_clear_ddns_log.py +++ b/docker/routlin-dash/app/action_clear_ddns_log.py @@ -1,4 +1,5 @@ -from flask import Blueprint, redirect, flash +import os +from flask import Blueprint, redirect, flash, send_file, abort from auth import require_level from config_utils import CONFIGS_DIR @@ -16,3 +17,11 @@ def clear_ddns_log(): except Exception as ex: flash(f'Could not clear log: {ex}', 'error') return redirect('/view/view_ddns') + + +@bp.route('/action/download_ddns_log', methods=['GET']) +@require_level('administrator') +def download_ddns_log(): + if not os.path.isfile(LOG_FILE): + abort(404) + return send_file(LOG_FILE, as_attachment=True, download_name='ddns.log', mimetype='text/plain') diff --git a/docker/routlin-dash/app/view_page.py b/docker/routlin-dash/app/view_page.py index 6305f88..15b2a83 100644 --- a/docker/routlin-dash/app/view_page.py +++ b/docker/routlin-dash/app/view_page.py @@ -1074,6 +1074,9 @@ def _render_item(item, tokens, inherited_req=None): extra = f' data-filter-col="{e(filter_col)}"' if filter_col else '' return f'' + if t == 'spacer': + return '' + if t == 'button_row': inner = render_items(item.get('items', []), tokens, req) return f'
{inner}
' diff --git a/docker/routlin-dash/data/page_content.json b/docker/routlin-dash/data/page_content.json index 830a9cc..83e65ef 100644 --- a/docker/routlin-dash/data/page_content.json +++ b/docker/routlin-dash/data/page_content.json @@ -529,6 +529,14 @@ "action": "/action/clear_ddns_log", "method": "post", "text": "Clear Log" + }, + { + "type": "spacer" + }, + { + "type": "button_ghost", + "action": "/action/download_ddns_log", + "text": "Download Log" } ] },