Marius Cramer
2014-03-13 7c2179f4b8604da1167b29ffb92041cf16fc4dbc
interface/lib/classes/validate_dns.inc.php
@@ -104,7 +104,7 @@
      }
      if(substr($field, -1) == '.' && $area == 'Name'){
         $soa = $app->db->queryOneRecord("SELECT * FROM soa WHERE id = ".$zoneid);
         $soa = $app->db->queryOneRecord("SELECT * FROM soa WHERE id = ".intval($zoneid));
         if(substr($field, (strlen($field) - strlen($soa['origin']))) != $soa['origin']) $error .= $desc." ".$app->tform->wordbook['error_out_of_zone']."<br>\r\n";
      }
@@ -267,7 +267,7 @@
      global $app, $conf;
      // increase serial
      $serial_date = substr($serial, 0, 8);
      $serial_date = $app->functions->intval(substr($serial, 0, 8));
      $count = $app->functions->intval(substr($serial, 8, 2));
      $current_date = date("Ymd");
      if($serial_date >= $current_date){
@@ -283,5 +283,49 @@
      }
      return $new_serial;
   }
   function validate_xfer($field_name, $field_value, $validator) {
      global $app;
      $errorMessage = '';
      if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
      if($validator['allowempty'] == 'y' && $field_value == '') {
         //* Do nothing
      } elseif ($field_value == 'any') {
         //* Do nothing
      } else {
         //* Check if its a IPv4 or IPv6 address
         if(isset($validator['separator']) && $validator['separator'] != '') {
            //* When the field may contain several IP addresses, split them by the char defined as separator
            $field_value_array = explode($validator['separator'], $field_value);
         } else {
            $field_value_array[] = $field_value;
         }
         foreach($field_value_array as $field_value) {
            $field_value = trim($field_value);
            if(function_exists('filter_var')) {
                  if(!filter_var($field_value, FILTER_VALIDATE_IP)) {
                  $errmsg = $validator['errmsg'];
                  $errorMessage .= $app->tform->lng($errmsg)."<br />\r\n";
               }
            } else {
               //* Check content with regex, if we use php < 5.2
               $ip_ok = 0;
               if(preg_match("/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i", $field_value)){
                  $ip_ok = 1;
               }
               if(preg_match("/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/", $field_value)){
                  $ip_ok = 1;
               }
               if($ip_ok == 0) {
                  $errmsg = $validator['errmsg'];
                  $errorMessage .= $app->tform->lng($errmsg)."<br />\r\n";
               }
            }
         }
      }
      return $errorMessage;
   }
}