summaryrefslogtreecommitdiff
path: root/src (follow)
AgeCommit message (Collapse)AuthorFilesLines
2004-01-26Added reverse proxy support from Kim Holviala. His comments regardingRobert James Kaes8-30/+279
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.
2003-10-17Merged in changes from the 1.6.2 release. (Fixes for the filtering codeRobert James Kaes1-23/+32
and the HTML installation script.)
2003-08-07tinyproxy no longer includes a fall-back regular expression library,Robert James Kaes4-9/+8
so these files needed to be modified to only use the system's installed regular expression library.
2003-08-07Removed the included regular expression library, since it should comeRobert James Kaes3-6457/+0
standard on any reasonably modern system.
2003-08-07# Merged in changes from the stable 1.6 branch.Robert James Kaes1-4/+3
2003-08-05# Fixed a comment to actually reflect what the function does.Robert James Kaes1-2/+2
2003-08-01Included patches from Steven Young to use the hashmap functionality toRobert James Kaes4-82/+64
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.
2003-07-31Added appropriate casts (void*) casts to allow the code to compileRobert James Kaes1-9/+12
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.
2003-07-31(debugging_realloc): Removed the assert for the NULL pointer, sinceRobert James Kaes1-3/+2
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.
2003-07-31Fixed the cast in both safefree() macros to compile cleaning using aRobert James Kaes1-3/+3
C++ compiler.
2003-07-31# Fixed a preprocessor test (misspelled __cplusplus)Robert James Kaes1-2/+2
2003-07-31Added appropriate casts from (void*) so that the code will compileRobert James Kaes11-58/+67
cleanly with a C++ compiler. (Tested using GCC 3.3)
2003-07-14(indicate_http_error): Added calls to va_end() before leaving theRobert James Kaes1-2/+6
function.
2003-06-26# Removed the debugging information.Robert James Kaes1-8/+2
2003-06-26# Added debugging flags for the flex scanner.Robert James Kaes1-2/+2
2003-06-26(upstream_add): Rewrote the function to actually handle the variousRobert James Kaes1-33/+37
types of upstream configurations correctly. Hopefully, the code is also a little clearer in it's implementation.
2003-06-26# Removed the STRING_ADDRESS token since it was conflicting with theRobert James Kaes1-6/+4
IDENTIFIER directive and also the keyword directives.
2003-06-26Modified the patterns to allow the new upstream directives to work asRobert James Kaes1-9/+14
defined in the tinyproxy.conf documentation.
2003-06-26(debugging_free): Rather than assert on a NULL pointer, log the NULLRobert James Kaes1-4/+4
pointer and return.
2003-06-25Added a test to define INADDR_NONE if it's not present. For example,Robert James Kaes1-1/+8
SunOS (solaris 2.8) does not include this define. [Thank to Ben Hartshorne for pointing this out.]
2003-06-20Removed the "ViaHeader" directive and replaced it with theRobert James Kaes4-40/+42
"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.
2003-06-06(connect_to_upstream): Fixed an off-by-one error in the snprintf()Robert James Kaes1-5/+6
call used to build the URL for the upstream proxy. [Patch suggested by David T. Pierso]
2003-06-02(upstream_get):Robert James Kaes2-38/+67
(upstream_add): Added support to allow ip addresses and networks to be used when matching an upstream proxy directive. [Code by Peter da Silva]
2003-05-31Changed the safefree() macro to make it safe to use a conditionalRobert James Kaes1-3/+11
statement, and also safe to use with a rvalue that has a side effect. [Bug fix recommended by Peter da Silva]
2003-05-31# Changed all the for calls to use the != test rather than < test.Robert James Kaes7-31/+31
The change was recommended in the C/C++ User Journal magazine.
2003-05-30# Changed the calls to vector_getentry() to use the new callingRobert James Kaes2-4/+5
convention.
2003-05-30(vector_getentry): Changed the API to return the data pointer and haveRobert James Kaes2-18/+19
the length returned in a argument variable pointer. This should be a more natural way of using the function.
2003-05-29# Added a vector_prepend() function and recoded the old vector_insert()Robert James Kaes2-15/+41
to be a general "insert" for both vector_append() and vector_prepend()
2003-05-29# Renamed the vector_insert() calls to vector_append()Robert James Kaes2-4/+4
2003-05-29(vector_append): Renamed the vector_insert() function to moreRobert James Kaes2-9/+9
accurately indicate that entries are appended to the end of the vector.
2003-05-29Improved the upstream proxy support by making the upstream proxyRobert James Kaes4-23/+184
server configurable based on the destination host. [Code written by Peter da Silva]
2003-05-05(establish_http_connection): If the port being requested is not aRobert James Kaes1-7/+23
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.
2003-05-04Fixed a bug that would kill a child process because of an invalidRobert James Kaes2-5/+4
safefree() call. Basically, destroy_conn() was trying to free memory not allocated by malloc. [Fix by David T. Pierson]
2003-04-16(build_url): Rebuild the URL from the component pieces. This functionRobert James Kaes1-13/+53
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
2003-04-16# Changed it again to this time use the TINYPROXY_DEBUG environmentRobert James Kaes1-7/+13
variable to determine whether to wait for a connection from GDB.
2003-04-16# The programmer is now made to _explicitly_ enable the GDB support inRobert James Kaes1-2/+3
the child handling function.
2003-04-16Removed the remote_content_length field in the "conn" structure andRobert James Kaes2-4/+8
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.
2003-04-01(add_error_variable): Test whether connptr->error_variable is NULL,Robert James Kaes1-2/+6
and if so call safemalloc(). This is needed since saferealloc() will assert() if the first argument is a NULL pointer.
2003-03-26(establish_http_connection): Always include the port number for theRobert James Kaes1-3/+4
requested server. This fixes a problem when the server is not listening on the default port, 80. [Fix suggested by duncan@sapio.co.uk]
2003-03-17# Moved the location of the "initializing" log message to below theRobert James Kaes1-3/+3
processing of the command line options.
2003-03-14Made get_html_file() and lookup_variable() static functions since theyRobert James Kaes1-3/+3
are only used with this file.
2003-03-14# Added copyright notices for Steve. Reformatted the source code toRobert James Kaes2-24/+62
better match the existing tinyproxy practise. Included a few bug fixes from Steve.
2003-03-14(send_http_message): Changed the function to use the new http_messageRobert James Kaes1-31/+20
API.
2003-03-14# Updated all the calls to indicate_http_error() to include aRobert James Kaes1-18/+35
terminating NULL. The va_arg() function requires it to work properly.
2003-03-13Allow the URL for the statistic page to be controlled from theRobert James Kaes2-2/+9
configuration file, rather than being hard-coded in the program. [John M Wright]
2003-03-13Moved the send_http_error_message() and indicate_http_error()Robert James Kaes2-74/+2
functions into the htmlerror.c file, and recoded them to use the new variable substitution system. [Steven Young]
2003-03-13# Added variables to config structure to keep track of the files to beRobert James Kaes2-10/+37
displayed for various HTTP errors and the stats page. [Steven Young]
2003-03-13# Changed showstats() to use the HTML variable functions whenRobert James Kaes1-12/+35
possible. It still retains the hard-coded page for when an HTML file is not available. [Steven Young]
2003-03-13# Changed calls to indicate_http_error() to use the new HTML variableRobert James Kaes1-34/+53
substitution mechanism. [Steven Young]
2003-03-13# Added parser support for the error file configuration keywordsRobert James Kaes2-3/+19
(ErrorFile, DefaultErrorFile, StatFile) [Steven Young]