Main Page Alphabetical List Data Structures File List Data Fields Globals
parsers.h File Reference
Declares functions to parse/crunch headers and pages.
More...
Go to the source code of this file.
Defines |
|
#define | PARSERS_H_VERSION "$Id: parsers.h,v 2.0 2002/06/04 14:34:21 jongfoster Exp $" |
Functions |
| int | flush_socket (jb_socket fd, struct client_state *csp) |
| jb_err | add_to_iob (struct client_state *csp, char *buf, int n) |
| char * | get_header (struct client_state *csp) |
| char * | get_header_value (const struct list *header_list, const char *header_name) |
| char * | sed (const struct parsers pats[], const add_header_func_ptr more_headers[], struct client_state *csp) |
| jb_err | crumble (struct client_state *csp, char **header) |
| jb_err | client_referrer (struct client_state *csp, char **header) |
| jb_err | client_uagent (struct client_state *csp, char **header) |
| jb_err | client_ua (struct client_state *csp, char **header) |
| jb_err | client_from (struct client_state *csp, char **header) |
| jb_err | client_send_cookie (struct client_state *csp, char **header) |
| jb_err | client_x_forwarded (struct client_state *csp, char **header) |
| jb_err | client_accept_encoding (struct client_state *csp, char **header) |
| jb_err | client_te (struct client_state *csp, char **header) |
| jb_err | client_host_adder (struct client_state *csp) |
| jb_err | client_cookie_adder (struct client_state *csp) |
| jb_err | client_xtra_adder (struct client_state *csp) |
| jb_err | client_accept_encoding_adder (struct client_state *csp) |
| jb_err | client_x_forwarded_adder (struct client_state *csp) |
| jb_err | connection_close_adder (struct client_state *csp) |
| jb_err | server_set_cookie (struct client_state *csp, char **header) |
| jb_err | server_content_type (struct client_state *csp, char **header) |
| jb_err | server_content_length (struct client_state *csp, char **header) |
| jb_err | server_content_md5 (struct client_state *csp, char **header) |
| jb_err | server_content_encoding (struct client_state *csp, char **header) |
| jb_err | server_transfer_coding (struct client_state *csp, char **header) |
| jb_err | server_http (struct client_state *csp, char **header) |
Variables |
|
const struct parsers | client_patterns [] |
|
const struct parsers | server_patterns [] |
|
const add_header_func_ptr | add_client_headers [] |
|
const add_header_func_ptr | add_server_headers [] |
| const char | parsers_rcs [] |
| const char | parsers_h_rcs [] |
Detailed Description
Declares functions to parse/crunch headers and pages.
Functions declared include: `add_to_iob', `client_cookie_adder', `client_from', `client_referrer', `client_send_cookie', `client_ua', `client_uagent', `client_x_forwarded', `client_x_forwarded_adder', `client_xtra_adder', `content_type', `crumble', `destroy_list', `enlist', `flush_socket', `free_http_request', `get_header', `list_to_text', `parse_http_request', `sed', and `server_set_cookie'.
-
Log:
-
parsers.h,v
Revision 2.0 2002/06/04 14:34:21 jongfoster Moving source files to src/
Revision 1.26 2002/05/08 15:59:53 oes Changed add_to_iob signature (now returns jb_err)
Revision 1.25 2002/03/26 22:29:55 swa we have a new homepage!
Revision 1.24 2002/03/24 13:25:43 swa name change related issues
Revision 1.23 2002/03/13 00:27:05 jongfoster Killing warnings
Revision 1.22 2002/03/09 20:03:52 jongfoster
- Making various functions return int rather than size_t. (Undoing a recent change). Since size_t is unsigned on Windows, functions like read_socket that return -1 on error cannot return a size_t.
THIS WAS A MAJOR BUG - it caused frequent, unpredictable crashes, and also frequently caused JB to jump to 100% CPU and stay there. (Because it thought it had just read ((unsigned)-1) == 4Gb of data...)
- The signature of write_socket has changed, it now simply returns success=0/failure=nonzero.
- Trying to get rid of a few warnings --with-debug on Windows, I've introduced a new type "jb_socket". This is used for the socket file descriptors. On Windows, this is SOCKET (a typedef for unsigned). Everywhere else, it's an int. The error value can't be -1 any more, so it's now JB_INVALID_SOCKET (which is -1 on UNIX, and in Windows it maps to the define INVALID_SOCKET.)
- The signature of bind_port has changed.
Revision 1.21 2002/03/07 03:46:17 oes Fixed compiler warnings
Revision 1.20 2002/02/20 23:15:13 jongfoster Parsing functions now handle out-of-memory gracefully by returning an error code.
Revision 1.19 2002/01/17 21:03:47 jongfoster Moving all our URL and URL pattern parsing code to urlmatch.c.
Revision 1.18 2001/10/26 17:40:23 oes Introduced get_header_value() Removed client_accept()
Revision 1.17 2001/10/13 12:47:32 joergs Removed client_host, added client_host_adder
Revision 1.16 2001/10/07 18:50:16 oes Added server_content_encoding, renamed server_transfer_encoding
Revision 1.15 2001/10/07 18:01:55 oes Changed server_http11 to server_http
Revision 1.14 2001/10/07 15:45:48 oes added client_accept_encoding, client_te, client_accept_encoding_adder
renamed content_type and content_length
fixed client_host and strclean prototypes
Revision 1.13 2001/09/29 12:56:03 joergs IJB now changes HTTP/1.1 to HTTP/1.0 in requests and answers.
Revision 1.12 2001/09/13 23:05:50 jongfoster Changing the string paramater to the header parsers a "const".
Revision 1.11 2001/07/31 14:46:53 oes Added prototype for connection_close_adder
Revision 1.10 2001/07/30 22:08:36 jongfoster Tidying up defines:
- All feature defines are now of the form FEATURE_xxx
- Permanently turned off WIN_GUI_EDIT
- Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
Revision 1.9 2001/07/29 18:43:08 jongfoster Changing ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to ANSI C rules.
Revision 1.8 2001/07/13 14:01:54 oes Removed all ifdef PCRS
Revision 1.7 2001/06/29 13:32:14 oes Removed logentry from cancelled commit
Revision 1.6 2001/06/03 19:12:38 oes deleted const struct interceptors
Revision 1.5 2001/05/31 21:30:33 jongfoster Removed list code - it's now in list.[ch] Renamed "permission" to "action", and changed many features to use the actions file rather than the global config.
Revision 1.4 2001/05/27 13:19:06 oes Patched Joergs solution for the content-length in.
Revision 1.3 2001/05/26 13:39:32 jongfoster Only crunches Content-Length header if applying RE filtering. Without this fix, Microsoft Windows Update wouldn't work.
Revision 1.2 2001/05/20 01:21:20 jongfoster Version 2.9.4 checkin.
- Merged popupfile and cookiefile, and added control over PCRS filtering, in new "permissionsfile".
- Implemented LOG_LEVEL_FATAL, so that if there is a configuration file error you now get a message box (in the Win32 GUI) rather than the program exiting with no explanation.
- Made killpopup use the PCRS MIME-type checking and HTTP-header skipping.
- Removed tabs from "config"
- Moved duplicated url parsing code in "loaders.c" to a new funcition.
- Bumped up version number.
Revision 1.1.1.1 2001/05/15 13:59:01 oes Initial import of version 2.9.3 source tree
Function Documentation
|
|
Add content to the buffered page, expanding the buffer if necessary.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| buf |
holds the content to be added to the page |
| n |
number of bytes to be added |
-
Returns:
-
JB_ERR_OK on success, JB_ERR_MEMORY if out-of-memory or buffer limit reached.
|
|
|
Rewrite the client's Accept-Encoding header so that if doesn't allow compression, if the action applies.
Note For HTTP/1.0 the absence of the header is enough. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Add an Accept-Encoding header to the client's request that disables compression if the action applies, and the header is not already there.
Called from `sed'.
Note For HTTP/1.0, the absence of the header is enough. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Used in the add_client_headers list.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle the "from" config setting properly.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
(re)adds the host header.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle the "referer" config setting properly.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle the "cookie" header properly.
Called from `sed'. If cookie is accepted, add it to the cookie_list, else we crunch it. Mmmmmmmmmmm ... cookie ...... -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Rewrite the client's TE header so that if doesn't allow compression, if the action applies.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle "ua-" headers properly.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle the "user-agent" config setting properly and remember its original value to enable browser bug workarounds.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle the "x-forwarded-for" config setting properly, also used in the add_client_headers list.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Used in the add_client_headers list.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Used in the add_client_headers list.
Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Adds a "Connection: close" header to csp->headers as a temporary fix for the needed but missing HTTP/1.1 support.
Called from `sed'.
FIXME This whole function shouldn't be neccessary! -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
This is called if a header matches a pattern to "crunch".
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Write any pending "buffered" content.
-
Parameters:
-
| fd |
file descriptor of the socket to read |
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
On success, the number of bytes written are returned (zero indicates nothing was written). On error, -1 is returned, and errno is set appropriately. If count is zero and the file descriptor refers to a regular file, 0 will be returned without causing any other effect. For a special file, the results are not portable.
|
|
|
This (odd) routine will parse the csp->iob.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
Any one of the following: 1) a pointer to a dynamically allocated string that contains a header line 2) NULL indicating that the end of the header was reached 3) "" indicating that the end of the iob was reached before finding a complete header line.
|
| char* get_header_value |
( |
const struct list * |
header_list, |
|
|
const char * |
header_name |
|
) |
|
|
|
|
Get the value of a given header from a chained list of header lines or return NULL if no such header is present in the list.
-
Parameters:
-
| header_list |
pointer to list |
| header_name |
string with name of header to look for. Trailing colon required, capitalization doesn't matter. |
-
Returns:
-
NULL if not found, else value of header
|
|
|
add, delete or modify lines in the HTTP header streams.
On entry, it receives a linked list of headers space that was allocated dynamically (both the list nodes and the header contents). As a side effect it frees the space used by the original header lines. -
Parameters:
-
| pats |
list of patterns to match against headers |
| more_headers |
list of functions to add more headers (client or server) |
| csp |
Current client state (buffers, headers, etc...) |
-
Returns:
-
Single pointer to a fully formed header, or NULL on out-of-memory error.
|
|
|
Prohibit filtering (CT_TABOO) if content encoding compresses.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Adjust Content-Length header if we modified the body.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Crumble any Content-MD5 headers if the document was modified.
FIXME: Should we re-compute instead? -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Set the content-type for filterable types (text/.*, javascript and image/gif) unless filtering has been forbidden (CT_TABOO) while parsing earlier headers.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Save the HTTP Status into csp->http->status Set CT_TABOO to prevent filtering if the answer is a partial range (HTTP status 206) Rewrite HTTP/1.1 answers to HTTP/1.0 if +downgrade action applies.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Handle the server "cookie" header properly.
Log cookie to the jar file. Then "crunch" it, or accept it. Called from `sed'. -
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
|
|
Prohibit filtering (CT_TABOO) if transfer coding compresses Raise the CSP_FLAG_CHUNKED flag if coding is "chunked" Change from "chunked" to "identity" if body was chunked but has been de-chunked for filtering.
-
Parameters:
-
| csp |
Current client state (buffers, headers, etc...) |
| header |
On input, pointer to header to modify. On output, pointer to the modified header, or NULL to remove the header. This function frees the original string if necessary. |
-
Returns:
-
JB_ERR_OK on success, or JB_ERR_MEMORY on out-of-memory error.
|
Variable Documentation
| const char parsers_h_rcs[]
|
|
Generated on Tue Jun 4 18:54:49 2002 for Privoxy 3.1.1 by
1.2.15