From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adolf Belka To: development@lists.ipfire.org Subject: Re: [PATCH] backup.cgi: Table layout - onclick confirm Date: Wed, 16 Jun 2021 19:35:35 +0200 Message-ID: <7234afdc-e05b-13ad-3505-70b4250ad122@ipfire.org> In-Reply-To: <14c201f7-f7a8-f69e-f155-39cb6e2ef055@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3260268551598232270==" List-Id: --===============3260268551598232270== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Matthias, On 16/06/2021 17:34, Matthias Fischer wrote: > On 16.06.2021 15:16, Adolf Belka wrote: >> Hi Matthias, >> >> Sorry for slowness in coming back on the testing but I had to deal with so= me other things. >> >> >> I had a go at testing out the patch. >> >> First I separated the patch into individual diffs and then applied them in= dividually on a Core Update 156 VM in my testbed. When I selected the backup = menu page then I got the Internal Server Error message and in /var/log/httpd/= error_log I got the following message:- >> >> Can't use an undefined value as a symbol reference at /srv/web/ipfire/cgi-= bin/backup.cgi line 85. >=20 > I fear I know what that means... >=20 >> I then tried the same thing with a Core Update 157 VM and got the same mes= sage. >=20 > Yep . You're missing one or more translation strings, thats all. >=20 > Furing testing Jon and me had *exactly* the same problem. Doe is OK, but > not the translations. >=20 > Make sure you've got the following translation strings in de.pl and en.pl: >=20 > de.pl: > 'restoreaddon' =3D> 'Wiederherstellen (Addon)', > 'addonbackup' =3D> 'Sichern', > 'delete file' =3D> 'M=C3=B6chten Sie diese Datei wirklich l=C3=B6schen?', > 'delete item' =3D> 'M=C3=B6chten Sie diesen Eintrag wirklich l=C3=B6schen?', > 'backup config' =3D> 'Konfiguration', > 'backups data' =3D> 'IPF-Dateien', > 'backups iso' =3D> 'ISO-Dateien', >=20 > en.pl: > 'restoreaddon' =3D> 'Restore (Addon)', > 'addonbackup' =3D> 'Backup', > 'delete file' =3D> 'Do you really want to delete this file?', > 'delete item' =3D> 'Do you really want to delete this item?', > 'backup config' =3D> 'Configuration', > 'backups data' =3D> 'IPF-Files', > 'backups iso' =3D> 'ISO-Files', All of those entries are in the individual diffs that I created. I suspect th= at maybe not all the hunks got correctly applied because the original git pat= ch worked on my build branch. I will check more closely next time I try using the separate diffs. Thanks, Adolf >=20 >> Line 85 in backup.cgi is not one of the lines modified by the diff and is = the line highlighted by ** at the start of the line in the following excerpt. >=20 > Yep I needed a day to find this... >=20 >> -------------------------- >> >> elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'restoreaddon'}" ) >> { >> =C2=A0=C2=A0=C2=A0 chomp($cgiparams{'UPLOAD'}); >> =C2=A0=C2=A0=C2=A0 # we need to fix cause IE7 gives the full path and FF= only the filename >> =C2=A0=C2=A0=C2=A0 my @temp =3D split(/\\/,$cgiparams{'UPLOAD'}); >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 my $upload =3D $a->param("UPLOAD"); >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 open UPLOADFILE, ">/tmp/".$temp[$#temp]; >> ** =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 binmode $upload; >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 while ( <$upload> ) { >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 print UPLOADFILE; >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 } >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 close UPLOADFILE; >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 system("/usr/local/bin/backupctrl restoreaddon ".$temp[$#t= emp]." >/dev/null 2>> >> } >> >> -------------------------- >> >> I then used the combined patch diff on a Core Update 157 build branch, did= a clean build and then installed the generated iso into a VM. This time I wa= s able to get the backup page to show. Not sure what was wrong with trying it= on a existing VM. >=20 > Missing translation strings. For sure. >=20 > I'll check my patches - I hope I didn't miss a string. >=20 > Best, > Matthias >=20 >> >> >> I then created a backup and I got the following truncated page:- >> >> >> If I selected the backup page again I could see the whole page with tables= and showing the created backup. I tried this several times, also with logs a= nd with iso and I got the same effect. There is no message in the error_log f= ile with the above truncated page display. >> >> Looking at the titles for each table the use of capitals for the IPF and I= SO seems a bit to "loud". How about changing it to lower case and making it .= ipf and .iso - then referring to the file types being saved. >> >> I still have to have a go at the coding to change the tables into alternat= e row colours. Will come back separately with how I get on with that. >> >> Regards, >> >> Adolf. >> >> On 28/05/2021 17:41, Matthias Fischer wrote: >>> Hi, >>> >>> On 26.05.2021 17:39, Matthias Fischer wrote: >>>> This is just a diff for testing people... ;-) >>> For clarification: >>> It looks as if I will not have very much time during the next days to >>> get a grip on rewriting this with alternate rows. And I agree to Michael >>> - rows would fit in with the rest of the layout. ;-) >>> >>> @Adolf and ALL: >>> If you have any hints, please feel free to participate. :-) >>> >>> Best, >>> Matthias >>> >>>> 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=3D\"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 >>>> --- >>>> 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"; >>>> =20 >>>> my %color =3D (); >>>> my %mainsettings =3D (); >>>> -my %cgiparams=3D(); >>>> +my %cgiparams =3D (); >>>> my %checked =3D (); >>>> my $message =3D ""; >>>> my $errormessage =3D ""; >>>> @@ -59,25 +59,13 @@ system("/usr/local/bin/backupctrl makedirs >/dev/nul= l 2>&1 ") unless ( -e '/var/ >>>> #####################################################################= ####################################################### >>>> ############################################## System calls ohne Http= Header ############################################### >>>> =20 >>>> -if ($cgiparams{'ACTION'} eq "download") { >>>> +if ($cgiparams{'ACTION'} eq "$Lang::tr{'download'}") { >>>> my $file =3D &sanitise_file($cgiparams{'FILE'}); >>>> exit(1) unless defined($file); >>>> =20 >>>> &deliver_file($file); >>>> exit(0); >>>> -} elsif ($cgiparams{'ACTION'} eq "downloadiso") { >>>> - my $file =3D &sanitise_file($cgiparams{'FILE'}); >>>> - exit(1) unless defined($file); >>>> - >>>> - &deliver_file($file); >>>> - exit(0); >>>> -} elsif ($cgiparams{'ACTION'} eq "downloadaddon") { >>>> - my $file =3D &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 =3D $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 fi= lename >>>> @@ -112,7 +100,7 @@ sub refreshpage{&Header::openbox( 'Waiting', 1, ">>> #####################################################################= ####################################################### >>>> ################################################### Default System ca= lls ################################################### >>>> =20 >>>> -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'} =3D~ /(\.|\/)/); >>>> @@ -132,7 +120,7 @@ if ( $cgiparams{'ACTION'} eq "addonbackup" ) >>>> =20 >>>> 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 =3D &sanitise_file($cgiparams{'FILE'}); >>>> exit(1) unless defined($file); >>>> @@ -157,13 +145,13 @@ if ( -e "/var/tmp/backupiso/" ){ >>>> @backupisos =3D `cd /var/tmp/backupiso/ && ls *.iso 2>/dev/null`; >>>> } >>>> =20 >>>> -&Header::openbox('100%', 'center', ); >>>> +&Header::openbox('100%', 'center', $Lang::tr{'backup config'}); >>>> =20 >>>> print <>>>
>>>> >>>> >>>> - >>>> + >>>> >>>> >>>> >>>>
$Lang::tr{'logs'} >>>> $Lang= ::tr{'include logfiles'}
>>>> $Lang::tr{'exclude logfiles'}
>>>> @@ -177,8 +165,8 @@ print <>>>
>>>> - >>>> - >>>> + >>>> + >>>>
>>>>
>>>> @@ -189,10 +177,17 @@ END >>>> #####################################################################= ####################################################### >>>> ############################################ Backups des Systems down= loaden ################################################ >>>> =20 >>>> -&Header::openbox('100%', 'center', $Lang::tr{'backups'}); >>>> +&Header::openbox('100%', 'center', $Lang::tr{'backups data'}); >>>> =20 >>>> print <>>> - >>>> +
>>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> END >>>> ; >>>> foreach (@backups){ >>>> @@ -202,9 +197,44 @@ my $Datei =3D "/var/ipfire/backup/".$_; >>>> my @Info =3D stat($Datei); >>>> my $Size =3D $Info[7] / 1024 / 1024; >>>> $Size =3D sprintf("%0.2f", $Size); >>>> -print ""; >>>> -print ""; >>>> + >>>> +print " >>>> + >>>> + >>>> +"; >>>> + >>>> +print ""; >>>> } >>>> + >>>> +print <>>> +
$Lang::tr{'filename'}$Lang::tr{'size'}$Lang::tr{'action'}
$Lang::tr{'backup from'} $_ $Lang::tr{'= size'} $Size MB
$_$Size MB >>>> + >>>> + >>>> + >>>> + >>>> +
>>>> + >>>> + >>>> + >>>> +
>>>> +END >>>> +; >>>> +&Header::closebox(); >>>> + >>>> +&Header::openbox('100%', 'center', $Lang::tr{'backups iso'}); >>>> + >>>> +print <>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> +END >>>> +; >>>> + >>>> foreach (@backupisos){ >>>> if ( $_ !~ /iso$/){next;} >>>> chomp($_); >>>> @@ -212,8 +242,22 @@ my $Datei =3D "/var/tmp/backupiso/".$_; >>>> my @Info =3D stat($Datei); >>>> my $Size =3D $Info[7] / 1024 / 1024; >>>> $Size =3D sprintf("%0.2f", $Size); >>>> -print ""; >>>> -print ""; >>>> + >>>> +print " >>>> + >>>> + >>>> +"; >>>> + >>>> +print ""; >>>> } >>>> print <>>>
$Lang::tr{'filename'}$Lang::tr{'size'}$Lang::tr{'action'}
$Lang::tr{'backup from'} $_ $Lang::tr{'= size'} $Size MB
$_$Size MB >>>> + >>>> + >>>> + >>>> + >>>> +
>>>> + >>>> + >>>> + >>>> +
>>>> @@ -235,7 +279,19 @@ foreach (@addons){ >>>> $addons{$addon}=3D''; >>>> } >>>> =20 >>>> -print ""; >>>> +print <>>> + >>>> +
>>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> +END >>>> +; >>>> + >>>> foreach (@addonincluds){ >>>> chomp($_); >>>> delete $addons{$_}; >>>> @@ -245,69 +301,93 @@ my $Size =3D $Info[7] / 1024; >>>> =20 >>>> if ( -e $Datei ){ >>>> if ($Size < 1) { >>>> - $Size =3D sprintf("%.2f", $Size); >>>> - print ""; >>>> - } else { >>>> - $Size =3D sprintf("%2d", $Size); >>>> - print ""; >>>> + $Size =3D sprintf("%.2f", $Size); >>>> +print " >>>> + >>>> + >>>> + "; >>>> + >>>> =20 >>>> - } >>>> + } else { >>>> + $Size =3D sprintf("%2d", $Size); >>>> +print " >>>> + >>>> + >>>> + "; >>>> + >>>> + } >>>> =20 >>>> print <>>> - >>>> - >>>> END >>>> ; >>>> } >>>> -else{ >>>> - print ""; >>>> + >>>> +else { >>>> + >>>> + print " >>>> + >>>> + >>>> + >>>> + "; >>>> } >>>> + >>>> print <>>> >>>> + >>>> + >>>> END >>>> ; >>>> + >>>> } >>>> + >>>> foreach (keys(%addons)){ >>>> chomp($_); >>>> my $Datei =3D "/var/ipfire/backup/addons/backup/".$_.".ipf"; >>>> my @Info =3D stat($Datei); >>>> my $Size =3D $Info[7] / 1024; >>>> $Size =3D sprintf("%2d", $Size); >>>> -print ""; >>>> + >>>> +print " >>>> + >>>> + >>>> + "; >>>> + >>>> print <>>> - >>>> - >>>> - >>>> + >>>> END >>>> ; >>>> } >>>> @@ -322,9 +402,31 @@ print "
$Lang::tr{'name'}$Lang::tr{'date'}$Lang::tr{'size'}$Lang::tr{'action'}
$Lang::tr{'backup from'} $_ $Lang::t= r{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$Lang::tr{'backup from'} $_ $Lang::t= r{'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$_".localtime($Info[9])."$Size KB
$_".localtime($Info[9])."$Size KB
>>>> + >>>> + >>>>
>>>> - >>>> + >>>> >>>> - >>>> + >>>>
>>>>
>>>> + >>>>
>>>> - >>>> + >>>> >>>> - >>>> + >>>>
>>>>
$Lang::tr{'backup from'} $_
$_ - - - >>>>
>>>> - >>>> + >>>> >>>> - >>>> + >>>>
>>>> -
$Lang::tr{'backup from'} $_ $Lang::tr{'= size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$_".localtime($Info[9])."$Size KB >>>> + >>>>
>>>> - >>>> + >>>> >>>> - >>>> + >>>>
>>>>
>>>> + >>>>
>>>> - >>>> + >>>> >>>> - >>>> + >>>>
>>>>
"; >>>> =20 >>>> print <>>> >>>> - >>>> - >>>> - >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>> + >>>>

$Lang:= :tr{'backupwarning'}


$Lang::tr{'backup'}
$Lang::tr{'backupaddon'}=

$Lang::tr= {'backupwarning'}


$Lang::tr{'backup'} >>>> +
>>>> + >>>> + >>>> + >>>> + >>>> +
$Lang::tr{'backupaddon'}
>>>> + >>>> + >>>> + >>>> + >>>> +
>>>> 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' =3D> 'Zus=C3=A4tzlich zu propagierende Route', >>>> 'added from dhcp lease list' =3D> 'hinzugef=C3=BCgt von der DHCP-Zuor= dnungsliste', >>>> 'addon' =3D> 'Add-Ons', >>>> +'addonbackup' =3D> 'Sichern', >>>> 'addons' =3D> 'Add-Ons', >>>> 'admin user password has been changed' =3D> 'Passwort f=C3=BCr Benutz= er admin wurde ge=C3=A4ndert.', >>>> 'admin users' =3D> 'Liste der Benutzer mit Super User Rechten', >>>> @@ -470,8 +471,11 @@ >>>> 'backup sets' =3D> 'Datensicherungss=C3=A4tze', >>>> 'backup to floppy' =3D> 'Datensicherung auf Diskette', >>>> 'backupaddon' =3D> 'Add-On-Sicherung', >>>> +'backup config' =3D> 'Konfiguration', >>>> 'backupprofile' =3D> 'Falls die Wiederverbindung scheitert, auf diese= s Profil umschalten', >>>> 'backups' =3D> 'Sicherungen', >>>> +'backups data' =3D> 'IPF-Dateien', >>>> +'backups iso' =3D> 'ISO-Dateien', >>>> 'backupwarning' =3D> 'Spielen Sie zuerst Ihre Hauptsicherung und ansc= hlie=C3=9Fend die Sicherung(en) der Addon-Konfiguration(en) ein.
Es werd= en lediglich die gesicherten Konfigurationsdatei(en) der Addons, nicht die in= stallierten Addons wiederhergestellt!
Achten Sie au=C3=9Ferdem darauf, d= ass die Sicherungen ihre originalen Dateinamen behalten.', >>>> 'bad characters in' =3D> 'Ung=C3=BCltige Zeichen in ', >>>> 'bad characters in script field' =3D> 'Nicht erlaubte Zeichen im Skri= ptnamen', >>>> @@ -735,6 +739,8 @@ >>>> 'defaultwarning' =3D> 'ACHTUNG - Ihre Einstellungen gehen hiermit ver= loren und werden durch die Standarteinstellungen ersetzt.', >>>> 'delete' =3D> 'L=C3=B6schen', >>>> 'delete cron' =3D> 'Cronjob l=C3=B6schen', >>>> +'delete file' =3D> 'M=C3=B6chten Sie diese Datei wirklich l=C3=B6schen?= ', >>>> +'delete item' =3D> 'M=C3=B6chten Sie diesen Eintrag wirklich l=C3=B6sch= en?', >>>> 'delete pc' =3D> 'PC l=C3=B6schen', >>>> 'delete share' =3D> 'Freigabe l=C3=B6schen', >>>> 'delete user' =3D> 'Benutzer l=C3=B6schen', >>>> @@ -1600,7 +1606,6 @@ >>>> 'logging' =3D> 'Protokollierung', >>>> 'logging server' =3D> 'Protokollierungsserver', >>>> 'loginlogout' =3D> 'Login/Logout', >>>> -'logs' =3D> 'Protokolldateien', >>>> 'loosedirectorychecking' =3D> 'Loose directorychecking', >>>> 'low' =3D> 'Niedrig', >>>> 'ls_dhcpd' =3D> 'DHCP-Server:', >>>> @@ -2136,6 +2141,7 @@ >>>> 'restart' =3D> 'Neustart', >>>> 'restart ovpn server' =3D> 'OpenVPN-Server neu starten', >>>> 'restore' =3D> 'Wiederherstellen', >>>> +'restoreaddon' =3D> 'Wiederherstellen (Addon)', >>>> 'restore defaults' =3D> 'Voreinstellungen wiederherstellen', >>>> 'restore hardware settings' =3D> 'Hardwareeinstellungen wiederherstel= len', >>>> 'restore settings' =3D> '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' =3D> 'Add External Access', >>>> 'add-route' =3D> 'Additional push route', >>>> 'added from dhcp lease list' =3D> 'Added from DHCP lease list', >>>> +'addonbackup' =3D> 'Backup', >>>> 'addons' =3D> 'Addons', >>>> 'admin user password has been changed' =3D> 'Admin user password has = been changed.', >>>> 'admin users' =3D> 'User with superuser rights', >>>> @@ -459,6 +460,7 @@ >>>> 'backup' =3D> 'Backup', >>>> 'backup archive' =3D> 'Backup File (.dat)', >>>> 'backup clear archive' =3D> 'Clear Backup File (.gz)', >>>> +'backup config' =3D> 'Configuration', >>>> 'backup config floppy' =3D> 'Backup Configuration - Floppy Disk', >>>> 'backup configuration' =3D> 'Backup Configuration:', >>>> 'backup erase key' =3D> 'Erase key', >>>> @@ -486,6 +488,8 @@ >>>> 'backupaddon' =3D> 'Addon Backup', >>>> 'backupprofile' =3D> 'In case reconnection fails, switch to profile', >>>> 'backups' =3D> 'backups', >>>> +'backups data' =3D> 'IPF-Files', >>>> +'backups iso' =3D> 'ISO-Files', >>>> 'backupwarning' =3D> 'Import your main backup first and then the back= up(s) of the addon configuration(s).
Only the backed up addon configurat= ion file(s) will be restored, not the installed addons!
Also make sure t= hat the backups keep their original file names.', >>>> 'bad characters in' =3D> 'Bad characters in ', >>>> 'bad characters in script field' =3D> 'Bad characters in script field= ', >>>> @@ -755,6 +759,8 @@ >>>> 'delete pc' =3D> 'Delete workstation', >>>> 'delete share' =3D> 'Delete share', >>>> 'delete user' =3D> 'Delete user', >>>> +'delete file' =3D> 'Do you really want to delete this file?', >>>> +'delete item' =3D> 'Do you really want to delete this item?', >>>> 'demon login script' =3D> 'Demon login script', >>>> 'deprecated fs warn' =3D> 'Deprecated filesystem! Newer kernel drop t= he support. Backup and reformat!', >>>> 'description' =3D> 'Description', >>>> @@ -1632,7 +1638,6 @@ >>>> 'logging' =3D> 'Logging', >>>> 'logging server' =3D> 'Logging Server', >>>> 'loginlogout' =3D> 'Login/Logout', >>>> -'logs' =3D> 'logs', >>>> 'loosedirectorychecking' =3D> 'Loosedirectorychecking', >>>> 'low' =3D> 'Low', >>>> 'ls_dhcpd' =3D> 'DHCP Server:', >>>> @@ -2172,6 +2177,7 @@ >>>> 'restart' =3D> 'Restart', >>>> 'restart ovpn server' =3D> 'Restart OpenVPN server', >>>> 'restore' =3D> 'Restore', >>>> +'restoreaddon' =3D> 'Restore (Addon)', >>>> 'restore defaults' =3D> 'Restore defaults', >>>> 'restore hardware settings' =3D> 'Restore hardware settings', >>>> 'restore settings' =3D> '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' =3D> 'Conectando', >>>> 'logging server' =3D> 'Servidor de conexi=C3=B3n', >>>> 'loginlogout' =3D> 'Login/Logout', >>>> -'logs' =3D> 'registros', >>>> 'loosedirectorychecking' =3D> 'Chequeo de loosedirectory', >>>> 'low' =3D> 'Bajo', >>>> 'ls_dhcpd' =3D> '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' =3D> 'Connexion', >>>> 'logging server' =3D> 'Serveur de connexion', >>>> 'loginlogout' =3D> 'Connexion/Quitter', >>>> -'logs' =3D> 'Journaux', >>>> 'loosedirectorychecking' =3D> 'Echec de la v=C3=A9rification du r=C3= =A9pertoire', >>>> 'low' =3D> 'Bas', >>>> 'ls_dhcpd' =3D> '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' =3D> 'Logging', >>>> 'logging server' =3D> 'Logging Server', >>>> 'loginlogout' =3D> 'Login/Logout', >>>> -'logs' =3D> 'Gestione Log', >>>> 'loosedirectorychecking' =3D> 'Loosedirectorychecking', >>>> 'low' =3D> 'Basso', >>>> 'ls_dhcpd' =3D> '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' =3D> 'Logging', >>>> 'logging server' =3D> 'Loggingserver', >>>> 'loginlogout' =3D> 'Login/Logout', >>>> -'logs' =3D> 'logs', >>>> 'loosedirectorychecking' =3D> 'Loosedirectorychecking', >>>> 'low' =3D> 'Laag', >>>> 'ls_dhcpd' =3D> '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' =3D> 'Logowanie', >>>> 'logging server' =3D> 'Serwer logowania', >>>> 'loginlogout' =3D> 'Zalogowanie/wylogowanie', >>>> -'logs' =3D> 'logi', >>>> 'loosedirectorychecking' =3D> 'Loosedirectorychecking', >>>> 'low' =3D> 'Niski', >>>> 'ls_dhcpd' =3D> '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' =3D> 'Logging', >>>> 'logging server' =3D> '=D0=A1=D0=B5=D1=80=D0=B2=D0=B5=D1=80 =D0=9B=D0= =BE=D0=B3=D0=BE=D0=B2', >>>> 'loginlogout' =3D> 'Login/Logout', >>>> -'logs' =3D> '=D0=9B=D0=BE=D0=B3=D0=B8', >>>> 'loosedirectorychecking' =3D> 'Loosedirectorychecking', >>>> 'low' =3D> 'Low', >>>> 'ls_dhcpd' =3D> 'DHCP =D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80:', >>>> 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' =3D> 'G=C3=BCnl=C3=BCk', >>>> 'logging server' =3D> 'G=C3=BCnl=C3=BCk Sunucusu', >>>> 'loginlogout' =3D> 'Giri=C5=9F/=C3=87=C4=B1k=C4=B1=C5=9F', >>>> -'logs' =3D> 'G=C3=BCnl=C3=BCkler', >>>> 'loosedirectorychecking' =3D> 'Serbest Dizin Denetimi', >>>> 'low' =3D> 'D=C3=BC=C5=9F=C3=BCk', >>>> 'ls_dhcpd' =3D> 'DHCP Sunucusu:', >>>> >> >=20 --===============3260268551598232270==--