[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