- minor lang file cleanup - commented unimplemented share names link
authorcbarratt <cbarratt>
Sun, 21 Mar 2004 01:46:45 +0000 (01:46 +0000)
committercbarratt <cbarratt>
Sun, 21 Mar 2004 01:46:45 +0000 (01:46 +0000)
   from restore and admin options

 - fixed lib/BackupPC/CGI/View.pm to use functions to return log file
   data for display

 - updated makeDist to produce better looking BackupPC.html docs with
   perl 5.8.x.

13 files changed:
ChangeLog
conf/config.pl
doc-src/BackupPC.pod
lib/BackupPC/CGI/Lib.pm
lib/BackupPC/CGI/View.pm
lib/BackupPC/FileZIO.pm
lib/BackupPC/Lang/de.pm
lib/BackupPC/Lang/en.pm
lib/BackupPC/Lang/es.pm
lib/BackupPC/Lang/fr.pm
lib/BackupPC/Lang/it.pm
lib/BackupPC/Lib.pm
makeDist

index 0120564..2499045 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
   dumps.  Only one partial is kept, and it is removed as soon
   as a successful full (or a new partial) is done.
 
-  (Note: still needs some work to cleanup any partial files when the
-  dump is interrupted or fails).
-
 * Added support for resuming a full dump for rsync.  The partial
   full is kept, and to resume an incremental is done against the
   partial, and a full is done for the rest.
 
-  (Note: not tested!  Also needs a new File::RsyncP that I haven't
-  yet released.)
-
 * Added support for Rsync checksum caching.  Rsync checksum are
   appended to the compressed pool files.  This means that block
   and file checksums do not need to be recomputed on the server
