X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loadcfg.c;h=60db91809ea4d1b0c2e96515c5d45f285ddb045e;hp=9d39f442158a28219082e7355ddcbf318e4124fe;hb=061a6415261830282bd38413c631708e47d4cfef;hpb=e7f33c16b512f119f65800e85ba0beecfd3a1545 diff --git a/loadcfg.c b/loadcfg.c index 9d39f442..60db9180 100644 --- a/loadcfg.c +++ b/loadcfg.c @@ -1,4 +1,4 @@ -const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.27 2001/11/07 00:02:13 steudten Exp $"; +const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.32 2002/03/04 18:24:53 oes Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $ @@ -35,6 +35,28 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.27 2001/11/07 00:02:13 steudten E * * Revisions : * $Log: loadcfg.c,v $ + * Revision 1.32 2002/03/04 18:24:53 oes + * Re-enabled output of unknown config directive hash + * + * Revision 1.31 2002/03/03 15:07:20 oes + * Re-enabled automatic config reloading + * + * Revision 1.30 2002/01/22 23:31:43 jongfoster + * Replacing strsav() with string_append() + * + * Revision 1.29 2002/01/17 21:02:30 jongfoster + * Moving all our URL and URL pattern parsing code to urlmatch.c. + * + * Renaming free_url to free_url_spec, since it frees a struct url_spec. + * + * Revision 1.28 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.27 2001/11/07 00:02:13 steudten * Add line number in error output for lineparsing for * actionsfile and configfile. @@ -238,6 +260,7 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.27 2001/11/07 00:02:13 steudten E #include #include #include +#include #ifdef _WIN32 @@ -272,6 +295,7 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.27 2001/11/07 00:02:13 steudten E #include "errlog.h" #include "ssplit.h" #include "encode.h" +#include "urlmatch.h" const char loadcfg_h_rcs[] = LOADCFG_H_VERSION; @@ -352,7 +376,7 @@ static struct file_list *current_configfile = NULL; #define hash_show_on_task_bar 215410365ul /* "show-on-task-bar" */ -static void savearg(char *c, char *o, struct configuration_spec * config); +static void savearg(char *command, char *argument, struct configuration_spec * config); /********************************************************************* * @@ -385,7 +409,7 @@ void unload_configfile (void * data) while (cur_fwd != NULL) { struct forward_spec * next_fwd = cur_fwd->next; - free_url(cur_fwd->url); + free_url_spec(cur_fwd->url); freez(cur_fwd->gateway_host); freez(cur_fwd->forward_host); @@ -445,7 +469,6 @@ struct configuration_spec * load_config(void) struct file_list *fs; unsigned long linenum = 0; - DBG(1, ("load_config() entered..\n") ); if ( !check_file_changed(current_configfile, configfile, &fs)) { /* No need to load */ @@ -457,9 +480,7 @@ struct configuration_spec * load_config(void) configfile); } - /* log_error(LOG_LEVEL_INFO, "loading configuration file '%s':", configfile); - */ #ifdef FEATURE_TOGGLE g_bToggleIJB = 1; @@ -493,6 +514,7 @@ struct configuration_spec * load_config(void) config->multi_threaded = 1; config->hport = HADDR_PORT; config->buffer_limit = 4096 * 1024; + config->proxy_args = strdup(""); if ((configfp = fopen(configfile, "r")) == NULL) { @@ -605,7 +627,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Wrong number of parameters for " "deny-access directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Wrong number of parameters for " "deny-access directive in configuration file.

\n"); continue; @@ -626,12 +648,12 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Invalid source IP for deny-access " "directive in configuration file: \"%s\"", vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Invalid source IP for deny-access directive" " in configuration file: \""); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "\"

\n"); freez(cur_acl); continue; @@ -642,12 +664,12 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Invalid destination IP for deny-access " "directive in configuration file: \"%s\"", vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Invalid destination IP for deny-access directive" " in configuration file: \""); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "\"

\n"); freez(cur_acl); continue; @@ -711,7 +733,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Wrong number of parameters for forward " "directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Wrong number of parameters for " "forward directive in configuration file."); continue; @@ -733,7 +755,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward " "directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Bad URL specifier for " "forward directive in configuration file."); continue; @@ -774,7 +796,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Wrong number of parameters for " "forward-socks4 directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Wrong number of parameters for " "forward-socks4 directive in configuration file."); continue; @@ -796,7 +818,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward-socks4 " "directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Bad URL specifier for " "forward-socks4 directive in configuration file."); continue; @@ -855,7 +877,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Wrong number of parameters for " "forward-socks4a directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Wrong number of parameters for " "forward-socks4a directive in configuration file."); continue; @@ -877,7 +899,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Bad URL specifier for forward-socks4a " "directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Bad URL specifier for " "forward-socks4a directive in configuration file."); continue; @@ -970,7 +992,7 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Wrong number of parameters for " "permit-access directive in configuration file."); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Wrong number of parameters for " "permit-access directive in configuration file.

