[zorp-hu] cookie alapjan valo dontes

Pásztor Lénárd Zoltán lenard.pasztor at wonderline.hu
2006. Ápr. 5., Sze, 13:11:00 CEST


          Szia!

A jelenlegi konfigom igy nez ki. Jelenleg a GET utani reszre
probalok keresni, a cookies resz utana jon majd.
A self.setserver nincs hatassal a request kiszolgalasara.
Lehet, hogy rossz helyen hasznalom?

A leveledben irtad az alabbiakat:

	def processCookie(self, hdr_name, hdr_value):
		# hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a 
		# teged erdeklo erteket

		# az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan
		# raktal ossze.
		self.session.setServer(SockAddrInet('1.2.3.4', 80))
		return HTTP_HDR_ACCEPT

irtad, hogy a hdr_value-ban van a cookie erteke. ezt ugy kell erteni, hogy
ha van egy nev=ertek cookie-m akkor az ott hdr_value["nev"] szintaktikaval
erheto el, vagy?


Idaig a configom:

# Includes
from Zorp.Core import *
from Zorp.Http import *
from Zorp.Pssl import *
import re

# Main configuration
Zorp.firewall_name = 'zorp'

# Networks

InetZone(
         "Internet", "0.0.0.0/0",
         inbound_services=["http", "https"],
         outbound_services=["http", "https"]
        )

InetZone(
         "app-net", "10.11.0.0/16",
         inbound_services=["http", "https"],
         outbound_services=["http", "https"]
        )

# HTTP Proxy
class HTTPProxy(HttpProxy):

        def config(self):
                HttpProxy.config(self)
                self.default_port = 443
                self.request["GET"] = (HTTP_REQ_POLICY, self.test_url)

        def test_url(self, method, url, version):
                url_match=re.compile(".*ch-de$")
                result=url_match.findall(url)
                if (result):
                        
self.session.setServer(SockAddrInet('10.10.12.6', 443))
                        return HTTP_REQ_ACCEPT
                else:
                        
self.session.setServer(SockAddrInet('10.10.11.6', 443))
                        return HTTP_REQ_ACCEPT

# HTTPS Proxy - Listener
class HTTPSListener(PsslProxy):

        def config(self):
                PsslProxy.config(self);
                self.copy_to_server     = TRUE;
                self.copy_to_client     = TRUE;
                self.client_need_ssl    = TRUE;
                self.server_need_ssl    = FALSE;
                self.shutdown_soft      = TRUE;
                self.client_verify_type = SSL_VERIFY_NONE;
                self.server_verify_type = SSL_VERIFY_NONE;
                self.client_cert        = "/etc/zorp/certs/test.crt";
                self.client_key         = "/etc/zorp/keys/test.key";

# HTTPS Proxy
class HTTPSHelper(HttpProxy):

        def config(self):
                HttpProxy.config(self)
                self.default_port = 443
                self.request["GET"] = (HTTP_REQ_POLICY, self.is_svajc)

        def is_svajc(self, method, url, version):
                sw_match=re.compile(".*ch-de$")
                matched=sw_match.findall(url)
                if (matched):
                        
self.session.setServer(SockAddrInet('10.10.12.6', 443))
                        return HTTP_REQ_ACCEPT
                else:
                        
self.session.setServer(SockAddrInet('10.10.11.6', 443))
                        return HTTP_REQ_ACCEPT

# HTTPS Proxy - Worker
class HTTPSWorker(PsslProxy):

        def config(self):
                PsslProxy.config(self);
                self.copy_to_server     = TRUE;
                self.copy_to_client     = TRUE;
                self.client_need_ssl    = FALSE;
                self.server_need_ssl    = TRUE;
                self.shutdown_soft      = TRUE;
                self.client_verify_type = SSL_VERIFY_NONE;
                self.server_verify_type = SSL_VERIFY_NONE;
                self.client_cert        = "/etc/zorp/certs/test.crt";
                self.client_key         = "/etc/zorp/keys/test.key";

# Instance definition
def web():
        Service(
                "http",
                HTTPProxy,
                router=InbandRouter(forge_addr=TRUE),
                #router=DirectedRouter(forge_addr=TRUE),
                resolver=DNSResolver()
                )
        Service(
                "https",
                HTTPSListener,
                router=InbandRouter(forge_addr=TRUE),
                chainer=SideStackChainer(
                                         HTTPSHelper,
                                         SideStackChainer(HTTPSWorker)
                                         )
                )
        Listener(SockAddrInet('kulsoip', 1200), "http")
        Listener(SockAddrInet('kulsoip', 1201), "https")









Balazs Scheidler wrote:
> On Mon, 2006-04-03 at 15:04 +0200, Pásztor Lénárd Zoltán wrote:
>   
>>           Sziasztok!
>>
>> Tud valaki peldat mutatni arra, hogyan lehet zorpal
>> elerni azt, hogy http(s) proxyzas eseten egy cookie-ban
>> beallitott erteket figyelve dontson arrol melyik belso
>> webszervertol kerje el az oldalt?
>>     
>
> Probald me a 'Cookie' fejlecet felkerni policy-ba, valahogy igy:
>
> class MyHttp(HttpProxy):
> 	def config(self):
> 		HttpProxy.config(self)
> 		self.request_header["Cookie"] = (HTTP_HDR_POLICY, self.processCookie)
>
> 	def processCookie(self, hdr_name, hdr_value):
> 		# hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a 
> 		# teged erdeklo erteket
>
> 		# az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan
> 		# raktal ossze.
> 		self.session.setServer(SockAddrInet('1.2.3.4', 80))
> 		return HTTP_HDR_ACCEPT
>
> def http():
> 	Service('http', MyHttp, router=InbandRouter())
> 	Listener(SockAddrInet('kulsoip', 80), 'http')
>
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> zorp-hu mailing list
> zorp-hu at lists.balabit.hu
> https://lists.balabit.hu/mailman/listinfo/zorp-hu
>   


-- 
Pásztor Lénárd Zoltán
rendszergazda

Wonderline Hungary Kft.
Telefon: (+36-1) 272.0242
Fax: (+36-1) 272.0252
E-mail: lenard.pasztor at wonderline.hu
Honlap: www.wonderline.hu



További információk a(z) zorp-hu levelezőlistáról