Moving all our URL and URL pattern parsing code to urlmatch.c.
authorjongfoster <jongfoster@users.sourceforge.net>
Thu, 17 Jan 2002 21:03:47 +0000 (21:03 +0000)
committerjongfoster <jongfoster@users.sourceforge.net>
Thu, 17 Jan 2002 21:03:47 +0000 (21:03 +0000)
filters.h
jcc.c
parsers.c
parsers.h

index 5661ee3..27024e8 100644 (file)
--- 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 2d37bec..cee1601 100644 (file)
--- 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;
index 88cddcb..dbbeacf 100644 (file)
--- 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 */
 
 
index 9dc2c69..791b07f 100644 (file)
--- 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 $
  *
  * 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);