From e5b787213dc62007dd22b143104e3c4f9175f9a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= <mateusz.gruszczynski@firma.interia.pl> Date: Mon, 24 Feb 2025 11:31:50 +0100 Subject: [PATCH] new options and functions --- app.py | 12 ++++++++---- templates/all_files.html | 12 ++++++++---- templates/settings.html | 5 +++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app.py b/app.py index a4374d6..ad79080 100644 --- a/app.py +++ b/app.py @@ -113,6 +113,7 @@ class GlobalSettings(db.Model): smtp_password = db.Column(db.String(255), nullable=True) smtp_notifications_enabled = db.Column(db.Boolean, default=False) log_retention_days = db.Column(db.Integer, default=7) + recipient_email = db.Column(db.String(255), nullable=True) ############################################################################### # Inicjalizacja bazy @@ -462,12 +463,13 @@ def notify(settings: GlobalSettings, message: str, success: bool): settings.smtp_login and settings.smtp_login.strip() and settings.smtp_password and settings.smtp_password.strip()): try: + to_address = settings.recipient_email.strip() if settings.recipient_email and settings.recipient_email.strip() else settings.smtp_login.strip() send_mail_with_attachment( smtp_host=settings.smtp_host.strip(), smtp_port=settings.smtp_port, smtp_user=settings.smtp_login.strip(), smtp_pass=settings.smtp_password.strip(), - to_address=settings.smtp_login.strip(), + to_address=to_address, subject="RouterOS Backup Notification", plain_body=message ) @@ -1028,7 +1030,6 @@ def diff_selector(): def all_files(): user = get_current_user() query = Backup.query.join(Router).filter(Router.owner_id == user.id) - # Filtrowanie – wyszukiwanie po nazwie pliku (zastosowanie filtru "basename") search = request.args.get('search', '') if search: @@ -1136,8 +1137,9 @@ def settings_view(): s.smtp_port = int(request.form.get('smtp_port', '587')) s.smtp_login = request.form.get('smtp_login', '') s.smtp_password = request.form.get('smtp_password', '') + s.recipient_email = request.form.get('recipient_email', '') db.session.commit() - reschedule_jobs() # Aktualizacja zadań – zadania dotyczące backupu/CRON zostaną teraz sterowane z /advanced_schedule + #reschedule_jobs() # Aktualizacja zadań – zadania dotyczące backupu/CRON zostaną teraz sterowane z /advanced_schedule flash("Zapisano ustawienia.") return redirect(url_for('settings_view')) return render_template('settings.html', settings=s) @@ -1405,12 +1407,14 @@ def test_email(): return redirect(url_for('settings_view')) subject = "Testowy e-mail z RouterOS Backup" body = "To jest testowa wiadomość e-mail wysłana z systemu RouterOS Backup." + # Używamy recipient_email, jeśli jest ustawiony, w przeciwnym razie smtp_login + to_address = s.recipient_email.strip() if s.recipient_email and s.recipient_email.strip() else s.smtp_login.strip() success = send_mail_with_attachment( smtp_host=s.smtp_host, smtp_port=s.smtp_port, smtp_user=s.smtp_login, smtp_pass=s.smtp_password, - to_address=s.smtp_login, + to_address=to_address, subject=subject, plain_body=body ) diff --git a/templates/all_files.html b/templates/all_files.html index aa88a5d..acc3d94 100644 --- a/templates/all_files.html +++ b/templates/all_files.html @@ -63,7 +63,13 @@ <span class="badge bg-secondary">{{ file.backup_type }}</span> {% endif %} </td> - <td>{{ file.file_path|basename }}</td> + <td> + {% if file.backup_type == 'binary' %} + <span data-bs-toggle="tooltip" title="Checksum: {{ file.checksum }}">{{ file.file_path|basename }}</span> + {% else %} + {{ file.file_path|basename }} + {% endif %} + </td> <td>{{ file.created_at.strftime("%Y-%m-%d %H:%M:%S") }}</td> <td>{{ file.file_path|filesize }}</td> <td> @@ -130,9 +136,7 @@ <script> document.getElementById('select_all').addEventListener('change', function(e) { var checkboxes = document.querySelectorAll('input[name="backup_id"]'); - for (var i = 0; i < checkboxes.length; i++) { - checkboxes[i].checked = e.target.checked; - } + checkboxes.forEach(cb => cb.checked = e.target.checked); }); </script> {% endblock %} diff --git a/templates/settings.html b/templates/settings.html index e0e92ca..11328e2 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -47,6 +47,11 @@ <label for="smtp_password" class="form-label">SMTP Hasło</label> <input type="password" class="form-control" id="smtp_password" name="smtp_password" value="{{ settings.smtp_password }}"> </div> + <!-- Nowe pole: docelowy adres e-mail --> + <div class="mb-3"> + <label for="recipient_email" class="form-label">Adres e-mail docelowy</label> + <input type="email" class="form-control" id="recipient_email" name="recipient_email" value="{{ settings.recipient_email }}"> + </div> </div> <hr> <!-- Sekcja globalnego klucza SSH -->