[patch]Adres komputera użytkownika vs Proxy
Ponieważ przy włączonym proxy lms wykrywał adres połączenia serwera proxy, a nie usera to poprawilem to. Powinno juz dzialac w kazdym, nawet egzotycznym przypadku korzystania z proxy. zostawilem tez zmienna $proxy przechowujaca adres serwera proxy, moze sie do czegos przyda developerom.
Pozdrawiam
Jerzy Kołosowski aka JPrezes
Index: lib/Auth.class.php =================================================================== RCS file: /home/cvsroot/lms/lib/Auth.class.php,v retrieving revision 1.11 diff -u -r1.11 Auth.class.php --- lib/Auth.class.php 17 Aug 2005 16:38:36 -0000 1.11 +++ lib/Auth.class.php 6 Nov 2005 13:00:33 -0000 @@ -46,8 +46,24 @@ { $this->DB = &$DB; $this->SESSION = &$SESSION; - $this->ip = str_replace('::ffff:', '', $_SERVER['REMOTE_ADDR']); + if ($_SERVER['HTTP_X_FORWARDED_FOR']) { + if ($_SERVER['HTTP_CLIENT_IP']) { + $proxy = $_SERVER['HTTP_CLIENT_IP']; + } else { + $proxy = $_SERVER['REMOTE_ADDR']; + } + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + } else { + if ($_SERVER['HTTP_CLIENT_IP']) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } else { + $ip = $_SERVER['REMOTE_ADDR']; + } + } + + $this->ip = str_replace('::ffff:', '', $ip); + if(isset($_GET['override'])) $loginform = $_GET['loginform']; elseif(isset($_POST['loginform'])) @@ -107,7 +123,7 @@ if(!$this->passverified) writesyslog('Bad password for '.$this->login, LOG_WARNING); - $this->DB->Execute('UPDATE users SET failedlogindate=?, failedloginip=? WHERE login=?',array(time(),$_SERVER['REMOTE_ADDR'],$this->login)); + $this->DB->Execute('UPDATE users SET failedlogindate=?, failedloginip=? WHERE login=?',array(time(),$this->ip,$this->login)); } $this->LogOut(); }
uczestnicy (1)
-
Jerzy Kolosowski