diff -r c72d6d51f3d3 -r c255196bc447 inc/dns.inc.php --- a/inc/dns.inc.php Wed Mar 12 20:45:56 2008 +0000 +++ b/inc/dns.inc.php Tue Mar 25 22:45:31 2008 +0000 @@ -43,129 +43,110 @@ $ip4 = false; $ip6 = false; - if(!in_array(strtoupper($type), $nocheck)) - { - - if(!is_valid_ip6($content)) - { - if(!is_valid_ip($content)) - { - if(!is_valid_hostname($content)) - { + if(!in_array(strtoupper($type), $nocheck)) { + if(!is_valid_ip6($content)) { + if(!is_valid_ip($content)) { + if(!is_valid_hostname($content)) { error(ERR_DNS_CONTENT); - } - else - { + return false; + } else { $hostname = true; } - } - else - { + } else { $ip4 = true; } - } - else - { + } else { $ip6 = true; } } // Prepare total hostname. - if($name == '*') - { + if ($name == '*') { $wildcard = true; } else { $wildcard = false; } - if ($name=="0") { - $name=$name.".".$domain; - } else { - $name = ($name) ? $name.".".$domain : $domain; - } +// TODO: Needs to be checked what this is good for. Since we started insert an array +// in functions like edit_record, "name"'s like "sub-fqdn.example.net" became +// "sub-fqdn.example.net.example.net". +// if ($name=="0") { +// $name=$name.".".$domain; +// } else { +// $name = ($name) ? $name.".".$domain : $domain; +// } if (preg_match('!@\.!i', $name)) { $name = str_replace('@.', '@', $name); } - - if(!$wildcard) - { - if(!is_valid_hostname($name)) - { + if(!$wildcard) { + if(!is_valid_hostname($name)) { error(ERR_DNS_HOSTNAME); + return false; } } // Check record type (if it exists in our allowed list. - if (!in_array(strtoupper($type), get_record_types())) - { + if (!in_array(strtoupper($type), get_record_types())) { error(ERR_DNS_RECORDTYPE); + return false; } // Start handling the demands for the functions. // Validation for IN A records. Can only have an IP. Nothing else. - if ($type == 'A' && !$ip4) - { + if ($type == 'A' && !$ip4) { error(ERR_DNS_IPV4); + return false; } - if ($type == 'AAAA' && !$ip6) - { + if ($type == 'AAAA' && !$ip6) { error(ERR_DNS_IPV6); + return false; } - if ($type == 'CNAME' && $hostname) - { - if(!is_valid_cname($name)) - { + if ($type == 'CNAME' && $hostname) { + if(!is_valid_cname($name)) { error(ERR_DNS_CNAME); + return false; } } - if ($type == 'NS') - { + if ($type == 'NS') { $status = is_valid_ns($content, $hostname); - if($status == -1) - { + if($status == -1) { error(ERR_DNS_NS_HNAME); + return false; } - elseif($status == -2) - { + elseif($status == -2) { error(ERR_DNS_NS_CNAME); + return false; } - // Otherwise its ok } - if ($type == 'SOA') - { + if ($type == 'SOA') { $status = is_valid_soa($content, $zoneid); - if($status == -1) - { + if($status == -1) { error(ERR_DNS_SOA_UNIQUE); - // Make nicer error - } - elseif($status == -2) - { + } elseif($status == -2) { error(ERR_DNS_SOA_NUMERIC); + return false; } } // HINFO and TXT require no validation. - if ($type == 'URL') - { - if(!is_valid_url($content)) - { + if ($type == 'URL') { + if(!is_valid_url($content)) { error(ERR_INV_URL); + return false; } } - if ($type == 'MBOXFW') - { - if(!is_valid_mboxfw($content)) - { + if ($type == 'MBOXFW') { + if(!is_valid_mboxfw($content)) { error(ERR_INV_EMAIL); + return false; } } @@ -177,36 +158,32 @@ // See if the prio field is valid and if we have one. // If we dont have one and the type is MX record, give it value '10' - if($type == 'NAPTR') - { + if($type == 'NAPTR') { } - if($type == 'MX') - { - if($hostname) - { + if($type == 'MX') { + if($hostname) { $status = is_valid_mx($content, $prio); - if($status == -1) - { + if($status == -1) { error(ERR_DNS_MX_CNAME); + return false; } - elseif($status == -2) - { + elseif($status == -2) { error(ERR_DNS_MX_PRIO); + return false; } + } else { + error( _('If you specify an MX record it must be a hostname.') ); // TODO make error + return false; } - else - { - error( _('If you specify an MX record it must be a hostname.') ); - } - } - else - { + } else { $prio=0; } // Validate the TTL, it has to be numeric. $ttl = (!isset($ttl) || !is_numeric($ttl)) ? $DEFAULT_TTL : $ttl; + + return true; }