--- gforth/proxy.fs 2000/11/19 22:45:38 1.2 +++ gforth/proxy.fs 2003/03/09 15:16:52 1.8 @@ -1,6 +1,6 @@ \ a http proxy -\ Copyright (C) 2000 Free Software Foundation, Inc. +\ Copyright (C) 2000,2002 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -27,10 +27,8 @@ Create crlf #cr c, #lf c, : request ( host u request u proxy-host u port -- fid ) open-socket >r - 2dup type ." HTTP/1.1" cr r@ write-file throw s" HTTP/1.1" r@ writeln s" Host: " r@ write-file throw r@ writeln - ." Connection: close" cr s" Connection: close" r@ writeln s" User-Agent: " r@ write-file throw User-Agent @ IF @@ -38,8 +36,8 @@ Create crlf #cr c, #lf c, ELSE s" Gforth Proxy 0.1" THEN r@ writeln s" " r@ writeln r> ; -Variable proxy s" localhost" proxy $! -Variable proxy-port 3128 proxy-port ! +Variable proxy s" proxy" proxy $! \ replace that with your proxy host +Variable proxy-port 3128 proxy-port ! \ replace that with your proxy port : proxy-open ( host u request u -- fid ) proxy $@ proxy-port @ request ; @@ -69,6 +67,7 @@ Forth definitions response: Allow: response: Age: +response: Accept-Ranges: response: Cache-Control: response: Connection: response: Proxy-Connection: @@ -83,10 +82,11 @@ response: Content-Type: response: Date: response: ETag: response: Expires: -response: Last-modified: +response: Last-Modified: response: Location: response: Mime-Version: response: Proxy-Authenticate: +response: Proxy-Connection: response: Public: response: Retry-After: response: Server: @@ -132,7 +132,7 @@ Variable data-buffer Content-Length @ IF Content-Length $@ s>number drop r> read-sized EXIT THEN Transfer-Encoding @ IF - Transfer-Encoding $@ s" chunked" compare 0= IF + Transfer-Encoding $@ s" chunked" str= 0= IF r> read-chunked EXIT THEN THEN r> read-to-end ; @@ -158,14 +158,7 @@ Variable data-buffer \ handle proxy request -: proxy-request ( host u request u -- ) - proxy-open - dup >r get-response throw - r@ read-data r> close-file throw - convert-data write-response write-data ; - -: http-request ( host u request u -- ) - http-open +: handle-request ( fid -- ) dup >r get-response throw r@ read-data r> close-file throw convert-data write-response write-data ; @@ -191,12 +184,12 @@ DOES> ( -- addr u ) : (redirect?) ( addr u -- addr' u' t / f ) htmldir $! htmldir $@ bounds ?DO I c@ '/ = IF #lf I c! THEN LOOP - redirects 1 set-order + redirects 1 set-order redir$ $off htmldir $@ ['] evaluate catch - IF 2drop false ELSE true THEN ; + IF 2drop false ELSE redir$ @ 0<> THEN ; -: (redirect) ( addr u -- ) - host$ $@ 2swap proxy-request maxnum off ; +: (redirect) ( -- ) + host$ $@ redir$ $@ proxy-open handle-request maxnum off ; ' (redirect?) IS redirect? ' (redirect) IS redirect @@ -210,6 +203,6 @@ Vocabulary systems also systems definitions -redirect: bigforth www.jwdt.com"http://www.jwdt.com/~paysan/" +redirect: bigforth bigforth.sourceforge.net"http://bigforth.sourceforge.net/" previous previous definitions