On Tue, Aug 05, 2003 at 04:05:35PM +0200, SZALAY Attila wrote:
Hi!
On 2003 Aug 05, Hegedüs Ervin wrote:
class MyHTTP(HttpProxy): def config(self): HttpProxy.config(self)
self.request["GET"] = (HTTP_REQ_POLICY, self.filterURL)
Mivel alapbol a zorp ugyis elhajtja azokat a kereseket, ahol nincs Host header, ezert en inkabb arra tennem a hook-ot.
Egyebirant pedig vigyazzal, a python _nagyon_ kenyes az indentalasra, ne keverd a space-t es a tabokat!
[...]
def filterURL(self, method, url, version): if (url[0:21] == "http://www1.domain.hu"):
Ehelyett en inkabb a self.request_url-t neznem. Az ugyanis csak a host-ot tartalmazza eleve.
self.session.server_address = SockAddrInet("172.16.226.252", 80) self.session.local_addr = SockAddrInet(self.session.client_address.ip_s, 0) return HTTP_REQ_ACCEPT
A self.local_addr helyett, inkabb az InbandRouter-nek kellene forge_addr=TRUE parametert adni.
[...]
def zorp_http(): Service("directplug", MyHTTP, router = InbandRouter()) Listener(SockAddrInet("10.0.0.4", 80), "directplug")
De mindettol fuggetlenul szerintem mukodnie kellene, ha a belso hostoknak a nevet ip cimmel egyutt felvenned a /etc/hosts-ba.
Ekkor normal HttpProxy-val is mukodne, nem kellene sajat proxy osztaly.
esetleg csak a setServerAddr metodust irod felul valahogy igy: class MyHttp(HttpProxy): def setServerAddr(self, host, port): if host == 'www1.domain.hu': self.session.setServer(SockAddrInet('1.2.3.4', 80)) elif host == 'www2.domain.hu': self.session.setServer(SockAddrInet('2.3.4.5', 80)) def zorp(): Service('http', MyHttp, router=InbandRouter(forge_addr=TRUE)) Listener(SockAddrInet('3.4.5.6', 8080), 'http') Igy nem fugsz a DNS-tol ill hosts-tol, de megmarad a funkcionalitasod. -- Bazsi PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1