2023-02-14 09:32:15 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
|
|
|
$user = getenv("RKC_USER");
|
|
|
|
$pass = getenv("RKC_PASS");
|
|
|
|
if (false !== $user or false !== $pass) {
|
|
|
|
if (
|
|
|
|
!isset($_SERVER["PHP_AUTH_USER"]) ||
|
|
|
|
!isset($_SERVER["PHP_AUTH_PW"]) ||
|
|
|
|
$_SERVER["PHP_AUTH_USER"] !== $user ||
|
|
|
|
$_SERVER["PHP_AUTH_PW"] !== $pass
|
|
|
|
) {
|
|
|
|
header('WWW-Authenticate: Basic realm="RKC"');
|
|
|
|
header("HTTP/1.0 401 Unauthorized");
|
|
|
|
echo "You are not authorized to access this page.";
|
|
|
|
exit();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$resticData = file_get_contents("php://input");
|
|
|
|
$resticData = explode("\n", $resticData);
|
2023-09-15 19:05:21 +02:00
|
|
|
if (count($resticData) <= 1) {
|
|
|
|
exit();
|
|
|
|
}
|
2023-02-14 09:32:15 +01:00
|
|
|
$backups = [];
|
|
|
|
foreach ($resticData as $snapshot) {
|
|
|
|
if (
|
|
|
|
!preg_match(
|
|
|
|
"/^(?<id>[a-z0-9]{8}) +(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) +(?<hour>\d{2}):+(?<minute>\d{2}):+(?<second>\d{2}) +(?<host>[^ ]+) +(?<path>[^ ]+).*/",
|
|
|
|
$snapshot,
|
|
|
|
$m
|
|
|
|
)
|
|
|
|
) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$backupName = $m["host"] . "|" . $m["path"];
|
|
|
|
if (!isset($backups[$backupName])) {
|
|
|
|
$backups[$backupName] = 0;
|
|
|
|
}
|
|
|
|
$backupTime = mktime(
|
|
|
|
$m["hour"],
|
|
|
|
$m["minute"],
|
|
|
|
$m["second"],
|
|
|
|
$m["month"],
|
|
|
|
$m["day"],
|
|
|
|
$m["year"]
|
|
|
|
);
|
|
|
|
if ($backupTime > $backups[$backupName]) {
|
|
|
|
$backups[$backupName] = $backupTime;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ksort($backups);
|
|
|
|
file_put_contents(
|
|
|
|
"/var/www/data/backups.json",
|
|
|
|
json_encode($backups, JSON_UNESCAPED_SLASHES + JSON_PRETTY_PRINT)
|
|
|
|
);
|
|
|
|
exit();
|
|
|
|
}
|
|
|
|
header("Content-Type: text/plain");
|
|
|
|
$maxAge = isset($_GET["maxage"]) ? intval($_GET["maxage"]) : 28;
|
|
|
|
$maxAge = $maxAge * 60 * 60;
|
|
|
|
$backups = json_decode(file_get_contents("/var/www/data/backups.json"), true);
|
2023-02-14 11:01:44 +01:00
|
|
|
echo "BACKUP|HOST|PATH|STATUS\n";
|
2023-02-14 09:32:15 +01:00
|
|
|
foreach ($backups as $backupName => $backupTime) {
|
|
|
|
echo "BACKUP|$backupName|";
|
|
|
|
if ($backupTime + $maxAge < time()) {
|
|
|
|
echo "TOO_OLD";
|
|
|
|
} else {
|
|
|
|
echo "OK";
|
|
|
|
}
|
|
|
|
echo "\n";
|
|
|
|
}
|
2023-02-14 11:01:44 +01:00
|
|
|
|
|
|
|
$byHost = [];
|
|
|
|
foreach ($backups as $backupName => $backupTime) {
|
|
|
|
$backupName = explode("|", $backupName);
|
|
|
|
$host = $backupName[0];
|
|
|
|
$path = $backupName[1];
|
|
|
|
if (!isset($byHost[$host])) {
|
|
|
|
$byHost[$host] = PHP_INT_MAX;
|
|
|
|
}
|
|
|
|
$byHost[$host] = min($backupTime, $byHost[$host]);
|
|
|
|
}
|
|
|
|
|
|
|
|
echo "\nBACKUP|HOST|STATUS\n";
|
|
|
|
foreach ($byHost as $host => $latest) {
|
|
|
|
echo "BACKUP|$host|";
|
|
|
|
if ($latest + $maxAge < time()) {
|
|
|
|
echo "TOO_OLD";
|
|
|
|
} else {
|
|
|
|
echo "OK";
|
|
|
|
}
|
|
|
|
echo "\n";
|
|
|
|
}
|