Domain registry project http://reg.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB

<?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));