From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthias Fischer To: development@lists.ipfire.org Subject: Re: [PATCH] backup.cgi: Table layout - onclick confirm Date: Wed, 16 Jun 2021 19:51:42 +0200 Message-ID: In-Reply-To: <192c2a64-3818-337c-18e3-d580e8ffb5f9@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0260072084809767654==" List-Id: --===============0260072084809767654== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi, On 16.06.2021 19:25, Adolf Belka wrote: > Hi everyone, >=20 > Now attached is the image showing the page displayed after I have clicked o= n do a backup. Selecting the backup page on the menu again shows the full pag= e again with the newly created backup listed. Same here - but if I wait some seconds, the whole page comes back. How long did you wait before you clicked the backup page on the menu entry again? Here, it takes about 5 seconds and the page shows up again without doing anything. Best, Matthias >=20 > Regards, >=20 >=20 > Adolf. >=20 >=20 > On 16/06/2021 15:20, Adolf Belka wrote: >> Hi everyone, >> >> 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 s= ome other things. >>> >>> >>> I had a go at testing out the patch. >>> >>> First I separated the patch into individual diffs and then applied them i= ndividually 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. >>> >>> I then tried the same thing with a Core Update 157 VM and got the same me= ssage. >>> >>> 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. >>> >>> -------------------------- >>> >>> 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, di= d a clean build and then installed the generated iso into a VM. This time I w= as able to get the backup page to show. Not sure what was wrong with trying i= t on a existing VM. >>> >>> >>> I then created a backup and I got the following truncated page:- >>> >> I placed an image here but I have realised I can not include an image in m= ails to the development list as it is text only. Where can I place an image s= o everyone can see it? >>> >>> If I selected the backup page again I could see the whole page with table= s and showing the created backup. I tried this several times, also with logs = and with iso and I got the same effect. There is no message in the error_log = file with the above truncated page display. >>> >>> Looking at the titles for each table the use of capitals for the IPF and = ISO 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 alterna= te 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 >>>>> --- >>>>> =C2=A0 html/cgi-bin/backup.cgi | 218 +++++++++++++++++++++++++++++-----= ------ >>>>> =C2=A0 langs/de/cgi-bin/de.pl=C2=A0 |=C2=A0=C2=A0 8 +- >>>>> =C2=A0 langs/en/cgi-bin/en.pl=C2=A0 |=C2=A0=C2=A0 8 +- >>>>> =C2=A0 langs/es/cgi-bin/es.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 langs/fr/cgi-bin/fr.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 langs/it/cgi-bin/it.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 langs/nl/cgi-bin/nl.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 langs/pl/cgi-bin/pl.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 langs/ru/cgi-bin/ru.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 langs/tr/cgi-bin/tr.pl=C2=A0 |=C2=A0=C2=A0 1 - >>>>> =C2=A0 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"; >>>>> =C2=A0 =C2=A0 my %color =3D (); >>>>> =C2=A0 my %mainsettings =3D (); >>>>> -my %cgiparams=3D(); >>>>> +my %cgiparams =3D (); >>>>> =C2=A0 my %checked =3D (); >>>>> =C2=A0 my $message =3D ""; >>>>> =C2=A0 my $errormessage =3D ""; >>>>> @@ -59,25 +59,13 @@ system("/usr/local/bin/backupctrl makedirs >/dev/nu= ll 2>&1 ") unless ( -e '/var/ >>>>> #######################################################################= ##################################################### >>>>> =C2=A0 ############################################## System calls ohne= Http Header ############################################### >>>>> =C2=A0 -if ($cgiparams{'ACTION'} eq "download") { >>>>> +if ($cgiparams{'ACTION'} eq "$Lang::tr{'download'}") { >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 my $file =3D &sa= nitise_file($cgiparams{'FILE'}); >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(1) unless d= efined($file); >>>>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 &deliver_= file($file); >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(0); >>>>> -} elsif ($cgiparams{'ACTION'} eq "downloadiso") { >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 my $file =3D &sanitise_file= ($cgiparams{'FILE'}); >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(1) unless defined($fil= e); >>>>> - >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 &deliver_file($file); >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(0); >>>>> -} elsif ($cgiparams{'ACTION'} eq "downloadaddon") { >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 my $file =3D &sanitise_file= ($cgiparams{'FILE'}); >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(1) unless defined($fil= e); >>>>> - >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 &deliver_file($file); >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(0); >>>>> -} elsif ( $cgiparams{'ACTION'} eq "restore") { >>>>> +} elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'restore'}") { >>>>> =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 open UPLOADFILE,= ">/tmp/restore.ipf"; >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 binmode $upload; >>>>> @@ -87,7 +75,7 @@ if ($cgiparams{'ACTION'} eq "download") { >>>>> =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 system("/usr/loc= al/bin/backupctrl restore >/dev/null 2>&1"); >>>>> =C2=A0 } >>>>> -elsif ( $cgiparams{'ACTION'} eq "restoreaddon" ) >>>>> +elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'restoreaddon'}" ) >>>>> =C2=A0 { >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 chomp($cgiparams{'UPLOAD'}); >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # we need to fix cause IE7 gives the ful= l path and FF only the filename >>>>> @@ -112,7 +100,7 @@ sub refreshpage{&Header::openbox( 'Waiting', 1, ">>>> #######################################################################= ##################################################### >>>>> =C2=A0 ################################################### Default Syst= em calls ################################################### >>>>> =C2=A0 -if ( $cgiparams{'ACTION'} eq "backup" ) >>>>> +if ( $cgiparams{'ACTION'} eq "$Lang::tr{'backup'}" ) >>>>> =C2=A0 { >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( $cgiparams{'BACKUPLOGS'} eq "includ= e" ) { >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 system("/usr/loc= al/bin/backupctrl include >/dev/null 2>&1"); >>>>> @@ -122,7 +110,7 @@ if ( $cgiparams{'ACTION'} eq "backup" ) >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 system("/usr/loc= al/bin/backupctrl iso >/dev/null 2>&1"); >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } >>>>> =C2=A0 } >>>>> -if ( $cgiparams{'ACTION'} eq "addonbackup" ) >>>>> +if ( $cgiparams{'ACTION'} eq "$Lang::tr{'addonbackup'}" ) >>>>> =C2=A0 { >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 # Exit if there is any dots or slashes i= n the addon name >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(1) if ($cgiparams{'ADDON'} =3D~ /(\= .|\/)/); >>>>> @@ -132,7 +120,7 @@ if ( $cgiparams{'ACTION'} eq "addonbackup" ) >>>>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 system("/usr/local/bin/backupctrl= addonbackup $cgiparams{'ADDON'} >/dev/null 2>&1"); >>>>> =C2=A0 } >>>>> -elsif ( $cgiparams{'ACTION'} eq "delete" ) >>>>> +elsif ( $cgiparams{'ACTION'} eq "$Lang::tr{'delete'}" ) >>>>> =C2=A0 { >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 my $file =3D &sanitise_file($cgiparams{'= FILE'}); >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exit(1) unless defined($file); >>>>> @@ -157,13 +145,13 @@ if ( -e "/var/tmp/backupiso/" ){ >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 @backupisos =3D `cd /var/tmp/backupiso/ = && ls *.iso 2>/dev/null`; >>>>> =C2=A0 } >>>>> =C2=A0 -&Header::openbox('100%', 'center', ); >>>>> +&Header::openbox('100%', 'center', $Lang::tr{'backup config'}); >>>>> =C2=A0 =C2=A0 print <>>>> =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
$Lang::tr{'logs'}<= /td> >>>>> +=C2=A0=C2=A0=C2=A0 >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $Lang::tr{'include logfiles'} >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $Lang::tr{'= exclude logfiles'}
>>>>> @@ -177,8 +165,8 @@ print <>>>> =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
>>>>> @@ -189,10 +177,17 @@ END >>>>> #######################################################################= ##################################################### >>>>> =C2=A0 ############################################ Backups des Systems= downloaden ################################################ >>>>> =C2=A0 -&Header::openbox('100%', 'center', $Lang::tr{'backups'}); >>>>> +&Header::openbox('100%', 'center', $Lang::tr{'backups data'}); >>>>> =C2=A0 =C2=A0 print <>>>> - >>>>> +
>>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> =C2=A0 END >>>>> =C2=A0 ; >>>>> =C2=A0 foreach (@backups){ >>>>> @@ -202,9 +197,44 @@ my $Datei =3D "/var/ipfire/backup/".$_; >>>>> =C2=A0 my @Info =3D stat($Datei); >>>>> =C2=A0 my $Size =3D $Info[7] / 1024 / 1024; >>>>> =C2=A0 $Size =3D sprintf("%0.2f", $Size); >>>>> -print ""; >>>>> -print ""; >>>>> + >>>>> +print " >>>>> + >>>>> + >>>>> +"; >>>>> + >>>>> +print ""; >>>>> =C2=A0 } >>>>> + >>>>> +print <>>>> +
$Lang::tr{'filename'}$Lang::tr{'size'}$Lang::tr{'action'}
$Lang::tr{'backup from'} $_ $Lang::tr{= 'size'} $Size MB
=
$_$Size MB
>>>>> +=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
>>>>> +END >>>>> +; >>>>> +&Header::closebox(); >>>>> + >>>>> +&Header::openbox('100%', 'center', $Lang::tr{'backups iso'}); >>>>> + >>>>> +print <>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> +END >>>>> +; >>>>> + >>>>> =C2=A0 foreach (@backupisos){ >>>>> =C2=A0 if ( $_ !~ /iso$/){next;} >>>>> =C2=A0 chomp($_); >>>>> @@ -212,8 +242,22 @@ my $Datei =3D "/var/tmp/backupiso/".$_; >>>>> =C2=A0 my @Info =3D stat($Datei); >>>>> =C2=A0 my $Size =3D $Info[7] / 1024 / 1024; >>>>> =C2=A0 $Size =3D sprintf("%0.2f", $Size); >>>>> -print ""; >>>>> -print ""; >>>>> + >>>>> +print " >>>>> + >>>>> + >>>>> +"; >>>>> + >>>>> +print ""; >>>>> =C2=A0 } >>>>> =C2=A0 print <>>>> =C2=A0
$Lang::tr{'filename'}$Lang::tr{'size'}$Lang::tr{'action'}
$Lang::tr{'backup from'} $_ $Lang::tr{= 'size'} $Size MB
<= input type=3D'hidden' name=3D'FILE' value=3D'$_' />
=
$_$Size MB
>>>>> +=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
>>>>> @@ -235,7 +279,19 @@ foreach (@addons){ >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $addons{$addon}=3D''; >>>>> =C2=A0 } >>>>> =C2=A0 -print ""; >>>>> +print <>>>> + >>>>> +
>>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> + >>>>> +END >>>>> +; >>>>> + >>>>> =C2=A0 foreach (@addonincluds){ >>>>> =C2=A0 chomp($_); >>>>> =C2=A0 delete $addons{$_}; >>>>> @@ -245,69 +301,93 @@ my $Size =3D $Info[7] / 1024; >>>>> =C2=A0 =C2=A0 if ( -e $Datei ){ >>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ($Size < 1) { >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $Si= ze =3D sprintf("%.2f", $Size); >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pri= nt ""; >>>>> -=C2=A0=C2=A0=C2=A0 } else { >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $Si= ze =3D sprintf("%2d", $Size); >>>>> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pri= nt ""; >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $Size =3D sprintf("%.2f", $= Size); >>>>> +print " >>>>> +=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 } else { >>>>> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $Size =3D sprintf("%2d", $S= ize); >>>>> +print " >>>>> +=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 print <>>>> -=C2=A0=C2=A0=C2=A0 >>>>> -=C2=A0=C2=A0=C2=A0 >>>>> =C2=A0 END >>>>> =C2=A0 ; >>>>> =C2=A0 } >>>>> -else{ >>>>> -=C2=A0 print ""; >>>>> + >>>>> +else { >>>>> + >>>>> +=C2=A0=C2=A0=C2=A0 print " >>>>> +=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 <>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 >>>>> +=C2=A0=C2=A0=C2=A0 >>>>> + >>>>> =C2=A0 END >>>>> =C2=A0 ; >>>>> + >>>>> =C2=A0 } >>>>> + >>>>> =C2=A0 foreach (keys(%addons)){ >>>>> =C2=A0 chomp($_); >>>>> =C2=A0 my $Datei =3D "/var/ipfire/backup/addons/backup/".$_.".ipf"; >>>>> =C2=A0 my @Info =3D stat($Datei); >>>>> =C2=A0 my $Size =3D $Info[7] / 1024; >>>>> =C2=A0 $Size =3D sprintf("%2d", $Size); >>>>> -print ""; >>>>> + >>>>> +print " >>>>> +=C2=A0=C2=A0=C2=A0 >>>>> +=C2=A0=C2=A0=C2=A0 >>>>> +=C2=A0=C2=A0=C2=A0 "; >>>>> + >>>>> =C2=A0 print <>>>> -=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 END >>>>> =C2=A0 ; >>>>> =C2=A0 } >>>>> @@ -322,9 +402,31 @@ print "
$Lang::tr{'name'}$Lang::tr{'date'}$Lang::tr{'size'}$Lang::tr{'action'}
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $S= ize KB $Lang::tr{'date'} ".localtime($Info[9])."
$Lang::tr{'backup from'} $_ $Lang::tr{'size'} $S= ize KB $Lang::tr{'date'} ".localtime($Info[9])."
$_".localtime($Info[9])."$Size KB
$_".localtime($Info[9])."$Size KB
>>>>> + >>>>> +=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=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=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=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=C2=A0
>>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
$Lang::tr{'backup from'} $_
$_ - - - >>>>> =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=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
$Lang::tr{'backup from'} $_ $Lang::tr{= 'size'} $Size KB $Lang::tr{'date'} ".localtime($Info[9])."
$_".localtime($Info[9])."$Size KB >>>>> +=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=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=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=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=C2=A0
>>>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
"; >>>>> =C2=A0 =C2=A0 print <>>>> =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

$Lang= ::tr{'backupwarning'}


$Lang::tr{'backup'}<= input type=3D'image' alt=3D'$Lang::tr{'restore'}' title=3D'$Lang::tr{'restore= '}' src=3D'/images/media-floppy.png' />
$Lang::tr{'backupaddon'}

$Lang::tr{'backupwarning'}


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