Age | Commit message (Collapse) | Author | Files | Lines |
|
this addition follow:
The patch implements a simple reverse proxy (with one funky extra
feature). It has all the regular features: mapping remote servers to local
namespace (ReversePath), disabling forward proxying (ReverseOnly) and HTTP
redirect rewriting (ReverseBaseURL).
The funky feature is this: You map Google to /google/ and the Google front
page opens up fine. Type in stuff and click "Google Search" and you'll get
an error from tinyproxy. Reason for this is that Google's form submits to
"/search" which unfortunately bypasses our /google/ mapping (if they'd
submit to "search" without the slash it would have worked ok). Turn on
ReverseMagic and it starts working....
ReverseMagic "hijacks" one cookie which it sends to the client browser.
This cookie contains the current reverse proxy path mapping (in the above
case /google/) so that even if the site uses absolute links the reverse
proxy still knows where to map the request.
And yes, it works. No, I've never seen this done before - I couldn't find
_any_ working OSS reverse proxies, and the commercial ones I've seen try
to parse the page and fix all links (in the above case changing "/search"
to "/google/search"). The problem with modifying the html is that it might
not be parsable (very common) or it might be encoded so that the proxy
can't read it (mod_gzip or likes).
Hope you like that patch. One caveat - I haven't coded with C in like
three years so my code might be a bit messy.... There shouldn't be any
security problems thou, but you never know. I did all the stuff out of my
memory without reading any RFC's, but I tested everything with Moz, Konq,
IE6, Links and Lynx and they all worked fine.
|
|
and the HTML installation script.)
|
|
so these files needed to be modified to only use the system's
installed regular expression library.
|
|
standard on any reasonably modern system.
|
|
|
|
|
|
manage the HTML error pages. It simplifies the source, and also make
the object file smaller. Nice. Also added any casting from (void*)
to ensure that the code compiles using a C++ compiler.
|
|
cleanly using a C++ compiler.
Changed the servers_waiting variable to an unsigned int, since the
number of servers waiting can never be negative, and added an assert()
to ensure this invariant.
|
|
realloc() can take a NULL pointer, as defined by the realloc() man
page.
Fixed the cast in both safefree() macros to compile cleaning using a
C++ compiler.
|
|
C++ compiler.
|
|
|
|
cleanly with a C++ compiler. (Tested using GCC 3.3)
|
|
function.
|
|
|
|
|
|
types of upstream configurations correctly. Hopefully, the code is
also a little clearer in it's implementation.
|
|
IDENTIFIER directive and also the keyword directives.
|
|
defined in the tinyproxy.conf documentation.
|
|
pointer and return.
|
|
SunOS (solaris 2.8) does not include this define. [Thank to Ben
Hartshorne for pointing this out.]
|
|
"ViaProxyName" directive. The "Via" HTTP header is _required_ by the
HTTP spec, so the code has been changed to always send the header.
However, including the proxy's host name could be considered a
security threat, so the "ViaProxyName" directive is used to set the
token sent in the "Via" header. If the directive is not enabled the
proxy's host name will be used.
|
|
call used to build the URL for the upstream proxy. [Patch suggested by
David T. Pierso]
|
|
(upstream_add): Added support to allow ip addresses and networks to be
used when matching an upstream proxy directive.
[Code by Peter da Silva]
|
|
statement, and also safe to use with a rvalue that has a side
effect. [Bug fix recommended by Peter da Silva]
|
|
The change was recommended in the C/C++ User Journal magazine.
|
|
convention.
|
|
the length returned in a argument variable pointer. This should be a
more natural way of using the function.
|
|
to be a general "insert" for both vector_append() and vector_prepend()
|
|
|
|
accurately indicate that entries are appended to the end of the
vector.
|
|
server configurable based on the destination host. [Code written by
Peter da Silva]
|
|
standard HTTP port (80 or 443) append the port string to the host
header; otherwise, leave the host string with only the host's domain
name.
Replaced all occurrences of constant 80 and 443 with defines HTTP_PORT
and HTTP_PORT_SSL.
|
|
safefree() call. Basically, destroy_conn() was trying to free memory
not allocated by malloc. [Fix by David T. Pierson]
|
|
is used by the transparent proxy code. [Anatole Shaw]
(process_request): Fixed up the transparent proxy code so that
filtering can be done on the whole URL. [Anatole Shaw]
(pull_client_data): Added a bug fix for Internet Explorer (IE). IE
will leave an extra CR and LF after the data in an HTTP POST. The new
code will eat the extra bytes if they're present. Thanks to Yannick
Koehler for finding the bug and offering an explanation as to why it
was happening.
Changed all calls of connptr->remote_content_length to
connptr->content_length.server
|
|
variable to determine whether to wait for a connection from GDB.
|
|
the child handling function.
|
|
replaced it with a smaller structure containing both the remote/server
and the local/client content-length fields if they're present in the
HTTP response headers.
|
|
and if so call safemalloc(). This is needed since saferealloc() will
assert() if the first argument is a NULL pointer.
|
|
requested server. This fixes a problem when the server is not
listening on the default port, 80.
[Fix suggested by duncan@sapio.co.uk]
|
|
processing of the command line options.
|
|
are only used with this file.
|
|
better match the existing tinyproxy practise. Included a few bug
fixes from Steve.
|
|
API.
|
|
terminating NULL. The va_arg() function requires it to work
properly.
|
|
configuration file, rather than being hard-coded in the program.
[John M Wright]
|
|
functions into the htmlerror.c file, and recoded them to use the new
variable substitution system. [Steven Young]
|
|
displayed for various HTTP errors and the stats page. [Steven Young]
|
|
possible. It still retains the hard-coded page for when an HTML file
is not available. [Steven Young]
|
|
substitution mechanism. [Steven Young]
|
|
(ErrorFile, DefaultErrorFile, StatFile) [Steven Young]
|