tbrehm
2009-03-09 02198210456a9f1ef4fddf89f96cc67a2e3e1fa7
interface/lib/classes/validate_dns.inc.php
@@ -1,7 +1,7 @@
<?php
/*
Copyright (c) 2005, Till Brehm, Falko Timme, projektfarm Gmbh
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -28,11 +28,8 @@
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* DNS validation
*
* @author Falko Timme <ft@falkotimme.com>
* @copyright Copyright &copy; 2005, Falko Timme
/*
    DNS validation
*/
class validate_dns {
@@ -76,8 +73,11 @@
  $parts = explode(".", $field);
  $i = 0;
  $empty = 0;
  foreach ($parts as $part){
    $i++;
    if(trim($part) == '') $empty += 1;
    if(strlen($part) > 63) $error .= $desc." ".$app->tform->wordbook['error_63_characters']."<br>\r\n";
@@ -95,6 +95,12 @@
        $error .= $desc." ".$app->tform->wordbook['error_no_wildcard_allowed']."<br>\r\n";
      }
    }
  }
  if(substr($field, -1) == '.'){
    if($i > 2 && $empty > 1) $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
  } else {
    if($empty > 0 && $field != '') $error .= $desc." ".$app->tform->wordbook['error_invalid_characters']."<br>\r\n";
  }
  if(substr($field, -1) == '.' && $area == 'Name'){
@@ -130,8 +136,8 @@
  $weight = $fields[0];
  $port = $fields[1];
  $target = $fields[2];
  if($weight < 0 || $weight > 65535) $error .= $app->tform->wordbook['weight_txt']." (\"<i>" . htmlentities($weight)."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
  if ($port < 0 || $port > 65535) $error .= $app->tform->wordbook['port_txt']." (\"<i>".htmlentities($port)."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
  if($weight < 0 || $weight > 65535) $error .= $app->tform->wordbook['weight_txt']." (\"<i>" . htmlentities($weight,ENT_QUOTES,$conf["html_content_encoding"])."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
  if($port < 0 || $port > 65535) $error .= $app->tform->wordbook['port_txt']." (\"<i>".htmlentities($port,ENT_QUOTES,$conf["html_content_encoding"])."</i>\") ".$app->tform->wordbook['error_srv_out_of_range']."<br>\r\n";
  $error .= $this->validate_field($target, "SRV target", $zoneid, 0);
@@ -176,7 +182,7 @@
    } else {
      for($n = 0; $n < 4; $n++){
        $q = $ip_parts[$n];
        if(!is_numeric($q) || (int)$q < 0 || (int)$q > 255) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_a']."<br>\r\n";
        if(!is_numeric($q) || (int)$q < 0 || (int)$q > 255 || trim($q) !== $q) $error .= $app->tform->wordbook['data_txt']." ".$app->tform->wordbook['error_a']."<br>\r\n";
      }
    }
    $rr['data'] = (int)$ip_parts[0].".".(int)$ip_parts[1].".".(int)$ip_parts[2].".".(int)$ip_parts[3];
@@ -197,6 +203,7 @@
    break;
  case "MX":
    $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
    $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
    break;
  case "NS":
    $error .= $this->validate_field($rr['data'], 'Data', $rr['zone'], 0);
@@ -210,12 +217,11 @@
    break;
  case "SRV":
    $error .= $this->validate_srv_data($rr['data'], $rr['zone']);
    $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
    break;
  case "TXT":
    break;
  }
  $error .= $this->is_integer($rr['aux'], $app->tform->wordbook['aux_txt'], 1);
  $error .= $this->is_integer($rr['ttl'], $app->tform->wordbook['ttl_txt']);
@@ -257,4 +263,25 @@
  return $error;
}
function increase_serial($serial){
  global $app, $conf;
  // increase serial
  $serial_date = substr($serial, 0, 8);
  $count = intval(substr($serial, 8, 2));
  $current_date = date("Ymd");
  if($serial_date >= $current_date){
    $count += 1;
    if ($count > 99) {
        $serial_date += 1;
        $count = 0;
    }
    $count = str_pad($count, 2, "0", STR_PAD_LEFT);
    $new_serial = $serial_date.$count;
  } else {
    $new_serial = $current_date.'01';
  }
  return $new_serial;
}
}