| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 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']); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | * |
| | | * @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; |
| | | } |
| | | } |