From 3c6ea9a3be26a67a717e4965ac8e6d8bb0e74127 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Sat, 09 Jan 2016 15:32:10 -0500
Subject: [PATCH] some more filter_var for ipv4 / ipv6

---
 interface/lib/classes/validate_dkim.inc.php |   30 ++++++++++++------------------
 1 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/interface/lib/classes/validate_dkim.inc.php b/interface/lib/classes/validate_dkim.inc.php
index 523c7c7..443fe76 100644
--- a/interface/lib/classes/validate_dkim.inc.php
+++ b/interface/lib/classes/validate_dkim.inc.php
@@ -29,7 +29,7 @@
  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
  @author Florian Schaal, info@schaal-24.de
- @copyrighth Florian Schaal, info@schaal-24.de
+ @copyright Florian Schaal, info@schaal-24.de
  */
 
 
@@ -57,25 +57,15 @@
 		}
 	}
 
-
-	/**
-	 * Validator function for DKIM Path
-	 * @return boolean - true when the dkim-path exists and is writeable
-	 */
-	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']);
-	}
-
-
 	/**
 	 * 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']);
+		if(is_array($field_value) && !empty($field_value)){
+			foreach($field_value as $field ) { if($field == 'DKIM') $dkim=true; }
+			if ($dkim && $field_value[0]!='DOMAIN') return $this->get_error($validator['errmsg']);
+		}
 	}
 
 
@@ -84,13 +74,17 @@
 	 *
 	 * @return boolean - true if $POST contains a real key-file
 	 */
-	function validate_post($key, $value) {
+	function validate_post($key, $value, $dkim_strength) {
+		$value=str_replace(array("\n", "-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE 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; }
+			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; }
+			if ( $dkim_strength == 1024 ) $range = "{812,816}";
+			if ( $dkim_strength == 2048 ) $range = "{1588,1592}";
+			if ( $dkim_strength == 4096 ) $range = "{3132,3136}";
+			if ( preg_match("/^[a-zA-Z0-9\/\+=]".$range."$/", $value ) === 1) return true; else return false;
 			break;
 		}
 	}

--
Gitblit v1.9.1