recordwrite.php 2.67 KB
<?php
require_once "include.php";

$znum = (intval($_GET['i']) > 0) ? intval($_GET['i']) : NULL;

if ($znum) {
    if ($user->isOwned($znum, 'master', 'live')) {
        $zone = new masterZone(array('id' => $znum));
        $zone->loadZone();
        $zonerec = $zone->getZoneHead();
        $zrec = array();
        foreach (array('refresh', 'expire', 'retry', 'ttl', 'secured', 'pri_dns', 'sec_dns', 'owner') as $key) {
            $zrec[$key] = ((isset($_POST[$key])) and ($_POST[$key] > '')) ? $_POST[$key] : $zonerec[$key];
        }
        $zrec['valid'] = 'may';
        $zone->setZoneHead($zrec);
        $zone->saveZoneHead();
        $total = ((isset($_POST['total'])) && ($_POST['total'] > 0)) ? $_POST['total'] : 0;
        for ($x = 0; $x < $total; $x++) {
            if (isset($_POST['delete'][$x])) {
                $zone->eraseRecord(intval($_POST['host_id'][$x]));
            } else {
                $nrec=array();
                foreach (array('host', 'ttl', 'type', 'pri', 'destination') as $key) {
                    $pkey = ($key == 'ttl') ? 'rttl' : $key;
                    $nrec[$key] = (isset($_POST[$pkey][$x])) ? $_POST[$pkey][$x] : '';
                    $nrec[$key] = (($key == 'ttl') && ($nrec[$key] == '')) ? 0 :$nrec[$key];
                    $nrec[$key] = (($key == 'pri') && ($nrec[$key] == '')) ? 10 :$nrec[$key];
                    $nrec[$key] = (($key == 'host') && ($nrec[$key] == '')) ? '@' :$nrec[$key];
                    $nrec[$key] = (($key == 'destination') && ($nrec[$key] == '')) ? '@' :$nrec[$key];
                }
                if (strtoupper($nrec['type']) != 'MX') $nrec['pri'] = '0';
                $urec = new masterRecord(intval($_POST['host_id'][$x]));
                $urec->loadRecord();
                $xrec = serialize($urec->getRecordRaw());
                $urec->setRecord($nrec);
                $yrec = serialize($urec->getRecordRaw());
                if ($xrec != $yrec) {
//                    error_log($yrec . "#" . $xrec);
                    $urec->saveRecord();
                }
            }
        }
        $zone->clearZone();
        $zone->loadZone();
        $nrec = array();
        foreach (array('host', 'ttl', 'type', 'pri', 'destination') as $key) {
            $nrec[$key] = ((isset($_POST['new' . $key])) && ($_POST['new' . $key] > '')) ? $_POST['new' . $key] : NULL;
        }
        if ($nrec['host'] != $nrec['destination']) {
            $nrec['pri'] = ($nrec['type'] == 'MX') ? 10 : 0;
            $nrec['ttl'] = intval($nrec['ttl']);
            $nrec['zone'] = $znum;
            $zone->addRecord($nrec);
        }
        $zone->saveZone();
    } else {
        problem("notown");
    }
} else {
    access_denied();
}

?>