\n"); @@ -992,12 +1014,12 @@ struct configuration_spec * load_config(void) { log_error(LOG_LEVEL_ERROR, "Invalid source IP for permit-access " "directive in configuration file: \"%s\"", vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Invalid source IP for permit-access directive" " in configuration file: \""); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "\"

\n"); freez(cur_acl); continue; @@ -1009,12 +1031,12 @@ struct configuration_spec * load_config(void) log_error(LOG_LEVEL_ERROR, "Invalid destination IP for " "permit-access directive in configuration file: \"%s\"", vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "
\nWARNING: Invalid destination IP for permit-access directive" " in configuration file: \""); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, vec[0]); - config->proxy_args = strsav( config->proxy_args, + string_append(&config->proxy_args, "\"

\n"); freez(cur_acl); continue; @@ -1226,14 +1248,11 @@ struct configuration_spec * load_config(void) * error. To change back to an error, just change log level * to LOG_LEVEL_FATAL. */ - log_error(LOG_LEVEL_ERROR, "Unrecognized directive '%s' in line %lu in " - "configuration file (%s).", buf, linenum, configfile); - /* log_error(LOG_LEVEL_ERROR, "Unrecognized directive (%luul) in " - "configuration file: \"%s\"", hash_string( cmd ), buf); - */ - config->proxy_args = strsav( config->proxy_args, "
\nWARNING: unrecognized directive : "); - config->proxy_args = strsav( config->proxy_args, buf); - config->proxy_args = strsav( config->proxy_args, "

\n"); + log_error(LOG_LEVEL_ERROR, "Unrecognized directive '%s' (%luul) in line %lu in " + "configuration file (%s).", buf, hash_string(cmd), linenum, configfile); + string_append(&config->proxy_args, "
\nWARNING: unrecognized directive : "); + string_append(&config->proxy_args, buf); + string_append(&config->proxy_args, "

\n"); continue; /****************************************************************************/ @@ -1242,6 +1261,11 @@ struct configuration_spec * load_config(void) fclose(configfp); + if (NULL == config->proxy_args) + { + log_error(LOG_LEVEL_FATAL, "Out of memory loading config - insufficient memory for config->proxy_args"); + } + init_error_log(Argv[0], config->logfile, config->debug); if (config->actions_file) @@ -1372,7 +1396,6 @@ struct configuration_spec * load_config(void) files->next = fs; current_configfile = fs; - MustReload = 0; return (config); } @@ -1383,54 +1406,69 @@ struct configuration_spec * load_config(void) * Function : savearg * * Description : Called from `load_config'. It saves each non-empty - * and non-comment line from config into a list. This - * list is used to create the show-proxy-args page. + * and non-comment line from config into + * config->proxy_args. This is used to create the + * show-proxy-args page. On error, frees + * config->proxy_args and sets it to NULL * * Parameters : - * 1 : c = config setting that was found - * 2 : o = the setting's argument (if any) + * 1 : command = config setting that was found + * 2 : argument = the setting's argument (if any) * * Returns : N/A * *********************************************************************/ -static void savearg(char *c, char *o, struct configuration_spec * config) +static void savearg(char *command, char *argument, struct configuration_spec * config) { - char buf[BUFFER_SIZE]; + char * buf; + char * s; + + assert(command); + assert(*command); + assert(argument); - *buf = '\0'; + buf = strdup(""); - if ( ( NULL != c ) && ( '\0' != *c ) ) + s = html_encode(command); + if (NULL == s) { - if ((c = html_encode(c))) - { - sprintf(buf, "%s ", c, c); - } - freez(c); + freez(buf); + freez(config->proxy_args); + return; } - if ( ( NULL != o ) && ( '\0' != *o ) ) + string_append(&buf, ""); + string_join (&buf, s); + string_append(&buf, " "); + + if ( (NULL != argument) && ('\0' != *argument) ) { - if ((o = html_encode(o))) + s = html_encode(argument); + if (NULL == s) { - if (strncmpic(o, "http://", 7) == 0) - { - strcat(buf, ""); - strcat(buf, o); - strcat(buf, ""); - } - else - { - strcat(buf, o); - } + freez(buf); + freez(config->proxy_args); + return; } - freez(o); - } - strcat(buf, "
\n"); + if (strncmpic(argument, "http://", 7) == 0) + { + string_append(&buf, ""); + string_join (&buf, s); + string_append(&buf, ""); + } + else + { + string_join (&buf, s); + } + } - config->proxy_args = strsav(config->proxy_args, buf); + string_append(&buf, "
\n"); + string_join(&config->proxy_args, buf); }