From: jongfoster Date: Thu, 17 Jan 2002 21:03:47 +0000 (+0000) Subject: Moving all our URL and URL pattern parsing code to urlmatch.c. X-Git-Tag: v_2_9_11~36 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=caec21aaad840031cae68e8e2a6fceab731f88e6 Moving all our URL and URL pattern parsing code to urlmatch.c. --- diff --git a/filters.h b/filters.h index 5661ee33..27024e83 100644 --- a/filters.h +++ b/filters.h @@ -1,6 +1,6 @@ #ifndef FILTERS_H_INCLUDED #define FILTERS_H_INCLUDED -#define FILTERS_H_VERSION "$Id: filters.h,v 1.14 2001/10/07 15:41:40 oes Exp $" +#define FILTERS_H_VERSION "$Id: filters.h,v 1.15 2001/10/10 16:44:16 oes Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/filters.h,v $ @@ -8,8 +8,7 @@ * Purpose : Declares functions to parse/crunch headers and pages. * Functions declared include: * `acl_addr', `add_stats', `block_acl', `block_imageurl', - * `block_url', `url_actions', `domaincmp', `dsplit', - * `filter_popups', `forward_url' + * `block_url', `url_actions', `filter_popups', `forward_url' * `ij_untrusted_url', `intercept_url', `re_process_buffer', * `show_proxy_args', and `trust_url' * @@ -40,6 +39,9 @@ * * Revisions : * $Log: filters.h,v $ + * Revision 1.15 2001/10/10 16:44:16 oes + * Added match_portlist function + * * Revision 1.14 2001/10/07 15:41:40 oes * Added prototype for remove_chunked_transfer_coding * @@ -235,9 +237,6 @@ extern void apply_url_actions(struct current_action_spec *action, */ extern const struct forward_spec *forward_url(struct http_request *http, struct client_state *csp); -extern struct url_spec dsplit(char *domain); -extern int domaincmp(struct url_spec *pattern, struct url_spec *fqdn); - /* * Content modification */ diff --git a/jcc.c b/jcc.c index 2d37bec6..cee16012 100644 --- a/jcc.c +++ b/jcc.c @@ -1,4 +1,4 @@ -const char jcc_rcs[] = "$Id: jcc.c,v 1.59 2001/12/13 14:07:18 oes Exp $"; +const char jcc_rcs[] = "$Id: jcc.c,v 1.60 2001/12/30 14:07:32 steudten Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jcc.c,v $ @@ -33,6 +33,14 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.59 2001/12/13 14:07:18 oes Exp $"; * * Revisions : * $Log: jcc.c,v $ + * Revision 1.60 2001/12/30 14:07:32 steudten + * - Add signal handling (unix) + * - Add SIGHUP handler (unix) + * - Add creation of pidfile (unix) + * - Add action 'top' in rc file (RH) + * - Add entry 'SIGNALS' to manpage + * - Add exit message to logfile (unix) + * * Revision 1.59 2001/12/13 14:07:18 oes * Fixed Bug: 503 error page now sent OK * @@ -457,6 +465,7 @@ int ldebug = 0; #include "actions.h" #include "cgi.h" #include "loadcfg.h" +#include "urlmatch.h" const char jcc_h_rcs[] = JCC_H_VERSION; const char project_h_rcs[] = PROJECT_H_VERSION; diff --git a/parsers.c b/parsers.c index 88cddcb1..dbbeacf7 100644 --- a/parsers.c +++ b/parsers.c @@ -1,4 +1,4 @@ -const char parsers_rcs[] = "$Id: parsers.c,v 1.44 2001/12/14 01:22:54 steudten Exp $"; +const char parsers_rcs[] = "$Id: parsers.c,v 1.45 2002/01/09 14:33:03 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/parsers.c,v $ @@ -10,8 +10,7 @@ const char parsers_rcs[] = "$Id: parsers.c,v 1.44 2001/12/14 01:22:54 steudten E * `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', + * `flush_socket', ``get_header', `sed', * and `server_set_cookie'. * * Copyright : Written by and Copyright (C) 2001 the SourceForge @@ -41,6 +40,9 @@ const char parsers_rcs[] = "$Id: parsers.c,v 1.44 2001/12/14 01:22:54 steudten E * * Revisions : * $Log: parsers.c,v $ + * Revision 1.45 2002/01/09 14:33:03 oes + * Added support for localtime_r. + * * Revision 1.44 2001/12/14 01:22:54 steudten * Remove 'user:pass@' from 'proto://user:pass@host' for the * new added header 'Host: ..'. (See Req ID 491818) @@ -681,178 +683,6 @@ char *sed(const struct parsers pats[], void (* const more_headers[])(struct clie } -/********************************************************************* - * - * Function : free_http_request - * - * Description : Freez a http_request structure - * - * Parameters : - * 1 : http = points to a http_request structure to free - * - * Returns : N/A - * - *********************************************************************/ -void free_http_request(struct http_request *http) -{ - assert(http); - - freez(http->cmd); - freez(http->gpc); - freez(http->host); - freez(http->url); - freez(http->hostport); - freez(http->path); - freez(http->ver); - freez(http->host_ip_addr_str); - -} - - -/********************************************************************* - * - * Function : parse_http_request - * - * Description : Parse out the host and port from the URL. Find the - * hostname & path, port (if ':'), and/or password (if '@') - * - * Parameters : - * 1 : req = URL (or is it URI?) to break down - * 2 : http = pointer to the http structure to hold elements - * 3 : csp = Current client state (buffers, headers, etc...) - * - * Returns : N/A - * - *********************************************************************/ -void parse_http_request(char *req, struct http_request *http, struct client_state *csp) -{ - char *buf, *v[10], *url, *p; - int n; - - memset(http, '\0', sizeof(*http)); - http->cmd = strdup(req); - - buf = strdup(req); - n = ssplit(buf, " \r\n", v, SZ(v), 1, 1); - - if (n == 3) - { - /* this could be a CONNECT request */ - if (strcmpic(v[0], "connect") == 0) - { - http->ssl = 1; - http->gpc = strdup(v[0]); - http->hostport = strdup(v[1]); - http->ver = strdup(v[2]); - } - - /* or it could be any other basic HTTP request type */ - if ((0 == strcmpic(v[0], "get")) - || (0 == strcmpic(v[0], "head")) - || (0 == strcmpic(v[0], "post")) - || (0 == strcmpic(v[0], "put")) - || (0 == strcmpic(v[0], "delete")) - - /* or a webDAV extension (RFC2518) */ - || (0 == strcmpic(v[0], "propfind")) - || (0 == strcmpic(v[0], "proppatch")) - || (0 == strcmpic(v[0], "move")) - || (0 == strcmpic(v[0], "copy")) - || (0 == strcmpic(v[0], "mkcol")) - || (0 == strcmpic(v[0], "lock")) - || (0 == strcmpic(v[0], "unlock")) - ) - { - http->ssl = 0; - http->gpc = strdup(v[0]); - http->url = strdup(v[1]); - http->ver = strdup(v[2]); - - url = v[1]; - if (strncmpic(url, "http://", 7) == 0) - { - url += 7; - } - else if (strncmpic(url, "https://", 8) == 0) - { - url += 8; - } - else - { - url = NULL; - } - - if (url) - { - if ((p = strchr(url, '/'))) - { - http->path = strdup(p); - *p = '\0'; - http->hostport = strdup(url); - } - /* - * Repair broken HTTP requests that don't contain a path - */ - else - { - http->path = strdup("/"); - http->hostport = strdup(url); - } - } - } - } - - freez(buf); - - - if (http->hostport == NULL) - { - free_http_request(http); - return; - } - - buf = strdup(http->hostport); - - - /* check if url contains password */ - n = ssplit(buf, "@", v, SZ(v), 1, 1); - if (n == 2) - { - char * newbuf = NULL; - newbuf = strdup(v[1]); - freez(buf); - buf = newbuf; - } - - n = ssplit(buf, ":", v, SZ(v), 1, 1); - - if (n == 1) - { - http->host = strdup(v[0]); - http->port = 80; - } - - if (n == 2) - { - http->host = strdup(v[0]); - http->port = atoi(v[1]); - } - - freez(buf); - - if (http->host == NULL) - { - free_http_request(http); - } - - if (http->path == NULL) - { - http->path = strdup("/"); - } - -} - - /* here begins the family of parser functions that reformat header lines */ diff --git a/parsers.h b/parsers.h index 9dc2c696..791b07fb 100644 --- a/parsers.h +++ b/parsers.h @@ -1,6 +1,6 @@ #ifndef PARSERS_H_INCLUDED #define PARSERS_H_INCLUDED -#define PARSERS_H_VERSION "$Id: parsers.h,v 1.17 2001/10/13 12:47:32 joergs Exp $" +#define PARSERS_H_VERSION "$Id: parsers.h,v 1.18 2001/10/26 17:40:23 oes Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/parsers.h,v $ @@ -43,6 +43,10 @@ * * Revisions : * $Log: parsers.h,v $ + * 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 * @@ -137,9 +141,6 @@ extern char *get_header(struct client_state *csp); extern char *get_header_value(const struct list *header_list, const char *header_name); extern char *sed(const struct parsers pats[], void (* const more_headers[])(struct client_state *), struct client_state *csp); -extern void free_http_request(struct http_request *http); -extern void parse_http_request(char *req, struct http_request *http, struct client_state *csp); - extern char *crumble(const struct parsers *v, const char *s, struct client_state *csp); extern char *client_referrer(const struct parsers *v, const char *s, struct client_state *csp);