MDL-48766 iplookup: Update to geoip2 db to support ipv6
[moodle.git] / iplookup / index.php
index 07981ed..c285ee7 100644 (file)
@@ -33,7 +33,7 @@ if (isguestuser()) {
     throw new require_login_exception('Guests are not allowed here.');
 }
 
     throw new require_login_exception('Guests are not allowed here.');
 }
 
-$ip   = optional_param('ip', getremoteaddr(), PARAM_HOST);
+$ip   = optional_param('ip', getremoteaddr(), PARAM_RAW);
 $user = optional_param('user', 0, PARAM_INT);
 
 if (isset($CFG->iplookup)) {
 $user = optional_param('user', 0, PARAM_INT);
 
 if (isset($CFG->iplookup)) {
@@ -48,15 +48,11 @@ $PAGE->set_context(context_system::instance());
 $info = array($ip);
 $note = array();
 
 $info = array($ip);
 $note = array();
 
-if (!preg_match('/(^\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $ip, $match)) {
+if (cleanremoteaddr($ip) === false) {
     print_error('invalidipformat', 'error');
 }
 
     print_error('invalidipformat', 'error');
 }
 
-if ($match[1] > 255 or $match[2] > 255 or $match[3] > 255 or $match[4] > 255) {
-    print_error('invalidipformat', 'error');
-}
-
-if ($match[1] == '127' or $match[1] == '10' or ($match[1] == '172' and $match[2] >= '16' and $match[2] <= '31') or ($match[1] == '192' and $match[2] == '168')) {
+if (!ip_is_public($ip)) {
     print_error('iplookupprivate', 'error');
 }
 
     print_error('iplookupprivate', 'error');
 }