-#!/bin/perl -T
+#!/bin/perl
#my %lang;
#use strict;
$Lang{Stop_Dequeue_Backup} = "Stop/Dequeue Backup";
$Lang{Restore} = "Restore";
+$Lang{Type_full} = "full";
+$Lang{Type_incr} = "incremental";
+
# -----
$Lang{Only_privileged_users_can_view_admin_options} = "Only privileged users can view 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">
+<table class="tableStnd">
+ <!--<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"
$Lang{H_BackupPC_Server_Status} = "BackupPC Server Status";
-$Lang{BackupPC_Server_Status}= <<EOF;
-\${h1(qq{$Lang{H_BackupPC_Server_Status}})}
-
-<p>
+$Lang{BackupPC_Server_Status_General_Info}= <<EOF;
\${h2(\"General Server Information\")}
<ul>
and yesterday\'s max was \$Info{DUDailyMaxPrev}%.
</ul>
</ul>
+EOF
+
+$Lang{BackupPC_Server_Status} = <<EOF;
+\${h1(qq{$Lang{H_BackupPC_Server_Status}})}
+
+<p>
+\$generalInfo
\${h2("Currently Running Jobs")}
<p>
-<table cellspacing="1" cellpadding="3">
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
<tr class="tableheader"><td> Host </td>
<td> Type </td>
<td> User </td>
\${h2("Failures that need attention")}
<p>
-<table cellspacing="1" cellpadding="3">
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
<tr class="tableheader"><td align="center"> Host </td>
<td align="center"> Type </td>
<td align="center"> User </td>
EOF
# --------------------------------
-$Lang{BackupPC__Server_Summary} = "BackupPC: Server Summary";
+$Lang{BackupPC__Server_Summary} = "BackupPC: Host Summary";
$Lang{BackupPC__Archive} = "BackupPC: Archive";
-$Lang{BackupPC_Summary}=<<EOF;
+$Lang{BackupPC_Summary} = <<EOF;
\${h1(qq{$Lang{BackupPC__Server_Summary}})}
<p>
(prior to pooling and compression).
</ul>
</p>
-<table cellpadding="3" cellspacing="1">
+<table class="tableStnd" border cellpadding="3" cellspacing="1">
<tr class="tableheader"><td> Host </td>
<td align="center"> User </td>
<td align="center"> #Full </td>
<p>
There are \$hostCntNone hosts with no backups.
<p>
-<table cellpadding="3" cellspacing="1">
+<table class="tableStnd" border cellpadding="3" cellspacing="1">
<tr class="tableheader"><td> Host </td>
<td align="center"> User </td>
<td align="center"> #Full </td>
</table>
EOF
-$Lang{BackupPC_Archive}=<<EOF;
-
+$Lang{BackupPC_Archive} = <<EOF;
\${h1(qq{$Lang{BackupPC__Archive}})}
<script language="javascript" type="text/javascript">
<!--
<form name="form1" method="post" action="\$MyURL">
<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
<input type="hidden" name="type" value="1">
+<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
<input type="hidden" name="action" value="Archive">
-<table cellpadding="0" cellspacing="0" bgcolor="#333333"><tr><td>
-<table border="0" width="100%" align="left" cellpadding="2" cellspacing="1">
-<tr bgcolor="#99cc33"><td align=center> Host</td>
+<table class="tableStnd" border cellpadding="3" cellspacing="1">
+<tr class="tableheader"><td align=center> Host</td>
<td align="center"> User </td>
<td align="center"> Backup Size </td>
\$strGood
\$checkAllHosts
</table>
-</td></tr></table>
+</form>
<p>
-</table>
EOF
-$Lang{BackupPC_Archive2}=<<EOF;
+$Lang{BackupPC_Archive2} = <<EOF;
\${h1(qq{$Lang{BackupPC__Archive}})}
About to archive the following hosts
<ul>
<form action="\$MyURL" method="post">
\$hiddenStr
<input type="hidden" name="action" value="Archive">
+<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
<input type="hidden" name="type" value="2">
<input type="hidden" value="0" name="archive_type">
-<table border="1">
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
+\$paramStr
+<tr>
+ <td colspan=2><input type="submit" value="Start the Archive" name=""></td>
+</tr>
+</form>
+</table>
+EOF
+
+$Lang{BackupPC_Archive2_location} = <<EOF;
<tr>
<td>Archive Location/Device</td>
<td><input type="text" value="\$ArchiveDest" name="archive_device"></td>
+</tr>
+EOF
+
+$Lang{BackupPC_Archive2_compression} = <<EOF;
<tr>
<td>Compression</td>
- <td><input type="radio" value="0" name="compression" \$ArchiveCompNone>None<br>
+ <td>
+ <input type="radio" value="0" name="compression" \$ArchiveCompNone>None<br>
<input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br>
- <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2</tr>
+ <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2
+ </td>
</tr>
+EOF
+
+$Lang{BackupPC_Archive2_parity} = <<EOF;
<tr>
- <td>Number of Parity Files</td>
+ <td>Percentage of Parity Data (0 = disable, 5 = typical)</td>
<td><input type="numeric" value="\$ArchivePar" name="par"></td>
</tr>
+EOF
+
+$Lang{BackupPC_Archive2_split} = <<EOF;
<tr>
- <td>Split output into:</td>
+ <td>Split output into</td>
<td><input type="numeric" value="\$ArchiveSplit" name="splitsize">Megabytes</td>
</tr>
-<tr>
- <td colspan=2><input type="submit" value="Start the Archive" name=""></td>
-</tr>
-</table>
EOF
# -----------------------------------
<p>
The following user requests are currently queued:
</p>
-<table cellspacing="1" cellpadding="3" width="80%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td> Host </td>
<td> Req Time </td>
<td> User </td></tr>
<p>
The following background requests are currently queued:
</p>
-<table cellspacing="1" cellpadding="3" width="80%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td> Host </td>
<td> Req Time </td>
<td> User </td></tr>
<p>
The following command requests are currently queued:
</p>
-<table cellspacing="1" cellpadding="3" width="80%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td> Host </td>
<td> Req Time </td>
<td> User </td>
EOF
# --------------------------------
-$Lang{Backup_PC__Log_File__file} = "BackupPC: Log File \$file";
+$Lang{Backup_PC__Log_File__file} = "BackupPC: File \$file";
$Lang{Log_File__file__comment} = <<EOF;
-\${h1("Log File \$file \$comment")}
+\${h1("File \$file \$comment")}
<p>
EOF
# --------------------------------
$Lang{Contents_of_log_file} = <<EOF;
-Contents of log file <tt>\$file</tt>, modified \$mtimeStr \$comment
+Contents of file <tt>\$file</tt>, modified \$mtimeStr \$comment
EOF
# --------------------------------
$Lang{Log_File_History__hdr} = <<EOF;
\${h1("Log File History \$hdr")}
<p>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td align="center"> File </td>
<td align="center"> Size </td>
<td align="center"> Modification time </td></tr>
$Lang{Recent_Email_Summary} = <<EOF;
\${h1("Recent Email Summary (Reverse time order)")}
<p>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td align="center"> Recipient </td>
<td align="center"> Host </td>
<td align="center"> Time </td>
</p>
\${h2("Option 1: Direct Restore")}
<p>
+EOF
+
+$Lang{Restore_Options_for__host_Option1} = <<EOF;
You can start a restore that will restore these files directly onto
\$host.
</p><p>
<td><!--<input type="text" size="40" value="\${EscHTML(\$host)}"
name="hostDest">-->
<select name="hostDest" onChange="document.direct.shareDest.value=''">
- <!-- hostOpt -->
+ \$hostDestSel
</select>
<script language="Javascript">
function myOpen(URL) {
- window.open(URL,'','width=200,height=200');
- }
+ 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</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)}"
</form>
EOF
+$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF;
+Direct restore has been disabled for host \${EscHTML(\$hostDest)}.
+Please select one of the other restore options.
+EOF
+
# ------------------------------
$Lang{Option_2__Download_Zip_archive} = <<EOF;
-
+<p>
\${h2("Option 2: Download Zip archive")}
<p>
You can download a Zip archive containing all the files/directories you have
# ------------------------------
$Lang{Option_2__Download_Zip_archive2} = <<EOF;
+<p>
\${h2("Option 2: Download Zip archive")}
<p>
Archive::Zip is not installed so you will not be able to download a
<p>
Click on the backup number to browse and restore backup files.
</p>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3">
<tr class="tableheader"><td align="center"> Backup# </td>
<td align="center"> Type </td>
<td align="center"> Filled </td>
<br><br>
\${h2("Xfer Error Summary")}
<br><br>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td align="center"> Backup# </td>
<td align="center"> Type </td>
<td align="center"> View </td>
to the pool.
Empty files and SMB errors aren\'t counted in the reuse and new counts.
</p>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td>
<td align="center" colspan="3"> Totals </td>
<td align="center" colspan="2"> Existing Files </td>
Compression performance for files already in the pool and newly
compressed files.
</p>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td>
<td align="center" colspan="3"> Existing Files </td>
<td align="center" colspan="3"> New Files </td>
<input type="submit" value="$Lang{Stop_Dequeue_Archive}" name="action">
</form>
-
\$ArchiveStr
EOF
# ------------------------------
$Lang{Restore___num_details_for__host} = "BackupPC: Restore #\$num details for \$host";
-$Lang{Restore___num_details_for__host2 } = <<EOF;
+$Lang{Restore___num_details_for__host2} = <<EOF;
\${h1("Restore #\$num Details for \$host")}
<p>
-<table cellspacing="1" cellpadding="3" width="50%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%">
<tr><td class="tableheader"> Number </td><td class="border"> \$Restores[\$i]{num} </td></tr>
<tr><td class="tableheader"> Requested by </td><td class="border"> \$RestoreReq{user} </td></tr>
<tr><td class="tableheader"> Request time </td><td class="border"> \$reqTime </td></tr>
<a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">Errors</a>
</tr></tr>
</table>
-<p>
+</p>
\${h1("File/Directory list")}
<p>
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%">
<tr class="tableheader"><td>Original file/dir</td><td>Restored to</td></tr>
\$fileListStr
</table>
$Lang{Archive___num_details_for__host2 } = <<EOF;
\${h1("Archive #\$num Details for \$host")}
<p>
-<table border>
-<tr><td> Number </td><td> \$Archives[\$i]{num} </td></tr>
-<tr><td> Requested by </td><td> \$ArchiveReq{user} </td></tr>
-<tr><td> Request time </td><td> \$reqTime </td></tr>
-<tr><td> Result </td><td> \$Archives[\$i]{result} </td></tr>
-<tr><td> Error Message </td><td> \$Archives[\$i]{errorMsg} </td></tr>
-<tr><td> Start time </td><td> \$startTime </td></tr>
-<tr><td> Duration </td><td> \$duration min </td></tr>
-<tr><td> Xfer log file </td><td>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr><td class="tableheader"> Number </td><td class="border"> \$Archives[\$i]{num} </td></tr>
+<tr><td class="tableheader"> Requested by </td><td class="border"> \$ArchiveReq{user} </td></tr>
+<tr><td class="tableheader"> Request time </td><td class="border"> \$reqTime </td></tr>
+<tr><td class="tableheader"> Result </td><td class="border"> \$Archives[\$i]{result} </td></tr>
+<tr><td class="tableheader"> Error Message </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr>
+<tr><td class="tableheader"> Start time </td><td class="border"> \$startTime </td></tr>
+<tr><td class="tableheader"> Duration </td><td class="border"> \$duration min </td></tr>
+<tr><td class="tableheader"> Xfer log file </td><td class="border">
<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">View</a>,
<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">Errors</a>
</tr></tr>
<p>
\${h1("Host list")}
<p>
-<table border>
-<tr><td>Host</td><td>Backup Number</td></tr>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td>Host</td><td>Backup Number</td></tr>
\$HostListStr
</table>
EOF
start this request from the client machine itself.
EOF
-########################
-# ok you can do it then
-########################
+# ------------------------------------
+# !! Server Mesg !!
+# ------------------------------------
$Lang{Backup_requested_on_DHCP__host} = "Backup requested on DHCP \$host (\$In{hostIP}) by"
. " \$User from \$ENV{REMOTE_ADDR}";
-
$Lang{Backup_requested_on__host_by__User} = "Backup requested on \$host by \$User";
$Lang{Backup_stopped_dequeued_on__host_by__User} = "Backup stopped/dequeued on \$host by \$User";
-
$Lang{Restore_requested_to_host__hostDest__backup___num} = "Restore requested to host \$hostDest, backup #\$num,"
. " by \$User from \$ENV{REMOTE_ADDR}";
$Lang{Archive_requested} = "Archive requested by \$User from \$ENV{REMOTE_ADDR}";
# -------------------------------------------------
$Lang{Status} = "Status";
-$Lang{PC_Summary} = "PC Summary";
+$Lang{PC_Summary} = "Host Summary";
$Lang{LOG_file} = "LOG file";
$Lang{LOG_files} = "LOG files";
$Lang{Old_LOGs} = "Old LOGs";
$Lang{Current_queues} = "Current queues";
$Lang{Documentation} = "Documentation";
-$Lang{Host_or_User_name} = "<small>Host or User name:</small>";
+#$Lang{Host_or_User_name} = "<small>Host or User name:</small>";
$Lang{Go} = "Go";
$Lang{Hosts} = "Hosts";
+$Lang{Select_a_host} = "Select a host...";
$Lang{There_have_been_no_archives} = "<h2> There have been no archives </h2>\n";
$Lang{This_PC_has_never_been_backed_up} = "<h2> This PC has never been backed up!! </h2>\n";
$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF;
<li>Because \$host has been on the network at least \$Conf{BlackoutGoodCnt}
-consecutive times, it will not be backed up from \$t0 to \$t1 on \$days.
+consecutive times, it will not be backed up from \$blackoutStr.
EOF
+$Lang{__time0_to__time1_on__days} = "\$t0 to \$t1 on \$days";
+
$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF;
<li>Backups are deferred for \$hours hours
-(<a href=\"\$MyURL?action=Stop/Dequeue%20Backup&host=\$host\">change this number</a>).
+(<a href=\"\$MyURL?action=\${EscURI(\$Lang->{Stop_Dequeue_Archive})}&host=\$host\">change this number</a>).
EOF
$Lang{tryIP} = " and \$StatusHost{dhcpHostIP}";
EOF
$Lang{checkAllHosts} = <<EOF;
-<tr bgcolor="#ffffcc"><td>
+<tr><td class="fviewborder">
<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');"> Select all
-</td><td colspan="2" align="center">
+</td><td colspan="2" align="center" class="fviewborder">
<input type="submit" name="Submit" value="Archive selected hosts">
</td></tr>
EOF
EOF
$Lang{Home} = "Home";
+$Lang{Browse} = "Browse backups";
$Lang{Last_bad_XferLOG} = "Last bad XferLOG";
$Lang{Last_bad_XferLOG_errors_only} = "Last bad XferLOG (errors only)";
\${h2("Restore Summary")}
<p>
Click on the restore number for more details.
-<table cellspacing="1" cellpadding="3" width="100%">
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
<tr class="tableheader"><td align="center"> Restore# </td>
<td align="center"> Result </td>
<td align="right"> Start Date</td>
\${h2("Archive Summary")}
<p>
Click on the archive number for more details.
-<table border>
-<tr><td align="center"> Archive# </td>
+<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
+<tr class="tableheader"><td align="center"> Archive# </td>
<td align="center"> Result </td>
<td align="right"> Start Date</td>
<td align="right"> Dur/mins</td>
$Lang{Status_link_pending} = "link pending";
$Lang{Status_link_running} = "link running";
-$Lang{Reason_backup_done} = "backup done";
-$Lang{Reason_restore_done} = "restore done";
-$Lang{Reason_nothing_to_do} = "nothing to do";
-$Lang{Reason_backup_failed} = "backup failed";
+$Lang{Reason_backup_done} = "backup done";
+$Lang{Reason_restore_done} = "restore done";
+$Lang{Reason_archive_done} = "archive done";
+$Lang{Reason_nothing_to_do} = "nothing to do";
+$Lang{Reason_backup_failed} = "backup failed";
$Lang{Reason_restore_failed} = "restore failed";
-$Lang{Reason_no_ping} = "no ping";
-$Lang{Reason_backup_canceled_by_user} = "backup canceled by user";
+$Lang{Reason_archive_failed} = "archive failed";
+$Lang{Reason_no_ping} = "no ping";
+$Lang{Reason_backup_canceled_by_user} = "backup canceled by user";
$Lang{Reason_restore_canceled_by_user} = "restore canceled by user";
+$Lang{Reason_archive_canceled_by_user} = "archive canceled by user";
# ---------
# Email messages