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