From d13dc4ac8cebc2a71eb6fde930511809add33b8f Mon Sep 17 00:00:00 2001 From: mjollnir_ Date: Thu, 18 Aug 2005 01:44:47 +0000 Subject: [PATCH] merged from MOODLE_15_STABLE: Clean up IP addresses from getremoteaddr. Otherwise we sometimes get weird results from proxies and inserts into mdl_log and mdl_user fail --- lib/moodlelib.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 911d0453332..f853d2821f1 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -6334,17 +6334,24 @@ function unzip_show_status ($list,$removepath) { */ function getremoteaddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { - return $_SERVER['HTTP_CLIENT_IP']; + return cleanremoteaddr($_SERVER['HTTP_CLIENT_IP']); } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { - return $_SERVER['HTTP_X_FORWARDED_FOR']; + return cleanremoteaddr($_SERVER['HTTP_X_FORWARDED_FOR']); } if (!empty($_SERVER['REMOTE_ADDR'])) { - return $_SERVER['REMOTE_ADDR']; + return cleanremoteaddr($_SERVER['REMOTE_ADDR']); } return ''; } +/** + * Cleans a remote address ready to put into the log table + */ +function cleanremoteaddr($addr) { + return preg_replace('/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(.*)/','$1',$addr); +} + /** * html_entity_decode is only supported by php 4.3.0 and higher * so if it is not predefined, define it here