From ba10833bc5ae0afb51d2fc6609370865386678fb Mon Sep 17 00:00:00 2001 From: Christian Vogeley Date: Sun, 25 Jan 2015 04:16:28 +0100 Subject: Check allowed emails, also add blacklisting for not allowed emails: config:'system','not_allowed_email' --- include/network.php | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'include/network.php') diff --git a/include/network.php b/include/network.php index 170b77d7d..224d9d5e1 100644 --- a/include/network.php +++ b/include/network.php @@ -464,24 +464,47 @@ function allowed_email($email) { return false; $str_allowed = get_config('system','allowed_email'); - if(! $str_allowed) + $str_not_allowed = get_config('system','not_allowed_email'); + + if(! $str_allowed && ! $str_not_allowed) return true; - $found = false; - + $return = false; + $found_allowed = false; + $found_not_allowed = false; + $fnmatch = function_exists('fnmatch'); + $allowed = explode(',',$str_allowed); if(count($allowed)) { foreach($allowed as $a) { $pat = strtolower(trim($a)); - if(($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) { - $found = true; + if(($fnmatch && fnmatch($pat,$email)) || ($pat == $domain)) { + $found_allowed = true; break; } } } - return $found; + + $not_allowed = explode(',',$str_not_allowed); + + if(count($not_allowed)) { + foreach($not_allowed as $na) { + $pat = strtolower(trim($na)); + if(($fnmatch && fnmatch($pat,$email)) || ($pat == $domain)) { + $found_not_allowed = true; + break; + } + } + } + + if ($found_allowed) { + $return = true; + } elseif (!$str_allowed && !$found_not_allowed) { + $return = true; + } + return $return; } -- cgit v1.2.3