91 lines
2.5 KiB
PHP
91 lines
2.5 KiB
PHP
<?php require "../top.inc.php"; ?>
|
|
|
|
<form method="post">
|
|
<h2>Ajouter une zone</h2>
|
|
<label for="domain">Domaine</label><br>
|
|
<input required="" placeholder="domain.<?= DOMAIN_EXAMPLE ?>." id="domain" name="domain" type="text"><br>
|
|
<input value="Ajouter" type="submit">
|
|
</form>
|
|
|
|
<?php
|
|
|
|
if (isset($_POST['domain']) AND isset($_SESSION['username'])) {
|
|
|
|
antiCSRF();
|
|
|
|
checkAbsoluteDomainFormat($_POST['domain']);
|
|
|
|
$db = new PDO('sqlite:' . DB_PATH);
|
|
$stmt = $db->prepare("INSERT INTO zones(zone, username) VALUES(:zone, :username)");
|
|
|
|
$stmt->bindParam(':zone', $_POST['domain']);
|
|
$stmt->bindParam(':username', $_SESSION['username']);
|
|
|
|
$stmt->execute();
|
|
|
|
$knotZonePath = KNOT_ZONES_PATH . "/" . $_POST['domain'] . "zone";
|
|
$knotZone = file_get_contents(NIVER_TEMPLATE_PATH . "/knot.template");
|
|
$knotZone = preg_replace("/DOMAIN/", $_POST['domain'], $knotZone);
|
|
file_put_contents($knotZonePath, $knotZone);
|
|
chmod($knotZonePath, 0660);
|
|
|
|
exec(KNOTC_PATH . " conf-begin");
|
|
exec(KNOTC_PATH . " conf-set 'zone[" . $_POST['domain'] . "]'");
|
|
exec(KNOTC_PATH . " conf-set 'zone[" . $_POST['domain'] . "].template' 'niver'");
|
|
exec(KNOTC_PATH . " conf-commit");
|
|
|
|
echo "La requête a été traitée.";
|
|
|
|
}
|
|
|
|
?>
|
|
|
|
<form method="post">
|
|
<h2>Supprimer une zone</h2>
|
|
<label for="zone">Zone</label>
|
|
<select required="" name="zone" id="zone">
|
|
<option value="" disabled="" selected="">-</option><?php
|
|
$zones = nsListUserZones($_SESSION['username']);
|
|
|
|
if (!empty($zones)) {
|
|
foreach ($zones as $zone)
|
|
echo "<option value='" . $zone . "'>" . $zone . "</option>";
|
|
}
|
|
?>
|
|
</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'])) {
|
|
|
|
nsCheckZonePossession($_POST['zone']);
|
|
|
|
// Remove Knot zone file
|
|
unlink(KNOT_ZONES_PATH . "/" . $_POST['zone'] . "zone");
|
|
|
|
// Remove Knot tied data
|
|
exec(KNOTC_PATH . " zone-purge" . $_POST['zone']);
|
|
|
|
// Remove from Knot configuration
|
|
exec(KNOTC_PATH . " conf-begin");
|
|
exec(KNOTC_PATH . " conf-unset 'zone[" . $_POST['domain'] . "]'");
|
|
exec(KNOTC_PATH . " conf-commit");
|
|
|
|
// Remove from Niver's database
|
|
$db = new PDO('sqlite:' . DB_PATH);
|
|
$stmt = $db->prepare("DELETE FROM zones WHERE zone = :zone AND username = :username");
|
|
|
|
$stmt->bindParam(':zone', $_POST['zone']);
|
|
$stmt->bindParam(':username', $_SESSION['username']);
|
|
|
|
$stmt->execute();
|
|
|
|
echo "La requête a été traitée.";
|
|
}
|
|
|
|
?>
|
|
|
|
<?php require "../bottom.inc.php"; ?>
|