13/10/03, messie from [ Łukasz Jarosław Mozer ] ...
- force_ssl nie zadziała kiedy HTTP_HOST jest inny niż adres wpisywany
przez usera. dzieje się tak wtedy, kiedy serwer z lmsem (np. biegający z innymi uprawieniami niż ten dla użytkowników) stoi za proxy (apache/squid). należałoby wspomnieć w lms.ini o RewriteRule, albo w ogóle przyjąć tę opcję jako bardziej "generic".
Nie nadążam - HTTP_HOST to właśnie ten co jest wpisywany przez usera.
już tłumaczę: jest publiczny serwer www, gdzie każdy użytkownik może tworzyć strony w php. żeby login/hasło do bazy z uprawnieniami do zmian nie wyciekło przez openf() wszystkie usługi administracyjne chodzą na osobnym okrojonym apache'u, na uidzie osobnego użytkownika (chmod 600). ssl i proxy dla tego wewnętrznego serwera są realizowane przez serwer publiczny, tak więc wszystkie requesty dla niego przychodzą z localhost i x-forwarded-for faktycznego klienta.
kolejne miejsce, w którym musiałem zmienić REMOTE_ADDR na X_FORWARDED_FOR to Session.class:
--- lms.orig/lib/Session.class.php Fri Oct 3 01:25:53 2003 +++ lms/lib/Session.class.php Mon Oct 13 20:52:43 2003 @@ -72,7 +72,8 @@ $this->last = $admindata[lastlogindate]; $this->lastip = $admindata[lastloginip];
- $this->DB->Execute("UPDATE admins SET lastlogindate=?, lastloginip=? WHERE id=?",array(time(),$_SERVER[REMOTE_ADDR],$this->id)); + $remoteaddr=($_SERVER[HTTP_X_FORWARDED_FOR] != '')?$_SERVER[HTTP_X_FORWARDED_FOR]:$_SERVER[REMOTE_ADDR]; + $this->DB->Execute("UPDATE admins SET lastlogindate=?, lastloginip=? WHERE id=?",array(time(),$remoteaddr,$this->id)); writesyslog("User ".$this->login." logged in",LOG_INFO); } $_SESSION[session_login] = $this->login;
No tak, teraz pytanie - co łatwiej - odpalic jeden prosty skrypt czy skonfirugować snmp i okolice? Jest to dosyć kłopotliwa zabawa.
net-snmp chodzi tak z pudełka.
pozdrawiam,