[zorp-hu] Virtualhostok kezelese - megoldodott
Balazs Scheidler
zorp-hu@lists.balabit.hu
Tue, 5 Aug 2003 16:15:12 +0200
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