On Thu, 2004-11-04 at 17:34, Hegedüs Ervin wrote:
hello,
Adott egy tuzfal zorppal, mogotte ket webszerver. Szeretnem atadni az IP cimet logelemzesnek, de nem akar menni.
ha mogotte van a ket webszerver, akkor egyszeruen adj meg egy forge_addr-t a routernek, a Zorp tudja hamisitani a kliens eredeti forrascimet, valahogy igy: Service("http", HttpProxy, router=InbandRouter(forge_addr=TRUE))
en igy csinalom:
from socket import gethostbyaddr
class WD_http(HttpProxy): def config(self): HttpProxy.config(self) self.request["GET"] = (HTTP_REQ_POLICY, self.filterURL) self.request["POST"] = (HTTP_REQ_POLICY, self.filterURL)
# ha nincs reverse, elhasal a Zorp... # ha eleg az IP, ez nem kell, es a HDR_INSERT-nel # csak a client_address kell
try: RemoteHost = gethostbyaddr (self.session.client_address.ip_s)[0]; except: RemoteHost = self.session.client_address.ip_s;
ez a nevfeloldas erosen lassitani fog a feldolgozason, mert minden kapcsolatnal reverse feloldast csinal a zorp. (pl. elerhetetlen a kliens gep IPjehez tartozo DNS szerver)
def filterURL(self, method, url, version):
self.request_headers["X-Host"] = (HTTP_HDR_INSERT, RemoteHost)
ezt gondolom a fenti config-ba akartad tenni.
if self.request_url_host == "www.akarmi1.hu": self.session.server_address = SockAddrInet("192.168.1.100", 8080) return HTTP_REQ_ACCEPT if self.request_url_host == "www.akarmi2.hu": self.session.server_address = SockAddrInet("192.168.2.100", 80) return HTTP_REQ_ACCEPT else : self.session.server_address = SockAddrInet("192.168.1.100", 80) return HTTP_REQ_ACCEPT
ez a fajta elosztas sokkal egyszerubben is mukodik: egyszeruen InbandRouter-t hasznalsz transzparens modban, ha feloldhato a gep neve (mondjuk /etc/hosts-bol), es az a belso gep IP-jere mutat. -- Bazsi