From 52e64cb88d40e50caade8edaaf338a6bce393190 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Mon, 19 Jan 2009 12:53:12 -0500 Subject: [PATCH] Fixed DNS-A IP regex. --- interface/lib/classes/validate_dns.inc.php | 32 +++++++++++++++++++++----------- 1 files changed, 21 insertions(+), 11 deletions(-) diff --git a/interface/lib/classes/validate_dns.inc.php b/interface/lib/classes/validate_dns.inc.php index 2c6255f..4606a0c 100644 --- a/interface/lib/classes/validate_dns.inc.php +++ b/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 © 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]; @@ -264,10 +270,14 @@ $serial_date = substr($serial, 0, 8); $count = intval(substr($serial, 8, 2)); $current_date = date("Ymd"); - if($serial_date == $current_date){ + 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 = $current_date.$count; + $new_serial = $serial_date.$count; } else { $new_serial = $current_date.'01'; } -- Gitblit v1.9.1