From 685e5b002cff1a26bf3a267543f1c01eb1a908d0 Mon Sep 17 00:00:00 2001 From: Brendan Heywood Date: Wed, 13 Jul 2016 14:50:53 +1000 Subject: [PATCH] MDL-55207 adminlib: Improve help and validation errors for configiplist --- lang/en/admin.php | 3 ++- lib/adminlib.php | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lang/en/admin.php b/lang/en/admin.php index eafa5604642..58448b6cf56 100644 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -594,7 +594,7 @@ $string['invalidsection'] = 'Invalid section.'; $string['invaliduserchangeme'] = 'Username "changeme" is reserved -- you cannot create an account with it.'; $string['ipblocked'] = 'This site is not available currently.'; $string['ipblocker'] = 'IP blocker'; -$string['ipblockersyntax'] = 'Put every entry on one line. Valid entries are either full IP address (such as 192.168.10.1) which matches a single host; or partial address (such as 192.168.) which matches any address starting with those numbers; or CIDR notation (such as 231.54.211.0/20); or a range of IP addresses (such as 231.3.56.10-20) where the range applies to the last part of the address. Text domain names (like \'example.com\') are not supported. Blank lines are ignored.'; +$string['ipblockersyntax'] = 'Put every entry on one line. Valid entries are either full IP address (such as 192.168.10.1) which matches a single host; or partial address (such as 192.168) which matches any address starting with those numbers; or CIDR notation (such as 231.54.211.0/20); or a range of IP addresses (such as 231.3.56.10-20) where the range applies to the last part of the address. Text domain names (like \'example.com\') are not supported. Blank lines are ignored.'; $string['iplookup'] = 'IP address lookup'; $string['iplookupgeoplugin'] = 'geoPlugin service is currently being used to look up geographical information. For more accurate results we recommend installing a local copy of the MaxMind GeoLite database.'; $string['iplookupinfo'] = 'By default Moodle uses the free online NetGeo (The Internet Geographic Database) server to lookup location of IP addresses, unfortunately this database is not maintained anymore and may return wildly incorrect data. @@ -1173,6 +1173,7 @@ $string['userquota'] = 'User quota'; $string['usesitenameforsitepages'] = 'Use site name for site pages'; $string['usetags'] = 'Enable tags functionality'; $string['validateerror'] = 'This value is not valid'; +$string['validateiperror'] = 'These IP addresses are invalid: {$a}'; $string['verifychangedemail'] = 'Restrict domains when changing email'; $string['warningcurrentsetting'] = 'Invalid current value: {$a}'; $string['warningiconvbuggy'] = 'Your version of the iconv library does not support the //IGNORE modifier. You should install the mbstring extension which can be used instead for cleaning strings containing invalid UTF-8 characters.'; diff --git a/lib/adminlib.php b/lib/adminlib.php index b5217e5925e..8a2b6db09f2 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -3526,21 +3526,24 @@ class admin_setting_configiplist extends admin_setting_configtextarea { return true; } $result = true; + $badips = array(); foreach($ips as $ip) { $ip = trim($ip); + if (empty($ip)) { + continue; + } if (preg_match('#^(\d{1,3})(\.\d{1,3}){0,3}$#', $ip, $match) || preg_match('#^(\d{1,3})(\.\d{1,3}){0,3}(\/\d{1,2})$#', $ip, $match) || preg_match('#^(\d{1,3})(\.\d{1,3}){3}(-\d{1,3})$#', $ip, $match)) { - $result = true; } else { $result = false; - break; + $badips[] = $ip; } } if($result) { return true; } else { - return get_string('validateerror', 'admin'); + return get_string('validateiperror', 'admin', join(', ', $badips)); } } } -- 2.43.0