From 0f791550eb42478b134965835f7796794d835328 Mon Sep 17 00:00:00 2001 From: hickert Date: Mon, 6 Feb 2006 08:21:33 +0000 Subject: [PATCH] Some changes for dns plugin git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@2623 594d385d-05f5-0310-b6e9-bd551577e9d8 --- plugins/admin/systems/class_servDNS.inc | 377 +++++++++++------- .../admin/systems/class_servDNSeditZone.inc | 217 ++++++++++ plugins/admin/systems/servdns.tpl | 122 ------ plugins/admin/systems/servdnseditzone.tpl | 119 ++++++ 4 files changed, 562 insertions(+), 273 deletions(-) create mode 100644 plugins/admin/systems/class_servDNSeditZone.inc create mode 100644 plugins/admin/systems/servdnseditzone.tpl diff --git a/plugins/admin/systems/class_servDNS.inc b/plugins/admin/systems/class_servDNS.inc index be1cea9ee..c4e7f178d 100644 --- a/plugins/admin/systems/class_servDNS.inc +++ b/plugins/admin/systems/class_servDNS.inc @@ -9,132 +9,132 @@ class servdns extends plugin /* attribute list for save action */ var $ignore_account= TRUE; - var $attributes= array("zoneName","relativeDomainName","dNSTTL","dNSClass","sOARecord"); - var $objectclasses= array("whatever"); + var $attributes = array(""); + var $objectclasses = array("whatever"); - var $RecordTypes = array(); - var $usedRecords = array(); + var $RecordTypes = array(); - var $Zones = array(); - var $editMode = false; + var $Zones = array(); + var $dialog = NULL; function servdns ($config, $dn= NULL) { plugin::plugin ($config, $dn); - - $RecordTypes['ARecord'] ['name'] ="A Record"; - $RecordTypes['ARecord'] ['type'] ="string"; - $RecordTypes['MDRecord'] ['name'] ="MD Record"; - $RecordTypes['MDRecord'] ['type'] ="string"; - $RecordTypes['MXRecord'] ['name'] ="MX Record"; - $RecordTypes['MXRecord'] ['type'] ="string"; - $RecordTypes['NSRecord'] ['name'] ="NS Record"; - $RecordTypes['NSRecord'] ['type'] ="string"; - $RecordTypes['CNAMERecord'] ['name'] ="CNAME Record"; - $RecordTypes['CNAMERecord'] ['type'] ="string"; - $RecordTypes['PTRRecord'] ['name'] ="PTR Record"; - $RecordTypes['PTRRecord'] ['type'] ="string"; - $RecordTypes['HINFORecord'] ['name'] ="HINFO Record"; - $RecordTypes['HINFORecord'] ['type'] ="string"; - $RecordTypes['MINFORecord'] ['name'] ="MINFO Record"; - $RecordTypes['MINFORecord'] ['type'] ="string"; - $RecordTypes['TXTRecord'] ['name'] ="TXT Record"; - $RecordTypes['TXTRecord'] ['type'] ="string"; - $RecordTypes['AFSDBRecord'] ['name'] ="AFSDB Record"; - $RecordTypes['AFSDBRecord'] ['type'] ="string"; - $RecordTypes['SIGRecord'] ['name'] ="SIG Record"; - $RecordTypes['SIGRecord'] ['type'] ="string"; - $RecordTypes['KEYRecord'] ['name'] ="KEY Record"; - $RecordTypes['KEYRecord'] ['type'] ="string"; - $RecordTypes['AAAARecord'] ['name'] ="AAAA Record"; - $RecordTypes['AAAARecord'] ['type'] ="string"; - $RecordTypes['LOCRecord'] ['name'] ="LOC Record"; - $RecordTypes['LOCRecord'] ['type'] ="string"; - $RecordTypes['NXTRecord'] ['name'] ="NXT Record"; - $RecordTypes['NXTRecord'] ['type'] ="string"; - $RecordTypes['SRVRecord'] ['name'] ="SRV Record"; - $RecordTypes['SRVRecord'] ['type'] ="string"; - $RecordTypes['NAPTRRecord'] ['name'] ="NAPTR Record"; - $RecordTypes['NAPTRRecord'] ['type'] ="string"; - $RecordTypes['KXRecord'] ['name'] ="KX Record"; - $RecordTypes['KXRecord'] ['type'] ="string"; - $RecordTypes['CERTRecord'] ['name'] ="CERT Record"; - $RecordTypes['CERTRecord'] ['type'] ="string"; - $RecordTypes['A6Record'] ['name'] ="A6 Record"; - $RecordTypes['A6Record'] ['type'] ="string"; - $RecordTypes['DNAMERecord'] ['name'] ="DBNAME Record"; - $RecordTypes['DNAMERecord'] ['type'] ="string"; - $RecordTypes['DSRecord'] ['name'] ="DS Record"; - $RecordTypes['DSRecord'] ['type'] ="string"; - $RecordTypes['SSHFPRecord'] ['name'] ="SSHFP Record"; - $RecordTypes['SSHFPRecord'] ['type'] ="string"; - $RecordTypes['RRSIGRecord'] ['name'] ="RRSIG Record"; - $RecordTypes['RRSIGRecord'] ['type'] ="string"; - $RecordTypes['NSECRecord'] ['name'] ="NSEC Record"; - $RecordTypes['NSECRecord'] ['type'] ="string"; - $RecordTypes['mXRecord'] ['name'] ="MX Record"; - $RecordTypes['mXRecord'] ['type'] ="string"; - $RecordTypes['nSRecord'] ['name'] ="nS Record"; - $RecordTypes['nSRecord'] ['type'] ="string"; - - $this->RecordTypes = $RecordTypes; - - $attrs = $this->attributes; - foreach($RecordTypes as $name => $att){ - $attrs2[] = $name; - } - $attrs3 = array_merge($attrs,$attrs2); + /* All types with required attrs */ + $this->RecordTypes['aRecord'] = "aRecord"; // ok + $this->RecordTypes['mDRecord'] = "mDRecord"; // ok + $this->RecordTypes['mXRecord'] = "mXRecord"; // ok + $this->RecordTypes['nSRecord'] = "nSRecord"; // ok + $this->RecordTypes['pTRRecord'] = "relativeDomainName";// ok + $this->RecordTypes['hInfoRecord'] = "hInfoRecord"; // ok + $this->RecordTypes['mInfoRecord'] = "mInfoRecord"; // ok + $this->RecordTypes['tXTRecord'] = "tXTRecord"; // ok + $this->RecordTypes['aFSDBRecord'] = "aFSDBRecord"; // ok + $this->RecordTypes['SigRecord'] = "SigRecord"; // ok + $this->RecordTypes['KeyRecord'] = "KeyRecord"; // ok + $this->RecordTypes['aAAARecord'] = "aAAARecord"; // ok + $this->RecordTypes['LocRecord'] = "LocRecord"; // ok + $this->RecordTypes['nXTRecord'] = "nXTRecord"; // ok + $this->RecordTypes['sRVRecord'] = "sRVRecord"; // ok + $this->RecordTypes['nAPTRRecord'] = "nAPTRRecord"; // ok + $this->RecordTypes['kXRecord'] = "kXRecord"; // ok + $this->RecordTypes['certRecord'] = "certRecord"; // ok + $this->RecordTypes['a6Record'] = "a6Record"; // ok + $this->RecordTypes['dSRecord'] = "dSRecord"; // ok + $this->RecordTypes['sSHFPRecord'] = "sSHFPRecord"; // ok + $this->RecordTypes['rRSIGRecord'] = "rRSIGRecord"; // ok + $this->RecordTypes['nSECRecord'] = "nSECRecord"; // ok + + $this->cn = $this->attrs['cn'][0]; + + $types = array(); + + /* Get all records */ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->dn); - $ldap->search("(&(objectClass=dNSZone)(sOARecord=*))",$attrs3); - while($zone = $ldap->fetch()){ - $tmp = array(); - foreach($attrs as $att){ - if(isset($zone[$att]['count'])&&(is_array($zone[$att]))) - unset($zone[$att]['count']); - - if(isset($zone[$att])){ - $tmp[$att] = $zone[$att][0]; - }else{ - $tmp[$att] = ""; + $ldap->search("(&(objectClass=dNSZone)(relativeDomainName=@))",array("*")); + + while($attrs = $ldap->fetch()){ + /* If relative domainname == cn + * Try to read dnsclass / TTl / zone + */ + if((isset($attrs['tXTRecord'][0]))&&(preg_match("/zoneName\=/",$attrs['tXTRecord'][0]))){ + $zoneName= preg_replace("/zoneName\=/","",$attrs['tXTRecord'][0]); + $types[$zoneName]['ReverseZone'] = $attrs['zoneName'][0]; + $types[$zoneName]['ReverseDN'] = $attrs['dn']; + }else{ + + /* Generate SOA entry */ + if(isset($attrs['sOARecord'][0])){ + $tmp = split("\ ",$attrs['sOARecord'][0]) ; + $tmp2 = array(); + $ar = array("0"=>"sOAprimary","1"=>"sOAmail","2"=>"sOAserial","3"=>"sOArefresh","4"=>"sOAretry","5"=>"sOAexpire","6"=>"sOAttl"); + + /* Assign soa vars */ + foreach($ar as $key => $name){ + if(isset($tmp[$key])){ + $types[$attrs['zoneName'][0]][$name] = $tmp[$key]; + }else{ + $types[$attrs['zoneName'][0]][$name] = ""; + } + } } - } - if(isset($tmp['sOARecord'])){ - $tmp2 = split("\ ",$tmp['sOARecord']); - unset($tmp['sOARecord']); - $tmp['sOARecord'] = array(); - $tmp['sOARecord']['sOAprimary'] = $tmp2[0]; - $tmp['sOARecord']['sOAmail'] = $tmp2[1]; - $tmp['sOARecord']['sOAserial'] = $tmp2[2]; - $tmp['sOARecord']['sOArefresh'] = $tmp2[3]; - $tmp['sOARecord']['sOAretry'] = $tmp2[4]; - $tmp['sOARecord']['sOAexpire'] = $tmp2[5]; - $tmp['sOARecord']['sOAttl'] = $tmp2[6]; - } + /* Set TTL value */ + if(isset($attrs['dNSTTL'][0])){ + $types[$attrs['zoneName'][0]]['dNSTTL'] = $attrs['dNSTTL'][0]; + } + + /* Set dns Class*/ + if(isset($attrs['dNSClass'][0])){ + $types[$attrs['zoneName'][0]]['dNSClass'] = $attrs['dNSClass'][0]; + } - $tmp['usedRecords'] = array(); - foreach($attrs2 as $name){ - if(isset($zone[$name])){ - for($i = 0 ; $i < $zone[$name]['count'] ; $i++ ){ - $tmp['usedRecords'][] = array("type"=> $name,"value"=>$zone[$name][$i]); + /* Set zone Name */ + if(isset($attrs['zoneName'][0])){ + $types[$attrs['zoneName'][0]]['zoneName'] = $attrs['zoneName'][0]; + } + + /* Set status */ + $types[$attrs['zoneName'][0]]['status'] ="edited"; + $types[$attrs['zoneName'][0]]['ReverseDN']= $attrs['dn']; + + /* Create list with all used records */ + foreach($this->RecordTypes as $name => $value){ + + /* If there is a record attribute */ + if(isset($attrs[$name])){ + + /* get all entries */ + for($i = 0 ; $i < $attrs[$value]['count']; $i ++){ + $types[$attrs['zoneName'][0]]['Records'][] =array("type" =>$name, + "inittype" =>$name, + "value" =>$attrs[$value][$i], + "status" =>"edited", + "dn" =>$attrs['dn']); + } } } } - $this->Zones[$zone['zoneName'][0]] = $tmp; } - if(count($this->Zones > 0)){ + + /* If there is at least one entry in this -> types, we have DNS enabled */ + $this->Zones = $types; + if(count($this->Zones) == 0){ + $this->is_account = false; + }else{ $this->is_account = true; } + + /* Store initally account settings */ + $this->DNSinitially_was_account = $this->is_account; } function execute() { - - print_a($this->Zones); - /* Call parent execute */ - plugin::execute(); + /* Call parent execute */ + plugin::execute(); /* Fill templating stuff */ $smarty= get_smarty(); @@ -155,72 +155,96 @@ class servdns extends plugin return ($display); } + if(isset($_POST['SaveZoneChanges'])){ + $this->dialog->save_object(); + + if(count($this->dialog->check())){ + foreach($this->dialog->check() as $msgs){ + print_red($msgs); + } + }else{ + $ret = $this->dialog->save(); + if($this->dialog->isNew == true){ + $this->Zones[$ret['zoneName']] = $ret; + $this->Zones[$ret['zoneName']] = "new"; + }else{ + + if(!$this->dialog->isNew){ + + /* Edited but not renamed */ + if($ret['zoneName'] == $this->dialog->InitiallyZoneName){ + $this->Zones[$ret['zoneName']] = $ret; + + }else{ + /* Edited and renamed, we have to check if we must delete the old entry from ldap */ + + if($this->Zones[$this->dialog->InitiallyZoneName]['status'] == "new"){ + /* this was a new entry (currently not saved to ldap) so we can simply unset the zone */ + unset($this->Zones[$this->dialog->InitiallyZoneName]); + + }elseif($this->Zones[$this->dialog->InitiallyZoneName]['status'] == "edited") { + $this->Zones[$this->dialog->InitiallyZoneName]['status'] = "deleted"; + } + $this->Zones[$ret['zoneName']] = $ret; + $this->Zones[$ret['zoneName']]['status'] = "new"; + } + }else{ + $this->Zones[$ret['zoneName']] = $ret; + $this->Zones[$ret['zoneName']]['status'] = "new"; + } + } + $this->dialog = NULL; + } + } + if(isset($_POST['CancelZoneChanges'])){ + $this->dialog = NULL; + } + /* Add empty new zone */ + if(isset($_POST['AddZone'])){ + $this->dialog = new servdnseditZone($this->config,$this->dn,$this->RecordTypes); + } + $once = false; foreach( $_POST as $name => $value){ if(preg_match("/^editZone_/",$name)&&!$once){ $once =true; $tmp = preg_replace("/^editZone_/","",$name); - $tmp = base64_decode(preg_replace("/_.*$/","...",$tmp)); - $this->editMode = $this->Zones[$tmp]; + $tmp = base64_decode(preg_replace("/_.*$/","",$tmp)); + $this->dialog= new servdnseditZone($this->config,$this->dn,$this->RecordTypes,$this->Zones[$tmp]); } } + if($this->dialog!= NULL){ + $this->dialog->save_object(); + $this->dialog->parent = $this; + return($this->dialog->execute()); + } - $smarty->assign("editMode",$this->editMode); - if($this->editMode){ - - foreach($this->attributes as $attrs){ - $smarty->assign($attrs,$this->editMode[$attrs]); - } - - foreach($this->editMode['sOARecord'] as $name => $value){ - $smarty->assign($name,$value); - } - $smarty->assign("records",""); - - }else{ - $ZoneList = new divSelectBox("dNSZones"); - $ZoneList -> SetHeight(254); - - $editImg = ""; - - foreach($this->Zones as $zone => $values ){ - $ZoneList->AddEntry(array(array("string" => $zone.str_replace("%s",base64_encode($zone),$editImg)))); - } - + /* Create Listbox with existing Zones */ + $ZoneList = new divSelectBox("dNSZones"); + $ZoneList -> SetHeight(254); - $smarty->assign("ZoneList",$ZoneList->DrawList()); - } + /* Add entries to divlist*/ + $editImg = ""; + foreach($this->Zones as $zone => $values ){ + if($values['status'] == "deleted") continue; + $ZoneList->AddEntry(array(array("string" => $zone.str_replace("%s",base64_encode($zone),$editImg)))); + } + /* Display tempalte */ + $smarty->assign("ZoneList",$ZoneList->DrawList()); $display.= $smarty->fetch(get_template_path('servdns.tpl', TRUE)); return($display); } function remove_from_parent() { - /* This cannot be removed... */ } /* Save data to object */ function save_object() { - //plugin::save_object(); - - if(!$this->editMode){return;} - - foreach($this->attributes as $attr){ - if(isset($_POST[$attr])){ - $this->editMode[$attr] = $_POST[$attr]; - } - } - - foreach($this->editMode['sOARecord'] as $name => $value){ - if(isset($_POST[$name])){ - $this->editMode['sOARecord'][$name] = $_POST[$name]; - } - } - } @@ -228,7 +252,6 @@ class servdns extends plugin function check() { $message= array(); - return ($message); } @@ -236,12 +259,64 @@ class servdns extends plugin /* Save to LDAP */ function save() { - plugin::save(); + return(true); +// plugin::save(); + foreach($this->Zones as $zone){ + $tmp = array(); + if($zone['status'] == "deleted"){ + echo "deleted"; + }elseif($zone['status'] == "new" ){ + echo "new"; + }elseif($zone['status'] == "edited"){ + echo "edit"; + }else{ + echo "undefined type"; + } + + //$tmp = $this->generate_LDAP_entries($tmp,$zone,$delete); + } + } + + function generate_LDAP_entries($tmp,$zone,$delete) + { + $delete = array(); - /* Optionally execute a command after we're done */ - #$this->handle_post_events($mode); + $tmp['objectClass'] = array("top","dNSZone"); + $tmp['dNSTTL'] = $zone['dNSTTL']; + $tmp['dNSClass'] = $zone['dNSClass']; + $tmp['relativeDomainName'] = $zone['relativeDomainName']; + + $str = ""; + foreach($zone['sOARecord'] as $name => $value){ + $str .= $value." "; + } + $tmp['sOARecord'] = $str; + + $dn = "zoneName=".$zone['zoneName'].",".$this->dn; + + /* Generate some attrs */ + $arr = array("SigRecord","KeyRecord","aAAARecord","nSRecord","iaFSDBRecord","mInfoRecord","hInfoRecord","mXRecord","mDRecord","tXTRecord", + "LocRecord","nXTRecord","sRVRecord","nAPTRRecord","kXRecord","certRecord","a6Record","dSRecord","sSHFPRecord","rRSIGRecord","nSECRecord"); + $aRecords = array(); + foreach($arr as $ar){ + foreach($zone['types'] as $type){ + if(($type['type'] == $ar)&&($type['status']!="deleted")){ + $tmp[$ar][] = $type['value']; + } + } + } + foreach($zone['types'] as $type){ + if(isset($type['inittype'])){ + if($type['type'] != $type['inittype']){ + $tmp[$type['inittype']] = array(); + } + } + } + return($tmp); } + + } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: diff --git a/plugins/admin/systems/class_servDNSeditZone.inc b/plugins/admin/systems/class_servDNSeditZone.inc new file mode 100644 index 000000000..6e79f46c3 --- /dev/null +++ b/plugins/admin/systems/class_servDNSeditZone.inc @@ -0,0 +1,217 @@ + "Eins ist toll", "zwei" => "Zwei ist noch besser"); + + /* attribute list for save action */ + var $ignore_account= TRUE; + var $attributes = array("zoneName","ReverseZone","dNSTTL","dNSClass", + "sOAprimary","sOAmail","sOAserial","sOArefresh","sOAretry","sOAexpire","sOAttl"); + var $objectclasses = array("whatever"); + + var $RecordTypes = array(); + + var $ReverseZone = ""; + var $ReverseDN = ""; + var $zoneName = ""; + var $dNSTTL = "7200"; + var $dNSClass = "IN"; + var $status = "new"; + + var $sOAprimary = ""; + var $sOAmail = ""; + var $sOAserial = ""; + var $sOArefresh = "3600"; + var $sOAretry = "1800"; + var $sOAexpire = ""; + var $sOAttl = "6400"; + + var $Records = array(); + + var $InitiallyZoneName = ""; + var $isNew = true; + + function servdnseditZone ($config, $dn= NULL,$recordtypes,$attrs = array()) + { + plugin::plugin ($config, $dn); + + /* All types with required attrs */ + $this->RecordTypes = $recordtypes; + + if(!count($attrs)){ + $this->InitiallyZoneName = ""; + $this->isNew = true; + }else{ + $this->InitiallyZoneName = $attrs['zoneName']; + $this->isNew = false; + + foreach($this->attributes as $value){ + $this->$value = $attrs[$value]; + } + $this->Records = $attrs['Records']; + } + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Handle Post events */ + $once = true; + foreach($_POST as $name => $value){ + + /* Delete record if requested */ + if((preg_match("/RemoveRecord_/",$name))&&($once)){ + $once = false; + $id= preg_replace("/RemoveRecord_/","",$name); + if($this->Records[$id]['status']!= "new"){ + $this->Records[$id]['status']= "deleted"; + }else{ + unset($this->Records[$id]); + } + } + } + + /* Add new Zonerecord */ + if(isset($_POST['AddNewRecord'])){ + $this->Records[] = array("type"=>"aRecord","inittype"=>"","value"=>"","status"=>"new"); + } + + /* Fill in values */ + foreach($this->attributes as $name){ + $smarty->assign($name,$this->$name); + } + + /* Assign records list */ + $smarty->assign("records",$this->generateRecordsList()); + + /* Display tempalte */ + $display.= $smarty->fetch(get_template_path('servdnseditzone.tpl', TRUE)); + return($display); + } + + function remove_from_parent() + { + } + + /* Save data to object */ + function save_object() + { + //plugin::save_object(); + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + + foreach($this->Records as $id => $value){ + if(isset($_POST['RecordTypeSelectedFor_'.$id])){ + $this->Records[$id]['type'] = $_POST['RecordTypeSelectedFor_'.$id]; + } + if(isset($_POST['RecordValue_'.$id])){ + $this->Records[$id]['value'] = $_POST['RecordValue_'.$id]; + } + } + } + + + /* Check supplied data */ + function check() + { + $message= array(); + /* Check if zoneName is already in use */ + $usedZones = $this->getUsedZoneNames(); + if(($this->isNew == true)||($this->zoneName != $this->InitiallyZoneName)){ + if(isset($usedZones[$this->zoneName])){ + $message[] =_("This zoneName is already in use"); + } + if(in_array($this->ReverseZone,$usedZones)){ + $message[] =_("This reverse zone is already in use"); + } + } + return ($message); + } + + function getUsedZoneNames() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=dNSZone)(relativeDomainName=@)(zoneName=*))",array("zoneName","tXTRecord")); + while($attr = $ldap->fetch()){ + if(preg_match("/in-addr\.arpa/",$attr['zoneName'][0])){ + $zn = preg_replace("/zoneName\=/","",$attr['tXTRecord'][0]); + $ret[$zn] = preg_replace("/\.in-addr\.arpa/","",$attr['zoneName'][0]); + }else{ + $ret[$attr['zoneName'][0]]=""; + } + } + return($ret); + } + + + /* Save to LDAP */ + function save() + { + $ret =array(); + foreach($this->attributes as $name){ + $ret[$name] = $this->$name; + } + $ret['Records'] = $this->Records; + return($ret); + } + + function generateRecordsList($changeStateForRecords="") + { + $changeStateForRecords = ""; + + $str = ""; + foreach($this->Records as $key => $entry){ + if($entry['status'] == "deleted") continue; + + $changeStateForRecords.= "changeState('RecordTypeSelectedFor_".$key."');\n"; + $changeStateForRecords.= "changeState('RecordValue_".$key."');\n"; + $changeStateForRecords.= "changeState('RemoveRecord_".$key."');\n"; + + $str.=" ". + " ". + " ". + " ". + ""; + } + + $str.= " ". + " ". + " ". + "
".$this->generateRecordListBox($entry['type'],"RecordTypeSelectedFor_".$key)."
". + " ". + "
"; + return($str); + } + + function generateRecordListBox($selected,$name) + { + $str = ""; + return($str); + } +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/plugins/admin/systems/servdns.tpl b/plugins/admin/systems/servdns.tpl index cef8a50d0..8e5f94b49 100644 --- a/plugins/admin/systems/servdns.tpl +++ b/plugins/admin/systems/servdns.tpl @@ -1,4 +1,3 @@ -{if $editMode == false}

{t}Zones{/t}

@@ -10,124 +9,3 @@
-{else} -

{t}Zone settings{/t}

- - - - - -
- - - - - -
{t}Zone name{/t} - -
-
- - - - - -
{t}Subnet{/t} - -
-
-

 

-

{t}SOA record for this zone{/t}

- - - - - -
- - - - - - - - - - - - - -
{t}Primary dns server for this zone{/t} - -
{t}Mail address{/t} - -
{t}Serialnumber (automatically generated){/t} - -
-
- - - - - - - - - - - - - - - - - -
{t}Refresh{/t} - -
{t}Retry{/t} - -
{t}Expire{/t} - -
{t}TTL{/t} - -
-
- -

 

-
- - - - - -
-

{t}Parameter{/t}

- - - - - - - - - -
{t}DNS TTL{/t} - - -
{t}DNS Class{/t} - - -
-
-

{t}Records{/t}

- - {$records} -
-
-
-

- - -

-
-{/if} diff --git a/plugins/admin/systems/servdnseditzone.tpl b/plugins/admin/systems/servdnseditzone.tpl new file mode 100644 index 000000000..9f7d5f120 --- /dev/null +++ b/plugins/admin/systems/servdnseditzone.tpl @@ -0,0 +1,119 @@ +

{t}Zone settings{/t}

+ + + + + +
+ + + + + +
{t}Zone name{/t} + +
+
+ + + + + +
{t}Subnet{/t} + +
+
+

 

+

{t}SOA record for this zone{/t}

+ + + + + +
+ + + + + + + + + + + + + +
{t}Primary dns server for this zone{/t} + +
{t}Mail address{/t} + +
{t}Serialnumber (automatically generated){/t} + +
+
+ + + + + + + + + + + + + + + + + +
{t}Refresh{/t} + +
{t}Retry{/t} + +
{t}Expire{/t} + +
{t}TTL{/t} + +
+
+ +

 

+
+ + + + + +
+

{t}Parameter{/t}

+ + + + + + + + + +
{t}DNS TTL{/t} + + +
{t}DNS Class{/t} + + +
+
+

{t}Records{/t}

+ + {$records} +
+
+
+

+ + +

+
-- 2.30.2