[zorp-hu] Zorp 3.3.6 - port valasztas hostnev alapjan

Farkas Dániel linux at farkasdaniel.hu
2011. Feb. 25., P, 15:28:47 CET


A teljes konfigot meg tudod mutatni?

Feltettem 3.9-est, meg csináltam az említett policy-t, meg is pacheltem 
(előtte is csinálta), erre
azt mondja, hogy a Listener-ben megadott ip 80-as portjára nem tud 
bindelni, permission denied, de nincs ott semmi más, véletlen sem, ami 
használná.

Lehet, hogy a végén valamit elrontok, még próbálkozom. Csak összejön már 
valami...

Nekem ez a vége, minden más lényegében ugyanaz, amit írtál:

def zorp_http():
         Service("intra_http", IntraHttp)
         Listener(SockAddrInet("10.20.2.169", 80), "intra_http")

Köszi!
> 2011-02-23 19:01 keltezéssel, Farkas Dániel írta:
>> Nalam ez teljesen hatastalan, probaltam korabban is, amikor raakadtam.
> Összeraktam egy host header alapján máshova csatlakozó HTTP proxyt,
> a most kiadott 3.9-es verzióval.
> Az idevágó osztály a következő:
>
> class InterHttpProxy(HttpProxy):
>           def config(self):
>                   HttpProxy.config(self)
>                   require_host_header = FALSE
>                   self.hostlist = {"host1.domain.hu":("192.168.1.1", 80),
> "host2.domain.hu":("192.168.1.2", 80), "host3.domain.hu":("192.168.1.3", 80),
> "host4.domain.hu":("192.168.1.4", 80)}
>           def setServerAddress(self, host, port):
>                   if self.hostlist.has_key(host):
>                           newhost = self.hostlist[host][0]
>                           port = self.hostlist[host][1]
>                           host = newhost
>                   else:
>                           proxyLog(self, HTTP_ERROR, 3, "Unknown target host;
> host='%s'", host)
>                           return FALSE
>                   return HttpProxy.setServerAddress(self, host, port)
>
> Ennek elvileg működnie kellene, de nem teszi, a logban ez található:
>
> 2011-02-24T10:12:01+01:00 fw zorp/inter[5832]: core.error(3):
> (svc/inter_HTTP:191/http): connect() failed; fd='40', error='Invalid argument'
> 2011-02-24T10:12:01+01:00 fw zorp/inter[5832]: core.error(2):
> (svc/inter_HTTP:191/http): Connection to remote end failed; local='NULL',
> remote='AF_INET(0.0.0.1:80)', error='Invalid argument'
>
> Mint látod, a célszerver címe 0.0.0.1-re változik, holott nem ez az elvárt.
> Ha te is ebbe a hibába futottál bele, akkor itt egy patch, ami ezt megoldja:
>
> --- a/pylib/Zorp/Resolver.py    2011-02-24 10:13:54.081516501 +0100
> +++ b/pylib/Zorp/Resolver.py    2011-02-24 10:11:25.721598563 +0100
> @@ -35,7 +35,7 @@
>
>     from Zorp import *
>     from SockAddr import SockAddrInet
> -from socket import gethostbyname
> +from socket import gethostbyname, gethostbyname_ex
>     import types
>
>     # NOTE: This is IPv4 specific
> @@ -207,7 +207,7 @@
> </method>
>             """
>                     try:
> -            ip_list = gethostbyname(host)
> +            ip_list = gethostbyname_ex(host)[2]
>                 if self.multi:
>                         return map(lambda ip: SockAddrInet(ip, port), ip_list)
>                 else:
>
>
> Nekem ezzel jól működik.
>
> Üdv,
>
> i.
> _______________________________________________
> zorp-hu mailing list
> zorp-hu at lists.balabit.hu
> https://lists.balabit.hu/mailman/listinfo/zorp-hu



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