Index: admin/settings/server.php =================================================================== RCS file: /cvsroot/moodle/moodle/admin/settings/server.php,v retrieving revision 1.26.2.29 diff -u -r1.26.2.29 server.php --- admin/settings/server.php 15 Apr 2009 03:52:18 -0000 1.26.2.29 +++ admin/settings/server.php 15 Dec 2010 14:28:02 -0000 @@ -150,10 +150,11 @@ $temp->add(new admin_setting_configcheckbox('slasharguments', get_string('slasharguments', 'admin'), get_string('configslasharguments', 'admin'), 1)); $temp->add(new admin_setting_heading('reverseproxy', get_string('reverseproxy', 'admin'), '', '')); $options = array( - 0 => 'HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, REMOTE_ADDR', + 0 => 'HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, HTTP_X_CLUSTER_CLIENT_IP, REMOTE_ADDR', GETREMOTEADDR_SKIP_HTTP_CLIENT_IP => 'HTTP_X_FORWARDED_FOR, REMOTE_ADDR', GETREMOTEADDR_SKIP_HTTP_X_FORWARDED_FOR => 'HTTP_CLIENT, REMOTE_ADDR', - GETREMOTEADDR_SKIP_HTTP_X_FORWARDED_FOR|GETREMOTEADDR_SKIP_HTTP_CLIENT_IP => 'REMOTE_ADDR'); + GETREMOTEADDR_SKIP_HTTP_X_CLUSTER_CLIENT_IP => 'HTTP_X_CLUSTER_CLIENT_IP, REMOTE_ADDR', // new + GETREMOTEADDR_SKIP_HTTP_X_CLUSTER_CLIENT_IP + 1 => 'REMOTE_ADDR'); $temp->add(new admin_setting_configselect('getremoteaddrconf', get_string('getremoteaddrconf', 'admin'), get_string('configgetremoteaddrconf', 'admin'), 0, $options)); $temp->add(new admin_setting_heading('webproxy', get_string('webproxy', 'admin'), get_string('webproxyinfo', 'admin'))); $temp->add(new admin_setting_configtext('proxyhost', get_string('proxyhost', 'admin'), get_string('configproxyhost', 'admin'), '', PARAM_HOST)); Index: lib/moodlelib.php =================================================================== RCS file: /cvsroot/moodle/moodle/lib/moodlelib.php,v retrieving revision 1.960.2.166 diff -u -r1.960.2.166 moodlelib.php --- lib/moodlelib.php 7 Dec 2010 17:56:04 -0000 1.960.2.166 +++ lib/moodlelib.php 15 Dec 2010 13:47:56 -0000 @@ -7836,6 +7836,7 @@ */ define('GETREMOTEADDR_SKIP_HTTP_CLIENT_IP', '1'); define('GETREMOTEADDR_SKIP_HTTP_X_FORWARDED_FOR', '2'); +define('GETREMOTEADDR_SKIP_HTTP_X_CLUSTER_CLIENT_IP', '3'); function getremoteaddr() { global $CFG; @@ -7846,6 +7847,7 @@ } else { $variablestoskip = $CFG->getremoteaddrconf; } + if (!($variablestoskip & GETREMOTEADDR_SKIP_HTTP_CLIENT_IP)) { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { return cleanremoteaddr($_SERVER['HTTP_CLIENT_IP']); @@ -7856,6 +7858,11 @@ return cleanremoteaddr($_SERVER['HTTP_X_FORWARDED_FOR']); } } + if (!($variablestoskip & GETREMOTEADDR_SKIP_HTTP_X_CLUSTER_CLIENT_IP)) { + if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP'])) { + return cleanremoteaddr($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']); + } + } if (!empty($_SERVER['REMOTE_ADDR'])) { return cleanremoteaddr($_SERVER['REMOTE_ADDR']); } else {