-  when using rsync.
+  when using rsync.  Requires a patch to rsync to support fixed
+  checksum seeds.  This patch is included in the cygwin-rsyncd
+  release on http://backuppc.sourceforge.net.
 
 * Major addition of Archive feature from Josh Marshall.  Special
   clients can be configured to be archive targets (eg: tape drives,
@@ -78,7 +74,9 @@
   files.
 
 * Addition of administration options from Paul Lukins.  Initial
-  page allows server to be started/stopped/reloaded.
+  page allows server to be started/stopped/reloaded.  This still
+  needs some i18n work.  Currently the server start/stop is
+  commented out.
 
 * Split BackupPC_Admin into a set of modules, one for each major action.
   Each action is now a seperate module in lib/BackupPC/CGI.
index ff5090e..1b8054c 100644 (file)
@@ -673,19 +673,24 @@ $Conf{BackupZeroFilesIsFatal} = 1;
 #
 # The valid values are:
 #
-#   - 'smb':    backup and restore via smbclient and the SMB protocol.
-#               Best choice for WinXX.
+#   - 'smb':     backup and restore via smbclient and the SMB protocol.
+#                Easiest choice for WinXX.
 #
-#   - 'rsync':  backup and restore via rsync (via rsh or ssh).
-#               Best choice for linux/unix.  Can also work on WinXX.
+#   - 'rsync':   backup and restore via rsync (via rsh or ssh).
+#                Best choice for linux/unix.  Good choice also for WinXX.
 #
-#   - 'rsyncd': backup and restre via rsync daemon on the client.
-#               Best choice for linux/unix if you have rsyncd running on
-#               the client.  Can also work on WinXX.
+#   - 'rsyncd':  backup and restre via rsync daemon on the client.
+#                Best choice for linux/unix if you have rsyncd running on
+#                the client.  Good choice also for WinXX.
 #
 #   - 'tar':    backup and restore via tar, tar over ssh, rsh or nfs.
 #               Good choice for linux/unix.
 #
+#   - 'archive': host is a special archive host.  Backups are not done.
+#                An archive host is used to archive other host's backups
+#                to permanent media, such as tape, CDR or DVD.
+#               
+#
 $Conf{XferMethod} = 'smb';
 
 #
index e121b15..a8ddc27 100644 (file)
@@ -697,7 +697,7 @@ DHCP addresses to search is specified in $Conf{DHCPAddressRanges}.
 
 Note also that the $Conf{ClientNameAlias} feature does not work for
 clients with DHCP set to 1.
-    
+
 =item User name
 
 This should be the unix login/email name of the user who "owns" or uses
@@ -834,7 +834,7 @@ is recommended.  Rsync is run on the remote client via rsh or ssh.
 
 The relevant configuration settings are $Conf{RsyncClientPath},
 $Conf{RsyncClientCmd}, $Conf{RsyncClientRestoreCmd}, $Conf{RsyncShareName},
-$Conf{RsyncArgs}, $Conf{RsyncRestoreArgs} and $Conf{RsyncLogLevel}.
+$Conf{RsyncArgs}, and $Conf{RsyncRestoreArgs}.
 
 =item rsyncd
 
@@ -844,10 +844,10 @@ the client machine and BackupPC connects directly to it.
 
 The relevant configuration settings are $Conf{RsyncdClientPort},
 $Conf{RsyncdUserName}, $Conf{RsyncdPasswd}, $Conf{RsyncdAuthRequired},
-$Conf{RsyncShareName}, $Conf{RsyncArgs}, $Conf{RsyncRestoreArgs}
-and $Conf{RsyncLogLevel}.  In the case of rsyncd, $Conf{RsyncShareName}
-is the name of an rsync module (ie: the thing in square brackets in
-rsyncd's conf file -- see rsyncd.conf), not a file system path.
+$Conf{RsyncShareName}, $Conf{RsyncArgs}, and $Conf{RsyncRestoreArgs}.
+$Conf{RsyncShareName} is the name of an rsync module (ie: the thing
+in square brackets in rsyncd's conf file -- see rsyncd.conf), not a
+file system path.
 
 Be aware that rsyncd will remove the leading '/' from path names in
 symbolic links if you specify "use chroot = no" in the rsynd.conf file.
@@ -2028,6 +2028,15 @@ Each archive type is specified by a BackupPC host with its XferMethod
 set to 'archive'. This allows for multiple configurations at sites where
 there might be a combination of tape and cd/dvd backups being made.
 
+BackupPC provides a menu that allows one or more hosts to be archived.
+The most recent backup of each host is archived using BackupPC_tarCreate,
+and the output is optionally compressed and split into fixed-sized
+files (eg: 650MB).
+
+The archive for each host is done by default using
+__INSTALLDIR__/BackupPC_archiveHost.  This script can be copied
+and customized as needed.
+
 =head2 Configuring an Archive Host
 
 To create an Archive Host, add it to the hosts file just as any other host
@@ -2039,13 +2048,13 @@ the Archive Hosts's pc directory, adding the following line:
 $Conf{XferMethod} = 'archive';
 
 To further customise the archive's parameters you can adding the changed
-parameters in the host's config.pl file. The parameters are explained in the config.pl
-file.
+parameters in the host's config.pl file. The parameters are explained in
+the config.pl file.  Parameters may be fixed or the user can be allowed 
+to change them (eg: output device).
 
-The example archive programs included with BackupPC are for a CD and 
-Tape archive. The programs are called BackupPC_archivecd and 
-BackupPC_archivetape. These are specified by the ArchiveClientCmd configuration
-parameter.
+The per-host archive command is $Conf{ArchiveClientCmd}.  By default
+this invokes __INSTALLDIR__/BackupPC_archiveHost, which you can
+copy and customize as necessary.
 
 =head2 Starting an Archive
 
@@ -3144,7 +3153,7 @@ See L<http://backuppc.sourceforge.net>.
 
 =head1 Copyright
 
-Copyright (C) 2001-2003 Craig Barratt
+Copyright (C) 2001-2004 Craig Barratt
 
 =head1 Credits
 
index f689700..683dd58 100644 (file)
@@ -29,7 +29,7 @@
 #
 #========================================================================
 #
-# Version 2.1.0_CVS, released 8 Feb 2004.
+# Version 2.1.0_CVS, released 13 Mar 2004.
 #
 # See http://backuppc.sourceforge.net.
 #
@@ -387,7 +387,7 @@ sub ConfirmIPAddress
 
 sub Header
 {
-    my($title, $content, $noBrowse) = @_;
+    my($title, $content, $noBrowse, $contentSub, $contentPost) = @_;
     my @adminLinks = (
         { link => "",                         name => $Lang->{Status},
                                               priv => 1},
@@ -449,23 +449,20 @@ EOF
            NavLink("?action=view&type=config&host=${EscURI($host)}",
                    $Lang->{Config_file}, " class=\"navbar\"");
        }
-       print <<EOF;
-</div>
-<div id="Content">
-$content
-<br><br><br>
-</div>
-<div class="NavMenu" style="height:100%" id="NavMenu">
-EOF
-    } else {
-        print <<EOF;
-<div id="Content">
-$content
+       print "</div>\n";
+    }
+    print("<div id=\"Content\">\n$content\n");
+    if ( defined($contentSub) && ref($contentSub) eq "CODE" ) {
+       while ( (my $s = &$contentSub()) ne "" ) {
+           print($s);
+       }
+    }
+    print($contentPost) if ( defined($contentPost) );
+    print <<EOF;
 <br><br><br>
 </div>
 <div class="NavMenu" id="NavMenu" style="height:100%">
 EOF
-    }
     my $hostSelectbox = "<option value=\"#\">$Lang->{Select_a_host}</option>";
     my @hosts = GetUserHosts($In{host}, $Conf{CgiNavBarAdminAllHosts});
     if ( defined($Hosts) && %$Hosts > 0 && @hosts ) {
index d60196b..3196086 100644 (file)
@@ -28,7 +28,7 @@
 #
 #========================================================================
 #
-# Version 2.1.0_CVS, released 8 Feb 2004.
+# Version 2.1.0_CVS, released 13 Mar 2004.
 #
 # See http://backuppc.sourceforge.net.
 #
@@ -52,7 +52,8 @@ sub action
     my($file, $comment);
     my $ext = $num ne "" ? ".$num" : "";
 
-    ErrorExit(eval("qq{$Lang->{Invalid_number__num}}")) if ( $num ne "" && $num !~ /^\d+$/ );
+    ErrorExit(eval("qq{$Lang->{Invalid_number__num}}"))
+                   if ( $num ne "" && $num !~ /^\d+$/ );
     if ( $type eq "XferLOG" ) {
         $file = "$TopDir/pc/$host/SmbLOG$ext";
         $file = "$TopDir/pc/$host/XferLOG$ext" if ( !-f $file && !-f "$file.z");
@@ -84,23 +85,14 @@ sub action
                                            && !-f $file );
     } elsif ( $type eq "docs" ) {
         $file = "$BinDir/../doc/BackupPC.html";
-        if ( open(LOG, $file) ) {
-           binmode(LOG);
-            my $content;
-            $content .= $_ while ( <LOG> );
-            close(LOG);
-            Header($Lang->{BackupPC__Documentation}, $content);
-            Trailer();
-        } else {
-            ErrorExit(eval("qq{$Lang->{Unable_to_open__file__configuration_problem}}"));
-        }
-        return;
     } elsif ( $type eq "config" ) {
         $file = "$TopDir/conf/config.pl";
     } elsif ( $type eq "hosts" ) {
         $file = "$TopDir/conf/hosts";
+        $linkHosts = 1;
     } elsif ( $host ne "" ) {
         $file = "$TopDir/pc/$host/LOG$ext";
+        $linkHosts = 1;
     } else {
         $file = "$TopDir/log/LOG$ext";
         $linkHosts = 1;
@@ -112,88 +104,153 @@ sub action
         $file .= ".z";
         $compress = 1;
     }
-    my $content;
-    $content .= eval ("qq{$Lang->{Log_File__file__comment}}");
+    my($contentPre, $contentSub, $contentPost);
+    $contentPre .= eval("qq{$Lang->{Log_File__file__comment}}");
     if ( defined($fh = BackupPC::FileZIO->open($file, 0, $compress)) ) {
         my $mtimeStr = $bpc->timeStamp((stat($file))[9], 1);
 
-       $content .= ( eval ("qq{$Lang->{Contents_of_log_file}}"));
+       $contentPre .= eval("qq{$Lang->{Contents_of_log_file}}");
 
-        $content .= "<pre>";
+        $contentPre .= "<pre>";
         if ( $type eq "XferErr" || $type eq "XferErrbad"
                                || $type eq "RestoreErr"
                                || $type eq "ArchiveErr" ) {
-           my $skipped;
-            while ( 1 ) {
-                $_ = $fh->readLine();
-                if ( $_ eq "" ) {
-                   $content .= (eval ("qq{$Lang->{skipped__skipped_lines}}"))
-                                                   if ( $skipped );
-                   last;
-               }
-                if ( /smb: \\>/
-                        || /^\s*(\d+) \(\s*\d+\.\d kb\/s\) (.*)$/
-                        || /^tar: dumped \d+ files/
-                        || /^\s*added interface/i
-                        || /^\s*restore tar file /i
-                        || /^\s*restore directory /i
-                        || /^\s*tarmode is now/i
-                        || /^\s*Total bytes written/i
-                        || /^\s*Domain=/i
-                        || /^\s*Getting files newer than/i
-                        || /^\s*Output is \/dev\/null/
-                        || /^\s*\([\d.,]* kb\/s\) \(average [\d\.]* kb\/s\)$/
-                        || /^\s+directory \\/
-                        || /^\s*Timezone is/
-                       || /^\s*creating lame (up|low)case table/i
-                        || /^\.\//
-                        || /^  /
-                           ) {
-                   $skipped++;
-                   next;
+           $contentSub = sub {
+               #
+               # Because the content might be large, we use
+               # a sub to return the data in 64K chunks.
+               #
+               my($skipped, $c, $s);
+               while ( length($c) < 65536 ) {
+                   $s = $fh->readLine();
+                   if ( $s eq "" ) {
+                       $c .= eval("qq{$Lang->{skipped__skipped_lines}}")
+                                                       if ( $skipped );
+                       last;
+                   }
+                   $s =~ s/[\n\r]+//g;
+                   if ( $s =~ /smb: \\>/
+                           || $s =~ /^\s*(\d+) \(\s*\d+\.\d kb\/s\) (.*)$/
+                           || $s =~ /^tar: dumped \d+ files/
+                           || $s =~ /^\s*added interface/i
+                           || $s =~ /^\s*restore tar file /i
+                           || $s =~ /^\s*restore directory /i
+                           || $s =~ /^\s*tarmode is now/i
+                           || $s =~ /^\s*Total bytes written/i
+                           || $s =~ /^\s*Domain=/i
+                           || $s =~ /^\s*Getting files newer than/i
+                           || $s =~ /^\s*Output is \/dev\/null/
+                           || $s =~ /^\s*\([\d.,]* kb\/s\) \(average [\d\.]* kb\/s\)$/
+                           || $s =~ /^\s+directory \\/
+                           || $s =~ /^\s*Timezone is/
+                           || $s =~ /^\s*creating lame (up|low)case table/i
+                           || $s =~ /^\.\//
+                           || $s =~ /^  / ) {
+                       $skipped++;
+                       next;
+                   }
+                   $c .= eval("qq{$Lang->{skipped__skipped_lines}}")
+                                                        if ( $skipped );
+                   $skipped = 0;
+                   $c .= ${EscHTML($s)} . "\n";
                }
-               $content .= (eval("qq{$Lang->{skipped__skipped_lines}}"))
-                                                    if ( $skipped );
-               $skipped = 0;
-                $content .= ${EscHTML($_)};
-            }
+               return $c;
+           };
         } elsif ( $linkHosts ) {
-            while ( 1 ) {
-                $_ = $fh->readLine();
-                last if ( $_ eq "" );
-                my $s = ${EscHTML($_)};
-                $s =~ s/\b([\w-]+)\b/defined($Hosts->{$1})
-                                        ? ${HostLink($1)} : $1/eg;
-                $content .= $s;
-            }
+           #
+           # Because the content might be large, we use
+           # a sub to return the data in 64K chunks.
+           #
+           $contentSub = sub {
+               my($c, $s);
+               while ( length($c) < 65536 ) {
+                   $s = $fh->readLine();
+                   last if ( $s eq "" );
+                   $s =~ s/[\n\r]+//g;
+                   $s = ${EscHTML($s)};
+                   $s =~ s/\b([\w-]+)\b/defined($Hosts->{$1})
+                                           ? ${HostLink($1)} : $1/eg;
+                   $c .= $s . "\n";
+               }
+               return $c;
+            };
         } elsif ( $type eq "config" ) {
-            while ( 1 ) {
-                $_ = $fh->readLine();
-                last if ( $_ eq "" );
-                # remove any passwords and user names
-                s/(SmbSharePasswd.*=.*['"]).*(['"])/$1$2/ig;
-                s/(SmbShareUserName.*=.*['"]).*(['"])/$1$2/ig;
-                s/(RsyncdPasswd.*=.*['"]).*(['"])/$1$2/ig;
-                s/(ServerMesgSecret.*=.*['"]).*(['"])/$1$2/ig;
-                $content .= ${EscHTML($_)};
-            }
+           #
+           # Because the content might be large, we use
+           # a sub to return the data in 64K chunks.
+           #
+           $contentSub = sub {
+               my($c, $s);
+               while ( length($c) < 65536 ) {
+                   $s = $fh->readLine();
+                   last if ( $s eq "" );
+                   $s =~ s/[\n\r]+//g;
+                   # remove any passwords and user names
+                   $s =~ s/(SmbSharePasswd.*=.*['"]).*(['"])/$1$2/ig;
+                   $s =~ s/(SmbShareUserName.*=.*['"]).*(['"])/$1$2/ig;
+                   $s =~ s/(RsyncdPasswd.*=.*['"]).*(['"])/$1$2/ig;
+                   $s =~ s/(ServerMesgSecret.*=.*['"]).*(['"])/$1$2/ig;
+                   $s = ${EscHTML($s)};
+                   $s =~ s[(\$Conf\{.*?\})][
+                       my $c = $1;
+                       my $s = lc($c);
+                       $s =~ s{(\W)}{sprintf("%%%02x", ord($1) )}gxe;
+                       "<a href=\"?action=view&type=docs#item_$s\">$c</a>"
+                   ]eg;
+                   $c .= $s . "\n";
+               }
+               return $c;
+            };
+        } elsif ( $type eq "docs" ) {
+           #
+           # Because the content might be large, we use
+           # a sub to return the data in 64K chunks.
+           #
+           $contentSub = sub {
+               my($c, $s);
+               while ( length($c) < 65536 ) {
+                   $s = $fh->readLine();
+                   last if ( $s eq "" );
+                   $c .= $s;
+               }
+               return $c;
+            };
+           #
+           # Documentation a different header and no pre or post text,
+           # so just handle it here
+           #
+            Header($Lang->{BackupPC__Documentation}, "", 0, $contentSub);
+            Trailer();
+           return;
         } else {
-            while ( 1 ) {
-                $_ = $fh->readLine();
-                last if ( $_ eq "" );
-                $content .= ${EscHTML($_)};
-            }
+           #
+           # Because the content might be large, we use
+           # a sub to return the data in 64K chunks.
+           #
+           $contentSub = sub {
+               my($c, $s);
+               while ( length($c) < 65536 ) {
+                   $s = $fh->readLine();
+                   last if ( $s eq "" );
+                   $s =~ s/[\n\r]+//g;
+                   $s = ${EscHTML($s)};
+                   $c .= $s . "\n";
+               }
+               return $c;
+            };
         }
-        $fh->close();
     } else {
-       $content .= ( eval("qq{$Lang->{_pre___Can_t_open_log_file__file}}"));
+       if ( $type eq "docs" ) {
+           ErrorExit(eval("qq{$Lang->{Unable_to_open__file__configuration_problem}}"));
+       }
+       $contentPre .= eval("qq{$Lang->{_pre___Can_t_open_log_file__file}}");
     }
-    $content .= <<EOF;
-</pre>
-EOF
+    $contentPost .= "</pre>\n" if ( $type ne "docs" );
     Header(eval("qq{$Lang->{Backup_PC__Log_File__file}}"),
-                    $content, !-f "$TopDir/pc/$host/backups" );
+                    $contentPre, !-f "$TopDir/pc/$host/backups",
+                   $contentSub, $contentPost);
     Trailer();
+    $fh->close() if ( defined($fh) );
 }
 
 1;
index 95237a5..00a6a92 100644 (file)
@@ -29,7 +29,7 @@
 #
 #========================================================================
 #
-# Version 2.1.0_CVS, released 8 Feb 2004.
+# Version 2.1.0_CVS, released 13 Mar 2004.
 #
 # See http://backuppc.sourceforge.net.
 #
@@ -220,7 +220,8 @@ sub readLine
     my($self) = @_;
     my $str;
 
-    while ( defined($self->{readLineBuf}) && !@{$self->{readLineBuf}} ) {
+    $self->{readLineBuf} = [] if ( !defined($self->{readLineBuf}) );
+    while ( !@{$self->{readLineBuf}} ) {
         $self->read(\$str, $CompMaxRead);
         if ( $str eq "" ) {
             $str = $self->{readLineFrag};
index c119f42..3b874ff 100644 (file)
@@ -28,18 +28,20 @@ $Lang{Admin_Options} = "Admin Optionen";
 $Lang{Admin_Options_Page} = <<EOF;
 \${h1(qq{$Lang{Admin_Options}})}
 <br>
-\${h1("Server Steuerung")}
+\${h2("Server Steuerung")}
 <form action="\$MyURL" method="get">
 <table>
-  <tr><td>Server stoppen:<td><input type="submit" name="action" value="Stop">
+  <!--<tr><td>Server stoppen:<td><input type="submit" name="action" value="Stop">-->
   <tr><td>Server Konfiguration neu laden:<td><input type="submit" name="action" value="Reload">
 </table>
 </form>
-\${h1("Server Konfiguration")}
+<!--
+\${h2("Server Konfiguration")}
 <ul>
   <li><i>Andere Optionen sind hier möglich ... z.B.,</i>
   <li>Server Konfiguration editieren
 </ul>
+-->
 EOF
 $Lang{Unable_to_connect_to_BackupPC_server} = "Kann keine Verbindung zu BackupPC server herstellen",
             "Dieses CGI script (\$MyURL) kann keine Verbindung zu BackupPC"
@@ -464,7 +466,7 @@ Wiederherstellung korrekt ist)
                 window.open(URL,'','width=500,height=400');
          }
          </script>
-         <a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Suche nach verfügbaren Freigaben (NICHT IMPLEMENTIERT)</a></td>
+         <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Suche nach verfügbaren Freigaben (NICHT IMPLEMENTIERT)</a>--></td>
 </tr><tr>
     <td>Restore auf Freigabe</td>
     <td><input type="text" size="40" value="\${EscHTML(\$share)}"
index dea65b8..d209ba8 100644 (file)
@@ -23,18 +23,20 @@ $Lang{Admin_Options} = "Admin Options";
 $Lang{Admin_Options_Page} = <<EOF;
 \${h1(qq{$Lang{Admin_Options}})}
 <br>
-\${h1("Server Control")}
+\${h2("Server Control")}
 <form action="\$MyURL" method="get">
 <table>
-  <tr><td>Stop the server:<td><input type="submit" name="action" value="Stop">
+  <!--<tr><td>Stop the server:<td><input type="submit" name="action" value="Stop">-->
   <tr><td>Reload the server configuration:<td><input type="submit" name="action" value="Reload">
 </table>
 </form>
-\${h1("Server Configuration")}
+<!--
+\${h2("Server Configuration")}
 <ul>
   <li><i>Other options can go here... e.g.,</i>
   <li>Edit server configuration
 </ul>
+-->
 EOF
 $Lang{Unable_to_connect_to_BackupPC_server} = "Unable to connect to BackupPC server",
             "This CGI script (\$MyURL) is unable to connect to the BackupPC"
@@ -459,7 +461,7 @@ selected will be overwritten!
                window.open(URL,'','width=500,height=400');
         }
         </script>
-        <a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a></td>
+        <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a>--></td>
 </tr><tr>
     <td>Restore the files to share</td>
     <td><input type="text" size="40" value="\${EscHTML(\$share)}"
index 1d8e591..275763c 100644 (file)
@@ -25,18 +25,20 @@ $Lang{Admin_Options_Page} = <<EOF;
 ENG
 \${h1(qq{$Lang{Admin_Options}})}
 <br>
-\${h1("Server Control")}
+\${h2("Server Control")}
 <form action="\$MyURL" method="get">
 <table>
-  <tr><td>Stop the server:<td><input type="submit" name="action" value="Stop">
+<!--<tr><td>Stop the server:<td><input type="submit" name="action" value="Stop">-->
   <tr><td>Reload the server configuration:<td><input type="submit" name="action" value="Reload">
 </table>
 </form>
-\${h1("Server Configuration")}
+<!--
+\${h2("Server Configuration")}
 <ul> 
   <li><i>Other options can go here... e.g.,</i>
   <li>Edit server configuration
 </ul>
+-->
 EOF
 $Lang{Unable_to_connect_to_BackupPC_server} = "Imposible conectar al servidor BackupPC",
             "Este script CGI (\$MyURL) no puede conectar al servidor BackupPC"
@@ -461,7 +463,7 @@ seleccionado ser
                 window.open(URL,'','width=500,height=400');
          }
          </script>
-         <a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a></td>
+         <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a>--></td>
 </tr><tr>
     <td>Restaurar los archivos a la unidad</td>
     <td><input type="text" size="40" value="\${EscHTML(\$share)}"
index a6d11c1..593ed94 100644 (file)
@@ -23,18 +23,20 @@ $Lang{Admin_Options} = "Options d'administration";
 $Lang{Admin_Options_Page} = <<EOF;
 \${h1(qq{$Lang{Admin_Options}})}
 <br>
-\${h1("Contrôle du serveur")}
+\${h2("Contrôle du serveur")}
 <form action="\$MyURL" method="get">
 <table>
-  <tr><td>Arrêter le serveur:<td><input type="submit" name="action" value="Arrêter">
-  <tr><td>Recharger la configuration:<td><input type="submit" name="action" value="Recharger">
+<!--<tr><td>Arrêter le serveur:<td><input type="submit" name="action" value="Arrêter">-->
+  <tr><td>Recharger la configuration:<td><input type="submit" name="action" value="Reload">
 </table>
 </form>
-\${h1("Configuration")}
+<!--
+\${h2("Server Configuration")}
 <ul>
   <li><i>Other options can go here... e.g.,</i>
   <li>Edit server configuration
 </ul>
+-->
 EOF
 $Lang{Unable_to_connect_to_BackupPC_server} = "Impossible de se connecter au serveur BackupPC",
             "Ce script CGI (\$MyURL) est incapable de se connecter au serverur BackupPC"
@@ -459,7 +461,7 @@ tous les fichiers correspondant 
                window.open(URL,'','width=500,height=400');
        }
         </script>
-        <a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Chercher les partitions disponibles (NON IMPLANTE)</a></td>
+        <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Chercher les partitions disponibles (NON IMPLANTE)</a>--></td>
 </tr><tr>
     <td>Restaurer les fichiers vers le partage</td>
     <td><input type="text" size="40" value="\${EscHTML(\$share)}"
@@ -1094,7 +1096,7 @@ EOF
 
 $Lang{checkAllHosts} = <<EOF;
 <tr><td class="fviewborder">
-<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Select all
+<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Tout sélectionner
 </td><td colspan="2" align="center" class="fviewborder">
 <input type="submit" name="Submit" value="Archive selected hosts">
 </td></tr>
index de5b11b..0960211 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/perl
+#!/bin/perl
 #
-# $Id: it.pm,v 1.3 2004/03/15 03:12:43 cbarratt Exp $
+# $Id: it.pm,v 1.4 2004/03/21 01:46:46 cbarratt Exp $
 #
 # Italian i18n file
 #
@@ -28,18 +28,20 @@ $Lang{Admin_Options} = "Opzioni di amministrazione";
 $Lang{Admin_Options_Page} = <<EOF;
 \${h1(qq{$Lang{Admin_Options}})}
 <br>
-\${h1("Controllo server")}
+\${h2("Controllo server")}
 <form action="\$MyURL" method="get">
 <table>
-  <tr><td>Arresta il server:<td><input type="submit" name="action" value="Stop">
+<!--<tr><td>Arresta il server:<td><input type="submit" name="action" value="Stop">-->
   <tr><td>Ricarica la configurazione del server:<td><input type="submit" name="action" value="Reload">
 </table>
 </form>
-\${h1("Configurazione server")}
+<!--
+\${h2("Configurazione server")}
 <ul>
   <li><i>Other options can go here... e.g.,</i>
   <li>Modifica configurazione server
 </ul>
+-->
 EOF
 $Lang{Unable_to_connect_to_BackupPC_server} = "Impossibile connettersi al server BackupPC",
             "Questo script CGI (\$MyURL) non &egrave; in grado di connettersi al server"
@@ -467,7 +469,7 @@ sar&agrave; sovrascritto!
                window.open(URL,'','width=500,height=400');
         }
         </script>
-        <a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a></td>
+        <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a>--></td>
 </tr><tr>
     <td>Ripristino dei file sulla condivisione</td>
     <td><input type="text" size="40" value="\${EscHTML(\$share)}"
@@ -1023,7 +1025,7 @@ $Lang{Documentation} = "Documentazione";
 #$Lang{Host_or_User_name} = "<small>Host o nome utente:</small>";
 $Lang{Go} = "Vai";
 $Lang{Hosts} = "Host";
-$Lang{Select_a_host} = "ENGLISH Select a host...";
+$Lang{Select_a_host} = "Selezionare un host...";
 
 $Lang{There_have_been_no_archives} = "<h2> Non ci sono state archiviazioni </h2>\n";
 $Lang{This_PC_has_never_been_backed_up} = "<h2> Non &egrave; mai stato eseguito un backup per questo PC!!! </h2>\n";
index 39f9680..7b2973c 100644 (file)
@@ -29,7 +29,7 @@
 #
 #========================================================================
 #
-# Version 2.1.0_CVS, released 8 Feb 2004.
+# Version 2.1.0_CVS, released 13 Mar 2004.
 #
 # See http://backuppc.sourceforge.net.
 #
@@ -462,14 +462,17 @@ sub RmTreeQuiet
        #
        if ( !unlink($root) ) {
             if ( -d $root ) {
-                my $d = DirHandle->new($root)
-                  or print(STDERR "Can't read $pwd/$root: $!");
-                @files = $d->read;
-                $d->close;
-                @files = grep $_!~/^\.{1,2}$/, @files;
-                $bpc->RmTreeQuiet("$pwd/$root", \@files);
-                chdir($pwd);
-                rmdir($root) || rmdir($root);
+                my $d = DirHandle->new($root);
+               if ( !defined($d) ) {
+                   print(STDERR "Can't read $pwd/$root: $!\n");
+               } else {
+                   @files = $d->read;
+                   $d->close;
+                   @files = grep $_!~/^\.{1,2}$/, @files;
+                   $bpc->RmTreeQuiet("$pwd/$root", \@files);
+                   chdir($pwd);
+                   rmdir($root) || rmdir($root);
+               }
             } else {
                 unlink($root) || unlink($root);
             }
index 0a54477..55ae42c 100755 (executable)
--- a/makeDist
+++ b/makeDist
@@ -116,6 +116,8 @@ my $errCnt;
 
 $errCnt += CheckConfigParams("conf/config.pl", $ConfVars, 0);
 
+$errCnt += CheckConfigParams("doc-src/BackupPC.pod", $ConfVars, 1);
+
 #
 # These config parameters are not used in the code, so ignore them.
 #
@@ -228,11 +230,26 @@ sub InstallFile
            s/^# *Version \d+\.\d+[\.\w]*, released \d+ \w+ \d{4}\.?/# Version __VERSION__, released __RELEASEDATE__./;
            s/__VERSION__/$Version/g;
            s/__RELEASEDATE__/$ReleaseDate/g;
-           if ( $file =~ /BackupPC\.html$/ && !/A NAME="item_%24Conf/ ) {
-               s/\$Conf{([^}]*)}/
+           if ( $file =~ /BackupPC\.html$/ ) {
+               #
+               # fixup for perl 5.6.x
+               #
+               if ( !/A NAME="item_%24Conf/i ) {
+                   s/\$Conf{([^}]*)}/
                        defined($ConfName{$1})
-                           ? "<A HREF=\"#$ConfName{$1}\">\$Conf{$1}<\/A>"
+                           ? "\L<A HREF=\"#$ConfName{$1}\">\E\$Conf{$1}<\/A>"
                            : "\$Conf{$1}"/eg;
+               }
+               s/<(A NAME="item_%24Conf%7B.*?%7D).*?">/\L<$1">/ig;
+               s/^<DD>/<DD><P>/;
+               #
+               # fixup for perl 5.8.x
+               #
+               if ( /^<\/dt>/ ) {
+                   $_ .= <FILE>;
+                   s/^(<\/dt>\n<dd>)/$1<p>/s;
+               }
+               s/^<li><\/li>/<li>/;
            }
            if ( /__CONFIGPOD__/ ) {
                print OUT $ConfPod;
@@ -296,7 +313,7 @@ sub config2pod
                 s/([^;])\s*$/$1 .../;
             }
             push(@conf, $_);
-            my $text = $_;
+            my $text = "\$Conf{$var}";
             $text =~ s/\s+/_/sg;
             $text =~ s{(\W)}{sprintf("%%%02X", ord($1) )}gxe;
             $text = substr($text, 0, 50);