HostFact - DNS
DNS beheer
Op deze pagina worden alle functies besproken met betrekking tot het beheren van DNS zones.
getDNSTemplates()
Wanneer het DNS platform templates ondersteunt, kunnen die met deze functie opgehaald worden.
Voorbeeld implementatie
public function getDNSTemplates() { // if the DNS platform does not support DNS templates by it self, just do a: // return FALSE; // the HostFact user then has to create the DNS templates with each DNS record in HostFact /** * Step 1) get template list */ $response = TRUE; /** * Step 2) provide feedback to HostFact */ if($response === FALSE || count($response) == 0) { return $this->__parseError(__('dns templates could not be retrieved', 'yourname')); } else { $dns_templates = array(); $i = 0; // loop through templates and build return array foreach($response['template'] as $key => $_dns_template) { $dns_templates['templates'][$i]['id'] = $_dns_template['id']; // if present $dns_templates['templates'][$i]['name'] = $_dns_template['name']; } return $dns_templates; } }
getDNSZone()
Haal een DNS zone op van het DNS platform.
Beschikbare variabelen | Beschrijving |
---|---|
$domain | Volledige domeinnaam (incl. extensie) |
Voorbeeld implementatie
public function getDNSZone($domain) { /** * Step 1) Get the DNS zone data * */ $result = true; /** * Step 2) build DNS zone return array */ if($result) { $dns_zone = array(); $i = 0; foreach($result as $record) { // if the record is not supported, it should be marked as readonly if(!(in_array(strtoupper($record['type']), $this->SupportedRecordTypes))) { $record_type = 'records_readonly'; } else { $record_type = 'records'; } $dns_zone[$record_type][$i]['id'] = $record['id']; $dns_zone[$record_type][$i]['name'] = $record['name']; $dns_zone[$record_type][$i]['type'] = $record['type']; $dns_zone[$record_type][$i]['value'] = $record['content']; $dns_zone[$record_type][$i]['priority'] = $record['prio']; $dns_zone[$record_type][$i]['ttl'] = $record['ttl']; $i++; } return $dns_zone; } return FALSE; }
createDNSZone()
Maakt een nieuwe DNS zone aan op het DNS platform nadat een domeinnaam is geregisteerd/verhuisd bij de registrar, of wanneer de DNS template wordt gewijzigd van de domeinnaam.
Beschikbare variabelen | Beschrijving |
---|---|
$domain | Volledige domeinnaam (incl. extensie) |
$dns_zone | Array met DNS zone informatie en DNS zone records (zie hoofdstuk Parameters) |
Voorbeeld implementatie
public function createDNSZone($domain, $dns_zone) { /** * Step 1) check if DNS zone exists on server */ // you should first check if the DNS zone already exists on the DNS platform $response = true; /** * Step 2a) DNS zone exists, update DNS zone */ if($response === true) { // if the DNS zone already exists, you can edit the DNS zone by using the saveDNSzone function if($this->saveDNSZone($domain, $dns_zone)) { // you can use the createDNSZoneData variable as a fallback // for example, if registering a domain or a nameserver change fails at the registrar, you might want to undo any changes you do here // the data you set in createDNSZoneData can, after a failed register/nameserver change, be used in undoCreateDNSZone function $this->createDNSZoneData = $current_records; return TRUE; } else { return FALSE; } } /** * Step 2b) DNS zone does not exist, create a new one */ $create_response = true; // create DNS zone if(isset($dns_zone['records']) && count($dns_zone['records']) > 0) { foreach($dns_zone['records'] as $_record) { /** create DNS record */ } } /** * Step 3) provide feedback to HostFact */ // you can use the createDNSZoneData variable as a fallback // for example, if registering a domain or a nameserver change fails at the registrar, you might want to undo any changes you do here // the data you set in createDNSZoneData can, after a failed register/nameserver change, be used in undoCreateDNSZone function $this->createDNSZoneData = $new_id; if($create_response === true) { return TRUE; } else { // failed return FALSE; } }
undoCreateDNSZone()
Deze functie wordt aangeroepen wanneer een registratie, verhuizing of nameserver wijziging is mislukt. Data die daarvoor is aangemaakt/bewerkt via de createDNSZone functie, kan hier ongedaan gemaakt worden.
Beschikbare variabelen | Beschrijving |
---|---|
$domain | Volledige domeinnaam (incl. extensie) |
$create_dns_zone_data | Bevat de data zoals deze is geset in de createDNSZone functie |
Voorbeeld implementatie
public function undoCreateDNSZone($domain, $create_dns_zone_data) { // $create_dns_zone_data will contain the data set in createDNSZone /** * Step 1) undo actions from createDNSZone * */ $response = true; /** * Step 2) provide feedback to HostFact */ if($response) { return TRUE; } else { return FALSE; } }
saveDNSZone()
Update een DNS zone op het DNS platform.
Let op: HostFact filtert bij het tonen van de DNS records de naam om zo een consequente weergave te tonen voor alle servers. De laatste punt en de domeinnaam worden verwijderd uit de waarde. Voorbeeld: 'ftp.domain.tld.' wordt 'ftp'. Houdt hiermee rekening bij het updaten van een DNS zone.
Beschikbare variabelen | Beschrijving |
---|---|
$domain | Volledige domeinnaam (incl. extensie) |
$dns_zone | Array met DNS zone informatie en DNS zone records (zie hoofdstuk Parameters) |
Voorbeeld implementatie
public function saveDNSZone($domain, $dns_zone) { /* if the control panel does not support a update command, but only add/delete commands use the getDNSZone command and compare it's output with the $dns_zone array this way you can check which records are edited and add/delete them accordingly */ /** * Step 1) update DNS zone */ if(isset($dns_zone['records']) && count($dns_zone['records']) > 0) { $HostFact_records = array(); foreach($dns_zone['records'] as $_record) { // if priority is not filled, set it default as 0 $_record['priority'] = (!$_record['priority']) ? 0 : $_record['priority']; // update/add records } // delete records } /** * Step 2) provide feedback to HostFact */ return TRUE; }
removeDNSZone()
Verwijdert een DNS zone op het DNS platform. Wordt aangeroepen wanneer een domeinnaam direct of via een opzegprocedure verwijderd wordt.
Beschikbare variabelen | Beschrijving |
---|---|
$domain | Volledige domeinnaam (incl. extensie) |
Voorbeeld implementatie
public function removeDNSZone($domain) { /** * Step 1) remove DNS zone */ $response = true; /** * Step 2) provide feedback to HostFact */ return $response; }