Code

updated tempalte
[gosa.git] / plugins / admin / systems / class_servDNS.inc
1 <?php
3 class servdns extends plugin
4 {
5   /* CLI vars */
6   var $cli_summary= "Manage server basic objects";
7   var $cli_description= "Some longer text\nfor help";
8   var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
10   /* attribute list for save action */
11   var $ignore_account= TRUE;
12   var $attributes= array("zoneName","relativeDomainName","dNSTTL","dNSClass","sOARecord"); 
13   var $objectclasses= array("whatever");
15   var $RecordTypes = array();
16   var $usedRecords = array();
18   var $Zones = array();
19   var $editMode = false;
21   function servdns ($config, $dn= NULL)
22   {
23     plugin::plugin ($config, $dn);
24     
25     $RecordTypes['ARecord']     ['name']  ="A Record";
26     $RecordTypes['ARecord']     ['type']  ="string";
27     $RecordTypes['MDRecord']    ['name']  ="MD Record";
28     $RecordTypes['MDRecord']    ['type']  ="string";
29     $RecordTypes['MXRecord']    ['name']  ="MX Record";
30     $RecordTypes['MXRecord']    ['type']  ="string";
31     $RecordTypes['NSRecord']    ['name']  ="NS Record";
32     $RecordTypes['NSRecord']    ['type']  ="string";
33     $RecordTypes['CNAMERecord'] ['name']  ="CNAME Record";
34     $RecordTypes['CNAMERecord'] ['type']  ="string";
35     $RecordTypes['PTRRecord']   ['name']  ="PTR Record";
36     $RecordTypes['PTRRecord']   ['type']  ="string";
37     $RecordTypes['HINFORecord'] ['name']  ="HINFO Record";
38     $RecordTypes['HINFORecord'] ['type']  ="string";
39     $RecordTypes['MINFORecord'] ['name']  ="MINFO Record";
40     $RecordTypes['MINFORecord'] ['type']  ="string";
41     $RecordTypes['TXTRecord']   ['name']  ="TXT Record";
42     $RecordTypes['TXTRecord']   ['type']  ="string";
43     $RecordTypes['AFSDBRecord'] ['name']  ="AFSDB Record";
44     $RecordTypes['AFSDBRecord'] ['type']  ="string";
45     $RecordTypes['SIGRecord']   ['name']  ="SIG Record";
46     $RecordTypes['SIGRecord']   ['type']  ="string";
47     $RecordTypes['KEYRecord']   ['name']  ="KEY Record";
48     $RecordTypes['KEYRecord']   ['type']  ="string";
49     $RecordTypes['AAAARecord']  ['name']  ="AAAA Record";
50     $RecordTypes['AAAARecord']  ['type']  ="string";
51     $RecordTypes['LOCRecord']   ['name']  ="LOC Record";
52     $RecordTypes['LOCRecord']   ['type']  ="string";
53     $RecordTypes['NXTRecord']   ['name']  ="NXT Record";
54     $RecordTypes['NXTRecord']   ['type']  ="string";
55     $RecordTypes['SRVRecord']   ['name']  ="SRV Record";
56     $RecordTypes['SRVRecord']   ['type']  ="string";
57     $RecordTypes['NAPTRRecord'] ['name']  ="NAPTR Record";
58     $RecordTypes['NAPTRRecord'] ['type']  ="string";
59     $RecordTypes['KXRecord']    ['name']  ="KX Record";
60     $RecordTypes['KXRecord']    ['type']  ="string";
61     $RecordTypes['CERTRecord']  ['name']  ="CERT Record";
62     $RecordTypes['CERTRecord']  ['type']  ="string";
63     $RecordTypes['A6Record']    ['name']  ="A6 Record";
64     $RecordTypes['A6Record']    ['type']  ="string";
65     $RecordTypes['DNAMERecord'] ['name']  ="DBNAME Record";
66     $RecordTypes['DNAMERecord'] ['type']  ="string";
67     $RecordTypes['DSRecord']    ['name']  ="DS Record";
68     $RecordTypes['DSRecord']    ['type']  ="string";
69     $RecordTypes['SSHFPRecord'] ['name']  ="SSHFP Record";
70     $RecordTypes['SSHFPRecord'] ['type']  ="string";
71     $RecordTypes['RRSIGRecord'] ['name']  ="RRSIG Record";
72     $RecordTypes['RRSIGRecord'] ['type']  ="string";
73     $RecordTypes['NSECRecord']  ['name']  ="NSEC Record";
74     $RecordTypes['NSECRecord']  ['type']  ="string";
75     $RecordTypes['mXRecord']  ['name']  ="MX Record";
76     $RecordTypes['mXRecord']  ['type']  ="string";
77     $RecordTypes['nSRecord']  ['name']  ="nS Record";
78     $RecordTypes['nSRecord']  ['type']  ="string";
80     $this->RecordTypes = $RecordTypes;
82     $attrs  = $this->attributes;
83     foreach($RecordTypes as $name => $att){
84       $attrs2[] = $name;
85     } 
86     $attrs3 = array_merge($attrs,$attrs2);
88     $ldap = $this->config->get_ldap_link();
89     $ldap->cd($this->dn);
90     $ldap->search("(&(objectClass=dNSZone)(sOARecord=*))",$attrs3);
91     while($zone = $ldap->fetch()){
92       $tmp = array();
93       foreach($attrs as $att){
94         if(isset($zone[$att]['count'])&&(is_array($zone[$att])))
95         unset($zone[$att]['count']);
96         
97         if(isset($zone[$att])){ 
98           $tmp[$att] = $zone[$att][0];
99         }else{
100           $tmp[$att] = "";
101         }
102       }
104       if(isset($tmp['sOARecord'])){
105         $tmp2 = split("\ ",$tmp['sOARecord']);
106         unset($tmp['sOARecord']);
107         $tmp['sOARecord'] = array();
108         $tmp['sOARecord']['sOAprimary'] = $tmp2[0];
109         $tmp['sOARecord']['sOAmail']    = $tmp2[1];
110         $tmp['sOARecord']['sOAserial']  = $tmp2[2];
111         $tmp['sOARecord']['sOArefresh'] = $tmp2[3];
112         $tmp['sOARecord']['sOAretry']   = $tmp2[4];
113         $tmp['sOARecord']['sOAexpire']  = $tmp2[5];
114         $tmp['sOARecord']['sOAttl']     = $tmp2[6];
115       }
117       $tmp['usedRecords'] = array();
118       foreach($attrs2 as $name){
119         if(isset($zone[$name])){
120           for($i = 0 ; $i < $zone[$name]['count'] ; $i++ ){
121             $tmp['usedRecords'][] =  array("type"=> $name,"value"=>$zone[$name][$i]);
122           }
123         }
124       }
125       $this->Zones[$zone['zoneName'][0]] = $tmp;
126     }
127     if(count($this->Zones > 0)){
128       $this->is_account = true;
129     }
130   }
132   function execute()
133   {
134         /* Call parent execute */
135         plugin::execute();
137     /* Fill templating stuff */
138     $smarty= get_smarty();
139     $display= "";
141     /* Do we need to flip is_account state? */
142     if (isset($_POST['modify_state'])){
143       $this->is_account= !$this->is_account;
144     }
146     /* Show tab dialog headers */
147     if ($this->is_account){
148       $display= $this->show_header(_("Remove DNS service"),
149           _("This server has DNS features enabled. You can disable them by clicking below."));
150     } else {
151       $display= $this->show_header(_("Add DNS service"),
152           _("This server has DNS features disabled. You can enable them by clicking below."));
153       return ($display);
154     }
156     $once = false;
157     foreach( $_POST as $name => $value){
158       if(preg_match("/^editZone_/",$name)&&!$once){
159         $once =true;
160         $tmp = preg_replace("/^editZone_/","",$name);
161         $tmp = base64_decode(preg_replace("/_.*$/","...",$tmp));
162         $this->editMode = $this->Zones[$tmp];
163       }
164     }
167     $smarty->assign("editMode",$this->editMode);
168     if($this->editMode){
170       foreach($this->attributes as $attrs){
171         $smarty->assign($attrs,$this->editMode[$attrs]);
172       }
173       
174       foreach($this->editMode['sOARecord'] as $name => $value){
175         $smarty->assign($name,$value);
176       }
177       $smarty->assign("records","");
179     }else{
180       $ZoneList = new divSelectBox("dNSZones");
181       $ZoneList -> SetHeight(254);
183       $editImg = "<input type='image' src='images/edit.png' name='editZone_%s'>";
185       foreach($this->Zones as $zone => $values ){
186         $ZoneList->AddEntry(array(array("string" => $zone.str_replace("%s",base64_encode($zone),$editImg))));
187       }    
190       $smarty->assign("ZoneList",$ZoneList->DrawList());
191     }
193     $display.= $smarty->fetch(get_template_path('servdns.tpl', TRUE));
194     return($display);
195   }
197   function remove_from_parent()
198   {
199     /* This cannot be removed... */
200   }
203   /* Save data to object */
204   function save_object()
205   {
206     //plugin::save_object();
208     if(!$this->editMode){return;}
210     foreach($this->attributes as $attr){
211       if(isset($_POST[$attr])){
212         $this->editMode[$attr] = $_POST[$attr];
213       }
214     }
216     foreach($this->editMode['sOARecord'] as $name => $value){
217       if(isset($_POST[$name])){
218         $this->editMode['sOARecord'][$name] = $_POST[$name];
219       }
220     }
222   }
225   /* Check supplied data */
226   function check()
227   {
228     $message= array();
230     return ($message);
231   }
234   /* Save to LDAP */
235   function save()
236   {
237     plugin::save();
239     /* Optionally execute a command after we're done */
240     #$this->handle_post_events($mode);
241   }
245 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
246 ?>