summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2022-07-20 15:51:39 +0200
committerErich Eckner <git@eckner.net>2022-07-20 15:51:39 +0200
commit3d107489bc1fc5a1a3fe97d52e4ad27b088ba547 (patch)
tree5290f92d4feefa4522aa1b8b1333a2d7ba6d8f34
parent373efc5f17b6d26f9e903052d00c94cd9ac0a3e0 (diff)
downloadcolocation-3d107489bc1fc5a1a3fe97d52e4ad27b088ba547.tar.xz
maintenance.php: ddns key creation
-rw-r--r--html/maintenance.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/html/maintenance.php b/html/maintenance.php
index 0501b72..7f020c1 100644
--- a/html/maintenance.php
+++ b/html/maintenance.php
@@ -88,3 +88,47 @@ if (array_key_exists('machine',$_GET)) {
}
die();
}
+
+if (array_key_exists('ddns', $_GET)) {
+ $result = $db -> query(
+ 'SELECT keys.key, COUNT(1) as cnt FROM keys' .
+ ' JOIN permissions ON permissions.key_id = keys.id' .
+ ' JOIN "values" ON permissions.value_id = "values".id' .
+ ' JOIN states ON "values".state_id = states.id' .
+ ' WHERE states.name = ' . "'" . 'running' . "'" .
+ ' GROUP BY keys.key' .
+ ' ORDER BY cnt DESC'
+ );
+ while ($row = $result -> fetchArray()) {
+ if ($row['cnt'] != 1) {
+ echo $row['key'] . "\n";
+ die();
+ }
+ }
+
+ $stm = $db -> prepare('INSERT INTO keys (key) VALUES (:key)');
+ $stm -> bindValue('key', bin2hex(random_bytes(64)));
+ $stm -> execute();
+ $key_id = $db -> lastInsertRowID();
+ $stm -> close();
+
+ $stm = $db -> prepare('INSERT INTO permissions(key_id, value_id) VALUES (:key_id, :value_id)');
+ $stm -> bindValue('key_id', $key_id);
+ $result = $db -> query(
+ 'SELECT "values".id as value_id FROM "values"' .
+ ' JOIN states ON states.id = "values".state_id' .
+ ' WHERE states.name = ' . "'" . 'running' . "'"
+ );
+ while ($row = $result -> fetchArray()) {
+ $stm -> bindValue('value_id', $row['value_id']);
+ $stm -> execute();
+ }
+ $stm -> close();
+
+ $stm = $db -> prepare('SELECT keys.key from keys WHERE keys.id = :key_id');
+ $stm -> bindValue('key_id', $key_id);
+ $result = $stm -> execute();
+ $result = $result -> fetchArray();
+ echo $result['key'] . "\n";
+ $stm -> close();
+}