They deal with all kinds of patterns now.
-const char actions_rcs[] = "$Id: actions.c,v 1.88 2013/11/24 14:22:51 fabiankeil Exp $";
+const char actions_rcs[] = "$Id: actions.c,v 1.89 2013/11/24 14:24:17 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/actions.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/actions.c,v $
while (cur != NULL)
{
next = cur->next;
while (cur != NULL)
{
next = cur->next;
- free_url_spec(cur->url);
+ free_pattern_spec(cur->url);
if ((next == NULL) || (next->action != cur->action))
{
/*
if ((next == NULL) || (next->action != cur->action))
{
/*
cur_action_used = 1;
/* Save the URL pattern */
cur_action_used = 1;
/* Save the URL pattern */
- if (create_url_spec(perm->url, buf))
+ if (create_pattern_spec(perm->url, buf))
{
fclose(fp);
log_error(LOG_LEVEL_FATAL,
{
fclose(fp);
log_error(LOG_LEVEL_FATAL,
-const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.77 2013/11/06 16:28:00 fabiankeil Exp $";
+const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.78 2013/11/24 14:22:51 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgiedit.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgiedit.c,v $
free(param);
return JB_ERR_MEMORY;
}
free(param);
return JB_ERR_MEMORY;
}
- err = create_url_spec(compiled, s);
+ err = create_pattern_spec(compiled, s);
free(s);
if (err)
{
free(param);
return (err == JB_ERR_MEMORY) ? JB_ERR_MEMORY : JB_ERR_CGI_PARAMS;
}
free(s);
if (err)
{
free(param);
return (err == JB_ERR_MEMORY) ? JB_ERR_MEMORY : JB_ERR_CGI_PARAMS;
}
- free_url_spec(compiled);
+ free_pattern_spec(compiled);
if (param[strlen(param) - 1] == '\\')
{
if (param[strlen(param) - 1] == '\\')
{
free(param);
return JB_ERR_MEMORY;
}
free(param);
return JB_ERR_MEMORY;
}
- err = create_url_spec(compiled, s);
+ err = create_pattern_spec(compiled, s);
free(s);
if (err)
{
free(param);
return (err == JB_ERR_MEMORY) ? JB_ERR_MEMORY : JB_ERR_CGI_PARAMS;
}
free(s);
if (err)
{
free(param);
return (err == JB_ERR_MEMORY) ? JB_ERR_MEMORY : JB_ERR_CGI_PARAMS;
}
- free_url_spec(compiled);
+ free_pattern_spec(compiled);
-const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.137 2013/03/07 14:08:49 fabiankeil Exp $";
+const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.138 2013/04/23 09:42:53 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
while (cur_fwd != NULL)
{
struct forward_spec * next_fwd = cur_fwd->next;
while (cur_fwd != NULL)
{
struct forward_spec * next_fwd = cur_fwd->next;
- free_url_spec(cur_fwd->url);
+ free_pattern_spec(cur_fwd->url);
freez(cur_fwd->gateway_host);
freez(cur_fwd->forward_host);
freez(cur_fwd->gateway_host);
freez(cur_fwd->forward_host);
cur_fwd->type = SOCKS_NONE;
/* Save the URL pattern */
cur_fwd->type = SOCKS_NONE;
/* Save the URL pattern */
- if (create_url_spec(cur_fwd->url, vec[0]))
+ if (create_pattern_spec(cur_fwd->url, vec[0]))
{
log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward "
"directive in configuration file.");
{
log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward "
"directive in configuration file.");
cur_fwd->type = SOCKS_4;
/* Save the URL pattern */
cur_fwd->type = SOCKS_4;
/* Save the URL pattern */
- if (create_url_spec(cur_fwd->url, vec[0]))
+ if (create_pattern_spec(cur_fwd->url, vec[0]))
{
log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward-socks4 "
"directive in configuration file.");
{
log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward-socks4 "
"directive in configuration file.");
}
/* Save the URL pattern */
}
/* Save the URL pattern */
- if (create_url_spec(cur_fwd->url, vec[0]))
+ if (create_pattern_spec(cur_fwd->url, vec[0]))
{
log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward-socks4a "
"directive in configuration file.");
{
log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward-socks4a "
"directive in configuration file.");
-const char loaders_rcs[] = "$Id: loaders.c,v 1.95 2013/01/13 15:38:14 fabiankeil Exp $";
+const char loaders_rcs[] = "$Id: loaders.c,v 1.96 2013/11/24 14:22:51 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loaders.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loaders.c,v $
- free_url_spec(cur->url);
+ free_pattern_spec(cur->url);
b->reject = reject;
/* Save the URL pattern */
b->reject = reject;
/* Save the URL pattern */
- if (create_url_spec(b->url, buf))
+ if (create_pattern_spec(b->url, buf))
{
fclose(fp);
goto load_trustfile_error;
{
fclose(fp);
goto load_trustfile_error;
*********************************************************************/
void unload_forward_spec(struct forward_spec *fwd)
{
*********************************************************************/
void unload_forward_spec(struct forward_spec *fwd)
{
- free_url_spec(fwd->url);
+ free_pattern_spec(fwd->url);
freez(fwd->gateway_host);
freez(fwd->forward_host);
free(fwd);
freez(fwd->gateway_host);
freez(fwd->forward_host);
free(fwd);
-const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.76 2013/11/24 14:22:51 fabiankeil Exp $";
+const char urlmatch_rcs[] = "$Id: urlmatch.c,v 1.77 2013/11/24 14:24:18 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/urlmatch.c,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/urlmatch.c,v $
*regex = zalloc(sizeof(**regex));
if (NULL == *regex)
{
*regex = zalloc(sizeof(**regex));
if (NULL == *regex)
{
+ free_pattern_spec(url);
rebuf[errlen] = '\0';
log_error(LOG_LEVEL_ERROR, "error compiling %s from %s: %s",
pattern, url->spec, rebuf);
rebuf[errlen] = '\0';
log_error(LOG_LEVEL_ERROR, "error compiling %s from %s: %s",
pattern, url->spec, rebuf);
+ free_pattern_spec(url);
+ free_pattern_spec(url);
return JB_ERR_PARSE;
}
else if (url->dcount != 0)
return JB_ERR_PARSE;
}
else if (url->dcount != 0)
/*********************************************************************
*
/*********************************************************************
*
- * Function : create_url_spec
+ * Function : create_pattern_spec
- * Description : Creates a "url_spec" structure from a string.
- * When finished, free with free_url_spec().
+ * Description : Creates a "pattern_spec" structure from a string.
+ * When finished, free with free_pattern_spec().
- * 1 : url = Target url_spec to be filled in. Will be
- * zeroed before use.
+ * 1 : pattern = Target pattern_spec to be filled in.
+ * Will be zeroed before use.
* 2 : buf = Source pattern, null terminated. NOTE: The
* contents of this buffer are destroyed by this
* function. If this function succeeds, the
* 2 : buf = Source pattern, null terminated. NOTE: The
* contents of this buffer are destroyed by this
* function. If this function succeeds, the
- * buffer is copied to url->spec. If this
+ * buffer is copied to pattern->spec. If this
* function fails, the contents of the buffer
* are lost forever.
*
* function fails, the contents of the buffer
* are lost forever.
*
* written to system log)
*
*********************************************************************/
* written to system log)
*
*********************************************************************/
-jb_err create_url_spec(struct pattern_spec *url, char *buf)
+jb_err create_pattern_spec(struct pattern_spec *pattern, char *buf)
- memset(url, '\0', sizeof(*url));
+ memset(pattern, '\0', sizeof(*pattern));
/* Remember the original specification for the CGI pages. */
/* Remember the original specification for the CGI pages. */
- url->spec = strdup_or_die(buf);
+ pattern->spec = strdup_or_die(buf);
/* Is it a positive tag pattern? */
/* Is it a positive tag pattern? */
- if (0 == strncmpic(url->spec, "TAG:", 4))
+ if (0 == strncmpic(pattern->spec, "TAG:", 4))
{
/* The pattern starts with the first character after "TAG:" */
const char *tag_pattern = buf + 4;
{
/* The pattern starts with the first character after "TAG:" */
const char *tag_pattern = buf + 4;
- url->flags |= PATTERN_SPEC_TAG_PATTERN;
- return compile_pattern(tag_pattern, NO_ANCHORING, url, &url->pattern.tag_regex);
+ pattern->flags |= PATTERN_SPEC_TAG_PATTERN;
+ return compile_pattern(tag_pattern, NO_ANCHORING, pattern, &pattern->pattern.tag_regex);
}
/* Is it a negative tag pattern? */
}
/* Is it a negative tag pattern? */
- if (0 == strncmpic(url->spec, "NO-REQUEST-TAG:", 15))
+ if (0 == strncmpic(pattern->spec, "NO-REQUEST-TAG:", 15))
{
/* The pattern starts with the first character after "NO-REQUEST-TAG:" */
const char *tag_pattern = buf + 15;
{
/* The pattern starts with the first character after "NO-REQUEST-TAG:" */
const char *tag_pattern = buf + 15;
- url->flags |= PATTERN_SPEC_NO_REQUEST_TAG_PATTERN;
- return compile_pattern(tag_pattern, NO_ANCHORING, url, &url->pattern.tag_regex);
+ pattern->flags |= PATTERN_SPEC_NO_REQUEST_TAG_PATTERN;
+ return compile_pattern(tag_pattern, NO_ANCHORING, pattern, &pattern->pattern.tag_regex);
- if (0 == strncmpic(url->spec, "NO-RESPONSE-TAG:", 16))
+ if (0 == strncmpic(pattern->spec, "NO-RESPONSE-TAG:", 16))
{
/* The pattern starts with the first character after "NO-RESPONSE-TAG:" */
const char *tag_pattern = buf + 16;
{
/* The pattern starts with the first character after "NO-RESPONSE-TAG:" */
const char *tag_pattern = buf + 16;
- url->flags |= PATTERN_SPEC_NO_RESPONSE_TAG_PATTERN;
- return compile_pattern(tag_pattern, NO_ANCHORING, url, &url->pattern.tag_regex);
+ pattern->flags |= PATTERN_SPEC_NO_RESPONSE_TAG_PATTERN;
+ return compile_pattern(tag_pattern, NO_ANCHORING, pattern, &pattern->pattern.tag_regex);
- url->flags |= PATTERN_SPEC_URL_PATTERN;
+ pattern->flags |= PATTERN_SPEC_URL_PATTERN;
/* If it isn't a tag pattern it must be an URL pattern. */
/* If it isn't a tag pattern it must be an URL pattern. */
- return compile_url_pattern(url, buf);
+ return compile_url_pattern(pattern, buf);
}
/*********************************************************************
*
}
/*********************************************************************
*
- * Function : free_url_spec
+ * Function : free_pattern_spec
- * Description : Called from the "unloaders". Freez the url
+ * Description : Called from the "unloaders". Freez the pattern
* structure elements.
*
* Parameters :
* structure elements.
*
* Parameters :
- * 1 : url = pointer to a pattern_spec structure.
+ * 1 : pattern = pointer to a pattern_spec structure.
*
* Returns : N/A
*
*********************************************************************/
*
* Returns : N/A
*
*********************************************************************/
-void free_url_spec(struct pattern_spec *url)
+void free_pattern_spec(struct pattern_spec *pattern)
- if (url == NULL) return;
+ if (pattern == NULL) return;
#ifdef FEATURE_EXTENDED_HOST_PATTERNS
#ifdef FEATURE_EXTENDED_HOST_PATTERNS
- if (url->pattern.url_spec.host_regex)
+ if (pattern->pattern.url_spec.host_regex)
- regfree(url->pattern.url_spec.host_regex);
- freez(url->pattern.url_spec.host_regex);
+ regfree(pattern->pattern.url_spec.host_regex);
+ freez(pattern->pattern.url_spec.host_regex);
- freez(url->pattern.url_spec.dbuffer);
- freez(url->pattern.url_spec.dvec);
- url->pattern.url_spec.dcount = 0;
+ freez(pattern->pattern.url_spec.dbuffer);
+ freez(pattern->pattern.url_spec.dvec);
+ pattern->pattern.url_spec.dcount = 0;
#endif /* ndef FEATURE_EXTENDED_HOST_PATTERNS */
#endif /* ndef FEATURE_EXTENDED_HOST_PATTERNS */
- freez(url->pattern.url_spec.port_list);
- if (url->pattern.url_spec.preg)
+ freez(pattern->pattern.url_spec.port_list);
+ if (pattern->pattern.url_spec.preg)
- regfree(url->pattern.url_spec.preg);
- freez(url->pattern.url_spec.preg);
+ regfree(pattern->pattern.url_spec.preg);
+ freez(pattern->pattern.url_spec.preg);
- if (url->pattern.tag_regex)
+ if (pattern->pattern.tag_regex)
- regfree(url->pattern.tag_regex);
- freez(url->pattern.tag_regex);
+ regfree(pattern->pattern.tag_regex);
+ freez(pattern->pattern.tag_regex);
#ifndef URLMATCH_H_INCLUDED
#define URLMATCH_H_INCLUDED
#ifndef URLMATCH_H_INCLUDED
#define URLMATCH_H_INCLUDED
-#define URLMATCH_H_VERSION "$Id: urlmatch.h,v 1.19 2013/11/24 14:22:51 fabiankeil Exp $"
+#define URLMATCH_H_VERSION "$Id: urlmatch.h,v 1.20 2013/11/24 14:23:28 fabiankeil Exp $"
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/urlmatch.h,v $
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/urlmatch.h,v $
extern int url_match(const struct pattern_spec *pattern,
const struct http_request *http);
extern int url_match(const struct pattern_spec *pattern,
const struct http_request *http);
-extern jb_err create_url_spec(struct pattern_spec *url, char *buf);
-extern void free_url_spec(struct pattern_spec *url);
+extern jb_err create_pattern_spec(struct pattern_spec *url, char *buf);
+extern void free_pattern_spec(struct pattern_spec *url);
extern int match_portlist(const char *portlist, int port);
extern jb_err parse_forwarder_address(char *address, char **hostname, int *port);
extern int match_portlist(const char *portlist, int port);
extern jb_err parse_forwarder_address(char *address, char **hostname, int *port);