version 1.3, 2000/11/19 22:47:54
|
version 1.9, 2003/08/25 14:17:47
|
Line 1
|
Line 1
|
\ a http proxy |
\ a http proxy |
|
|
\ Copyright (C) 2000 Free Software Foundation, Inc. |
\ Copyright (C) 2000,2002,2003 Free Software Foundation, Inc. |
|
|
\ This file is part of Gforth. |
\ This file is part of Gforth. |
|
|
Line 36 Create crlf #cr c, #lf c,
|
Line 36 Create crlf #cr c, #lf c,
|
ELSE s" Gforth Proxy 0.1" THEN r@ writeln |
ELSE s" Gforth Proxy 0.1" THEN r@ writeln |
s" " r@ writeln r> ; |
s" " r@ writeln r> ; |
|
|
Variable proxy s" localhost" proxy $! |
Variable proxy s" proxy" proxy $! \ replace that with your proxy host |
Variable proxy-port 3128 proxy-port ! |
Variable proxy-port 3128 proxy-port ! \ replace that with your proxy port |
|
|
: proxy-open ( host u request u -- fid ) |
: proxy-open ( host u request u -- fid ) |
proxy $@ proxy-port @ request ; |
proxy $@ proxy-port @ request ; |
Line 67 Forth definitions
|
Line 67 Forth definitions
|
|
|
response: Allow: |
response: Allow: |
response: Age: |
response: Age: |
|
response: Accept-Ranges: |
response: Cache-Control: |
response: Cache-Control: |
response: Connection: |
response: Connection: |
response: Proxy-Connection: |
response: Proxy-Connection: |
Line 81 response: Content-Type:
|
Line 82 response: Content-Type:
|
response: Date: |
response: Date: |
response: ETag: |
response: ETag: |
response: Expires: |
response: Expires: |
response: Last-modified: |
response: Last-Modified: |
response: Location: |
response: Location: |
response: Mime-Version: |
response: Mime-Version: |
response: Proxy-Authenticate: |
response: Proxy-Authenticate: |
|
response: Proxy-Connection: |
response: Public: |
response: Public: |
response: Retry-After: |
response: Retry-After: |
response: Server: |
response: Server: |
Line 130 Variable data-buffer
|
Line 132 Variable data-buffer
|
Content-Length @ IF |
Content-Length @ IF |
Content-Length $@ s>number drop r> read-sized EXIT THEN |
Content-Length $@ s>number drop r> read-sized EXIT THEN |
Transfer-Encoding @ IF |
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-chunked EXIT THEN THEN |
r> read-to-end ; |
r> read-to-end ; |
|
|
Line 156 Variable data-buffer
|
Line 158 Variable data-buffer
|
|
|
\ handle proxy request |
\ handle proxy request |
|
|
: proxy-request ( host u request u -- ) |
: handle-request ( fid -- ) |
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 |
|
dup >r get-response throw |
dup >r get-response throw |
r@ read-data r> close-file throw |
r@ read-data r> close-file throw |
convert-data write-response write-data ; |
convert-data write-response write-data ; |
Line 189 DOES> ( -- addr u )
|
Line 184 DOES> ( -- addr u )
|
: (redirect?) ( addr u -- addr' u' t / f ) |
: (redirect?) ( addr u -- addr' u' t / f ) |
htmldir $! htmldir $@ bounds ?DO |
htmldir $! htmldir $@ bounds ?DO |
I c@ '/ = IF #lf I c! THEN LOOP |
I c@ '/ = IF #lf I c! THEN LOOP |
redirects 1 set-order |
redirects 1 set-order redir$ $off |
htmldir $@ ['] evaluate catch |
htmldir $@ ['] evaluate catch |
IF 2drop false ELSE true THEN ; |
IF 2drop false ELSE redir$ @ 0<> THEN ; |
|
|
: (redirect) ( addr u -- ) |
: (redirect) ( -- ) |
host$ $@ 2swap proxy-request maxnum off ; |
host$ $@ redir$ $@ proxy-open handle-request maxnum off ; |
|
|
' (redirect?) IS redirect? |
' (redirect?) IS redirect? |
' (redirect) IS redirect |
' (redirect) IS redirect |
Line 208 Vocabulary systems
|
Line 203 Vocabulary systems
|
|
|
also systems definitions |
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 |
previous previous definitions |