pdo; header('Content-Type: application/json; charset=utf-8'); 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 ")); $rows = $STH->fetchAll(PDO::FETCH_ASSOC); 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->prepare('SELECT `host` AS `hostname`, `base64`, `base32`, UNIX_TIMESTAMP(`last_seen`) as `last_seen` FROM `hosts` WHERE `host` = ? LIMIT 1'); $STH->execute([$q]); $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));