1#!/usr/bin/perl
2
3#my %lang;
4#use strict;
5
6# --------------------------------
7
8$Lang{Start_Archive} = "Start Archive";
9$Lang{Stop_Dequeue_Archive} = "Stop/Dequeue Archive";
10$Lang{Start_Full_Backup} = "Start Full Backup";
11$Lang{Start_Incr_Backup} = "Start Incr Backup";
12$Lang{Stop_Dequeue_Backup} = "Stop/Dequeue Backup";
13$Lang{Restore} = "Restore";
14
15$Lang{Type_full} = "full";
16$Lang{Type_incr} = "incremental";
17
18# -----
19
20$Lang{Only_privileged_users_can_view_admin_options} = "Only privileged users can view admin options.";
21$Lang{H_Admin_Options} = "BackupPC Server: Admin Options";
22$Lang{Admin_Options} = "Admin Options";
23$Lang{Admin_Options_Page} = <<EOF;
24\${h1(qq{$Lang{Admin_Options}})}
25<br>
26\${h2("Server Control")}
27<form name="ReloadForm" action="\$MyURL" method="get">
28<input type="hidden" name="action" value="">
29<table class="tableStnd">
30  <tr><td>Reload the server configuration:<td><input type="button" value="Reload"
31     onClick="document.ReloadForm.action.value='Reload';
32              document.ReloadForm.submit();">
33</table>
34</form>
35<!--
36\${h2("Server Configuration")}
37<ul>
38  <li><i>Other options can go here... e.g.,</i>
39  <li>Edit server configuration
40</ul>
41-->
42EOF
43
44$Lang{Unable_to_connect_to_BackupPC_server} = "Unable to connect to BackupPC server";
45$Lang{Unable_to_connect_to_BackupPC_server_error_message} = <<EOF;
46This CGI script (\$MyURL) is unable to connect to the BackupPC
47server on \$Conf{ServerHost} port \$Conf{ServerPort}.<br>
48The error was: \$err.<br>
49Perhaps the BackupPC server is not running or there is a configuration error.
50Please report this to your Sys Admin.
51EOF
52
53$Lang{Admin_Start_Server} = <<EOF;
54\${h1(qq{$Lang{Unable_to_connect_to_BackupPC_server}})}
55<form action="\$MyURL" method="get">
56The BackupPC server at <tt>\$Conf{ServerHost}</tt> port <tt>\$Conf{ServerPort}</tt>
57is not currently running (maybe you just stopped it, or haven't yet started it).<br>
58Do you want to start it?
59<input type="hidden" name="action" value="startServer">
60<input type="submit" value="Start Server" name="ignore">
61</form>
62EOF
63
64# -----
65
66$Lang{H_BackupPC_Server_Status} = "BackupPC Server Status";
67
68$Lang{BackupPC_Server_Status_General_Info}= <<EOF;
69\${h2(\"General Server Information\")}
70
71<ul>
72<li> The servers PID is \$Info{pid},  on host \$Conf{ServerHost},
73     version \$Info{Version}, started at \$serverStartTime.
74<li> This status was generated at \$now.
75<li> The configuration was last loaded at \$configLoadTime.
76<li> PCs will be next queued at \$nextWakeupTime.
77<li> Other info:
78    <ul>
79        <li>\$numBgQueue pending backup requests from last scheduled wakeup,
80        <li>\$numUserQueue pending user backup requests,
81        <li>\$numCmdQueue pending command requests,
82        \$poolInfo
83        <li>Pool file system was recently at \$Info{DUlastValue}%
84            (\$DUlastTime), today\'s max is \$Info{DUDailyMax}% (\$DUmaxTime)
85            and yesterday\'s max was \$Info{DUDailyMaxPrev}%.
86    </ul>
87</ul>
88EOF
89
90$Lang{BackupPC_Server_Status} = <<EOF;
91\${h1(qq{$Lang{H_BackupPC_Server_Status}})}
92
93<p>
94\$generalInfo
95
96\${h2("Currently Running Jobs")}
97<p>
98<table class="tableStnd" border cellspacing="1" cellpadding="3">
99<tr class="tableheader"><td> Host </td>
100    <td> Type </td>
101    <td> User </td>
102    <td> Start Time </td>
103    <td> Command </td>
104    <td align="center"> PID </td>
105    <td align="center"> Xfer PID </td>
106    </tr>
107\$jobStr
108</table>
109<p>
110
111\${h2("Failures that need attention")}
112<p>
113<table class="tableStnd" border cellspacing="1" cellpadding="3">
114<tr class="tableheader"><td align="center"> Host </td>
115    <td align="center"> Type </td>
116    <td align="center"> User </td>
117    <td align="center"> Last Try </td>
118    <td align="center"> Details </td>
119    <td align="center"> Error Time </td>
120    <td> Last error (other than no ping) </td></tr>
121\$statusStr
122</table>
123EOF
124
125# --------------------------------
126$Lang{BackupPC__Server_Summary} = "BackupPC: Host Summary";
127$Lang{BackupPC__Archive} = "BackupPC: Archive";
128$Lang{BackupPC_Summary} = <<EOF;
129
130\${h1(qq{$Lang{BackupPC__Server_Summary}})}
131<p>
132<ul>
133<li>This status was generated at \$now.
134<li>Pool file system was recently at \$Info{DUlastValue}%
135    (\$DUlastTime), today\'s max is \$Info{DUDailyMax}% (\$DUmaxTime)
136        and yesterday\'s max was \$Info{DUDailyMaxPrev}%.
137</ul>
138</p>
139
140\${h2("Hosts with good Backups")}
141<p>
142There are \$hostCntGood hosts that have been backed up, for a total of:
143<ul>
144<li> \$fullTot full backups of total size \${fullSizeTot}GB
145     (prior to pooling and compression),
146<li> \$incrTot incr backups of total size \${incrSizeTot}GB
147     (prior to pooling and compression).
148</ul>
149</p>
150<table class="sortable" id="host_summary_backups" border cellpadding="3" cellspacing="1">
151<tr class="tableheader"><td> Host </td>
152    <td align="center"> User </td>
153    <td align="center"> #Full </td>
154    <td align="center"> Full Age (days) </td>
155    <td align="center"> Full Size (GB) </td>
156    <td align="center"> Speed (MB/s) </td>
157    <td align="center"> #Incr </td>
158    <td align="center"> Incr Age (days) </td>
159    <td align="center"> Last Backup (days) </td>
160    <td align="center"> State </td>
161    <td align="center"> #Xfer errs </td>
162    <td align="center"> Last attempt </td></tr>
163\$strGood
164</table>
165<br><br>
166\${h2("Hosts with no Backups")}
167<p>
168There are \$hostCntNone hosts with no backups.
169<p>
170<table class="sortable" id="host_summary_nobackups" border cellpadding="3" cellspacing="1">
171<tr class="tableheader"><td> Host </td>
172    <td align="center"> User </td>
173    <td align="center"> #Full </td>
174    <td align="center"> Full Age (days) </td>
175    <td align="center"> Full Size (GB) </td>
176    <td align="center"> Speed (MB/s) </td>
177    <td align="center"> #Incr </td>
178    <td align="center"> Incr Age/days </td>
179    <td align="center"> Last Backup (days) </td>
180    <td align="center"> State </td>
181    <td align="center"> #Xfer errs </td>
182    <td align="center"> Last attempt </td></tr>
183\$strNone
184</table>
185EOF
186
187$Lang{BackupPC_Archive} = <<EOF;
188\${h1(qq{$Lang{BackupPC__Archive}})}
189<script language="javascript" type="text/javascript">
190<!--
191
192    function checkAll(location)
193    {
194      for (var i=0;i<document.form1.elements.length;i++)
195      {
196        var e = document.form1.elements[i];
197        if ((e.checked || !e.checked) && e.name != \'all\') {
198            if (eval("document.form1."+location+".checked")) {
199                e.checked = true;
200            } else {
201                e.checked = false;
202            }
203        }
204      }
205    }
206
207    function toggleThis(checkbox)
208    {
209       var cb = eval("document.form1."+checkbox);
210       cb.checked = !cb.checked;
211    }
212
213//-->
214</script>
215
216There are \$hostCntGood hosts that have been backed up for a total size of \${fullSizeTot}GB
217<p>
218<form name="form1" method="post" action="\$MyURL">
219<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
220<input type="hidden" name="type" value="1">
221<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
222<input type="hidden" name="action" value="Archive">
223<table class="tableStnd" border cellpadding="3" cellspacing="1">
224<tr class="tableheader"><td align=center> Host</td>
225    <td align="center"> User </td>
226    <td align="center"> Backup Size </td>
227\$strGood
228\$checkAllHosts
229</table>
230</form>
231<p>
232
233EOF
234
235$Lang{BackupPC_Archive2} = <<EOF;
236\${h1(qq{$Lang{BackupPC__Archive}})}
237About to archive the following hosts
238<ul>
239\$HostListStr
240</ul>
241<form action="\$MyURL" method="post">
242\$hiddenStr
243<input type="hidden" name="action" value="Archive">
244<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
245<input type="hidden" name="type" value="2">
246<input type="hidden" value="0" name="archive_type">
247<table class="tableStnd" border cellspacing="1" cellpadding="3">
248\$paramStr
249<tr>
250    <td colspan=2><input type="submit" value="Start the Archive" name="ignore"></td>
251</tr>
252</form>
253</table>
254EOF
255
256$Lang{BackupPC_Archive2_location} = <<EOF;
257<tr>
258    <td>Archive Location/Device</td>
259    <td><input type="text" value="\$ArchiveDest" name="archive_device"></td>
260</tr>
261EOF
262
263$Lang{BackupPC_Archive2_compression} = <<EOF;
264<tr>
265    <td>Compression</td>
266    <td>
267    <input type="radio" value="0" name="compression" \$ArchiveCompNone>None<br>
268    <input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br>
269    <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2
270    </td>
271</tr>
272EOF
273
274$Lang{BackupPC_Archive2_parity} = <<EOF;
275<tr>
276    <td>Percentage of Parity Data (0 = disable, 5 = typical)</td>
277    <td><input type="numeric" value="\$ArchivePar" name="par"></td>
278</tr>
279EOF
280
281$Lang{BackupPC_Archive2_split} = <<EOF;
282<tr>
283    <td>Split output into</td>
284    <td><input type="numeric" value="\$ArchiveSplit" name="splitsize">Megabytes</td>
285</tr>
286EOF
287
288# -----------------------------------
289$Lang{Pool_Stat} = <<EOF;
290        <li>Pool is \${poolSize}GB comprising \$info->{"\${name}FileCnt"} files
291            and \$info->{"\${name}DirCnt"} directories (as of \$poolTime),
292        <li>Pool hashing gives \$info->{"\${name}FileCntRep"} repeated
293            files with longest chain \$info->{"\${name}FileRepMax"},
294        <li>Nightly cleanup removed \$info->{"\${name}FileCntRm"} files of
295            size \${poolRmSize}GB (around \$poolTime),
296EOF
297
298# --------------------------------
299$Lang{BackupPC__Backup_Requested_on__host} = "BackupPC: Backup Requested on \$host";
300# --------------------------------
301$Lang{REPLY_FROM_SERVER} = <<EOF;
302\${h1(\$str)}
303<p>
304Reply from server was: \$reply
305<p>
306Go back to <a href="\$MyURL?host=\$host">\$host home page</a>.
307EOF
308# --------------------------------
309$Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: Start Backup Confirm on \$host";
310# --------------------------------
311$Lang{Are_you_sure_start} = <<EOF;
312\${h1("Are you sure?")}
313<p>
314You are about to start a \$type backup on \$host.
315
316<form name="Confirm" action="\$MyURL" method="get">
317<input type="hidden" name="host" value="\$host">
318<input type="hidden" name="hostIP" value="\$ipAddr">
319<input type="hidden" name="doit" value="1">
320<input type="hidden" name="action" value="">
321Do you really want to do this?
322<input type="button" value="\$buttonText"
323  onClick="document.Confirm.action.value='\$In{action}';
324           document.Confirm.submit();">
325<input type="submit" value="No" name="ignore">
326</form>
327EOF
328# --------------------------------
329$Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: Stop Backup Confirm on \$host";
330# --------------------------------
331$Lang{Are_you_sure_stop} = <<EOF;
332
333\${h1("Are you sure?")}
334
335<p>
336You are about to stop/dequeue backups on \$host;
337
338<form name="Confirm" action="\$MyURL" method="get">
339<input type="hidden" name="host"   value="\$host">
340<input type="hidden" name="doit"   value="1">
341<input type="hidden" name="action" value="">
342Also, please don\'t start another backup for
343<input type="text" name="backoff" size="10" value="\$backoff"> hours.
344<p>
345Do you really want to do this?
346<input type="button" value="\$buttonText"
347  onClick="document.Confirm.action.value='\$In{action}';
348           document.Confirm.submit();">
349<input type="submit" value="No" name="ignore">
350</form>
351
352EOF
353# --------------------------------
354$Lang{Only_privileged_users_can_view_queues_} = "Only privileged users can view queues.";
355# --------------------------------
356$Lang{Only_privileged_users_can_archive} = "Only privileged users can Archive.";
357# --------------------------------
358$Lang{BackupPC__Queue_Summary} = "BackupPC: Queue Summary";
359# --------------------------------
360$Lang{Backup_Queue_Summary} = <<EOF;
361\${h1("Backup Queue Summary")}
362<br><br>
363\${h2("User Queue Summary")}
364<p>
365The following user requests are currently queued:
366</p>
367<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
368<tr class="tableheader"><td> Host </td>
369    <td> Req Time </td>
370    <td> User </td></tr>
371\$strUser
372</table>
373<br><br>
374
375\${h2("Background Queue Summary")}
376<p>
377The following background requests are currently queued:
378</p>
379<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
380<tr class="tableheader"><td> Host </td>
381    <td> Req Time </td>
382    <td> User </td></tr>
383\$strBg
384</table>
385<br><br>
386\${h2("Command Queue Summary")}
387<p>
388The following command requests are currently queued:
389</p>
390<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
391<tr class="tableheader"><td> Host </td>
392    <td> Req Time </td>
393    <td> User </td>
394    <td> Command </td></tr>
395\$strCmd
396</table>
397EOF
398
399# --------------------------------
400$Lang{Backup_PC__Log_File__file} = "BackupPC: File \$file";
401$Lang{Log_File__file__comment} = <<EOF;
402\${h1("File \$file \$comment")}
403<p>
404EOF
405# --------------------------------
406$Lang{Contents_of_log_file} = <<EOF;
407Contents of file <tt>\$file</tt>, modified \$mtimeStr \$comment
408EOF
409
410# --------------------------------
411$Lang{skipped__skipped_lines} = "[ skipped \$skipped lines ]\n";
412# --------------------------------
413$Lang{_pre___Can_t_open_log_file__file} = "<pre>\nCan\'t open log file \$file\n";
414
415# --------------------------------
416$Lang{BackupPC__Log_File_History} = "BackupPC: Log File History";
417$Lang{Log_File_History__hdr} = <<EOF;
418\${h1("Log File History \$hdr")}
419<p>
420<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
421<tr class="tableheader"><td align="center"> File </td>
422    <td align="center"> Size </td>
423    <td align="center"> Modification time </td></tr>
424\$str
425</table>
426EOF
427
428# -------------------------------
429$Lang{Recent_Email_Summary} = <<EOF;
430\${h1("Recent Email Summary (Reverse time order)")}
431<p>
432<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
433<tr class="tableheader"><td align="center"> Recipient </td>
434    <td align="center"> Host </td>
435    <td align="center"> Time </td>
436    <td align="center"> Subject </td></tr>
437\$str
438</table>
439EOF
440
441
442# ------------------------------
443$Lang{Browse_backup__num_for__host} = "BackupPC: Browse backup \$num for \$host";
444
445# ------------------------------
446$Lang{Restore_Options_for__host} = "BackupPC: Restore Options for \$host";
447$Lang{Restore_Options_for__host2} = <<EOF;
448\${h1("Restore Options for \$host")}
449<p>
450You have selected the following files/directories from
451share \$share, backup number #\$num:
452<ul>
453\$fileListStr
454</ul>
455</p><p>
456You have three choices for restoring these files/directories.
457Please select one of the following options.
458</p>
459\${h2("Option 1: Direct Restore")}
460<p>
461EOF
462
463$Lang{Restore_Options_for__host_Option1} = <<EOF;
464You can start a restore that will restore these files directly onto
465<b>\$directHost</b>.
466</p><p>
467<b>Warning:</b> any existing files that match the ones you have
468selected will be overwritten!
469</p>
470<form action="\$MyURL" method="post" name="direct">
471<input type="hidden" name="host" value="\${EscHTML(\$host)}">
472<input type="hidden" name="num" value="\$num">
473<input type="hidden" name="type" value="3">
474\$hiddenStr
475<input type="hidden" value="\$In{action}" name="action">
476<table class="tableStnd" border="0">
477<tr>
478    <td>Restore the files to host</td>
479    <td><!--<input type="text" size="40" value="\${EscHTML(\$host)}"
480	 name="hostDest">-->
481	 <select name="hostDest" onChange="document.direct.shareDest.value=''">
482	 \$hostDestSel
483	 </select>
484	 <script language="Javascript">
485	 function myOpen(URL) {
486		window.open(URL,'','width=500,height=400');
487	 }
488	 </script>
489	 <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a>--></td>
490</tr><tr>
491    <td>Restore the files to share</td>
492    <td><input type="text" size="40" value="\${EscHTML(\$share)}"
493	 name="shareDest"></td>
494</tr><tr>
495    <td>Restore the files below dir<br>(relative to share)</td>
496    <td valign="top"><input type="text" size="40" maxlength="256"
497	value="\${EscHTML(\$pathHdr)}" name="pathHdr"></td>
498</tr><tr>
499    <td><input type="submit" value="Start Restore" name="ignore"></td>
500</table>
501</form>
502EOF
503
504$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF;
505Direct restore has been disabled for host \${EscHTML(\$hostDest)}.
506Please select one of the other restore options.
507EOF
508
509# ------------------------------
510$Lang{Option_2__Download_Zip_archive} = <<EOF;
511<p>
512\${h2("Option 2: Download Zip archive")}
513<p>
514You can download a Zip archive containing all the files/directories you have
515selected.  You can then use a local application, such as WinZip,
516to view or extract any of the files.
517</p><p>
518<b>Warning:</b> depending upon which files/directories you have selected,
519this archive might be very very large.  It might take many minutes to
520create and transfer the archive, and you will need enough local disk
521space to store it.
522</p>
523<form action="\$MyURL" method="post">
524<input type="hidden" name="host" value="\${EscHTML(\$host)}">
525<input type="hidden" name="num" value="\$num">
526<input type="hidden" name="type" value="2">
527\$hiddenStr
528<input type="hidden" value="\$In{action}" name="action">
529<input type="checkbox" value="1" name="relative" checked> Make archive relative
530to \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
531(otherwise archive will contain full paths).
532<br>
533<table class="tableStnd" border="0">
534<tr>
535    <td>Compression (0=off, 1=fast,...,9=best)</td>
536    <td><input type="text" size="6" value="5" name="compressLevel"></td>
537</tr><tr>
538    <td>Code page (e.g. cp866)</td>
539    <td><input type="text" size="6" value="utf8" name="codePage"></td>
540</tr>
541</table>
542<br>
543<input type="submit" value="Download Zip File" name="ignore">
544</form>
545EOF
546
547# ------------------------------
548
549$Lang{Option_2__Download_Zip_archive2} = <<EOF;
550<p>
551\${h2("Option 2: Download Zip archive")}
552<p>
553Archive::Zip is not installed so you will not be able to download a
554zip archive.
555Please ask your system adminstrator to install Archive::Zip from
556<a href="http://www.cpan.org">www.cpan.org</a>.
557</p>
558EOF
559
560
561# ------------------------------
562$Lang{Option_3__Download_Zip_archive} = <<EOF;
563\${h2("Option 3: Download Tar archive")}
564<p>
565You can download a Tar archive containing all the files/directories you
566have selected.  You can then use a local application, such as tar or
567WinZip to view or extract any of the files.
568</p><p>
569<b>Warning:</b> depending upon which files/directories you have selected,
570this archive might be very very large.  It might take many minutes to
571create and transfer the archive, and you will need enough local disk
572space to store it.
573</p>
574<form action="\$MyURL" method="post">
575<input type="hidden" name="host" value="\${EscHTML(\$host)}">
576<input type="hidden" name="num" value="\$num">
577<input type="hidden" name="type" value="1">
578\$hiddenStr
579<input type="hidden" value="\$In{action}" name="action">
580<input type="checkbox" value="1" name="relative" checked> Make archive relative
581to \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
582(otherwise archive will contain full paths).
583<br>
584<input type="submit" value="Download Tar File" name="ignore">
585</form>
586EOF
587
588
589# ------------------------------
590$Lang{Restore_Confirm_on__host} = "BackupPC: Restore Confirm on \$host";
591
592$Lang{Are_you_sure} = <<EOF;
593\${h1("Are you sure?")}
594<p>
595You are about to start a restore directly to the machine \$In{hostDest}.
596The following files will be restored to share \$In{shareDest}, from
597backup number \$num:
598<p>
599<table class="tableStnd" border>
600<tr class="tableheader"><td>Original file/dir</td><td>Will be restored to</td></tr>
601\$fileListStr
602</table>
603
604<form name="RestoreForm" action="\$MyURL" method="post">
605<input type="hidden" name="host" value="\${EscHTML(\$host)}">
606<input type="hidden" name="hostDest" value="\${EscHTML(\$In{hostDest})}">
607<input type="hidden" name="shareDest" value="\${EscHTML(\$In{shareDest})}">
608<input type="hidden" name="pathHdr" value="\${EscHTML(\$In{pathHdr})}">
609<input type="hidden" name="num" value="\$num">
610<input type="hidden" name="type" value="4">
611<input type="hidden" name="action" value="">
612\$hiddenStr
613Do you really want to do this?
614<input type="button" value="\$Lang->{Restore}"
615 onClick="document.RestoreForm.action.value='Restore';
616          document.RestoreForm.submit();">
617<input type="submit" value="No" name="ignore">
618</form>
619EOF
620
621
622# --------------------------
623$Lang{Restore_Requested_on__hostDest} = "BackupPC: Restore Requested on \$hostDest";
624$Lang{Reply_from_server_was___reply} = <<EOF;
625\${h1(\$str)}
626<p>
627Reply from server was: \$reply
628<p>
629Go back to <a href="\$MyURL?host=\$hostDest">\$hostDest home page</a>.
630EOF
631
632$Lang{BackupPC_Archive_Reply_from_server} = <<EOF;
633\${h1(\$str)}
634<p>
635Reply from server was: \$reply
636EOF
637
638
639# -------------------------
640$Lang{Host__host_Backup_Summary} = "BackupPC: Host \$host Backup Summary";
641
642$Lang{Host__host_Backup_Summary2} = <<EOF;
643\${h1("Host \$host Backup Summary")}
644<p>
645\$warnStr
646<ul>
647\$statusStr
648</ul>
649</p>
650\${h2("User Actions")}
651<p>
652<form name="StartStopForm" action="\$MyURL" method="get">
653<input type="hidden" name="host"   value="\$host">
654<input type="hidden" name="action" value="">
655\$startIncrStr
656<input type="button" value="\$Lang->{Start_Full_Backup}"
657 onClick="document.StartStopForm.action.value='Start_Full_Backup';
658          document.StartStopForm.submit();">
659<input type="button" value="\$Lang->{Stop_Dequeue_Backup}"
660 onClick="document.StartStopForm.action.value='Stop_Dequeue_Backup';
661          document.StartStopForm.submit();">
662</form>
663</p>
664\${h2("Backup Summary")}
665<p>
666Click on the backup number to browse and restore backup files.
667</p>
668<table class="tableStnd" border cellspacing="1" cellpadding="3">
669<tr class="tableheader"><td align="center"> Backup# </td>
670    <td align="center"> Type </td>
671    <td align="center"> Filled </td>
672    <td align="center"> Level </td>
673    <td align="center"> Start Date </td>
674    <td align="center"> Duration/mins </td>
675    <td align="center"> Age/days </td>
676    <td align="center"> Server Backup Path </td>
677</tr>
678\$str
679</table>
680<p>
681
682\$restoreStr
683</p>
684<br><br>
685\${h2("Xfer Error Summary")}
686<br><br>
687<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
688<tr class="tableheader"><td align="center"> Backup# </td>
689    <td align="center"> Type </td>
690    <td align="center"> View </td>
691    <td align="center"> #Xfer errs </td>
692    <td align="center"> #bad files </td>
693    <td align="center"> #bad share </td>
694    <td align="center"> #tar errs </td>
695</tr>
696\$errStr
697</table>
698<br><br>
699
700\${h2("File Size/Count Reuse Summary")}
701<p>
702Existing files are those already in the pool; new files are those added
703to the pool.
704Empty files and SMB errors aren\'t counted in the reuse and new counts.
705</p>
706<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
707<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td>
708    <td align="center" colspan="3"> Totals </td>
709    <td align="center" colspan="2"> Existing Files </td>
710    <td align="center" colspan="2"> New Files </td>
711</tr>
712<tr class="tableheader">
713    <td align="center"> Backup# </td>
714    <td align="center"> Type </td>
715    <td align="center"> #Files </td>
716    <td align="center"> Size/MB </td>
717    <td align="center"> MB/sec </td>
718    <td align="center"> #Files </td>
719    <td align="center"> Size/MB </td>
720    <td align="center"> #Files </td>
721    <td align="center"> Size/MB </td>
722</tr>
723\$sizeStr
724</table>
725<br><br>
726
727\${h2("Compression Summary")}
728<p>
729Compression performance for files already in the pool and newly
730compressed files.
731</p>
732<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
733<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td>
734    <td align="center" colspan="3"> Existing Files </td>
735    <td align="center" colspan="3"> New Files </td>
736</tr>
737<tr class="tableheader"><td align="center"> Backup# </td>
738    <td align="center"> Type </td>
739    <td align="center"> Comp Level </td>
740    <td align="center"> Size/MB </td>
741    <td align="center"> Comp/MB </td>
742    <td align="center"> Comp </td>
743    <td align="center"> Size/MB </td>
744    <td align="center"> Comp/MB </td>
745    <td align="center"> Comp </td>
746</tr>
747\$compStr
748</table>
749<br><br>
750EOF
751
752$Lang{Host__host_Archive_Summary} = "BackupPC: Host \$host Archive Summary";
753$Lang{Host__host_Archive_Summary2} = <<EOF;
754\${h1("Host \$host Archive Summary")}
755<p>
756\$warnStr
757<ul>
758\$statusStr
759</ul>
760
761\${h2("User Actions")}
762<p>
763<form name="StartStopForm" action="\$MyURL" method="get">
764<input type="hidden" name="archivehost" value="\$host">
765<input type="hidden" name="host" value="\$host">
766<input type="hidden" name="action" value="">
767<input type="button" value="\$Lang->{Start_Archive}"
768 onClick="document.StartStopForm.action.value='Start_Archive';
769          document.StartStopForm.submit();">
770<input type="button" value="\$Lang->{Stop_Dequeue_Archive}"
771 onClick="document.StartStopForm.action.value='Stop_Dequeue_Archive';
772          document.StartStopForm.submit();">
773</form>
774
775\$ArchiveStr
776
777EOF
778
779# -------------------------
780$Lang{Error} = "BackupPC: Error";
781$Lang{Error____head} = <<EOF;
782\${h1("Error: \$head")}
783<p>\$mesg</p>
784EOF
785
786# -------------------------
787$Lang{NavSectionTitle_} = "Server";
788
789# -------------------------
790$Lang{Backup_browse_for__host} = <<EOF;
791\${h1("Backup browse for \$host")}
792
793<script language="javascript" type="text/javascript">
794<!--
795
796    function checkAll(location)
797    {
798      for (var i=0;i<document.form1.elements.length;i++)
799      {
800        var e = document.form1.elements[i];
801        if ((e.checked || !e.checked) && e.name != \'all\') {
802            if (eval("document.form1."+location+".checked")) {
803            	e.checked = true;
804            } else {
805            	e.checked = false;
806            }
807        }
808      }
809    }
810
811    function toggleThis(checkbox)
812    {
813       var cb = eval("document.form1."+checkbox);
814       cb.checked = !cb.checked;
815    }
816
817//-->
818</script>
819
820<form name="form0" method="post" action="\$MyURL">
821<input type="hidden" name="num" value="\$num">
822<input type="hidden" name="host" value="\$host">
823<input type="hidden" name="share" value="\${EscHTML(\$share)}">
824<input type="hidden" name="action" value="browse">
825<ul>
826<li> You are browsing backup #\$num, which started around \$backupTime
827        (\$backupAge days ago),
828\$filledBackup
829<li> Enter directory: <input type="text" name="dir" size="50" maxlength="4096" value="\${EscHTML(\$dir)}"> <input type="submit" value="\$Lang->{Go}" name="Submit">
830<li> Click on a directory below to navigate into that directory,
831<li> Click on a file below to restore that file,
832<li> You can view the backup <a href="\$MyURL?action=dirHistory&host=\${EscURI(\$host)}&share=\$shareURI&dir=\$pathURI">history</a> of the current directory.
833</ul>
834</form>
835
836\${h2("Contents of \$dirDisplay")}
837<form name="form1" method="post" action="\$MyURL">
838<input type="hidden" name="num" value="\$num">
839<input type="hidden" name="host" value="\$host">
840<input type="hidden" name="share" value="\${EscHTML(\$share)}">
841<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
842<input type="hidden" name="action" value="Restore">
843<br>
844<table width="100%">
845<tr><td valign="top" width="30%">
846    <table align="left" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
847    \$dirStr
848    </table>
849</td><td width="3%">
850</td><td valign="top">
851    <br>
852        <table border width="100%" align="left" cellpadding="3" cellspacing="1">
853        \$fileHeader
854        \$topCheckAll
855        \$fileStr
856        \$checkAll
857        </table>
858    </td></tr></table>
859<br>
860<!--
861This is now in the checkAll row
862<input type="submit" name="Submit" value="Restore selected files">
863-->
864</form>
865EOF
866
867# ------------------------------
868$Lang{DirHistory_backup_for__host} = "BackupPC: Directory backup history for \$host";
869
870#
871# These two strings are used to build the links for directories and
872# file versions.  Files are appended with a version number.
873#
874$Lang{DirHistory_dirLink}  = "dir";
875$Lang{DirHistory_fileLink} = "v";
876
877$Lang{DirHistory_for__host} = <<EOF;
878\${h1("Directory backup history for \$host")}
879<p>
880This display shows each unique version of files across all
881the backups:
882<ul>
883<li> Click on a backup number to return to the backup browser,
884<li> Click on a directory link (\$Lang->{DirHistory_dirLink}) to navigate
885     into that directory,
886<li> Click on a file version link (\$Lang->{DirHistory_fileLink}0,
887     \$Lang->{DirHistory_fileLink}1, ...) to download that file,
888<li> Files with the same contents between different backups have the same
889     version number,
890<li> Files or directories not present in a particular backup have an
891     empty box.
892<li> Files shown with the same version might have different attributes.
893     Select the backup number to see the file attributes.
894</ul>
895
896\${h2("History of \$dirDisplay")}
897
898<br>
899<table border cellspacing="2" cellpadding="3">
900<tr class="fviewheader"><td>Backup number</td>\$backupNumStr</tr>
901<tr class="fviewheader"><td>Backup time</td>\$backupTimeStr</tr>
902\$fileStr
903</table>
904EOF
905
906# ------------------------------
907$Lang{Restore___num_details_for__host} = "BackupPC: Restore #\$num details for \$host";
908
909$Lang{Restore___num_details_for__host2} = <<EOF;
910\${h1("Restore #\$num Details for \$host")}
911<p>
912<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%">
913<tr><td class="tableheader"> Number </td><td class="border"> \$Restores[\$i]{num} </td></tr>
914<tr><td class="tableheader"> Requested by </td><td class="border"> \$RestoreReq{user} </td></tr>
915<tr><td class="tableheader"> Request time </td><td class="border"> \$reqTime </td></tr>
916<tr><td class="tableheader"> Result </td><td class="border"> \$Restores[\$i]{result} </td></tr>
917<tr><td class="tableheader"> Error Message </td><td class="border"> \$Restores[\$i]{errorMsg} </td></tr>
918<tr><td class="tableheader"> Source host </td><td class="border"> \$RestoreReq{hostSrc} </td></tr>
919<tr><td class="tableheader"> Source backup num </td><td class="border"> \$RestoreReq{num} </td></tr>
920<tr><td class="tableheader"> Source share </td><td class="border"> \$RestoreReq{shareSrc} </td></tr>
921<tr><td class="tableheader"> Destination host </td><td class="border"> \$RestoreReq{hostDest} </td></tr>
922<tr><td class="tableheader"> Destination share </td><td class="border"> \$RestoreReq{shareDest} </td></tr>
923<tr><td class="tableheader"> Start time </td><td class="border"> \$startTime </td></tr>
924<tr><td class="tableheader"> Duration </td><td class="border"> \$duration min </td></tr>
925<tr><td class="tableheader"> Number of files </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr>
926<tr><td class="tableheader"> Total size </td><td class="border"> \${MB} MB </td></tr>
927<tr><td class="tableheader"> Transfer rate </td><td class="border"> \$MBperSec MB/sec </td></tr>
928<tr><td class="tableheader"> TarCreate errors </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr>
929<tr><td class="tableheader"> Xfer errors </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr>
930<tr><td class="tableheader"> Xfer log file </td><td class="border">
931<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">View</a>,
932<a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">Errors</a>
933</tr></tr>
934</table>
935</p>
936\${h1("File/Directory list")}
937<p>
938<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%">
939<tr class="tableheader"><td>Original file/dir</td><td>Restored to</td></tr>
940\$fileListStr
941</table>
942EOF
943
944# ------------------------------
945$Lang{Archive___num_details_for__host} = "BackupPC: Archive #\$num details for \$host";
946
947$Lang{Archive___num_details_for__host2 } = <<EOF;
948\${h1("Archive #\$num Details for \$host")}
949<p>
950<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
951<tr><td class="tableheader"> Number </td><td class="border"> \$Archives[\$i]{num} </td></tr>
952<tr><td class="tableheader"> Requested by </td><td class="border"> \$ArchiveReq{user} </td></tr>
953<tr><td class="tableheader"> Request time </td><td class="border"> \$reqTime </td></tr>
954<tr><td class="tableheader"> Result </td><td class="border"> \$Archives[\$i]{result} </td></tr>
955<tr><td class="tableheader"> Error Message </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr>
956<tr><td class="tableheader"> Start time </td><td class="border"> \$startTime </td></tr>
957<tr><td class="tableheader"> Duration </td><td class="border"> \$duration min </td></tr>
958<tr><td class="tableheader"> Xfer log file </td><td class="border">
959<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">View</a>,
960<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">Errors</a>
961</tr></tr>
962</table>
963<p>
964\${h1("Host list")}
965<p>
966<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
967<tr class="tableheader"><td>Host</td><td>Backup Number</td></tr>
968\$HostListStr
969</table>
970EOF
971
972# -----------------------------------
973$Lang{Email_Summary} = "BackupPC: Email Summary";
974
975# -----------------------------------
976#  !! ERROR messages !!
977# -----------------------------------
978$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new failed: check apache error_log\n";
979$Lang{Wrong_user__my_userid_is___} =
980              "Wrong user: my userid is \$>, instead of \$uid"
981            . "(\$Conf{BackupPCUser})\n";
982# $Lang{Only_privileged_users_can_view_PC_summaries} = "Only privileged users can view PC summaries.";
983$Lang{Only_privileged_users_can_stop_or_start_backups} =
984                  "Only privileged users can stop or start backups on"
985		. " \${EscHTML(\$host)}.";
986$Lang{Invalid_number__num} = "Invalid number \${EscHTML(\$In{num})}";
987$Lang{Unable_to_open__file__configuration_problem} = "Unable to open \$file: configuration problem?";
988$Lang{Only_privileged_users_can_view_log_or_config_files} = "Only privileged users can view log or config files.";
989$Lang{Only_privileged_users_can_view_log_files} = "Only privileged users can view log files.";
990$Lang{Only_privileged_users_can_view_email_summaries} = "Only privileged users can view email summaries.";
991$Lang{Only_privileged_users_can_browse_backup_files} = "Only privileged users can browse backup files"
992                . " for host \${EscHTML(\$In{host})}.";
993$Lang{Empty_host_name} = "Empty host name.";
994$Lang{Directory___EscHTML} = "Directory \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}"
995		    . " is empty";
996$Lang{Can_t_browse_bad_directory_name2} = "Can\'t browse bad directory name"
997	            . " \${EscHTML(\$relDir)}";
998$Lang{Only_privileged_users_can_restore_backup_files} = "Only privileged users can restore backup files"
999                . " for host \${EscHTML(\$In{host})}.";
1000$Lang{Bad_host_name} = "Bad host name \${EscHTML(\$host)}";
1001$Lang{You_haven_t_selected_any_files__please_go_Back_to} = "You haven\'t selected any files; please go Back to"
1002                . " select some files.";
1003$Lang{You_haven_t_selected_any_hosts} = "You haven\'t selected any hosts; please go Back to"
1004                . " select some hosts.";
1005$Lang{Nice_try__but_you_can_t_put} = "Nice try, but you can\'t put \'..\' in any of the file names";
1006$Lang{Host__doesn_t_exist} = "Host \${EscHTML(\$In{hostDest})} doesn\'t exist";
1007$Lang{You_don_t_have_permission_to_restore_onto_host} = "You don\'t have permission to restore onto host"
1008		    . " \${EscHTML(\$In{hostDest})}";
1009$Lang{Can_t_open_create__openPath} = "Can\'t open/create "
1010		. "\${EscHTML(\"\$openPath\")}";
1011$Lang{Only_privileged_users_can_restore_backup_files2} = "Only privileged users can restore backup files"
1012                . " for host \${EscHTML(\$host)}.";
1013$Lang{Empty_host_name} = "Empty host name";
1014$Lang{Unknown_host_or_user} = "Unknown host or user \${EscHTML(\$host)}";
1015$Lang{Only_privileged_users_can_view_information_about} = "Only privileged users can view information about"
1016                . " host \${EscHTML(\$host)}." ;
1017$Lang{Only_privileged_users_can_view_archive_information} = "Only privileged users can view archive information.";
1018$Lang{Only_privileged_users_can_view_restore_information} = "Only privileged users can view restore information.";
1019$Lang{Restore_number__num_for_host__does_not_exist} = "Restore number \$num for host \${EscHTML(\$host)} does"
1020	        . " not exist.";
1021$Lang{Archive_number__num_for_host__does_not_exist} = "Archive number \$num for host \${EscHTML(\$host)} does"
1022                . " not exist.";
1023$Lang{Can_t_find_IP_address_for} = "Can\'t find IP address for \${EscHTML(\$host)}";
1024$Lang{host_is_a_DHCP_host} = <<EOF;
1025\$host is a DHCP host, and I don\'t know its IP address.  I checked the
1026netbios name of \$ENV{REMOTE_ADDR}\$tryIP, and found that that machine
1027is not \$host.
1028<p>
1029Until I see \$host at a particular DHCP address, you can only
1030start this request from the client machine itself.
1031EOF
1032
1033# ------------------------------------
1034# !! Server Mesg !!
1035# ------------------------------------
1036
1037$Lang{Backup_requested_on_DHCP__host} = "Backup requested on DHCP \$host (\$In{hostIP}) by"
1038		                      . " \$User from \$ENV{REMOTE_ADDR}";
1039$Lang{Backup_requested_on__host_by__User} = "Backup requested on \$host by \$User";
1040$Lang{Backup_stopped_dequeued_on__host_by__User} = "Backup stopped/dequeued on \$host by \$User";
1041$Lang{Restore_requested_to_host__hostDest__backup___num} = "Restore requested to host \$hostDest, backup #\$num,"
1042	     . " by \$User from \$ENV{REMOTE_ADDR}";
1043$Lang{Archive_requested} = "Archive requested by \$User from \$ENV{REMOTE_ADDR}";
1044
1045# -------------------------------------------------
1046# ------- Stuff that was forgotten ----------------
1047# -------------------------------------------------
1048
1049$Lang{Status} = "Status";
1050$Lang{PC_Summary} = "Host Summary";
1051$Lang{LOG_file} = "LOG file";
1052$Lang{LOG_files} = "LOG files";
1053$Lang{Old_LOGs} = "Old LOGs";
1054$Lang{Email_summary} = "Email summary";
1055$Lang{Config_file} = "Config file";
1056# $Lang{Hosts_file} = "Hosts file";
1057$Lang{Current_queues} = "Current queues";
1058$Lang{Documentation} = "Documentation";
1059
1060#$Lang{Host_or_User_name} = "<small>Host or User name:</small>";
1061$Lang{Go} = "Go";
1062$Lang{Hosts} = "Hosts";
1063$Lang{Select_a_host} = "Select a host...";
1064
1065$Lang{There_have_been_no_archives} = "<h2> There have been no archives </h2>\n";
1066$Lang{This_PC_has_never_been_backed_up} = "<h2> This PC has never been backed up!! </h2>\n";
1067$Lang{This_PC_is_used_by} = "<li>This PC is used by \${UserLink(\$user)}";
1068
1069$Lang{Extracting_only_Errors} = "(Extracting only Errors)";
1070$Lang{XferLOG} = "XferLOG";
1071$Lang{Errors}  = "Errors";
1072
1073# ------------
1074$Lang{Last_email_sent_to__was_at___subject} = <<EOF;
1075<li>Last email sent to \${UserLink(\$user)} was at \$mailTime, subject "\$subj".
1076EOF
1077# ------------
1078$Lang{The_command_cmd_is_currently_running_for_started} = <<EOF;
1079<li>The command \$cmd is currently running for \$host, started \$startTime.
1080EOF
1081
1082# -----------
1083$Lang{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon} = <<EOF;
1084<li>Host \$host is queued on the background queue (will be backed up soon).
1085EOF
1086
1087# ----------
1088$Lang{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon} = <<EOF;
1089<li>Host \$host is queued on the user queue (will be backed up soon).
1090EOF
1091
1092# ---------
1093$Lang{A_command_for_host_is_on_the_command_queue_will_run_soon} = <<EOF;
1094<li>A command for \$host is on the command queue (will run soon).
1095EOF
1096
1097# --------
1098$Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <<EOF;
1099<li>Last status is state \"\$Lang->{\$StatusHost{state}}\"\$reason as of \$startTime.
1100EOF
1101
1102# --------
1103$Lang{Last_error_is____EscHTML_StatusHost_error} = <<EOF;
1104<li>Last error is \"\${EscHTML(\$StatusHost{error})}\".
1105EOF
1106
1107# ------
1108$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <<EOF;
1109<li>Pings to \$host have failed \$StatusHost{deadCnt} consecutive times.
1110EOF
1111
1112# -----
1113$Lang{Prior_to_that__pings} = "Prior to that, pings";
1114
1115# -----
1116$Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <<EOF;
1117<li>\$priorStr to \$host have succeeded \$StatusHost{aliveCnt}
1118        consecutive times.
1119EOF
1120
1121$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF;
1122<li>Because \$host has been on the network at least \$Conf{BlackoutGoodCnt}
1123consecutive times, it will not be backed up from \$blackoutStr.
1124EOF
1125
1126$Lang{__time0_to__time1_on__days} = "\$t0 to \$t1 on \$days";
1127
1128$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF;
1129<li>Backups are deferred for \$hours hours
1130(<a href=\"\$MyURL?action=Stop_Dequeue_Backup&host=\$host\">change this number</a>).
1131EOF
1132
1133$Lang{tryIP} = " and \$StatusHost{dhcpHostIP}";
1134
1135# $Lang{Host_Inhost} = "Host \$In{host}";
1136
1137$Lang{checkAll} = <<EOF;
1138<tr><td class="fviewborder">
1139<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Select all
1140</td><td colspan="5" align="center" class="fviewborder">
1141<input type="submit" name="Submit" value="Restore selected files">
1142</td></tr>
1143EOF
1144
1145$Lang{checkAllHosts} = <<EOF;
1146<tr><td class="fviewborder">
1147<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Select all
1148</td><td colspan="2" align="center" class="fviewborder">
1149<input type="submit" name="Submit" value="Archive selected hosts">
1150</td></tr>
1151EOF
1152
1153$Lang{fileHeader} = <<EOF;
1154    <tr class="fviewheader"><td align=center> Name</td>
1155       <td align="center"> Type</td>
1156       <td align="center"> Mode</td>
1157       <td align="center"> #</td>
1158       <td align="center"> Size</td>
1159       <td align="center"> Date modified</td>
1160    </tr>
1161EOF
1162
1163$Lang{Home} = "Home";
1164$Lang{Browse} = "Browse backups";
1165$Lang{Last_bad_XferLOG} = "Last bad XferLOG";
1166$Lang{Last_bad_XferLOG_errors_only} = "Last bad XferLOG (errors&nbsp;only)";
1167
1168$Lang{This_display_is_merged_with_backup} = <<EOF;
1169<li> This display is merged with backup #\$numF.
1170EOF
1171
1172$Lang{Visit_this_directory_in_backup} = <<EOF;
1173<li> Select the backup you wish to view: <select onChange="window.location=this.value">\$otherDirs </select>
1174EOF
1175
1176$Lang{Restore_Summary} = <<EOF;
1177\${h2("Restore Summary")}
1178<p>
1179Click on the restore number for more details.
1180<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
1181<tr class="tableheader"><td align="center"> Restore# </td>
1182    <td align="center"> Result </td>
1183    <td align="right"> Start Date</td>
1184    <td align="right"> Dur/mins</td>
1185    <td align="right"> #files </td>
1186    <td align="right"> MB </td>
1187    <td align="right"> #tar errs </td>
1188    <td align="right"> #xferErrs </td>
1189</tr>
1190\$restoreStr
1191</table>
1192<p>
1193EOF
1194
1195$Lang{Archive_Summary} = <<EOF;
1196\${h2("Archive Summary")}
1197<p>
1198Click on the archive number for more details.
1199<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
1200<tr class="tableheader"><td align="center"> Archive# </td>
1201    <td align="center"> Result </td>
1202    <td align="right"> Start Date</td>
1203    <td align="right"> Dur/mins</td>
1204</tr>
1205\$ArchiveStr
1206</table>
1207<p>
1208EOF
1209
1210$Lang{BackupPC__Documentation} = "BackupPC: Documentation";
1211
1212$Lang{No} = "no";
1213$Lang{Yes} = "yes";
1214
1215$Lang{The_directory_is_empty} = <<EOF;
1216<tr><td bgcolor="#ffffff">The directory \$dirDisplay is empty
1217</td></tr>
1218EOF
1219
1220#$Lang{on} = "on";
1221$Lang{off} = "off";
1222
1223$Lang{backupType_full}    = "full";
1224$Lang{backupType_incr}    = "incr";
1225$Lang{backupType_partial} = "partial";
1226
1227$Lang{failed} = "failed";
1228$Lang{success} = "success";
1229$Lang{and} = "and";
1230
1231# ------
1232# Hosts states and reasons
1233$Lang{Status_idle} = "idle";
1234$Lang{Status_backup_starting} = "backup starting";
1235$Lang{Status_backup_in_progress} = "backup in progress";
1236$Lang{Status_restore_starting} = "restore starting";
1237$Lang{Status_restore_in_progress} = "restore in progress";
1238$Lang{Status_link_pending} = "link pending";
1239$Lang{Status_link_running} = "link running";
1240
1241$Lang{Reason_backup_done}    = "done";
1242$Lang{Reason_restore_done}   = "restore done";
1243$Lang{Reason_archive_done}   = "archive done";
1244$Lang{Reason_nothing_to_do}  = "idle";
1245$Lang{Reason_backup_failed}  = "backup failed";
1246$Lang{Reason_restore_failed} = "restore failed";
1247$Lang{Reason_archive_failed} = "archive failed";
1248$Lang{Reason_no_ping}        = "no ping";
1249$Lang{Reason_backup_canceled_by_user}  = "backup canceled by user";
1250$Lang{Reason_restore_canceled_by_user} = "restore canceled by user";
1251$Lang{Reason_archive_canceled_by_user} = "archive canceled by user";
1252$Lang{Disabled_OnlyManualBackups}  = "auto disabled";
1253$Lang{Disabled_AllBackupsDisabled} = "disabled";
1254
1255
1256# ---------
1257# Email messages
1258
1259# No backup ever
1260$Lang{EMailNoBackupEverSubj} = "BackupPC: no backups of \$host have succeeded";
1261$Lang{EMailNoBackupEverMesg} = <<'EOF';
1262To: $user$domain
1263cc:
1264Subject: $subj
1265$headers
1266Dear $userName,
1267
1268Your PC ($host) has never been successfully backed up by our
1269PC backup software.  PC backups should occur automatically
1270when your PC is connected to the network.  You should contact
1271computer support if:
1272
1273  - Your PC has been regularly connected to the network, meaning
1274    there is some configuration or setup problem preventing
1275    backups from occurring.
1276
1277  - You don't want your PC backed up and you want these email
1278    messages to stop.
1279
1280Otherwise, please make sure your PC is connected to the network
1281next time you are in the office.
1282
1283Regards,
1284BackupPC Genie
1285http://backuppc.sourceforge.net
1286EOF
1287
1288# No recent backup
1289$Lang{EMailNoBackupRecentSubj} = "BackupPC: no recent backups on \$host";
1290$Lang{EMailNoBackupRecentMesg} = <<'EOF';
1291To: $user$domain
1292cc:
1293Subject: $subj
1294$headers
1295Dear $userName,
1296
1297Your PC ($host) has not been successfully backed up for $days days.
1298Your PC has been correctly backed up $numBackups times from $firstTime to $days days
1299ago.  PC backups should occur automatically when your PC is connected
1300to the network.
1301
1302If your PC has been connected for more than a few hours to the
1303network during the last $days days you should contact IS to find
1304out why backups are not working.
1305
1306Otherwise, if you are out of the office, there's not much you can
1307do, other than manually copying especially critical files to other
1308media.  You should be aware that any files you have created or
1309changed in the last $days days (including all new email and
1310attachments) cannot be restored if your PC disk crashes.
1311
1312Regards,
1313BackupPC Genie
1314http://backuppc.sourceforge.net
1315EOF
1316
1317# Old Outlook files
1318$Lang{EMailOutlookBackupSubj} = "BackupPC: Outlook files on \$host need to be backed up";
1319$Lang{EMailOutlookBackupMesg} = <<'EOF';
1320To: $user$domain
1321cc:
1322Subject: $subj
1323$headers
1324Dear $userName,
1325
1326The Outlook files on your PC have $howLong.
1327These files contain all your email, attachments, contact and calendar
1328information.  Your PC has been correctly backed up $numBackups times from
1329$firstTime to $lastTime days ago.  However, Outlook locks all its files when
1330it is running, preventing these files from being backed up.
1331
1332It is recommended you backup the Outlook files when you are connected
1333to the network by exiting Outlook and all other applications, and,
1334using just your browser, go to this link:
1335
1336    $CgiURL?host=$host
1337
1338Select "Start Incr Backup" twice to start a new incremental backup.
1339You can select "Return to $host page" and then hit "reload" to check
1340the status of the backup.  It should take just a few minutes to
1341complete.
1342
1343Regards,
1344BackupPC Genie
1345http://backuppc.sourceforge.net
1346EOF
1347
1348$Lang{howLong_not_been_backed_up} = "not been backed up successfully";
1349$Lang{howLong_not_been_backed_up_for_days_days} = "not been backed up for \$days days";
1350
1351#######################################################################
1352# RSS strings
1353#######################################################################
1354$Lang{RSS_Doc_Title}       = "BackupPC Server";
1355$Lang{RSS_Doc_Description} = "RSS feed for BackupPC";
1356$Lang{RSS_Host_Summary}    = <<EOF;
1357Full Count: \$fullCnt;
1358Full Age/days: \$fullAge;
1359Full Size/GB: \$fullSize;
1360Speed MB/sec: \$fullRate;
1361Incr Count: \$incrCnt;
1362Incr Age/Days: \$incrAge;
1363State: \$host_state;
1364Last Attempt: \$host_last_attempt;
1365EOF
1366
1367#######################################################################
1368# Configuration editor strings
1369#######################################################################
1370
1371$Lang{Only_privileged_users_can_edit_config_files} = "Only privileged users can edit configuration settings.";
1372$Lang{CfgEdit_Edit_Config} = "Edit Config";
1373$Lang{CfgEdit_Edit_Hosts}  = "Edit Hosts";
1374
1375$Lang{CfgEdit_Title_Server} = "Server";
1376$Lang{CfgEdit_Title_General_Parameters} = "General Parameters";
1377$Lang{CfgEdit_Title_Wakeup_Schedule} = "Wakeup Schedule";
1378$Lang{CfgEdit_Title_Concurrent_Jobs} = "Concurrent Jobs";
1379$Lang{CfgEdit_Title_Pool_Filesystem_Limits} = "Pool Filesystem Limits";
1380$Lang{CfgEdit_Title_Other_Parameters} = "Other Parameters";
1381$Lang{CfgEdit_Title_Remote_Apache_Settings} = "Remote Apache Settings";
1382$Lang{CfgEdit_Title_Program_Paths} = "Program Paths";
1383$Lang{CfgEdit_Title_Install_Paths} = "Install Paths";
1384$Lang{CfgEdit_Title_Email} = "Email";
1385$Lang{CfgEdit_Title_Email_settings} = "Email settings";
1386$Lang{CfgEdit_Title_Email_User_Messages} = "Email User Messages";
1387$Lang{CfgEdit_Title_CGI} = "CGI";
1388$Lang{CfgEdit_Title_Admin_Privileges} = "Admin Privileges";
1389$Lang{CfgEdit_Title_Page_Rendering} = "Page Rendering";
1390$Lang{CfgEdit_Title_Paths} = "Paths";
1391$Lang{CfgEdit_Title_User_URLs} = "User URLs";
1392$Lang{CfgEdit_Title_User_Config_Editing} = "User Config Editing";
1393$Lang{CfgEdit_Title_Xfer} = "Xfer";
1394$Lang{CfgEdit_Title_Xfer_Settings} = "Xfer Settings";
1395$Lang{CfgEdit_Title_Ftp_Settings} = "FTP Settings";
1396$Lang{CfgEdit_Title_Smb_Settings} = "Smb Settings";
1397$Lang{CfgEdit_Title_Tar_Settings} = "Tar Settings";
1398$Lang{CfgEdit_Title_Rsync_Settings} = "Rsync Settings";
1399$Lang{CfgEdit_Title_Rsyncd_Settings} = "Rsyncd Settings";
1400$Lang{CfgEdit_Title_Archive_Settings} = "Archive Settings";
1401$Lang{CfgEdit_Title_Include_Exclude} = "Include/Exclude";
1402$Lang{CfgEdit_Title_Smb_Paths_Commands} = "Smb Paths/Commands";
1403$Lang{CfgEdit_Title_Tar_Paths_Commands} = "Tar Paths/Commands";
1404$Lang{CfgEdit_Title_Rsync_Paths_Commands_Args} = "Rsync Paths/Commands/Args";
1405$Lang{CfgEdit_Title_Rsyncd_Port_Args} = "Rsyncd Port/Args";
1406$Lang{CfgEdit_Title_Archive_Paths_Commands} = "Archive Paths/Commands";
1407$Lang{CfgEdit_Title_Schedule} = "Schedule";
1408$Lang{CfgEdit_Title_Full_Backups} = "Full Backups";
1409$Lang{CfgEdit_Title_Incremental_Backups} = "Incremental Backups";
1410$Lang{CfgEdit_Title_Blackouts} = "Blackouts";
1411$Lang{CfgEdit_Title_Other} = "Other";
1412$Lang{CfgEdit_Title_Backup_Settings} = "Backup Settings";
1413$Lang{CfgEdit_Title_Client_Lookup} = "Client Lookup";
1414$Lang{CfgEdit_Title_User_Commands} = "User Commands";
1415$Lang{CfgEdit_Title_Hosts} = "Hosts";
1416
1417$Lang{CfgEdit_Hosts_Comment} = <<EOF;
1418To add a new host, select Add and then enter the name.  To start with
1419the per-host configuration from another host, enter the host name
1420as NEWHOST=COPYHOST.  This will overwrite any existing per-host
1421configuration for NEWHOST.  You can also do this for an existing
1422host.  To delete a host, hit the Delete button.  For Add, Delete,
1423and configuration copy, changes don't take effect until you select
1424Save.  None of the deleted host's backups will be removed,
1425so if you accidently delete a host, simply re-add it.  To completely
1426remove a host's backups, you need to manually remove the files
1427below \$topDir/pc/HOST
1428EOF
1429
1430$Lang{CfgEdit_Header_Main} = <<EOF;
1431\${h1("Main Configuration Editor")}
1432EOF
1433
1434$Lang{CfgEdit_Header_Host} = <<EOF;
1435\${h1("Host \$host Configuration Editor")}
1436<p>
1437Note: Check Override if you want to modify a value specific to this host.
1438<p>
1439EOF
1440
1441$Lang{CfgEdit_Button_Save}     = "Save";
1442$Lang{CfgEdit_Button_Insert}   = "Insert";
1443$Lang{CfgEdit_Button_Delete}   = "Delete";
1444$Lang{CfgEdit_Button_Add}      = "Add";
1445$Lang{CfgEdit_Button_Override} = "Override";
1446$Lang{CfgEdit_Button_New_Key}  = "New Key";
1447$Lang{CfgEdit_Button_New_Share} = "New ShareName or '*'";
1448
1449$Lang{CfgEdit_Error_No_Save}
1450            = "Error: No save due to errors";
1451$Lang{CfgEdit_Error__must_be_an_integer}
1452            = "Error: \$var must be an integer";
1453$Lang{CfgEdit_Error__must_be_real_valued_number}
1454            = "Error: \$var must be a real-valued number";
1455$Lang{CfgEdit_Error__entry__must_be_an_integer}
1456            = "Error: \$var entry \$k must be an integer";
1457$Lang{CfgEdit_Error__entry__must_be_real_valued_number}
1458            = "Error: \$var entry \$k must be a real-valued number";
1459$Lang{CfgEdit_Error__must_be_executable_program}
1460            = "Error: \$var must be a valid executable path";
1461$Lang{CfgEdit_Error__must_be_valid_option}
1462            = "Error: \$var must be a valid option";
1463$Lang{CfgEdit_Error_Copy_host_does_not_exist}
1464            = "Copy host \$copyHost doesn't exist; creating full host name \$fullHost.  Delete this host if that is not what you wanted.";
1465
1466$Lang{CfgEdit_Log_Copy_host_config}
1467            = "\$User copied config from host \$fromHost to \$host\n";
1468$Lang{CfgEdit_Log_Delete_param}
1469            = "\$User deleted \$p from \$conf\n";
1470$Lang{CfgEdit_Log_Add_param_value}
1471            = "\$User added \$p to \$conf, set to \$value\n";
1472$Lang{CfgEdit_Log_Change_param_value}
1473            = "\$User changed \$p in \$conf to \$valueNew from \$valueOld\n";
1474$Lang{CfgEdit_Log_Host_Delete}
1475            = "\$User deleted host \$host\n";
1476$Lang{CfgEdit_Log_Host_Change}
1477            = "\$User host \$host changed \$key from \$valueOld to \$valueNew\n";
1478$Lang{CfgEdit_Log_Host_Add}
1479            = "\$User added host \$host: \$value\n";
1480
1481#end of lang_en.pm
1482