X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=loadcfg.c;h=6509746298b9772739e8dc7c0e3ccf321d9eb681;hp=085f47084fe131606e64d7c796aad620e4955fa7;hb=bad55634165b116a64244e1ecd91bcdda5a2d2b2;hpb=b8a3f42d3acb904a23af1fd82fc87d1f8e0fd0a5 diff --git a/loadcfg.c b/loadcfg.c index 085f4708..65097462 100644 --- a/loadcfg.c +++ b/loadcfg.c @@ -1,4 +1,4 @@ -const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.66 2007/08/05 14:02:09 fabiankeil Exp $"; +const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.74 2008/03/26 18:07:07 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $ @@ -8,7 +8,7 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.66 2007/08/05 14:02:09 fabiankeil * routine to load the configuration and the global * variables it writes to. * - * Copyright : Written by and Copyright (C) 2001-2007 the SourceForge + * Copyright : Written by and Copyright (C) 2001-2008 the SourceForge * Privoxy team. http://www.privoxy.org/ * * Based on the Internet Junkbuster originally written @@ -35,6 +35,33 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.66 2007/08/05 14:02:09 fabiankeil * * Revisions : * $Log: loadcfg.c,v $ + * Revision 1.74 2008/03/26 18:07:07 fabiankeil + * Add hostname directive. Closes PR#1918189. + * + * Revision 1.73 2008/02/16 16:54:51 fabiankeil + * Fix typo. + * + * Revision 1.72 2008/02/03 13:46:15 fabiankeil + * Add SOCKS5 support. Patch #1862863 by Eric M. Hopper with minor changes. + * + * Revision 1.71 2007/12/23 15:24:56 fabiankeil + * Reword "unrecognized directive" warning, use better + * mark up and add a
. Fixes parts of #1856559. + * + * Revision 1.70 2007/12/15 14:24:05 fabiankeil + * Plug memory leak if listen-address only specifies the port. + * + * Revision 1.69 2007/10/27 13:02:27 fabiankeil + * Relocate daemon-mode-related log messages to make sure + * they aren't shown again in case of configuration reloads. + * + * Revision 1.68 2007/10/19 16:32:34 fabiankeil + * Plug memory leak introduced with my last commit. + * + * Revision 1.67 2007/10/14 14:12:41 fabiankeil + * When in daemon mode, close stderr after the configuration file has been + * parsed the first time. If logfile isn't set, stop logging. Fixes BR#897436. + * * Revision 1.66 2007/08/05 14:02:09 fabiankeil * #1763173 from Stefan Huehner: declare unload_configfile() static. * @@ -517,7 +544,9 @@ static struct file_list *current_configfile = NULL; #define hash_forward 2029845ul /* "forward" */ #define hash_forward_socks4 3963965521ul /* "forward-socks4" */ #define hash_forward_socks4a 2639958518ul /* "forward-socks4a" */ +#define hash_forward_socks5 3963965522ul /* "forward-socks5" */ #define hash_forwarded_connect_retries 101465292ul /* "forwarded-connect-retries" */ +#define hash_hostname 10308071ul /* "hostname" */ #define hash_jarfile 2046641ul /* "jarfile" */ #define hash_listen_address 1255650842ul /* "listen-address" */ #define hash_logdir 422889ul /* "logdir" */ @@ -599,6 +628,7 @@ static void unload_configfile (void * data) freez(config->confdir); freez(config->logdir); freez(config->templdir); + freez(config->hostname); freez(config->haddr); freez(config->logfile); @@ -756,6 +786,7 @@ struct configuration_spec * load_config(void) struct forward_spec *cur_fwd; int vec_count; char *vec[3]; + unsigned long directive_hash; strlcpy(tmp, buf, sizeof(tmp)); @@ -795,8 +826,8 @@ struct configuration_spec * load_config(void) /* Save the argument for show-proxy-args */ savearg(cmd, arg, config); - - switch( hash_string( cmd ) ) + directive_hash = hash_string(cmd); + switch (directive_hash) { /* ************************************************************************* * actionsfile actions-file-name @@ -1185,6 +1216,7 @@ struct configuration_spec * load_config(void) * forward-socks4a url-pattern socks-proxy[:port] (.|http-proxy[:port]) * *************************************************************************/ case hash_forward_socks4a: + case hash_forward_socks5: vec_count = ssplit(arg, " \t", vec, SZ(vec), 1, 1); if (vec_count != 3) @@ -1206,7 +1238,14 @@ struct configuration_spec * load_config(void) continue; } - cur_fwd->type = SOCKS_4A; + if (directive_hash == hash_forward_socks4a) + { + cur_fwd->type = SOCKS_4A; + } + else + { + cur_fwd->type = SOCKS_5; + } /* Save the URL pattern */ if (create_url_spec(cur_fwd->url, vec[0])) @@ -1266,6 +1305,18 @@ struct configuration_spec * load_config(void) config->forwarded_connect_retries = atoi(arg); continue; +/* ************************************************************************* + * hostname hostname-to-show-on-cgi-pages + * *************************************************************************/ + case hash_hostname : + freez(config->hostname); + config->hostname = strdup(arg); + if (NULL == config->hostname) + { + log_error(LOG_LEVEL_FATAL, "Out of memory saving hostname."); + } + continue; + /* ************************************************************************* * jarfile jar-file-name * In logdir by default @@ -1298,10 +1349,13 @@ struct configuration_spec * load_config(void) * In logdir by default * *************************************************************************/ case hash_logfile : - logfile = make_path(config->logdir, arg); - if (NULL == logfile) + if (!no_daemon) { - log_error(LOG_LEVEL_FATAL, "Out of memore while creating logfile path"); + logfile = make_path(config->logdir, arg); + if (NULL == logfile) + { + log_error(LOG_LEVEL_FATAL, "Out of memory while creating logfile path"); + } } continue; @@ -1594,7 +1648,7 @@ struct configuration_spec * load_config(void) log_error(LOG_LEVEL_ERROR, "Ignoring unrecognized directive '%s' (%luul) in line %lu " "in configuration file (%s).", buf, hash_string(cmd), linenum, configfile); string_append(&config->proxy_args, - " WARNING: unrecognized directive, ignored"); + " Warning: ignored unrecognized directive above.
"); continue; /* *************************************************************************/ @@ -1612,13 +1666,10 @@ struct configuration_spec * load_config(void) if (NULL != logfile) { config->logfile = logfile; - log_error(LOG_LEVEL_INFO, - "Switching to daemon mode. Log messages will be written to: %s", config->logfile); init_error_log(Argv[0], config->logfile); } else { - log_error(LOG_LEVEL_INFO, "No logfile configured while in daemon mode. Logging disabled."); disable_logging(); } } @@ -1630,12 +1681,12 @@ struct configuration_spec * load_config(void) if (config->actions_file[0]) { - add_loader(load_actions_file, config); + add_loader(load_action_files, config); } - if (config->re_filterfile) + if (config->re_filterfile[0]) { - add_loader(load_re_filterfile, config); + add_loader(load_re_filterfiles, config); } #ifdef FEATURE_TRUST @@ -1681,7 +1732,11 @@ struct configuration_spec * load_config(void) } if (*config->haddr == '\0') { - config->haddr = NULL; + /* + * Only the port specified. We stored it in config->hport + * and don't need its text representation anymore. + */ + freez(config->haddr); } } @@ -1791,7 +1846,7 @@ static void savearg(char *command, char *argument, struct configuration_spec * c /* * Add config option name embedded in - * link to it's section in the user-manual + * link to its section in the user-manual */ buf = strdup("\nusermanual, "file://", 7) ||