servnest/public/ns/zone.php

95 lines
2.6 KiB
PHP
Raw Normal View History

<?php require "../../common/html.php"; ?>
2021-01-22 21:58:46 +01:00
2021-02-17 22:48:49 +01:00
<form method="post">
2022-04-18 16:05:00 +02:00
<h2>Ajouter une zone</h2>
<label for="domain">Domaine</label><br>
<input required="" placeholder="domain.<?= CONF['common']['domain_example'] ?>." id="domain" name="domain" type="text"><br>
2022-04-18 16:05:00 +02:00
<input value="Ajouter" type="submit">
2021-02-17 22:48:49 +01:00
</form>
2021-01-22 21:58:46 +01:00
2021-02-17 22:48:49 +01:00
<?php
2021-01-22 21:58:46 +01:00
2021-02-17 22:48:49 +01:00
if (isset($_POST['domain']) AND isset($_SESSION['username'])) {
2022-04-18 16:05:00 +02:00
antiCSRF();
2021-08-05 14:04:33 +02:00
2022-04-18 16:05:00 +02:00
checkAbsoluteDomainFormat($_POST['domain']);
2022-04-18 16:05:00 +02:00
$db = new PDO('sqlite:' . DB_PATH);
$stmt = $db->prepare("INSERT INTO zones(zone, username) VALUES(:zone, :username)");
2022-04-18 16:05:00 +02:00
$stmt->bindParam(':zone', $_POST['domain']);
$stmt->bindParam(':username', $_SESSION['username']);
2022-04-18 16:05:00 +02:00
$stmt->execute();
$knotZonePath = CONF['ns']['knot_zones_path'] . "/" . $_POST['domain'] . "zone";
$knotZone = $_POST['domain'] . ' 3600 SOA ns1.niver.test. admin.niver.test. 1 21600 7200 3628800 3600
' . $_POST['domain'] . ' 86400 NS ns1.niver.test.
';
2022-04-18 16:05:00 +02:00
file_put_contents($knotZonePath, $knotZone);
chmod($knotZonePath, 0660);
exec(CONF['ns']['knotc_path'] . " conf-begin");
exec(CONF['ns']['knotc_path'] . " conf-set 'zone[" . $_POST['domain'] . "]'");
exec(CONF['ns']['knotc_path'] . " conf-set 'zone[" . $_POST['domain'] . "].template' 'niver'");
exec(CONF['ns']['knotc_path'] . " conf-commit");
2022-04-18 16:05:00 +02:00
echo "La requête a été traitée.";
2021-02-17 22:48:49 +01:00
}
2021-01-22 21:58:46 +01:00
2021-02-17 22:48:49 +01:00
?>
2021-01-22 21:58:46 +01:00
<form method="post">
2022-04-18 16:05:00 +02:00
<h2>Supprimer une zone</h2>
<label for="zone">Zone</label>
<select required="" name="zone" id="zone">
<option value="" disabled="" selected="">-</option><?php
2022-05-03 19:15:02 +02:00
if (isset($_SESSION['username'])) {
$zones = nsListUserZones($_SESSION['username']);
2022-04-18 16:05:00 +02:00
2022-05-03 19:15:02 +02:00
if (!empty($zones)) {
foreach ($zones as $zone)
echo "<option value='" . $zone . "'>" . $zone . "</option>";
}
2022-04-18 16:05:00 +02:00
}
?>
2022-04-18 16:05:00 +02:00
</select>
<br>
<input value="Supprimer toutes les données liées à cette zone" type="submit">
</form>
<?php
if (isset($_POST['zone']) AND isset($_SESSION['username'])) {
2022-04-18 16:05:00 +02:00
nsCheckZonePossession($_POST['zone']);
2022-04-18 16:05:00 +02:00
// Remove from Knot configuration
exec(CONF['ns']['knotc_path'] . " conf-begin");
exec(CONF['ns']['knotc_path'] . " conf-unset 'zone[" . $_POST['zone'] . "]'");
exec(CONF['ns']['knotc_path'] . " conf-commit");
2022-04-23 18:55:39 +02:00
// Remove Knot zone file
unlink(CONF['ns']['knot_zones_path'] . "/" . $_POST['zone'] . "zone");
2022-04-23 18:55:39 +02:00
// Remove Knot related data
exec(CONF['ns']['knotc_path'] . " zone-purge " . $_POST['zone']);
2022-04-23 18:55:39 +02:00
2022-04-18 16:05:00 +02:00
// Remove from Niver's database
$db = new PDO('sqlite:' . DB_PATH);
$stmt = $db->prepare("DELETE FROM zones WHERE zone = :zone AND username = :username");
2022-04-18 16:05:00 +02:00
$stmt->bindParam(':zone', $_POST['zone']);
$stmt->bindParam(':username', $_SESSION['username']);
2022-04-18 16:05:00 +02:00
$stmt->execute();
2022-04-18 16:05:00 +02:00
echo "La requête a été traitée.";
}
?>
<?php closeHTML(); ?>