$_POST['domain']], 'zone') !== []) userError("Cette zone existe déjà sur ce service."); $remoteNsRecords = array_column(dns_get_record($_POST['domain'], DNS_NS), 'target'); foreach ($remoteNsRecords as $i => $remoteNsRecord) $remoteNsRecords[$i] = formatAbsoluteDomain($remoteNsRecord); if (array_merge(array_diff($remoteNsRecords, CONF['ns']['servers']), array_diff(CONF['ns']['servers'], $remoteNsRecords)) !== []) userError("Ce domaine n'a pas les bons enregistrements NS."); $db = new PDO('sqlite:' . DB_PATH); $stmt = $db->prepare("INSERT INTO zones(zone, username) VALUES(:zone, :username)"); $stmt->bindValue(':zone', $_POST['domain']); $stmt->bindValue(':username', $_SESSION['username']); $stmt->execute(); $knotZonePath = CONF['ns']['knot_zones_path'] . "/" . $_POST['domain'] . "zone"; $knotZone = $_POST['domain'] . ' 3600 SOA ' . CONF['ns']['servers'][0] . ' admin.niver.test. 1 21600 7200 3628800 3600' . "\n"; foreach (CONF['ns']['servers'] as $server) $knotZone .= $_POST['domain'] . ' 86400 NS ' . $server . "\n"; if (is_int(file_put_contents($knotZonePath, $knotZone)) !== true) serverError("Failed to write new zone file."); if (chmod($knotZonePath, 0660) !== true) serverError("Failed to chmod new zone file."); knotcConfExec([ "set 'zone[" . $_POST['domain'] . "]'", "set 'zone[" . $_POST['domain'] . "].template' 'niver-ns'", ]); success("La requête a été traitée."); } ?>