[zorp-hu] valtozas 7.13 rol 7.14 re

Balazs Scheidler bazsi@balabit.hu
Thu, 1 Feb 2001 10:38:34 +0100


> > A http proxy ban tortent valami valtozas
> > amitol a kovetkezo tortenik
> > ha bongeszovel toltok le egy filet akkor szepen lejon
> > ha a file letolteset a getright vegezne akkor  nem tolti le
> 
> Ezt a patchet kene kiprobalni (a modules/zorp-module-http-*/http.c re kell
> applyolni):
> 
> Index: http.c
> ===================================================================
> RCS file: /var/cvs/zorp-module-http/http.c,v
> retrieving revision 1.39
> diff -u -r1.39 http.c
> --- http.c	2001/01/30 14:18:37	1.39
> +++ http.c	2001/01/31 13:22:59
> @@ -1065,8 +1065,8 @@
>      {
>        self->request_type = HTTP_REQTYPE_SERVER;
>      }
> -  else if (strcasecmp(self->request_url->str, "http://") ||
> -           strcasecmp(self->request_url->str, "ftp://"))
> +  else if (strncasecmp(self->request_url->str, "http://", 7) ||
> +           strncasecmp(self->request_url->str, "ftp://", 6))
>      {
>        /* neither Connection nor Proxy-Connection header exists  */
>        self->request_type = HTTP_REQTYPE_PROXY;

Ez a patch meg mindig nem teljesen jo, de itt egy jobb:

diff -u -r1.39 http.c
--- http.c	2001/01/30 14:18:37	1.39
+++ http.c	2001/02/01 09:32:41
@@ -1065,10 +1065,10 @@
     {
       self->request_type = HTTP_REQTYPE_SERVER;
     }
-  else if (strcasecmp(self->request_url->str, "http://") ||
-           strcasecmp(self->request_url->str, "ftp://"))
+  else if (self->request_url->str[0] != '/')
     {
-      /* neither Connection nor Proxy-Connection header exists  */
+      /* neither Connection nor Proxy-Connection header exists, and URI
+         doesn't seem to be a simple filename */
       self->request_type = HTTP_REQTYPE_PROXY;
     }
   else

Amugy arrol van szo, hogy transzparens modban kulon meg lehet adni azt,
szerver keresek (klienstol szerver fele), vagy proxy (proxytol a parent
proxyhoz) keresek engedelyezettek (transparent_proxy_requests,
transparent_server_requests attributumok), ehhez pedig meg kell hatarozni a
keres tipusat. Ez az esetek nagy reszeben (bongeszotol szarmazo keresnel)
viszonylag egyszeru, mert van Connection: v. Proxy-Connection: fejlec. Ez
getright-nal nincs, ezert a keres URI resze alapjan egy kis heurisztika
donti el (ha a filenev '/'-el kezdodik, akkor server kerest feltetelezek,
egyebkent proxy kerest). Ez a dontes nem RFC komplians, szimpla szerver
keresben is lehet teljes URL (http://<szervernev/filenev), ha ilyen kliens
van a Zorp mogott, akkor be kell kapcsolni a transparent_proxy_requests-et,
igy:

class MyHttp(HttpProxy):
	def config(self):
		HttpProxy.config(self)
		self.transparent_mode = TRUE
		self.transparent_proxy_requests = TRUE

-- 
Bazsi
PGP info: KeyID 9AF8D0A9 Fingerprint CD27 CFB0 802C 0944 9CFD 804E C82C 8EB1