function formAction($get)
{
    // create a new Updater object
    $u = new Net_DNS2_Updater($get['domain'], array('nameservers' => array(NS1)));
    try {
        switch ($get['todo']) {
            case 'recordAdd':
                $record = Net_DNS2_RR::fromString($get['rr']);
                // add the record
                $u->add($record);
                break;
            case 'recordAddWizard':
                $cmd = formatRR($get);
                $record = Net_DNS2_RR::fromString($cmd);
                // add the record
                $u->add($record);
                break;
            case 'recordDel':
                $record = Net_DNS2_RR::fromString($get['rr']);
                // add the record
                $u->delete($record);
                break;
        }
        // add a TSIG / SIGO to authenticate the request
        if (AUTH_SIGO != NULL) {
            $u->signSIG0(AUTH_SIGO_NAME, AUTH_SIGO);
        } else {
            if (AUTH_TSIG != NULL) {
                $u->signTSIG(AUTH_TSIG_NAME, AUTH_TSIG);
            }
        }
        // execute the request
        $u->update();
        echo '<p class="success">Update Result: Dynamic update is successful.</p>';
    } catch (Net_DNS2_Exception $e) {
        echo '<p class="error">Failed: ' . $e->getMessage() . '</p>';
    }
    if (isset($get['rr'])) {
        echo '<p><pre>' . $get['rr'] . '</pre></p>';
    } else {
        echo '<p><pre>' . $cmd . '</pre></p>';
    }
}
Exemplo n.º 2
0
function delete_record($args)
{
    foreach (array("zone", "key-name", "key-type", "key", "server", "record") as $val) {
        if (empty($args[$val])) {
            output_error('Invalid request, "' . $val . '" field is mandatory', 400);
        }
    }
    $record = $args['record'];
    foreach (array("name", "type", "data") as $val) {
        if (empty($record[$val])) {
            output_error('Invalid request, "' . $val . '" field is mandatory', 400);
        }
    }
    $type_name = $record['type'];
    if (empty(Net_DNS2_Lookups::$rr_types_by_name[$type_name])) {
        output_error('Resource record type "' . $type_name . '" is not supported.');
    }
    $type_id = Net_DNS2_Lookups::$rr_types_by_name[$type_name];
    if (empty(Net_DNS2_Lookups::$rr_types_id_to_class[$type_id])) {
        output_error('Resource record type "' . $type_name . '" is not supported.');
    }
    $type_class = Net_DNS2_Lookups::$rr_types_id_to_class[$type_id];
    $u = new Net_DNS2_Updater($args['zone'], array('nameservers' => array($args['server'])));
    try {
        $u->signTSIG($args['key-name'], $args['key'], $args['key-type']);
        $u->delete($type_class::fromString($record['name'] . ' 0 NONE ' . $record['type'] . ' ' . $record['data']));
        $u->update();
    } catch (Net_DNS2_Exception $e) {
        return $e->getMessage();
    }
    return true;
}
Exemplo n.º 3
0
 public function removeRecord($data, \App\Zone $zone)
 {
     $updater = new \Net_DNS2_Updater($zone->name, array('nameservers' => $this->servers, 'cache_type' => 'none'));
     try {
         $record = \Net_DNS2_RR::fromString($data["name"] . '.' . $zone->name . ' ' . $data["ttl"] . ' ' . $data["type"] . ' ' . $data["rdata"]);
         $updater->delete($record);
         $updater->signTSIG(\Crypt::decrypt($zone->tsigname), \Crypt::decrypt($zone->tsigkey));
         $updater->update();
         if ($this->loggingenable()) {
             \Log::info(\Auth::user()->username . ' DELETE ' . $record);
         }
         //delete reverse record
         if ($data["type"] == "A" && $this->managereverse()) {
             $revarr = $this->getPTR($zone, $data["rdata"]);
             if ($revarr["zone"] != null) {
                 $zonerev = $revarr["zone"];
                 $updaterrev = new \Net_DNS2_Updater($zonerev->name, array('nameservers' => $this->servers, 'cache_type' => 'none', 'recurse' => false));
                 foreach ($revarr["records"] as $rr) {
                     $updaterrev->delete($rr);
                     if ($this->loggingenable()) {
                         \Log::info(\Auth::user()->username . ' DELETE ' . $rr);
                     }
                 }
                 $updaterrev->signTSIG(\Crypt::decrypt($zonerev->tsigname), \Crypt::decrypt($zonerev->tsigkey));
                 $updaterrev->update();
             }
         }
     } catch (\Net_DNS2_Exception $e) {
         echo "::update() failed: ", $e->getMessage(), "\n";
     }
 }