Potrzebuje poznac nazwe hosta komputera korzystajacego z mojej aplikacji. Wyszukalem, ze mozna to uzyskac nastepujaco:
request.env['REMOTE_HOST']
niestety otrzymuje pusty string
wyczytalem takze, ze dziala to podobno na WEBricku, a na Mongrelu juz nie -nie sprawdzalem na tym pierwszym, ja mam Mongrela
z kolei
request.env['REMOTE_ADDR']
dziala poprawnie zwracajac adres IP zdalnej maszyny.
Wsrod innych sprawdzanych przeze mnie metod sa:
[code]require ‘socket’
Socket.gethostname
request.host
request.remote_host
request.raw_host_with_port[/code]
dodam tylko, ze hostname na maszynie zdalnej na pewno mam ustawiony. Inna aplikacja (PHP) zwraca poprawnie hostname za pomoca niniejszego wyrazenia
irb(main):032:0> Socket.gethostbyaddr("\303]\262\006")
=> [“nasza-klasa.pl”, [], 2, “\303]\262\006”][/code]
Podanie zwykłego adresu ip w postaci stringa nie działa (przynajmniej u mnie):
irb(main):033:0> Socket.gethostbyaddr("195.93.178.6")
SocketError: host not found
from (irb):33:in `gethostbyaddr'
from (irb):33
Nie pytajcie mnie dlaczego Może ktoś inny wyjaśni dlaczego (i ewentualnie jak samemu zamienić stringa z ip na packed stringa w tej postaci nie korzystając z Socket.gethostbyname jak powyżej).
Przykład z wywołaniem php w widoku pokazuje, że web deweloperzy potrafią być bardzo kreatywni (nie zawsze w pozytywnym tego słowa znaczeniu)