<?php $domain = "userhost.ffbin"; include "inc/functions.inc"; $hostdb = new HostDB(); $zone = new DDnsZone($domain); $countquery = "SELECT COUNT(*) FROM hosts WHERE last_seen < DATETIME('now','localtime','-1 day')"; $countresult = $hostdb->query($countquery); $count = $countresult->fetchArray(SQLITE3_NUM); if ($count[0] > 0) { $query = "SELECT * FROM hosts WHERE last_seen < DATETIME('now','-1 day')"; $result = $hostdb->query($query); while ($row = $result->fetchArray(SQLITE3_ASSOC)) { $zone->remove_host($row['hostname']); $hostdb->remove_host($row['hostname']); syslog(LOG_INFO, "Removed expired host " . $row['hostname'] . " from domain {$domain}"); } } else { syslog(LOG_INFO, "There are no expired hosts to remove from domain {$domain}"); }
<?php $domain = "userhost.ffbin"; include 'inc/functions.inc'; //GET Request if ($_SERVER['REQUEST_METHOD'] == 'GET') { // Show form and infotext $infotext = "\n\t<h2>Registrieren eines Hostnamens</h2>\n\n\t<p>Du kannst Dir hier einen Hostnamen in der Domain \"{$domain}\" reservieren.</p>\n\n\t<p>Die Reservierung erfolgt jeweils für die Dauer von 24h. Wenn der von Dir gewünschte Eintrag noch frei ist, bekommst Du ein \n\n\tToken. Um den Namen dauerhaft zu nutzen, muss Dein Host mit diesem Token die Reservierung mindestens alle 24h erneuern.</p>\n\n\t<p><b>Wenn Du dieses Token verlierst oder vergisst, verweist der Name bis zum Ablauf der Verfallsfrist auf die zuletzt eingetragene IP und Du musst ihn erneut registrieren.</b></p>\t"; $form = "\n\t<p>Gewüschter Hostname:</p>\n\t<form method=\"POST\" action=\"index.php\">\n\t<p><i>Zulässige Eingaben: Zahl, Buchstabe, Bindestrich</i></p>\n\t<p><input name=\"hostname\" type=\"text\" size=\"32\" / > .{$domain}</p>\n\t<p><button type=\"submit\">reservieren</button></p>\n\t</form>\n\t"; $content = $infotext . "\n" . $form; //POST Request } else { // valid hostname given if (!empty($_POST["hostname"]) && preg_match("/^[a-zA-Z0-9-]+\$/", $_POST["hostname"])) { $hostdb = new HostDB(); $hostname = strtolower($_POST["hostname"]); if ($hostdb->hostname_exists($hostname)) { $content = "<p><b>Der Hostname '{$hostname}.{$domain}' ist bereits vergeben!</b></p>\n"; $content .= "<p><a href=\"index.php\">zurück</a></p>"; } else { $remoteip = $_SERVER['REMOTE_ADDR']; $token = $hostdb->register_hostname($hostname, $remoteip); if ($token && update_bind($hostname, $remoteip)) { syslog(LOG_INFO, "Hostname '{$hostname}.{$domain}' reserved for IP '{$remoteip}'"); $content = "<h2>Der Hostname '{$hostname}.{$domain}' wurde reserviert.</h2> "; $content .= "<p>Aktuell ist der host mit der IP '" . $_SERVER['REMOTE_ADDR'] . "' eingetragen.</p>\n"; $content .= "<br /><p>Host-Token: <b>{$token}</b></p><br />"; $content .= "<p>Um die Reservierung aufrechtzuerhalten, muss der Host '{$hostname}.{$domain}'\n"; $content .= "mindestend einmal alle 24h mit dem Aufruf folgender URL einchecken:</p>"; $updateurl = "https://register.userhost.ffbin/checkin.php?hostname={$hostname}&token={$token}"; $content .= "<p><a href=\"{$updateurl}\">{$updateurl}</a></p>";