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>'; } }
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; }
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"; } }