mirror of
https://github.com/eduardogsilva/routerfleet.git
synced 2025-06-20 17:15:39 +02:00
Backup parameters: terse and sensitive
This commit is contained in:
parent
8b24470fc6
commit
32b17ca592
5 changed files with 47 additions and 3 deletions
|
@ -14,7 +14,8 @@ class BackupProfileForm(forms.ModelForm):
|
||||||
'daily_day_wednesday', 'daily_day_thursday', 'daily_day_friday',
|
'daily_day_wednesday', 'daily_day_thursday', 'daily_day_friday',
|
||||||
'daily_day_saturday', 'daily_day_sunday', 'weekly_day',
|
'daily_day_saturday', 'daily_day_sunday', 'weekly_day',
|
||||||
'monthly_day', 'daily_hour', 'weekly_hour', 'monthly_hour',
|
'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 = {
|
# widgets = {
|
||||||
# 'weekly_day': forms.Select(),
|
# 'weekly_day': forms.Select(),
|
||||||
|
@ -50,6 +51,8 @@ class BackupProfileForm(forms.ModelForm):
|
||||||
self.fields['weekly_retention'].label = 'Retention (days)'
|
self.fields['weekly_retention'].label = 'Retention (days)'
|
||||||
self.fields['monthly_retention'].label = 'Retention (days)'
|
self.fields['monthly_retention'].label = 'Retention (days)'
|
||||||
self.fields['instant_retention'].label = 'Instant 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':
|
if self.instance.pk and self.instance.name == 'default':
|
||||||
self.fields['name'].widget.attrs['readonly'] = True
|
self.fields['name'].widget.attrs['readonly'] = True
|
||||||
|
|
||||||
|
@ -93,6 +96,13 @@ class BackupProfileForm(forms.ModelForm):
|
||||||
css_id='monthly_settings', css_class='row'
|
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(
|
||||||
Div(HTML('<hr><h4>Backup Settings</h4>'), css_class='col-md-12'),
|
Div(HTML('<hr><h4>Backup Settings</h4>'), css_class='col-md-12'),
|
||||||
Div('max_retry', css_class='col-md-6'),
|
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'),
|
Div('retain_backups_on_error', css_class='col-md-12'),
|
||||||
css_id='misc_settings', css_class='row'
|
css_id='misc_settings', css_class='row'
|
||||||
),
|
),
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
Column(
|
Column(
|
||||||
Submit('submit', 'Save', css_class='btn btn-success'),
|
Submit('submit', 'Save', css_class='btn btn-success'),
|
||||||
|
|
|
@ -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),
|
||||||
|
),
|
||||||
|
]
|
|
@ -23,6 +23,9 @@ class BackupProfile(models.Model):
|
||||||
instant_retention = models.IntegerField(default=3650)
|
instant_retention = models.IntegerField(default=3650)
|
||||||
retain_backups_on_error = models.BooleanField(default=True)
|
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_monday = models.BooleanField(default=True)
|
||||||
daily_day_tuesday = models.BooleanField(default=True)
|
daily_day_tuesday = models.BooleanField(default=True)
|
||||||
daily_day_wednesday = models.BooleanField(default=True)
|
daily_day_wednesday = models.BooleanField(default=True)
|
||||||
|
|
|
@ -142,6 +142,6 @@ STATICFILES_DIRS = [
|
||||||
|
|
||||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||||
MEDIA_ROOT = '/var/lib/routerfleet/'
|
MEDIA_ROOT = '/var/lib/routerfleet/'
|
||||||
ROUTERFLEET_VERSION = 7021
|
ROUTERFLEET_VERSION = 7022
|
||||||
|
|
||||||
from routerfleet.production_settings import *
|
from routerfleet.production_settings import *
|
||||||
|
|
|
@ -80,11 +80,18 @@ def execute_backup(router_backup: RouterBackup):
|
||||||
backup_name = gen_backup_name(router_backup)
|
backup_name = gen_backup_name(router_backup)
|
||||||
file_extension = get_router_backup_file_extension(router.router_type)
|
file_extension = get_router_backup_file_extension(router.router_type)
|
||||||
ssh_client = None
|
ssh_client = None
|
||||||
|
additional_parameters = ""
|
||||||
try:
|
try:
|
||||||
if router_backup.router.router_type == 'routeros':
|
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 = 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'/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
|
return True, [f'{backup_name}.{file_extension["binary"]}', f'{backup_name}.{file_extension["text"]}'], error_message
|
||||||
elif router_backup.router.router_type == 'openwrt':
|
elif router_backup.router.router_type == 'openwrt':
|
||||||
ssh_client = connect_to_ssh(router.address, router.port, router.username, router.password, router.ssh_key)
|
ssh_client = connect_to_ssh(router.address, router.port, router.username, router.password, router.ssh_key)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue