This is just a diff for testing people... ;-)
Changelog in short:
- Added tables
- Cleaned up the code a bit, some if-queries were unnessecary (if
($cgiparams{'ACTION'} eq...)
- Deleted unused lang strings (downloadiso, downloadaddon, logs)
- Separated the ISO files from the IPF files for better overview.
- Added query for deleting a backup file (onclick=\"return confirm...)
ToDo:
Change table layout to alternating rows. If "someone" has some hints
how to do this, I'll be grateful.
Signed-off-by: Matthias Fischer <matthias.fischer(a)ipfire.org>
---
html/cgi-bin/backup.cgi | 218 +++++++++++++++++++++++++++++-----------
langs/de/cgi-bin/de.pl | 8 +-
langs/en/cgi-bin/en.pl | 8 +-
langs/es/cgi-bin/es.pl | 1 -
langs/fr/cgi-bin/fr.pl | 1 -
langs/it/cgi-bin/it.pl | 1 -
langs/nl/cgi-bin/nl.pl | 1 -
langs/pl/cgi-bin/pl.pl | 1 -
langs/ru/cgi-bin/ru.pl | 1 -
langs/tr/cgi-bin/tr.pl | 1 -
10 files changed, 174 insertions(+), 67 deletions(-)
diff --git a/html/cgi-bin/backup.cgi b/html/cgi-bin/backup.cgi
index 683f8add4..04473428c 100644
--- a/html/cgi-bin/backup.cgi
+++ b/html/cgi-bin/backup.cgi
@@ -32,7 +32,7 @@ require "${General::swroot}/header.pl";
my %color = ();
my %mainsettings = ();
-my %cgiparams=();
+my %cgiparams = ();
my %checked = ();
my $message = "";
my $errormessage = "";
@@ -59,25 +59,13 @@ system("/usr/local/bin/backupctrl makedirs >/dev/null 2>&1 ") unless ( -e '/var/
############################################################################################################################
############################################## System calls ohne Http Header ###############################################
-if ($cgiparams{'ACTION'} eq "download") {
+if ($cgiparams{'ACTION'} eq "$Lang::tr{'download'}") {
my $file = &sanitise_file($cgiparams{'FILE'});
exit(1) unless defined($file);
&deliver_file($file);
exit(0);
-} elsif ($cgiparams{'ACTION'} eq "downloadiso") {
- my $file = &sanitise_file($cgiparams{'FILE'});
- exit(1) unless defined($file);
-
- &deliver_file($file);
- exit(0);
-} elsif ($cgiparams{'ACTION'} eq "downloadaddon") {
- my $file = &sanitise_file($cgiparams{'FILE'});
- exit(1) unless defined($file);
-
- &deliver_file($file);
- exit(0);
-} elsif ( $cgiparams{'ACTION'} eq "restore") {
+} elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'restore'}") {
my $upload = $a->param("UPLOAD");
open UPLOADFILE, ">/tmp/restore.ipf";
binmode $upload;
@@ -87,7 +75,7 @@ if ($cgiparams{'ACTION'} eq "download") {
close UPLOADFILE;
system("/usr/local/bin/backupctrl restore >/dev/null 2>&1");
}
-elsif ( $cgiparams{'ACTION'} eq "restoreaddon" )
+elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'restoreaddon'}" )
{
chomp($cgiparams{'UPLOAD'});
# we need to fix cause IE7 gives the full path and FF only the filename
@@ -112,7 +100,7 @@ sub refreshpage{&Header::openbox( 'Waiting', 1, "<meta http-equiv='refresh' cont
############################################################################################################################
################################################### Default System calls ###################################################
-if ( $cgiparams{'ACTION'} eq "backup" )
+if ( $cgiparams{'ACTION'} eq "$Lang::tr{'backup'}" )
{
if ( $cgiparams{'BACKUPLOGS'} eq "include" ) {
system("/usr/local/bin/backupctrl include >/dev/null 2>&1");
@@ -122,7 +110,7 @@ if ( $cgiparams{'ACTION'} eq "backup" )
system("/usr/local/bin/backupctrl iso >/dev/null 2>&1");
}
}
-if ( $cgiparams{'ACTION'} eq "addonbackup" )
+if ( $cgiparams{'ACTION'} eq "$Lang::tr{'addonbackup'}" )
{
# Exit if there is any dots or slashes in the addon name
exit(1) if ($cgiparams{'ADDON'} =~ /(\.|\/)/);
@@ -132,7 +120,7 @@ if ( $cgiparams{'ACTION'} eq "addonbackup" )
system("/usr/local/bin/backupctrl addonbackup $cgiparams{'ADDON'} >/dev/null 2>&1");
}
-elsif ( $cgiparams{'ACTION'} eq "delete" )
+elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'delete'}" )
{
my $file = &sanitise_file($cgiparams{'FILE'});
exit(1) unless defined($file);
@@ -157,13 +145,13 @@ if ( -e "/var/tmp/backupiso/" ){
@backupisos = `cd /var/tmp/backupiso/ && ls *.iso 2>/dev/null`;
}
-&Header::openbox('100%', 'center', );
+&Header::openbox('100%', 'center', $Lang::tr{'backup config'});
print <<END
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
<table width='95%' cellspacing='0'>
<tr>
- <td align='left' width='40%'>$Lang::tr{'logs'}</td>
+ <td align='center' width='45%'></td>
<td align='left'>
<input type='radio' name='BACKUPLOGS' value='include'/> $Lang::tr{'include logfiles'}<br/>
<input type='radio' name='BACKUPLOGS' value='exclude' checked='checked'/> $Lang::tr{'exclude logfiles'}<br/>
@@ -177,8 +165,8 @@ print <<END
</td>
</tr>
<tr><td align='center' colspan='2'>
- <input type='hidden' name='ACTION' value='backup' />
- <input type='image' alt='$Lang::tr{'backup'}' title='$Lang::tr{'backup'}' src='/images/document-save.png' />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'backup'}' />
+ <input type='image' alt='$Lang::tr{'backup'}' title='$Lang::tr{'backup'}' src='/images/floppy.gif' />
</td></tr>
</table>
</form>
@@ -189,10 +177,17 @@ END
############################################################################################################################
############################################ Backups des Systems downloaden ################################################
-&Header::openbox('100%', 'center', $Lang::tr{'backups'});
+&Header::openbox('100%', 'center', $Lang::tr{'backups data'});
print <<END
-<table width='95%' cellspacing='0'>
+<table width='95%' cellspacing='0' border='1'>
+
+<tr>
+<th width='40%'>$Lang::tr{'filename'}</th>
+<th>$Lang::tr{'size'}</th>
+<th colspan='2'>$Lang::tr{'action'}</th>
+</tr>
+
END
;
foreach (@backups){
@@ -202,9 +197,44 @@ my $Datei = "/var/ipfire/backup/".$_;
my @Info = stat($Datei);
my $Size = $Info[7] / 1024 / 1024;
$Size = sprintf("%0.2f", $Size);
-print "<tr><td align='center'>$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size MB</td><td width='5'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='download' /><input type='hidden' name='FILE' value='$_' /><input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/package-x-generic.png' /></form></td>";
-print "<td width='5'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='delete' /><input type='hidden' name='FILE' value='$_' /><input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' /></form></td></tr>";
+
+print "<tr>
+<td align='center'>$_</td>
+<td align='center'>$Size MB</td>
+<td width='5'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
+ <input type='hidden' name='ACTION' value='$Lang::tr{'download'}' />
+ <input type='hidden' name='FILE' value='$_' />
+ <input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/go-bottom.png' />
+ </form></td>";
+
+print "<td width='5'>
+<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+ <input type='hidden' name='ACTION' value='$Lang::tr{'delete'}' />
+ <input type='hidden' name='FILE' value='$_' />
+ <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' onclick=\"return confirm('$Lang::tr{'delete file'}');\" />
+ </form></td></tr>";
}
+
+print <<END
+</table>
+END
+;
+&Header::closebox();
+
+&Header::openbox('100%', 'center', $Lang::tr{'backups iso'});
+
+print <<END
+<table width='95%' cellspacing='0' border='1'>
+
+<tr>
+<th width='40%'>$Lang::tr{'filename'}</th>
+<th>$Lang::tr{'size'}</th>
+<th colspan='2'>$Lang::tr{'action'}</th>
+</tr>
+
+END
+;
+
foreach (@backupisos){
if ( $_ !~ /iso$/){next;}
chomp($_);
@@ -212,8 +242,22 @@ my $Datei = "/var/tmp/backupiso/".$_;
my @Info = stat($Datei);
my $Size = $Info[7] / 1024 / 1024;
$Size = sprintf("%0.2f", $Size);
-print "<tr><td align='center'>$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size MB</td><td width='5'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='downloadiso' /><input type='hidden' name='FILE' value='$_' /><input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/package-x-generic.png' /></form></td>";
-print "<td width='5'><form method='post' action='$ENV{'SCRIPT_NAME'}'><input type='hidden' name='ACTION' value='delete' /><input type='hidden' name='FILE' value='$_' /><input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' /></form></td></tr>";
+
+print "<tr>
+<td align='center' width='40%'>$_</td>
+<td align='center'>$Size MB</td>
+<td width='5'><form method='post' action='$ENV{'SCRIPT_NAME'}'>
+ <input type='hidden' name='ACTION' value='$Lang::tr{'download'}' />
+ <input type='hidden' name='FILE' value='$_' />
+ <input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/go-bottom.png' />
+ </form></td>";
+
+print "<td width='5'>
+<form method='post' action='$ENV{'SCRIPT_NAME'}'>
+ <input type='hidden' name='ACTION' value='$Lang::tr{'delete'}' />
+ <input type='hidden' name='FILE' value='$_' />
+ <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' onclick=\"return confirm('$Lang::tr{'delete file'}');\" />
+ </form></td></tr>";
}
print <<END
</table>
@@ -235,7 +279,19 @@ foreach (@addons){
$addons{$addon}='';
}
-print "<table width='95%' cellspacing='0'>";
+print <<END
+
+<table width='95%' cellspacing='0' border='1'>
+
+<tr>
+<th width='20%'>$Lang::tr{'name'}</th>
+<th width='20%'>$Lang::tr{'date'}</th>
+<th>$Lang::tr{'size'}</th>
+<th align='center' colspan='3'>$Lang::tr{'action'}</th>
+</tr>
+END
+;
+
foreach (@addonincluds){
chomp($_);
delete $addons{$_};
@@ -245,69 +301,93 @@ my $Size = $Info[7] / 1024;
if ( -e $Datei ){
if ($Size < 1) {
- $Size = sprintf("%.2f", $Size);
- print "<tr><td align='center'>$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."</td>";
- } else {
- $Size = sprintf("%2d", $Size);
- print "<tr><td align='center'>$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."</td>";
+ $Size = sprintf("%.2f", $Size);
+print "<tr>
+ <td align='center'>$_</td>
+ <td align='center'>".localtime($Info[9])."</td>
+ <td align='center'>$Size KB</td>";
+ </tr>
- }
+ } else {
+ $Size = sprintf("%2d", $Size);
+print "<tr>
+ <td align='center'>$_</td>
+ <td align='center'>".localtime($Info[9])."</td>
+ <td align='center'>$Size KB</td>";
+ </tr>
+ }
print <<END
- <td align='right' width='5'>
+
+ <td align='center' width='5'>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <input type='hidden' name='ACTION' value='downloadaddon' />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'download'}' />
<input type='hidden' name='FILE' value='$_.ipf' />
- <input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/package-x-generic.png' />
+ <input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/go-bottom.png' />
</form>
</td>
- <td align='right' width='5'>
+ <td align='center' width='5'>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <input type='hidden' name='ACTION' value='delete' />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'delete'}' />
<input type='hidden' name='FILE' value='$_.ipf' />
- <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' />
+ <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' onclick=\"return confirm('$Lang::tr{'delete file'}');\" />
</form>
</td>
END
;
}
-else{
- print "<tr><td align='center'>$Lang::tr{'backup from'} $_ </td><td width='5' align='right'></td><td width='5' align='right'></td>";
+
+else {
+
+ print "<tr>
+ <td align='center'>$_</td>
+ <td align='center'> - </td>
+ <td align='center' width='50%'> - </td>
+ <td align='center' colspan='2'> - </td>";
}
+
print <<END
<td align='right' width='5'>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <input type='hidden' name='ACTION' value='addonbackup' />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'addonbackup'}' />
<input type='hidden' name='ADDON' value='$_' />
- <input type='image' alt='$Lang::tr{'backup'}' title='$Lang::tr{'backup'}' src='/images/document-save.png' />
+ <input type='image' alt='$Lang::tr{'backup'}' title='$Lang::tr{'backup'}' src='/images/floppy.gif' />
</form>
- </td></tr>
+ </td>
+</tr>
END
;
+
}
+
foreach (keys(%addons)){
chomp($_);
my $Datei = "/var/ipfire/backup/addons/backup/".$_.".ipf";
my @Info = stat($Datei);
my $Size = $Info[7] / 1024;
$Size = sprintf("%2d", $Size);
-print "<tr><td align='center'>$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."</td>";
+
+print "<tr>
+ <td align='center'>$_</td>
+ <td align='center'>".localtime($Info[9])."</td>
+ <td align='center'>$Size KB</td>";
+
print <<END
- <td align='right' width='5'>
+ <td align='center' width='5'>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <input type='hidden' name='ACTION' value='downloadaddon' />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'download'}' />
<input type='hidden' name='FILE' value='$_.ipf' />
- <input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/package-x-generic.png' />
+ <input type='image' alt='$Lang::tr{'download'}' title='$Lang::tr{'download'}' src='/images/go-bottom.png' />
</form>
</td>
- <td align='right' width='5'>
+ <td align='center' width='5'>
<form method='post' action='$ENV{'SCRIPT_NAME'}'>
- <input type='hidden' name='ACTION' value='delete' />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'delete'}' />
<input type='hidden' name='FILE' value='$_.ipf' />
- <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/user-trash.png' />
+ <input type='image' alt='$Lang::tr{'delete'}' title='$Lang::tr{'delete'}' src='/images/delete.gif' onclick=\"return confirm('$Lang::tr{'delete file'}');\" />
</form>
</td>
- <td align='right' width='5'></td></tr>
+ </tr>
END
;
}
@@ -322,9 +402,31 @@ print "</table>";
print <<END
<table width='95%' cellspacing='0'>
-<tr><td align='center' colspan='2'><font color='red'><br />$Lang::tr{'backupwarning'}</font><br /><br /></td></tr>
-<tr><td align='left'>$Lang::tr{'backup'}</td><td align='left'><form method='post' enctype='multipart/form-data' action='$ENV{'SCRIPT_NAME'}'><input type="file" size='50' name="UPLOAD" /><input type='hidden' name='ACTION' value='restore' /><input type='hidden' name='FILE' /><input type='image' alt='$Lang::tr{'restore'}' title='$Lang::tr{'restore'}' src='/images/media-floppy.png' /></form></td></tr>
-<tr><td align='left'>$Lang::tr{'backupaddon'}</td><td align='left'><form method='post' enctype='multipart/form-data' action='$ENV{'SCRIPT_NAME'}'><input type="file" size='50' name="UPLOAD" /><input type='hidden' name='ACTION' value='restoreaddon' /><input type='hidden' name='FILE' /><input type='image' alt='$Lang::tr{'restore'}' title='$Lang::tr{'restore'}' src='/images/media-floppy.png' /></form></td></tr>
+<tr>
+ <td align='center' colspan='2'><font color='red'><br />$Lang::tr{'backupwarning'}</font><br /><br /></td>
+</tr>
+
+<tr>
+ <td align='center'>$Lang::tr{'backup'}</td>
+ <td align='left'>
+ <form method='post' enctype='multipart/form-data' action='$ENV{'SCRIPT_NAME'}'>
+ <input type="file" size='50' name="UPLOAD" />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'restore'}' />
+ <input type='hidden' name='FILE' />
+ <input type='image' alt='$Lang::tr{'restore'}' title='$Lang::tr{'restore'}' src='/images/go-top.png' />
+ </form></td>
+</tr>
+
+<tr>
+ <td align='center'>$Lang::tr{'backupaddon'}</td>
+ <td align='left'><form method='post' enctype='multipart/form-data' action='$ENV{'SCRIPT_NAME'}'>
+ <input type="file" size='50' name="UPLOAD" />
+ <input type='hidden' name='ACTION' value='$Lang::tr{'restoreaddon'}' />
+ <input type='hidden' name='FILE' />
+ <input type='image' alt='$Lang::tr{'restoreaddon'}' title='$Lang::tr{'restoreaddon'}' src='/images/go-top.png' />
+ </form></td>
+</tr>
+
</table>
END
;
diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl
index 95af3155b..37f0cab8a 100644
--- a/langs/de/cgi-bin/de.pl
+++ b/langs/de/cgi-bin/de.pl
@@ -158,6 +158,7 @@
'add-route' => 'Zusätzlich zu propagierende Route',
'added from dhcp lease list' => 'hinzugefügt von der DHCP-Zuordnungsliste',
'addon' => 'Add-Ons',
+'addonbackup' => 'Sichern',
'addons' => 'Add-Ons',
'admin user password has been changed' => 'Passwort für Benutzer admin wurde geändert.',
'admin users' => 'Liste der Benutzer mit Super User Rechten',
@@ -470,8 +471,11 @@
'backup sets' => 'Datensicherungssätze',
'backup to floppy' => 'Datensicherung auf Diskette',
'backupaddon' => 'Add-On-Sicherung',
+'backup config' => 'Konfiguration',
'backupprofile' => 'Falls die Wiederverbindung scheitert, auf dieses Profil umschalten',
'backups' => 'Sicherungen',
+'backups data' => 'IPF-Dateien',
+'backups iso' => 'ISO-Dateien',
'backupwarning' => 'Spielen Sie zuerst Ihre Hauptsicherung und anschließend die Sicherung(en) der Addon-Konfiguration(en) ein.<br />Es werden lediglich die gesicherten Konfigurationsdatei(en) der Addons, nicht die installierten Addons wiederhergestellt!<br />Achten Sie außerdem darauf, dass die Sicherungen ihre originalen Dateinamen behalten.',
'bad characters in' => 'Ungültige Zeichen in ',
'bad characters in script field' => 'Nicht erlaubte Zeichen im Skriptnamen',
@@ -735,6 +739,8 @@
'defaultwarning' => 'ACHTUNG - Ihre Einstellungen gehen hiermit verloren und werden durch die Standarteinstellungen ersetzt.',
'delete' => 'Löschen',
'delete cron' => 'Cronjob löschen',
+'delete file' => 'Möchten Sie diese Datei wirklich löschen?',
+'delete item' => 'Möchten Sie diesen Eintrag wirklich löschen?',
'delete pc' => 'PC löschen',
'delete share' => 'Freigabe löschen',
'delete user' => 'Benutzer löschen',
@@ -1600,7 +1606,6 @@
'logging' => 'Protokollierung',
'logging server' => 'Protokollierungsserver',
'loginlogout' => 'Login/Logout',
-'logs' => 'Protokolldateien',
'loosedirectorychecking' => 'Loose directorychecking',
'low' => 'Niedrig',
'ls_dhcpd' => 'DHCP-Server:',
@@ -2136,6 +2141,7 @@
'restart' => 'Neustart',
'restart ovpn server' => 'OpenVPN-Server neu starten',
'restore' => 'Wiederherstellen',
+'restoreaddon' => 'Wiederherstellen (Addon)',
'restore defaults' => 'Voreinstellungen wiederherstellen',
'restore hardware settings' => 'Hardwareeinstellungen wiederherstellen',
'restore settings' => 'Einstellungen wiederherstellen',
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl
index d86705772..a126b11ef 100644
--- a/langs/en/cgi-bin/en.pl
+++ b/langs/en/cgi-bin/en.pl
@@ -155,6 +155,7 @@
'add xtaccess' => 'Add External Access',
'add-route' => 'Additional push route',
'added from dhcp lease list' => 'Added from DHCP lease list',
+'addonbackup' => 'Backup',
'addons' => 'Addons',
'admin user password has been changed' => 'Admin user password has been changed.',
'admin users' => 'User with superuser rights',
@@ -459,6 +460,7 @@
'backup' => 'Backup',
'backup archive' => 'Backup File (.dat)',
'backup clear archive' => 'Clear Backup File (.gz)',
+'backup config' => 'Configuration',
'backup config floppy' => 'Backup Configuration - Floppy Disk',
'backup configuration' => 'Backup Configuration:',
'backup erase key' => 'Erase key',
@@ -486,6 +488,8 @@
'backupaddon' => 'Addon Backup',
'backupprofile' => 'In case reconnection fails, switch to profile',
'backups' => 'backups',
+'backups data' => 'IPF-Files',
+'backups iso' => 'ISO-Files',
'backupwarning' => 'Import your main backup first and then the backup(s) of the addon configuration(s).<br />Only the backed up addon configuration file(s) will be restored, not the installed addons!<br />Also make sure that the backups keep their original file names.',
'bad characters in' => 'Bad characters in ',
'bad characters in script field' => 'Bad characters in script field',
@@ -755,6 +759,8 @@
'delete pc' => 'Delete workstation',
'delete share' => 'Delete share',
'delete user' => 'Delete user',
+'delete file' => 'Do you really want to delete this file?',
+'delete item' => 'Do you really want to delete this item?',
'demon login script' => 'Demon login script',
'deprecated fs warn' => 'Deprecated filesystem! Newer kernel drop the support. Backup and reformat!',
'description' => 'Description',
@@ -1632,7 +1638,6 @@
'logging' => 'Logging',
'logging server' => 'Logging Server',
'loginlogout' => 'Login/Logout',
-'logs' => 'logs',
'loosedirectorychecking' => 'Loosedirectorychecking',
'low' => 'Low',
'ls_dhcpd' => 'DHCP Server:',
@@ -2172,6 +2177,7 @@
'restart' => 'Restart',
'restart ovpn server' => 'Restart OpenVPN server',
'restore' => 'Restore',
+'restoreaddon' => 'Restore (Addon)',
'restore defaults' => 'Restore defaults',
'restore hardware settings' => 'Restore hardware settings',
'restore settings' => 'Reset Settings',
diff --git a/langs/es/cgi-bin/es.pl b/langs/es/cgi-bin/es.pl
index c9a7496bc..fa346233f 100644
--- a/langs/es/cgi-bin/es.pl
+++ b/langs/es/cgi-bin/es.pl
@@ -1149,7 +1149,6 @@
'logging' => 'Conectando',
'logging server' => 'Servidor de conexión',
'loginlogout' => 'Login/Logout',
-'logs' => 'registros',
'loosedirectorychecking' => 'Chequeo de loosedirectory',
'low' => 'Bajo',
'ls_dhcpd' => 'Servidor DHCP:',
diff --git a/langs/fr/cgi-bin/fr.pl b/langs/fr/cgi-bin/fr.pl
index 301109477..ea5985315 100644
--- a/langs/fr/cgi-bin/fr.pl
+++ b/langs/fr/cgi-bin/fr.pl
@@ -1633,7 +1633,6 @@
'logging' => 'Connexion',
'logging server' => 'Serveur de connexion',
'loginlogout' => 'Connexion/Quitter',
-'logs' => 'Journaux',
'loosedirectorychecking' => 'Echec de la vérification du répertoire',
'low' => 'Bas',
'ls_dhcpd' => 'Serveur DHCP :',
diff --git a/langs/it/cgi-bin/it.pl b/langs/it/cgi-bin/it.pl
index e82ecfd35..711b4bd4a 100644
--- a/langs/it/cgi-bin/it.pl
+++ b/langs/it/cgi-bin/it.pl
@@ -1408,7 +1408,6 @@
'logging' => 'Logging',
'logging server' => 'Logging Server',
'loginlogout' => 'Login/Logout',
-'logs' => 'Gestione Log',
'loosedirectorychecking' => 'Loosedirectorychecking',
'low' => 'Basso',
'ls_dhcpd' => 'DHCP Server:',
diff --git a/langs/nl/cgi-bin/nl.pl b/langs/nl/cgi-bin/nl.pl
index 55927839e..aea5e81b5 100644
--- a/langs/nl/cgi-bin/nl.pl
+++ b/langs/nl/cgi-bin/nl.pl
@@ -1390,7 +1390,6 @@
'logging' => 'Logging',
'logging server' => 'Loggingserver',
'loginlogout' => 'Login/Logout',
-'logs' => 'logs',
'loosedirectorychecking' => 'Loosedirectorychecking',
'low' => 'Laag',
'ls_dhcpd' => 'DHCP Server:',
diff --git a/langs/pl/cgi-bin/pl.pl b/langs/pl/cgi-bin/pl.pl
index 147db051c..604a834a7 100644
--- a/langs/pl/cgi-bin/pl.pl
+++ b/langs/pl/cgi-bin/pl.pl
@@ -1094,7 +1094,6 @@
'logging' => 'Logowanie',
'logging server' => 'Serwer logowania',
'loginlogout' => 'Zalogowanie/wylogowanie',
-'logs' => 'logi',
'loosedirectorychecking' => 'Loosedirectorychecking',
'low' => 'Niski',
'ls_dhcpd' => 'Serwer DHCP:',
diff --git a/langs/ru/cgi-bin/ru.pl b/langs/ru/cgi-bin/ru.pl
index 0d986135d..26ad6c338 100644
--- a/langs/ru/cgi-bin/ru.pl
+++ b/langs/ru/cgi-bin/ru.pl
@@ -1087,7 +1087,6 @@
'logging' => 'Logging',
'logging server' => 'Сервер Логов',
'loginlogout' => 'Login/Logout',
-'logs' => 'Логи',
'loosedirectorychecking' => 'Loosedirectorychecking',
'low' => 'Low',
'ls_dhcpd' => 'DHCP сервер:',
diff --git a/langs/tr/cgi-bin/tr.pl b/langs/tr/cgi-bin/tr.pl
index 36c4782d6..233de0995 100644
--- a/langs/tr/cgi-bin/tr.pl
+++ b/langs/tr/cgi-bin/tr.pl
@@ -1538,7 +1538,6 @@
'logging' => 'Günlük',
'logging server' => 'Günlük Sunucusu',
'loginlogout' => 'Giriş/Çıkış',
-'logs' => 'Günlükler',
'loosedirectorychecking' => 'Serbest Dizin Denetimi',
'low' => 'Düşük',
'ls_dhcpd' => 'DHCP Sunucusu:',
--
2.18.0