tbrehm
2012-04-05 e15295406e45c3f7944ed571dba8f099a9b5ac59
commit | author | age
4c2c36 1 <?php
B 2
3 /*
4 Copyright (c) 2008, Till Brehm, projektfarm Gmbh
5 All rights reserved.
6
7 Redistribution and use in source and binary forms, with or without modification,
8 are permitted provided that the following conditions are met:
9
10     * Redistributions of source code must retain the above copyright notice,
11       this list of conditions and the following disclaimer.
12     * Redistributions in binary form must reproduce the above copyright notice,
13       this list of conditions and the following disclaimer in the documentation
14       and/or other materials provided with the distribution.
15     * Neither the name of ISPConfig nor the names of its contributors
16       may be used to endorse or promote products derived from this software without
17       specific prior written permission.
18
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 require_once('../../lib/config.inc.php');
32 require_once('../../lib/app.inc.php');
33
34 //* Check permissions for module
35 $app->auth->check_module_permissions('dns');
36
24f7b7 37 $msg = '';
F 38 $error = '';
4c2c36 39
B 40 // Loading the template
41 $app->uses('tpl,validate_dns');
42 $app->tpl->newTemplate("form.tpl.htm");
43 $app->tpl->setInclude('content_tpl','templates/dns_import.htm');
44 $app->load_language_file('/web/dns/lib/lang/'.$_SESSION['s']['language'].'_dns_wizard.lng');
45
46 // import variables
47 $template_id = (isset($_POST['template_id']))?intval($_POST['template_id']):0;
48 $sys_groupid = (isset($_POST['client_group_id']))?intval($_POST['client_group_id']):0;
49 $domain = (isset($_POST['domain'])&&!empty($_POST['domain']))?$_POST['domain']:NULL;
50
51 // get the correct server_id
52 if($_SESSION['s']['user']['typ'] == 'admin') {
53     $server_id = (isset($_POST['server_id']))?intval($_POST['server_id']):1;
54 } else {
55     $client_group_id = $_SESSION["s"]["user"]["default_group"];
56     $client = $app->db->queryOneRecord("SELECT default_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
57     $server_id = $client["default_dnsserver"];
58 }
59
60
61 // Load the templates
62 $records = $app->db->queryAllRecords("SELECT * FROM dns_template WHERE visible = 'Y'");
63 $template_id_option = '';
64 $n = 0;
65 foreach($records as $rec){
66     $checked = ($rec['template_id'] == $template_id)?' SELECTED':'';
67     $template_id_option .= '<option value="'.$rec['template_id'].'"'.$checked.'>'.$rec['name'].'</option>';
68     if($n == 0 && $template_id == 0) $template_id = $rec['template_id'];
69     $n++;
70 }
71 unset($n);
72 $app->tpl->setVar("template_id_option",$template_id_option);
73
74 // If the user is administrator
75 if($_SESSION['s']['user']['typ'] == 'admin') {
76     
77     // Load the list of servers
78     $records = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE mirror_server_id = 0 AND dns_server = 1 ORDER BY server_name");
79     $server_id_option = '';
80     foreach($records as $rec){
81         $checked = ($rec['server_id'] == $server_id)?' SELECTED':'';
82         $server_id_option .= '<option value="'.$rec['server_id'].'"'.$checked.'>'.$rec['server_name'].'</option>';
83     }
84     $app->tpl->setVar("server_id",$server_id_option);
85     
86     // load the list of clients
87     $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
88     $clients = $app->db->queryAllRecords($sql);
89     $client_select = '';
90     if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
91     if(is_array($clients)) {
92         foreach( $clients as $client) {
93             $selected = ($client["groupid"] == $sys_groupid)?'SELECTED':'';
94             $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
95         }
96     }
97
98     $app->tpl->setVar("client_group_id",$client_select);
99 }
100
101 if ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
102     
103     // Get the limits of the client
104     $client_group_id = $_SESSION["s"]["user"]["default_group"];
105     $client = $app->db->queryOneRecord("SELECT client.client_id, contact_name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
106
107     
108     // load the list of clients
109     $sql = "SELECT groupid, name FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id'];
110     $clients = $app->db->queryAllRecords($sql);
111     $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$client['client_id']);
112     $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contact_name'].'</option>';
113     if(is_array($clients)) {
114         foreach( $clients as $client) {
115             $selected = ($client["groupid"] == $sys_groupid)?'SELECTED':'';
116             $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
117         }
118     }
119
120     $app->tpl->setVar("client_group_id",$client_select);
121 }
122
e15295 123 $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dns_import.lng';
T 124 include($lng_file);
125 $app->tpl->setVar($wb);
126
4c2c36 127 // Import the zone-file
B 128 //if(1=="1")
24f7b7 129 if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'])){
F 130     $valid_zone_file = FALSE;
131     
4c2c36 132     $sql = "SELECT server_name FROM `server` WHERE server_id=".intval($server_id)." OR mirror_server_id=".intval($server_id)." ORDER BY server_name ASC";
B 133     $servers = $app->db->queryAllRecords($sql);
134     for ($i=0;$i<count($servers);$i++)
135     {
136         if (substr($servers[$i]['server_name'],strlen($servers[$i]['server_name'])-1) != ".")
137         {
138             $servers[$i]['server_name'] .= ".";
139         }
140     }
141     $lines = file($_FILES['file']['tmp_name']);
24f7b7 142     
F 143     // Remove empty lines, comments, whitespace, tabs, etc.
144     $new_lines = array();
145     foreach($lines as $line){
146         $line = trim($line);
147         if ($line != '' && substr($line,0,1) != ';'){
148             if(strpos($line,";") !== FALSE) $line = substr($line,0,strpos($line,";"));
149             if(strpos($line,"(") !== FALSE) $line = substr($line,0,strpos($line,"("));
150             if(strpos($line,")") !== FALSE) $line = substr($line,0,strpos($line,")"));
151             $line = trim($line);
152             if ($line != ''){
153                 $sPattern = '/\s+/m';
154                 $sReplace = ' ';
155                 $new_lines[] = preg_replace($sPattern, $sReplace, $line);
156             }
157         }
158     }
159     unset($lines);
160     $lines = $new_lines;
161     unset($new_lines);
162     
4c2c36 163     //$lines = file("apriqot.se.txt");
B 164     $name = str_replace("txt","",$_FILES['file']['name']);
165     $name = str_replace("zone","",$name);
24f7b7 166
F 167     if ($domain !== NULL){
4c2c36 168         $name = $domain;
B 169     }
24f7b7 170     
F 171     if (substr($name,-1) != "."){
172         $name .= ".";
173     }
174     
175     $i = 0;
176     $origin_exists = FALSE;
177     $soa_array_key = -1;
178     $soa = array();
179     $soa['name'] = $name;
180     $r = 0;
181     $dns_rr = array();
182     foreach($lines as $line){
183     
184         $parts = explode(' ', $line);
185         
186         // make all elements lowercase
187         $new_parts = array();
188         foreach($parts as $part){
189             $new_parts[] = strtolower($part);
190         }
191         unset($parts);
192         $parts = $new_parts;
193         unset($new_parts);
194         
195         // if ORIGIN exists, overwrite $soa['name']
196         if($parts[0] == '$origin'){
197             $soa['name'] = $parts[1];
198             $origin_exists = TRUE;
199         }
200         // TTL
201         if($parts[0] == '$ttl'){
202             $soa['ttl'] = intval($parts[1]);
203         }
204         // SOA
205         if(in_array("soa", $parts)){
206             $soa['mbox'] = array_pop($parts);
207             //$soa['ns'] = array_pop($parts);
208             $soa['ns'] = $servers[0]['server_name'];
209             // if domain is part of SOA, overwrite $soa['name']
210             if($parts[0] != '@' && $parts[0] != 'in' && $parts[0] != 'soa' && $origin_exists === FALSE){
211                 $soa['name'] = $parts[0];
212             }
213             $soa_array_key = $i;
214             $valid_zone_file = TRUE;
215         }
216         // SERIAL
217         if($i == ($soa_array_key + 1)) $soa['serial'] = intval($parts[0]);
218         // REFRESH
219         if($i == ($soa_array_key + 2)) $soa['refresh'] = intval($parts[0]);
220         // RETRY
221         if($i == ($soa_array_key + 3)) $soa['retry'] = intval($parts[0]);
222         // EXPIRE
223         if($i == ($soa_array_key + 4)) $soa['expire'] = intval($parts[0]);
224         // MINIMUM
225         if($i == ($soa_array_key + 5)) $soa['minimum'] = intval($parts[0]);
226         // RESOURCE RECORDS
227         if($i > ($soa_array_key + 5)){
228             if(substr($parts[0],-1) == '.' || $parts[0] == '@' || ($parts[0] != 'a' && $parts[0] != 'aaaa' && $parts[0] != 'ns' && $parts[0] != 'cname' && $parts[0] != 'hinfo' && $parts[0] != 'mx' && $parts[0] != 'naptr' && $parts[0] != 'ptr' && $parts[0] != 'rp' && $parts[0] != 'srv' && $parts[0] != 'txt')){
229                 if(is_numeric($parts[1])){
230                     if($parts[2] == 'in'){
231                         $resource_type = $parts[3];
232                         $pkey = 3;
233                     } else {
234                         $resource_type = $parts[2];
235                         $pkey = 2;
236                     }
237                 } else {
238                     if($parts[1] == 'in'){
239                         $resource_type = $parts[2];
240                         $pkey = 2;
241                     } else {
242                         $resource_type = $parts[1];
243                         $pkey = 1;
244                     }
245                 }
246                 $dns_rr[$r]['type'] = $resource_type;
247                 if($parts[0] == '@' || $parts[0] == '.'){
248                     $dns_rr[$r]['name'] = $soa['name'];
249                 } else {
250                     $dns_rr[$r]['name'] = $parts[0];
251                 }
252                 if(is_numeric($parts[1])){
253                     $dns_rr[$r]['ttl'] = intval($parts[1]);
254                 } else {
255                     $dns_rr[$r]['ttl'] = $soa['ttl'];
256                 }
257                 switch ($resource_type) {
258                     case 'mx':
259                     case 'srv':
260                         $dns_rr[$r]['aux'] = intval($parts[$pkey+1]);
261                         $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+2));
262                         break;
25242a 263                     case 'txt':
F 264                         $dns_rr[$r]['aux'] = 0;
265                         $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
266                         if(substr($dns_rr[$r]['data'],0,1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],1);
267                         if(substr($dns_rr[$r]['data'],-1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],0,-1);
268                         break;
24f7b7 269                     default:
F 270                         $dns_rr[$r]['aux'] = 0;
271                         $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
272                 }
273             } else {
274                 // a 3600 IN A 1.2.3.4
275                 if(is_numeric($parts[1]) && $parts[2] == 'in' && ($parts[3] == 'a' || $parts[3] == 'aaaa' || $parts[3] == 'ns'|| $parts[3] == 'cname' || $parts[3] == 'hinfo' || $parts[3] == 'mx' || $parts[3] == 'naptr' || $parts[3] == 'ptr' || $parts[3] == 'rp' || $parts[3] == 'srv' || $parts[3] == 'txt')){
276                     $resource_type = $parts[3];
277                     $pkey = 3;
278                     $dns_rr[$r]['type'] = $resource_type;
279                     $dns_rr[$r]['name'] = $parts[0];
280                     $dns_rr[$r]['ttl'] = intval($parts[1]);
281                     switch ($resource_type) {
282                         case 'mx':
283                         case 'srv':
284                             $dns_rr[$r]['aux'] = intval($parts[$pkey+1]);
285                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+2));
25242a 286                             break;
F 287                         case 'txt':
288                             $dns_rr[$r]['aux'] = 0;
289                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
290                             if(substr($dns_rr[$r]['data'],0,1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],1);
291                             if(substr($dns_rr[$r]['data'],-1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],0,-1);
24f7b7 292                             break;
F 293                         default:
294                             $dns_rr[$r]['aux'] = 0;
295                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
296                     }
297                 } 
298                 // a IN A 1.2.3.4
299                 elseif($parts[1] == 'in' && ($parts[2] == 'a' || $parts[2] == 'aaaa' || $parts[2] == 'ns'|| $parts[2] == 'cname' || $parts[2] == 'hinfo' || $parts[2] == 'mx' || $parts[2] == 'naptr' || $parts[2] == 'ptr' || $parts[2] == 'rp' || $parts[2] == 'srv' || $parts[2] == 'txt')){
300                     $resource_type = $parts[2];
301                     $pkey = 2;
302                     $dns_rr[$r]['type'] = $resource_type;
303                     $dns_rr[$r]['name'] = $parts[0];
304                     $dns_rr[$r]['ttl'] = $soa['ttl'];
305                     switch ($resource_type) {
306                         case 'mx':
307                         case 'srv':
308                             $dns_rr[$r]['aux'] = intval($parts[$pkey+1]);
309                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+2));
310                             break;
25242a 311                         case 'txt':
F 312                             $dns_rr[$r]['aux'] = 0;
313                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
314                             if(substr($dns_rr[$r]['data'],0,1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],1);
315                             if(substr($dns_rr[$r]['data'],-1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],0,-1);
316                             break;
24f7b7 317                         default:
F 318                             $dns_rr[$r]['aux'] = 0;
319                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
320                     }
321                 } 
322                 // a 3600 A 1.2.3.4
323                 elseif(is_numeric($parts[1]) && ($parts[2] == 'a' || $parts[2] == 'aaaa' || $parts[2] == 'ns'|| $parts[2] == 'cname' || $parts[2] == 'hinfo' || $parts[2] == 'mx' || $parts[2] == 'naptr' || $parts[2] == 'ptr' || $parts[2] == 'rp' || $parts[2] == 'srv' || $parts[2] == 'txt')){
324                     $resource_type = $parts[2];
325                     $pkey = 2;
326                     $dns_rr[$r]['type'] = $resource_type;
327                     $dns_rr[$r]['name'] = $parts[0];
328                     $dns_rr[$r]['ttl'] = intval($parts[1]);
329                     switch ($resource_type) {
330                         case 'mx':
331                         case 'srv':
332                             $dns_rr[$r]['aux'] = intval($parts[$pkey+1]);
333                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+2));
25242a 334                             break;
F 335                         case 'txt':
336                             $dns_rr[$r]['aux'] = 0;
337                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
338                             if(substr($dns_rr[$r]['data'],0,1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],1);
339                             if(substr($dns_rr[$r]['data'],-1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],0,-1);
24f7b7 340                             break;
F 341                         default:
342                             $dns_rr[$r]['aux'] = 0;
343                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
344                     }
345                 } 
346                 // A 1.2.3.4
347                 // MX 10 mail
348                 // TXT "v=spf1 a mx ptr -all"
349                 else {
350                     $resource_type = $parts[0];
351                     $pkey = 0;
352                     $dns_rr[$r]['type'] = $resource_type;
353                     $dns_rr[$r]['name'] = $soa['name'];
354                     $dns_rr[$r]['ttl'] = $soa['ttl'];
355                     switch ($resource_type) {
356                         case 'mx':
357                         case 'srv':
358                             $dns_rr[$r]['aux'] = intval($parts[$pkey+1]);
359                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+2));
360                             break;
25242a 361                         case 'txt':
F 362                             $dns_rr[$r]['aux'] = 0;
363                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
364                             if(substr($dns_rr[$r]['data'],0,1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],1);
365                             if(substr($dns_rr[$r]['data'],-1) == '"') $dns_rr[$r]['data'] = substr($dns_rr[$r]['data'],0,-1);
366                             break;
24f7b7 367                         default:
F 368                             $dns_rr[$r]['aux'] = 0;
369                             $dns_rr[$r]['data'] = implode(' ',array_slice($parts, $pkey+1));
370                     }
371                 }
372             }
373             $dns_rr[$r]['type'] = strtoupper($dns_rr[$r]['type']);
374             if($dns_rr[$r]['type'] == 'NS' && $dns_rr[$r]['name'] == $soa['name']){
375                 unset($dns_rr[$r]);
376             }
377             $r++;
378         }
379         $i++;
380     }
381     
382     /*
4c2c36 383     $i = 0;
B 384     $r = 0;
385     $s = 0;
386     $dns_rr = array();
387     foreach ($lines as $line)
388     {
24f7b7 389         $line = trim($line);
F 390         if ($line != '' && substr($line,0,1) != ';' && substr($line,0,1) != '$')
4c2c36 391         {
B 392             $line = str_replace("\n",NULL,$line);
393             $i++;
394
395             // TODO - Find a better way to parse the SOA record. Lazy checking.
396             if ($i <= 7)
397             {
398                 if ($i > 1)
399                 {
400                     $s++;
401                     $line = str_replace("\t",NULL,$line);
402                     if (!empty($line))
403                     {
404                         print(strpos(";",$line));
405                         $line = substr($line,0,strpos($line,";"));
406                         if ($s == 1)
407                             $soa['serial'] = $line;
408                         else if ($s == 2)
409                             $soa['refresh'] = $line;
410                         else if ($s == 3)
411                             $soa['retry'] = $line;
412                         else if ($s == 4)
413                             $soa['expire'] = $line;
414                         else if ($s == 5)
24f7b7 415                             $soa['minimum'] = $line;
4c2c36 416
B 417                     }
418                 }
419                 else
420                 {
421                     $line = str_replace("\t",",",$line);
24f7b7 422                     $line = str_replace(" ",",",$line);
4c2c36 423                     $recs = explode(",",$line);
B 424
425                     foreach ($recs as $key => $rec)
426                     {
427                         $rec = trim($rec);
24f7b7 428                         if($rec == '') continue;
4c2c36 429                         //name    type    data    aux    ttl    active
B 430                         if ($key == 0)
431                         {
24f7b7 432                             if ($rec == '@')
4c2c36 433                             {
B 434                                 $rec = $name;
435                             }
436
437                             $soa['name'] = $rec;
438                         }
439
440                         if ($key != 0 && strtolower($rec) == 'soa')
441                         {
442                             $typekeys[$s] = $key;
443                         }
444                         else if ($key > $typekey[$r])
445                         {
24f7b7 446                             if ($rec != "" && $rec != "(")
4c2c36 447                             {
B 448                                 $rec = explode(" ",$rec);
449
450                                 $soa['ns'] = $servers[0]['server_name'];
451                                 $soa['mbox'] = $rec[1];
452                             }
453                         }
454                     }
455                 }
456             }
457             else
458             {
459                 $line = str_replace("\n","",trim($line));
460
461                 if (!empty($line))
462                 {
463
464                     preg_match_all('/(.*?)\s*IN\s*(A|CNAME|MX|TXT|NS|AAAA)\s*(.*)/',$line, $recs);
465
466                     if ($recs[1][0] == '@' || trim($recs[1][0]) == "")
467                     {
468                         $recs[1][0] = $name;
469                     }
470                     $dns_rr[$r]['name'] = $recs[1][0];
471                     $dns_rr[$r]['type'] = $recs[2][0];
472                     if (strtolower($dns_rr[$r]['type'])=='mx')
473                     {
474                         $recs[3][0] = str_replace(" ","\t",$recs[3][0]);
475                         $mx[$r] = explode("\t",$recs[3][0]);
476                         for ($m=1;$m<count($mx[$r]);$m++)
477                         {
478                             if (!empty($mx[$r][$m]))
479                                 $dns_rr[$r]['data'] = $mx[$r][$m];
480                         }
481                         
482                         $dns_rr[$r]['aux'] = $mx[$r][0];
483                     }
484                     else if (strtolower($dns_rr[$r]['type'])=='txt')
485                     {
486                         $dns_rr[$r]['data'] = substr($recs[3][0],1,(strlen($recs[3][0])-2));
487                     }
488                     else
489                     {
490                         $dns_rr[$r]['data'] = $recs[3][0];
491                     }
492
493                     if (strtolower($dns_rr[$r]['type'])=='ns' && strtolower($dns_rr[$r]['name'])==$name)
494                     {
495                         unset($dns_rr[$r]);
496                     }
497
498                     $r++;
499                 }
500             }
501
502         }
503     }
24f7b7 504     */
4c2c36 505
24f7b7 506     foreach ($servers as $server){
F 507         $dns_rr[$r]['name'] = $soa['name'];
508         $dns_rr[$r]['type'] = 'NS';
4c2c36 509         $dns_rr[$r]['data'] = $server['server_name'];
B 510         $dns_rr[$r]['aux'] = 0;
511         $r++;
512     }
24f7b7 513                     //print('<pre>');
F 514                     //print_r($dns_rr);
515                     //print('</pre>');
516                     
517                     
4c2c36 518     // Insert the soa record
B 519     $sys_userid = $_SESSION['s']['user']['userid'];
520     $origin = $app->db->quote($soa['name']);
521     $ns = $app->db->quote($soa['ns']);
522     $mbox = $app->db->quote($soa['mbox']);
523     $refresh = $app->db->quote($soa['refresh']);
524     $retry = $app->db->quote($soa['retry']);
525     $expire = $app->db->quote($soa['expire']);
24f7b7 526     $minimum = $app->db->quote($soa['minimum']);
4c2c36 527     $ttl = $app->db->quote($soa['ttl']);
B 528     $xfer = $app->db->quote('');
529     $serial = $app->db->quote(intval($soa['serial'])+1);
24f7b7 530     //print_r($soa);
F 531     //die();
532     if($valid_zone_file){
533         $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `origin`, `ns`, `mbox`, `serial`, `refresh`, `retry`, `expire`, `minimum`, `ttl`, `active`, `xfer`) VALUES
534         ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$origin', '$ns', '$mbox', '$serial', '$refresh', '$retry', '$expire', '$minimum', '$ttl', 'Y', '$xfer')";
535         $dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id');
4c2c36 536     
24f7b7 537         // Insert the dns_rr records
F 538         if(is_array($dns_rr) && $dns_soa_id > 0)
4c2c36 539         {
24f7b7 540             foreach($dns_rr as $rr)
F 541             {
542                 $insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `zone`, `name`, `type`, `data`, `aux`, `ttl`, `active`) VALUES
543                 ('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$dns_soa_id', '$rr[name]', '$rr[type]', '$rr[data]', '$rr[aux]', '$rr[ttl]', 'Y')";
544                 $dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id');
545             }
4c2c36 546         }
24f7b7 547         $msg .= $app->lng('zone_file_successfully_imported_txt');
F 548     } else {
549         $error .= $app->lng('error_no_valid_zone_file_txt');
4c2c36 550     }
24f7b7 551     //header('Location: /dns/dns_soa_edit.php?id='.$dns_soa_id);
e15295 552 } else {
T 553     if(isset($_FILES['file']['name'])) {
554         $error = $wb['no_file_uploaded_error'];
555     }
4c2c36 556 }
B 557
24f7b7 558
4c2c36 559 $app->tpl->setVar('msg',$msg);
B 560 $app->tpl->setVar('error',$error);
561
562 $app->tpl_defaults();
563 $app->tpl->pparse();
564
565
566 ?>