mrtnzlml
2013-07-26 488092e5e892dc07aa847ddeda42dab2c9513611
interface/lib/classes/validate_dkim.inc.php
@@ -42,19 +42,38 @@
    
       /* Validator function for private DKIM-Key */
       function check_private_key($field_name, $field_value, $validator) {
      $dkim_enabled=$_POST['dkim'];
      if ($dkim_enabled == 'y') {
         if (empty($field_value)) return $this->get_error($validator['errmsg']);
         exec('echo "'.$field_value.'"|openssl rsa -check',$output,$result);
         if($result != 0) return $this->get_error($validator['errmsg']);
      }
   }
      $dkim_enabled=$_POST['dkim'];
      if ($dkim_enabled == 'y') {
         if (empty($field_value)) return $this->get_error($validator['errmsg']);
         exec('echo '.escapeshellarg($field_value).'|openssl rsa -check',$output,$result);
         if($result != 0) return $this->get_error($validator['errmsg']);
      }
   }
   /* Validator function for DKIM Path */
   function check_dkim_path($field_name, $field_value, $validator) {
      if(empty($field_value)) return $this->get_error($validator['errmsg']);
      if (substr(sprintf('%o', fileperms($field_value)),-3) <= 600)
         return $this->get_error($validator['errmsg']);
   }
}
         return $this->get_error($validator['errmsg']);
   }
   /* Check function for DNS-Template */
   function check_template($field_name, $field_value, $validator) {
      $dkim=false;
      foreach($field_value as $field ) { if($field == 'DKIM') $dkim=true; }
      if ($dkim && $field_value[0]!='DOMAIN') return $this->get_error($validator['errmsg']);
   }
   /* Validator function for $_POST */
   function validate_post($key,$value) {
      switch ($key) {
         case 'public':
            if (preg_match("/(^-----BEGIN PUBLIC KEY-----)[a-zA-Z0-9\r\n\/\+=]{1,221}(-----END PUBLIC KEY-----(\n|\r)$)/",$value) === 1) { return true; } else { return false; }
         break;
         case 'private':
            if (preg_match("/(^-----BEGIN RSA PRIVATE KEY-----)[a-zA-Z0-9\r\n\/\+=]{1,850}(-----END RSA PRIVATE KEY-----(\n|\r)$)/",$value) === 1) { return true; } else { return false; }
         break;
      }
   }
}