[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