Backup parameters: terse and sensitive

This commit is contained in:
Eduardo Silva 2024-11-07 10:59:36 -03:00
parent 8b24470fc6
commit 32b17ca592
5 changed files with 47 additions and 3 deletions

View file

@ -14,7 +14,8 @@ class BackupProfileForm(forms.ModelForm):
'daily_day_wednesday', 'daily_day_thursday', 'daily_day_friday',
'daily_day_saturday', 'daily_day_sunday', 'weekly_day',
'monthly_day', 'daily_hour', 'weekly_hour', 'monthly_hour',
'max_retry', 'retry_interval', 'backup_interval', 'retrieve_interval', 'instant_retention'
'max_retry', 'retry_interval', 'backup_interval', 'retrieve_interval', 'instant_retention',
'parameter_sensitive', 'parameter_terse'
]
# widgets = {
# 'weekly_day': forms.Select(),
@ -50,6 +51,8 @@ class BackupProfileForm(forms.ModelForm):
self.fields['weekly_retention'].label = 'Retention (days)'
self.fields['monthly_retention'].label = 'Retention (days)'
self.fields['instant_retention'].label = 'Instant Retention (days)'
self.fields['parameter_sensitive'].label = 'sensitive'
self.fields['parameter_terse'].label = 'terse'
if self.instance.pk and self.instance.name == 'default':
self.fields['name'].widget.attrs['readonly'] = True
@ -93,6 +96,13 @@ class BackupProfileForm(forms.ModelForm):
css_id='monthly_settings', css_class='row'
),
Div(
Div(HTML('<hr><h4>Parameters</h4>'), css_class='col-md-12'),
Div('parameter_sensitive', css_class='col-md-6'),
Div('parameter_terse', css_class='col-md-6'),
css_id='misc_settings', css_class='row'
),
Div(
Div(HTML('<hr><h4>Backup Settings</h4>'), css_class='col-md-12'),
Div('max_retry', css_class='col-md-6'),
@ -103,6 +113,7 @@ class BackupProfileForm(forms.ModelForm):
Div('retain_backups_on_error', css_class='col-md-12'),
css_id='misc_settings', css_class='row'
),
Row(
Column(
Submit('submit', 'Save', css_class='btn btn-success'),

View file

@ -0,0 +1,23 @@
# Generated by Django 5.1.3 on 2024-11-07 13:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('backup', '0008_alter_backupprofile_backup_interval'),
]
operations = [
migrations.AddField(
model_name='backupprofile',
name='parameter_sensitive',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='backupprofile',
name='parameter_terse',
field=models.BooleanField(default=False),
),
]

View file

@ -23,6 +23,9 @@ class BackupProfile(models.Model):
instant_retention = models.IntegerField(default=3650)
retain_backups_on_error = models.BooleanField(default=True)
parameter_sensitive = models.BooleanField(default=False)
parameter_terse = models.BooleanField(default=False)
daily_day_monday = models.BooleanField(default=True)
daily_day_tuesday = models.BooleanField(default=True)
daily_day_wednesday = models.BooleanField(default=True)

View file

@ -142,6 +142,6 @@ STATICFILES_DIRS = [
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = '/var/lib/routerfleet/'
ROUTERFLEET_VERSION = 7021
ROUTERFLEET_VERSION = 7022
from routerfleet.production_settings import *

View file

@ -80,11 +80,18 @@ def execute_backup(router_backup: RouterBackup):
backup_name = gen_backup_name(router_backup)
file_extension = get_router_backup_file_extension(router.router_type)
ssh_client = None
additional_parameters = ""
try:
if router_backup.router.router_type == 'routeros':
if router.backup_profile:
if router.backup_profile.parameter_sensitive:
additional_parameters += ' show-sensitive'
if router.backup_profile.parameter_terse:
additional_parameters += ' terse'
ssh_client = connect_to_ssh(router.address, router.port, router.username, router.password, router.ssh_key)
ssh_client.exec_command(f'/system backup save name={backup_name}.{file_extension["binary"]}')
ssh_client.exec_command(f'/export file={backup_name}.{file_extension["text"]}')
ssh_client.exec_command(f'/export file={backup_name}.{file_extension["text"]} {additional_parameters}')
return True, [f'{backup_name}.{file_extension["binary"]}', f'{backup_name}.{file_extension["text"]}'], error_message
elif router_backup.router.router_type == 'openwrt':
ssh_client = connect_to_ssh(router.address, router.port, router.username, router.password, router.ssh_key)