summaryrefslogtreecommitdiff
path: root/src/reqs.c (follow)
AgeCommit message (Collapse)AuthorFilesLines
2008-12-08Break at 80 columnsMukund Sivaraman1-17/+33
2008-12-01Reformat code to GNU coding styleMukund Sivaraman1-1316/+1429
This is a commit which simply ran all C source code files through GNU indent. No other modifications were made.
2008-08-24pos can never be less than 0 as it's of type size_tMukund Sivaraman1-1/+1
Also fix the type which is passed in from various places.
2008-06-09Moved transparent proxy code into its own fileRobert James Kaes1-113/+9
Extracted the transparent proxy logic from reqs.c and placed it into a separate file. Signed-off-by: Robert James Kaes <rjk@wormbytes.ca>
2008-05-24Renamed htmlerror.[ch] to html-error.[ch]Mukund Sivaraman1-1/+1
2008-05-24Updated copyright, license notices in source codeMukund Sivaraman1-17/+21
The notices have been changed to a more GNU look. Documentation comments have been separated from the copyright header. I've tried to keep all copyright notices intact. Some author contact details have been updated.
2008-03-13Renamed file to replace underscores in it with dashesMukund Sivaraman1-1/+1
2005-08-16* [Refactor] Moved Reverse Proxy CodeRobert James Kaes1-140/+15
Moved the reverse proxy code from reqs.c into it's own files (reverse_proxy.c). The code in reqs.c is way too complicated, so I want to move unrelated code into their own files to simplify the main concepts in reqs.c.
2005-08-15* [Indent] Ran Source Through indentRobert James Kaes1-1324/+1373
I re-indented the source code using indent with the following options: indent -kr -bad -bap -nut -i8 -l80 -psl -sob -ss -ncs There are now _no_ tabs in the source files, and all indentation is eight spaces. Lines are 80 characters long, and the procedure type is on it's own line. Read the indent manual for more information about what each option means.
2005-07-12* Updated Copyright Email AddressesRobert James Kaes1-2/+2
Updated the copyright email addresses for Robert James Kaes. The users.sourceforge.net address should always exist.
2005-07-06Removed the proxy-* headers from the list of headers to skip. SinceRobert James Kaes1-3/+1
tinyproxy does not prompt for any proxy information from the client, it should not be eating the proxy headers. They are most likely needed by an upstream proxy.
2004-08-24Added code to handle HTTP/0.9 simple GET requests.Robert James Kaes1-36/+53
2004-08-12(check_allowed_connect_ports): By default DENY any CONNECT requestsRobert James Kaes1-13/+9
unless explicitly allowed by a configuration directive.
2004-08-12(add_xtinyproxy_header): Removed the runtime error checking of theRobert James Kaes1-8/+3
connptr->server_fd variable and moved it into an assert since we should never be called with invalid data. Also made the function an inline function since it's only called in one place.
2004-08-11(strip_username_password): Removed one of the pointer variables sinceRobert James Kaes1-11/+16
it's no longer needed. Reorganized the function to make it more obvious what was actually being done.
2004-08-10Merged in changes from 1.6.3Robert James Kaes1-5/+6
2004-04-27Added the "BindSame" configure directive from Oswald Buddenhagen.Robert James Kaes1-10/+19
This allows tinyproxy to respond to a request bound to the same interface that the request came in on. As Oswald explains: "attached is a patch that adds the BindSame option. it causes binding an outgoing connection to the ip address of the respective incoming connection. that way one can simulate an entire proxy farm with a single instance of tinyproxy on a multi-homed machine." Cool.
2004-02-13Removed unnecessary casts (mostly dealing with memory allocation.) IRobert James Kaes1-12/+11
should never have added them in the first place. They don't really buy anything, and they can hide bugs.
2004-02-04(strip_return_port): Patch from "alex" to strip the port from the hostRobert James Kaes1-19/+41
string and return the port. I cleaned up and added error handling to the code, but it's basically "alex"'s fix. (extract_http_url): Rewrote this function to remove all the sscanf() calls. It's much easier to just split on the path slash (if it's present) and then strip the user name/password and port from the host string. Less code, handles more cases!
2004-01-26Added reverse proxy support from Kim Holviala. His comments regardingRobert James Kaes1-5/+173
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-08-07tinyproxy no longer includes a fall-back regular expression library,Robert James Kaes1-2/+1
so these files needed to be modified to only use the system's installed regular expression library.
2003-08-05# Fixed a comment to actually reflect what the function does.Robert James Kaes1-2/+2
2003-07-31Added appropriate casts from (void*) so that the code will compileRobert James Kaes1-13/+14
cleanly with a C++ compiler. (Tested using GCC 3.3)
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-20Removed the "ViaHeader" directive and replaced it with theRobert James Kaes1-23/+23
"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 Kaes1-37/+65
(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-31# Changed all the for calls to use the != test rather than < test.Robert James Kaes1-5/+5
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 Kaes1-2/+3
convention.
2003-05-29# Renamed the vector_insert() calls to vector_append()Robert James Kaes1-2/+2
2003-05-29Improved the upstream proxy support by making the upstream proxyRobert James Kaes1-16/+153
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-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-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-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-13# Changed calls to indicate_http_error() to use the new HTML variableRobert James Kaes1-34/+53
substitution mechanism. [Steven Young]
2003-01-28# (connect_to_upstream): Improved the preprocessor directives to makeRobert James Kaes1-3/+3
sure the function would compile cleanly regardless of how the directive was set.
2003-01-27(connect_to_upstream): Reorganized the preprocessor directives to makeRobert James Kaes1-3/+9
sure the function's symbol name is stored, even if upstream was not compiled it. This should keep some compilers from reporting errors.
2003-01-27(process_client_headers): Fixed inverted anonymous header logic. FixRobert James Kaes1-2/+2
comes from the FreeBSD port through James E. Flemer.
2002-12-04(strip_username_password): New function to remove anyRobert James Kaes1-1/+27
username/password part from the host URI. (extract_http_url), (extract_ssl_url): Use the new strip_username_password function to remove any non-host information from the URI.
2002-12-04Removed the "bool_t" type since it conflicts with the newer C standards.Robert James Kaes1-2/+2
The type was just replaced by "unsigned int" types.
2002-11-29(extract_http_url): Removed the leading "http://" from all the tests,Robert James Kaes1-11/+12
since it's skipped by the caller before the URL is passed to this function. (process_request): Include code to handle proxy FTP requests as well. This also lead to a bit of a cleanup in the calling conventions of extract_http_url function. tinyproxy can handle both types of resources by skipping the leading :// part.
2002-11-26Included code to disable the sending of the Via header. This is nowRobert James Kaes1-13/+18
controlled by the ViaHeader configure directive.
2002-11-13(relay_connection): Shutdown the client socket for writing once allRobert James Kaes1-1/+2
the data has been sent.
2002-11-03Removed all the code supporting the TCP tunnelling feature ofRobert James Kaes1-81/+1
tinyproxy. There is really no need for this code, since there are perfectly good programs out there (like rinetd) which are designed for TCP tunnelling. tinyproxy should be a good HTTP proxy, nothing more, and nothing less; therefore, the tunnelling code is gone.
2002-10-17(relay_connection): Ivan pointed out a bug with the code to send anyRobert James Kaes1-2/+2
remaining data to the server when the connections are being closed. It was a one line fix.
2002-06-06A bunch of changes from Petr Lampa that add transparent proxy support to ↵Robert James Kaes1-27/+98
tinyproxy. The additional code is in process_request(), but Petr also had to change around some of the other functions (like process_client_headers and handle_connection.) Note: Right now this code has not been tested, but it is believed to work. To enable run ./configure --enable-transparent-proxy
2002-05-31(process_server_headers): Since we're stripping off the carriage return and ↵Robert James Kaes1-2/+2
newline, we need to add them back on when sending the response header to the client.
2002-05-29(add_header_to_connection): Removed the "double_cgi" boolean, since ↵Robert James Kaes1-12/+5
tinyproxy now ignores all the headers after a "double CGI" situation has occurred. (get_all_headers): Instead of dropping duplicate headers when the "double CGI" situation occurs, tinyproxy will now drop _all_ the headers from the "inner" HTTP response.
2002-05-28(add_header_to_connection): Added a boolean to indicate that a "Double CGI" ↵Robert James Kaes1-6/+22
situation is in affect. This is needed to solve a problem with some sites (like cgi.ebay.com) where they are sending two HTTP response lines (and associated headers) with a response. (get_all_headers): Detect if a "Double CGI" situation has occured.