From 685e5b002cff1a26bf3a267543f1c01eb1a908d0 Mon Sep 17 00:00:00 2001 From: Brendan Heywood <brendan@catalyst-au.net> 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 <b>192.168.10.1</b>) which matches a single host; or partial address (such as <b>192.168.</b>) which matches any address starting with those numbers; or CIDR notation (such as <b>231.54.211.0/20</b>); or a range of IP addresses (such as <b>231.3.56.10-20</b>) 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 <b>192.168.10.1</b>) which matches a single host; or partial address (such as <b>192.168</b>) which matches any address starting with those numbers; or CIDR notation (such as <b>231.54.211.0/20</b>); or a range of IP addresses (such as <b>231.3.56.10-20</b>) 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'] = '<a href="http://www.geoplugin.com">geoPlugin</a> 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 <em>wildly incorrect</em> 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)); } } }