MDL-57404 admin_settings: Allow comments in ip block

This adds the ability to to add comments to ip lists in moodle.

Currently, the configiplist textentry box does not allow the user to annotate
the IP addresses defined.  For example, I'd like to be able to define:
 192.168.1.1     # London office
 10.1.1.1        # New york office
 118.209.246.240 # My home IP

This would allow me to revisit this list after a few months, and remove
IP addresses that are no longer required - without having to manually confirm
each IP address
This commit is contained in:
Evan Giles 2018-05-03 08:59:48 +10:00
parent 9e7c397889
commit 53007faad1
3 changed files with 9 additions and 7 deletions

View File

@ -631,7 +631,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, and text following a "#" character 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.

View File

@ -3614,14 +3614,15 @@ class admin_setting_configiplist extends admin_setting_configtextarea {
*/
public function validate($data) {
if(!empty($data)) {
$ips = explode("\n", $data);
$lines = explode("\n", $data);
} else {
return true;
}
$result = true;
$badips = array();
foreach($ips as $ip) {
$ip = trim($ip);
foreach ($lines as $line) {
$tokens = explode('#', $line);
$ip = trim($tokens[0]);
if (empty($ip)) {
continue;
}

View File

@ -8888,7 +8888,7 @@ function cleardoubleslashes ($path) {
}
/**
* Is current ip in give list?
* Is the current ip in a given list?
*
* @param string $list
* @return bool
@ -8903,8 +8903,9 @@ function remoteip_in_list($list) {
}
$list = explode("\n", $list);
foreach ($list as $subnet) {
$subnet = trim($subnet);
foreach ($list as $line) {
$tokens = explode('#', $line);
$subnet = trim($tokens[0]);
if (address_in_subnet($clientip, $subnet)) {
$inlist = true;
break;