|
|
|
<?php
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../config.php';
|
|
|
|
|
|
|
|
$all = false;
|
|
|
|
$data = [];
|
|
|
|
|
|
|
|
$pdo = (new App\DB($options))->pdo;
|
|
|
|
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
|
|
|
|
if (isset($_GET["all"]))
|
|
|
|
$all = true;
|
|
|
|
|
|
|
|
switch ($command) {
|
|
|
|
case "all":
|
|
|
|
$STH = $pdo->query ("SELECT `base32`, UNIX_TIMESTAMP(`last_seen`) as `last_seen` FROM `hosts` " .
|
|
|
|
"WHERE `approved` = 1 AND `disabled` = 0" .
|
|
|
|
($all ? " " : " AND `blacklisted` = 0 "));
|
|
|
|
$STH->setFetchMode(PDO::FETCH_ASSOC);
|
|
|
|
$rows = $STH->fetchAll();
|
|
|
|
|
|
|
|
foreach($rows as $row) {
|
|
|
|
$data[$row["base32"] . ".b32.i2p"] = $row["last_seen"];
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case "status":
|
|
|
|
if (!$query || empty($query)) {
|
|
|
|
$data = array_merge($data, ["status" => "error", "message" => "Empty query"]);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
$q = htmlspecialchars($query);
|
|
|
|
|
|
|
|
$STH = $pdo->query("SELECT `host` AS `hostname`, `base64`, `base32`, UNIX_TIMESTAMP(`last_seen`) as `last_seen` FROM `hosts` WHERE `host` = '" . $q . "' LIMIT 1");
|
|
|
|
$row = $STH->fetch(PDO::FETCH_ASSOC);
|
|
|
|
|
|
|
|
if (empty($row)) {
|
|
|
|
$data = array_merge($data, ["status" => "error", "message" => "Not found"]);
|
|
|
|
break;
|
|
|
|
} else {
|
|
|
|
if (!$row["last_seen"]) $row["last_seen"] = "Never";
|
|
|
|
$row["base32"] .= ".b32.i2p";
|
|
|
|
$data = array_merge($data, $row);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
$data = array_merge($data, ["status" => "error", "message" => "Incorrect request"]);
|
|
|
|
}
|
|
|
|
|
|
|
|
exit(json_encode($data, JSON_PRETTY_PRINT));
|