Virtualhostok kezelese - megoldodott
Hello, sikerult megoldani a fenti problemat, az lenne a keresem, hogy valaki hozzaerto pls nezze at a konfigot, ez a megoldas vajon mennyire "szep", jo uton jarok-e, vagy valamit nem lattam meg. ime az alosztaly, ezt hasznalom a Service-ben: class MyHTTP(HttpProxy): def config(self): HttpProxy.config(self) self.request["GET"] = (HTTP_REQ_POLICY, self.filterURL) self.session.server_address = SockAddrInet("127.0.0.1", 80) def setServerAddress(self, host, port): pass def filterURL(self, method, url, version): if (url[0:21] == "http://www1.domain.hu"): 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 elif (url[0:21] == "http://www2.domain.hu"): self.session.server_address = SockAddrInet("172.16.226.11", 80) self.session.local_addr = SockAddrInet(self.session.client_address.ip_s, 0) return HTTP_REQ_ACCEPT return HTTP_REQ_REJECT def zorp_http(): Service("directplug", MyHTTP, router = InbandRouter()) Listener(SockAddrInet("10.0.0.4", 80), "directplug") A self.session.local_addr = SockAddrInet...-el az lett volna a celom, hogy a szerver az kero eredeti cimet lassa, de ez sajnos nem mukodik. :( (esetleg erre ha valaki tud valami megoldast InbandRouter eseten) Ez leginkabb az webalizernek lenne jo... :) Koszonom, udv: airween -- Minden baj forrása az 1/x függvény.
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. -- Szalay Attila BalaBit IT Biztonságtechnikai Kft. tel:(36-1)-371-05-40 1116 Bp. Csurgoi ut 20/b fax:(36-1)-208-08-75 http://www.balabit.hu/
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
Hello,
De mindettol fuggetlenul szerintem mukodnie kellene, ha a belso hostoknak a nevet ip cimmel egyutt felvenned a /etc/hosts-ba. igen, csak ha pl. a httpd a localhost-on figyel, akkor a hosts-fileba kalozkodni kell, es esetleg magadat is atverheted.
esetleg csak a setServerAddr metodust irod felul valahogy igy: ahh, ez mar "finomabb" megoldas, koszi :)
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)) hmmm...
ezt mar probaltam, (egyebkent nem alltam volna neki probalkozni a class mahinalasaval), es ezt kaptam: Traceback (most recent call last): File "/usr/local/share/zorp/pylib/Zorp/Zorp.py", line 169, in init func() File "/usr/local/etc/zorp/policy.py", line 77, in zorp_http Service("directplug", MyHTTP, router = InbandRouter(forge_addr=TRUE)) TypeError: this constructor takes no arguments (megjegyzem a doksikat/python forrasokat atolvasva sem talaltam utalast arra, hogy az InbandRouter-nek vanilyen argumentuma)
Igy nem fugsz a DNS-tol ill hosts-tol, de megmarad a funkcionalitasod. igen, ez eleg fontos szempont jelen esetben.
Koszi: airween -- Minden baj forrása az 1/x függvény.
Hi All! On 2003 Aug 05, Hegedüs Ervin wrote:
def zorp(): Service('http', MyHttp, router=InbandRouter(forge_addr=TRUE))
hmmm...
ezt mar probaltam, (egyebkent nem alltam volna neki probalkozni a class mahinalasaval), es ezt kaptam:
Traceback (most recent call last): File "/usr/local/share/zorp/pylib/Zorp/Zorp.py", line 169, in init func() File "/usr/local/etc/zorp/policy.py", line 77, in zorp_http Service("directplug", MyHTTP, router = InbandRouter(forge_addr=TRUE)) TypeError: this constructor takes no arguments
Akkor a kovetkezot javaslom: Service('http', MyHttp, router=InbandRouter(), snat=ForgeClientSourceNAT()) -- Szalay Attila BalaBit IT Biztonságtechnikai Kft. tel:(36-1)-371-05-40 1116 Bp. Csurgoi ut 20/b fax:(36-1)-208-08-75 http://www.balabit.hu/
Hello,
ezt mar probaltam, (egyebkent nem alltam volna neki probalkozni a class mahinalasaval), es ezt kaptam:
Traceback (most recent call last): File "/usr/local/share/zorp/pylib/Zorp/Zorp.py", line 169, in init func() File "/usr/local/etc/zorp/policy.py", line 77, in zorp_http Service("directplug", MyHTTP, router = InbandRouter(forge_addr=TRUE)) TypeError: this constructor takes no arguments
Akkor a kovetkezot javaslom:
Service('http', MyHttp, router=InbandRouter(), snat=ForgeClientSourceNAT()) ugyan ezt is kiprobaltam mar korabban, tettem egy probat az idokozben modosult konfiggal. Tehat: az uj alosztalyban csak a setServerAddress() lett atdefinialva, ahog Bazsi irta, a Service pedig Sasa altal irt, fenti modon. Az eredmeny:
Zorp-INFO: (zorp@site/directplug): Starting service; name='directplug' Zorp-INFO: (zorp@site/directplug:0): Starting proxy instance; client_fd='13', client_address='AF_INET(1.2.3.4:19871)', client_zone='Zone(internet, 0.0.0.0/0)', client_local='AF_INET(2.3.4.5:81)' Zorp-INFO: (zorp@site/directplug:0/http): Proxy starting; class='MyHTTP', module='http' Zorp-INFO: (zorp@site/directplug:0/http): bind() failed; error='Cannot assign requested address' :( Koszi: airween -- Minden baj forrása az 1/x függvény.
Hi All! On 2003 Aug 05, Hegedüs Ervin wrote:
Hello,
De mindettol fuggetlenul szerintem mukodnie kellene, ha a belso hostoknak a nevet ip cimmel egyutt felvenned a /etc/hosts-ba. igen, csak ha pl. a httpd a localhost-on figyel, akkor a hosts-fileba kalozkodni kell, es esetleg magadat is atverheted.
Ooooo. Szoval ugyanazon a gepen lenne a zorp es a webszerver is? -- Szalay Attila BalaBit IT Biztonságtechnikai Kft. tel:(36-1)-371-05-40 1116 Bp. Csurgoi ut 20/b fax:(36-1)-208-08-75 http://www.balabit.hu/
Hal,
De mindettol fuggetlenul szerintem mukodnie kellene, ha a belso hostoknak a nevet ip cimmel egyutt felvenned a /etc/hosts-ba. igen, csak ha pl. a httpd a localhost-on figyel, akkor a hosts-fileba kalozkodni kell, es esetleg magadat is atverheted.
Ooooo.
Szoval ugyanazon a gepen lenne a zorp es a webszerver is? volt egy ilyen felallas is, es meg ez sincs elvetve. :) az az igazsag, hogy egy ilyen gepen teszteltem, es ott az egyik "host" az a localhost volt. Most mar "majdnem eles" kornyezetben van, itt eppen nincs a localhoston httpd, de ki tudja - egyszercsak fellep valami inseges gephiany... :)
udv: airween -- Minden baj forrása az 1/x függvény.
participants (3)
-
Balazs Scheidler
-
Hegedüs Ervin
-
SZALAY Attila