From: wessels <> Date: Mon, 25 Aug 1997 09:51:46 +0000 (+0000) Subject: Configuration cleanup. X-Git-Tag: SQUID_3_0_PRE1~4819 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f53b06f967ce5bdf5b076bba55d41f8d45a3077d;p=thirdparty%2Fsquid.git Configuration cleanup. - set up 'DEFAULT_IF_NONE' option for things like http_port and cache_dir where we want to set a default only if there is not one or more given in the config file. - Implemented the configuration dump via cachemanager. All the easy config types have dump functions; the remainder are unimplemented. --- diff --git a/src/Makefile.in b/src/Makefile.in index 4a4473d186..aeeed87dc2 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.85 1997/08/10 04:42:32 wessels Exp $ +# $Id: Makefile.in,v 1.86 1997/08/25 03:51:46 wessels Exp $ # # Uncomment and customize the following to suit your needs: # @@ -132,8 +132,7 @@ OBJS = \ $(XTRA_OBJS) DEFAULTS = \ - -DDEFAULT_CONFIG_FILE=\"$(DEFAULT_CONFIG_FILE)\" \ - -DDEFAULT_SWAP_DIR=\"$(DEFAULT_SWAP_DIR)\" + -DDEFAULT_CONFIG_FILE=\"$(DEFAULT_CONFIG_FILE)\" all: squid.conf $(PROGS) $(UTILS) $(SUID_UTILS) $(CGIPROGS) diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 8714dc102c..27ad50a1cc 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,5 +1,5 @@ /* - * $Id: cache_cf.cc,v 1.218 1997/08/25 02:17:45 wessels Exp $ + * $Id: cache_cf.cc,v 1.219 1997/08/25 03:51:47 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -58,6 +58,7 @@ static void parseTimeLine _PARAMS((time_t * tptr, const char *units)); static void parse_string _PARAMS((char **)); static void parse_wordlist _PARAMS((wordlist **)); static void default_all _PARAMS((void)); +static void defaults_if_none _PARAMS((void)); static int parse_line _PARAMS((char *)); static void parseBytesLine _PARAMS((size_t * bptr, const char *units)); static size_t parseBytesUnits _PARAMS((const char *unit)); @@ -204,6 +205,7 @@ parseConfigFile(const char *file_name) } } fclose(fp); + defaults_if_none(); configDoConfigure(); return 0; } @@ -331,9 +333,9 @@ parseBytesUnits(const char *unit) *****************************************************************************/ static void -dump_acl(acl * acl) +dump_acl(StoreEntry *entry, const char *name, acl * acl) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -349,9 +351,9 @@ free_acl(acl ** acl) } static void -dump_acl_access(struct _acl_access *head) +dump_acl_access(StoreEntry *entry, const char *name, struct _acl_access *head) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -367,9 +369,9 @@ free_acl_access(struct _acl_access **head) } static void -dump_address(struct in_addr addr) +dump_address(StoreEntry *entry, const char *name, struct in_addr addr) { - printf("%s", inet_ntoa(addr)); + storeAppendPrintf(entry, "%s %s\n", name, inet_ntoa(addr)); } static void @@ -395,9 +397,25 @@ free_address(struct in_addr *addr) } static void -dump_cachedir(struct _cacheSwap swap) +dump_cachedir(StoreEntry * entry, const char *name, struct _cacheSwap swap) { - assert(0); + SwapDir *s; + int i; + for (i = 0; ipath, + s->max_size>>10, + s->l1, + s->l2); + } +} + +static int +check_null_cachedir(struct _cacheSwap swap) +{ + return swap.swapDirs == NULL; } static void @@ -478,9 +496,9 @@ free_cachedir(struct _cacheSwap *swap) } static void -dump_peer(peer * p) +dump_peer(StoreEntry *entry, const char *name, peer * p) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -562,9 +580,9 @@ free_peer(peer ** P) } static void -dump_cachemgrpasswd(cachemgr_passwd * list) +dump_cachemgrpasswd(StoreEntry *entry, const char *name, cachemgr_passwd * list) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -591,9 +609,9 @@ free_cachemgrpasswd(cachemgr_passwd ** head) static void -dump_denyinfo(struct _acl_deny_info_list *var) +dump_denyinfo(StoreEntry *entry, const char *name, struct _acl_deny_info_list *var) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -714,7 +732,7 @@ parse_hostdomaintype(void) } static void -dump_httpanonymizer(int var) +dump_httpanonymizer(StoreEntry *entry, const char *name, int var) { switch (var) { case ANONYMIZER_NONE: @@ -746,14 +764,20 @@ parse_httpanonymizer(int *var) static void -dump_ushortlist(ushortlist * u) +dump_ushortlist(StoreEntry *entry, const char *name, ushortlist * u) { while (u) { - printf("%d ", (int) u->i); + storeAppendPrintf(entry, "%s %d\n", name, (int) u->i); u = u->next; } } +static int +check_null_ushortlist(ushortlist * u) +{ + return u == NULL; +} + static void parse_ushortlist(ushortlist ** P) { @@ -784,9 +808,9 @@ free_ushortlist(ushortlist ** P) } static void -dump_int(int var) +dump_int(StoreEntry *entry, const char *name, int var) { - printf("%d", var); + storeAppendPrintf(entry, "%s %d\n", name, var); } static void @@ -805,9 +829,9 @@ free_int(int *var) } static void -dump_onoff(int var) +dump_onoff(StoreEntry *entry, const char *name, int var) { - printf(var ? "on" : "off"); + storeAppendPrintf(entry, "%s %s\n", name, var ? "on" : "off"); } static void @@ -842,9 +866,9 @@ parse_pathname_stat(char **path) } static void -dump_refreshpattern(refresh_t * head) +dump_refreshpattern(StoreEntry *entry, const char *name, refresh_t * head) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -915,9 +939,9 @@ free_refreshpattern(refresh_t ** head) } static void -dump_regexlist(relist * var) +dump_regexlist(StoreEntry *entry, const char *name, relist * var) { - assert(0); + storeAppendPrintf(entry, "%s -- UNIMPLEMENTED\n", name); } static void @@ -934,9 +958,10 @@ free_regexlist(relist ** var) } static void -dump_string(char *var) +dump_string(StoreEntry *entry, const char *name, char *var) { - printf("%s", var); + if (var != NULL) + storeAppendPrintf(entry, "%s %s\n", name, var); } static void @@ -967,9 +992,9 @@ parse_eol(char *volatile *var) } static void -dump_time_t(time_t var) +dump_time_t(StoreEntry *entry, const char *name, time_t var) { - printf("%d", (int) var); + storeAppendPrintf(entry, "%s %d seconds\n", name, (int) var); } static void @@ -985,21 +1010,21 @@ free_time_t(time_t * var) } static void -dump_size_t(size_t var) +dump_size_t(StoreEntry *entry, const char *name, size_t var) { - printf("%d", (int) var); + storeAppendPrintf(entry, "%s %d\n", name, (int) var); } static void -dump_b_size_t(size_t var) +dump_b_size_t(StoreEntry *entry, const char *name, size_t var) { - printf("%d bytes", (int) var); + storeAppendPrintf(entry, "%s %d %s\n", name, (int) var, B_BYTES_STR); } static void -dump_kb_size_t(size_t var) +dump_kb_size_t(StoreEntry *entry, const char *name, size_t var) { - printf("%d KB", (int) var); + storeAppendPrintf(entry, "%s %d %s\n", name, (int) var, B_KBYTES_STR); } static void @@ -1035,9 +1060,9 @@ free_size_t(size_t * var) #define free_gb_size_t free_size_t static void -dump_ushort(u_short var) +dump_ushort(StoreEntry *entry, const char *name, u_short var) { - printf("%d", var); + storeAppendPrintf(entry, "%s %d\n", name, var); } static void @@ -1059,14 +1084,12 @@ parse_ushort(u_short * var) } static void -dump_wordlist(wordlist * list) +dump_wordlist(StoreEntry *entry, const char *name, wordlist * list) { - printf("{"); while (list != NULL) { - printf("%s ", list->key); + storeAppendPrintf(entry, "%s %s\n", name, list->key); list = list->next; } - printf("}"); } static void diff --git a/src/cf.data.pre b/src/cf.data.pre index 2fd6b3788a..d0b8b5bdf0 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -1,6 +1,7 @@ NAME: http_port ascii_port TYPE: ushortlist -DEFAULT: 3128 +DEFAULT: none +DEFAULT_IF_NONE: 3128 LOC: Config.Port.http DOC_START The port number where squid will listen for HTTP client @@ -488,6 +489,7 @@ DOC_END NAME: cache_dir TYPE: cachedir DEFAULT: none +DEFAULT_IF_NONE: @DEFAULT_SWAP_DIR@ 100 256 16 LOC: Config.cacheSwap DOC_START Directory for on-disk cache storage. The cache will change into diff --git a/src/cf_gen.cc b/src/cf_gen.cc index d6036a8cf7..f1970c7f47 100644 --- a/src/cf_gen.cc +++ b/src/cf_gen.cc @@ -1,5 +1,5 @@ /* - * $Id: cf_gen.cc,v 1.7 1997/07/14 21:11:01 wessels Exp $ + * $Id: cf_gen.cc,v 1.8 1997/08/25 03:51:48 wessels Exp $ * * DEBUG: section 1 Startup and Main Loop * AUTHOR: Max Okumoto @@ -34,9 +34,9 @@ * * The output files are as follows: * cf_parser.c - this file contains, default_all() which - * initializes - * variables with the default values, parse_line() that - * parses line from squid.conf, dump_all that dumps the + * initializes variables with the default + * values, parse_line() that parses line from + * squid.conf, dump_config that dumps the * current the values of the variables. * squid.conf - default configuration file given to the server * administrator. @@ -69,6 +69,7 @@ typedef struct Entry { char *type; char *loc; char *default_value; + char *default_if_none; char *comment; Line *doc; struct Entry *next; @@ -82,6 +83,7 @@ static void gen_parse(Entry *, FILE *); static void gen_dump(Entry *, FILE *); static void gen_free(Entry *, FILE *); static void gen_conf(Entry *, FILE *); +static void gen_default_if_none(Entry *, FILE *); int main(int argc, char *argv[]) @@ -151,6 +153,11 @@ main(int argc, char *argv[]) while (isspace(*ptr)) ptr++; curr->default_value = strdup(ptr); + } else if (!strncmp(buff, "DEFAULT_IF_NONE:", 16)) { + ptr = buff + 16; + while (isspace(*ptr)) + ptr++; + curr->default_if_none = strdup(ptr); } else if (!strncmp(buff, "LOC:", 4)) { if ((ptr = strtok(buff + 4, WS)) == NULL) { printf("Error on line %d\n", linenum); @@ -232,7 +239,7 @@ main(int argc, char *argv[]) /*-------------------------------------------------------------------* * Generate default_all() * Generate parse_line() - * Generate dump_all() + * Generate dump_config() * Generate free_all() * Generate example squid.conf file *-------------------------------------------------------------------*/ @@ -253,6 +260,7 @@ main(int argc, char *argv[]) input_filename, argv[0] ); rc = gen_default(entries, fp); + gen_default_if_none(entries, fp); gen_parse(entries, fp); gen_dump(entries, fp); gen_free(entries, fp); @@ -285,7 +293,6 @@ gen_default(Entry * head, FILE * fp) "\tparse_line(tmp_line);\n" "}\n" ); - fprintf(fp, "void\n" "default_all(void)\n" @@ -319,6 +326,31 @@ gen_default(Entry * head, FILE * fp) return rc; } +static void +gen_default_if_none(Entry * head, FILE * fp) +{ + Entry *entry; + fprintf(fp, + "void\n" + "defaults_if_none(void)\n" + "{\n" + ); + for (entry = head; entry != NULL; entry = entry->next) { + assert(entry->name); + assert(entry->loc); + if (entry->default_if_none == NULL) + continue; + fprintf(fp, + "\tif (check_null_%s(%s))\n" + "\t\tdefault_line(\"%s %s\");\n", + entry->type, + entry->loc, + entry->name, + entry->default_if_none); + } + fprintf(fp, "}\n\n"); +} + static void gen_parse(Entry * head, FILE * fp) { @@ -369,16 +401,17 @@ gen_dump(Entry * head, FILE * fp) Entry *entry; fprintf(fp, "void\n" - "dump_all(void)\n" + "dump_config(StoreEntry *entry)\n" "{\n" ); for (entry = head; entry != NULL; entry = entry->next) { assert(entry->loc); if (strcmp(entry->loc, "none") == 0) continue; - fprintf(fp, "\tprintf(\"%s = \");\n", entry->loc); - fprintf(fp, "\tdump_%s(%s);\n", entry->type, entry->loc); - fprintf(fp, "\tprintf(\"\\n\");\n"); + fprintf(fp, "\tdump_%s(entry, \"%s\", %s);\n", + entry->type, + entry->name, + entry->loc); } fprintf(fp, "}\n\n"); } diff --git a/src/enums.h b/src/enums.h index b5f73d5b90..10b4296d41 100644 --- a/src/enums.h +++ b/src/enums.h @@ -120,8 +120,7 @@ typedef enum { typedef enum { MGR_NONE, MGR_CLIENT_LIST, - MGR_CONFIG, - MGR_CONFIG_FILE, + MGR_CONFIGURATION, MGR_DNSSERVERS, MGR_FILEDESCRIPTORS, MGR_FQDNCACHE, diff --git a/src/globals.h b/src/globals.h index 87499f7959..0983df277b 100644 --- a/src/globals.h +++ b/src/globals.h @@ -17,7 +17,6 @@ extern char ThisCache[SQUIDHOSTNAMELEN << 1]; extern char config_input_line[BUFSIZ]; extern const char *AclMatchedName; /* NULL */ extern const char *DefaultConfigFile; /* DEFAULT_CONFIG_FILE */ -extern const char *DefaultSwapDir; /* DEFAULT_SWAP_DIR */ extern const char *RequestMethodStr[]; extern const char *ProtocolStr[]; extern const char *cfg_filename; /* NULL */ diff --git a/src/mime.cc b/src/mime.cc index 6e04f70c1c..e625553fa7 100644 --- a/src/mime.cc +++ b/src/mime.cc @@ -1,5 +1,5 @@ /* - * $Id: mime.cc,v 1.36 1997/07/21 07:20:59 wessels Exp $ + * $Id: mime.cc,v 1.37 1997/08/25 03:51:50 wessels Exp $ * * DEBUG: section 25 MIME Parsing * AUTHOR: Harvest Derived @@ -379,6 +379,7 @@ mimeInit(char *filename) mimeLoadIconFile(ICON_MENU); mimeLoadIconFile(ICON_DIRUP); mimeLoadIconFile(ICON_LINK); + debug(25, 1) ("Loaded Icons.\n"); } static void @@ -430,7 +431,7 @@ mimeLoadIconFile(const char *icon) storeComplete(e); storeTimestampsSet(e); BIT_SET(e->flag, ENTRY_SPECIAL); - debug(25, 1) ("Loaded icon %s\n", url); + debug(25, 3) ("Loaded icon %s\n", url); storeUnlockObject(e); put_free_4k_page(buf); } diff --git a/src/protos.h b/src/protos.h index b9969eb462..16d6567897 100644 --- a/src/protos.h +++ b/src/protos.h @@ -52,7 +52,6 @@ extern int parseConfigFile _PARAMS((const char *file_name)); extern void intlistDestroy _PARAMS((intlist **)); extern void wordlistDestroy _PARAMS((wordlist **)); extern void configFreeMemory _PARAMS((void)); -extern void dump_all _PARAMS((void)); extern void cbdataInit _PARAMS((void)); extern void cbdataAdd _PARAMS((void *p)); @@ -553,7 +552,7 @@ extern OBJH statFiledescriptors; extern OBJH log_enable; extern OBJH info_get; extern OBJH server_list; -extern OBJH parameter_get; +extern OBJH dump_config; extern OBJH storeDirStats; extern OBJH pconnHistDump; diff --git a/src/stat.cc b/src/stat.cc index e38fb5136f..621683fc81 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,6 +1,6 @@ /* - * $Id: stat.cc,v 1.154 1997/08/10 06:34:32 wessels Exp $ + * $Id: stat.cc,v 1.155 1997/08/25 03:51:53 wessels Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -741,43 +741,6 @@ info_get(StoreEntry * sentry) storeAppendPrintf(sentry, close_bracket); } -void -parameter_get(StoreEntry * sentry) -{ - storeAppendPrintf(sentry, open_bracket); - storeAppendPrintf(sentry, - "{VM-Max %d \"# Maximum hot-vm cache (MB)\"}\n", - Config.Mem.maxSize / (1 << 20)); - storeAppendPrintf(sentry, - "{VM-High %d \"# High water mark hot-vm cache (%%)\"}\n", - Config.Mem.highWaterMark); - storeAppendPrintf(sentry, - "{VM-Low %d \"# Low water mark hot-vm cache (%%)\"}\n", - Config.Mem.lowWaterMark); - storeAppendPrintf(sentry, - "{Swap-Max %d \"# Maximum disk cache (MB)\"}\n", - Config.Swap.maxSize / (1 << 10)); - storeAppendPrintf(sentry, - "{Swap-High %d \"# High water mark disk cache (%%)\"}\n", - Config.Swap.highWaterMark); - storeAppendPrintf(sentry, - "{Swap-Low %d \"# Low water mark disk cache (%%)\"}\n", - Config.Swap.lowWaterMark); - storeAppendPrintf(sentry, - "{Neg-TTL %d \"# TTL for negative cache (s)\"}\n", - Config.negativeTtl); - storeAppendPrintf(sentry, - "{ReadTimeout %d \"# Maximum idle connection (s)\"}\n", - Config.Timeout.read); - storeAppendPrintf(sentry, "{DeferTimeout %d\n", Config.Timeout.defer); - storeAppendPrintf(sentry, "{ClientLifetime %d\n", Config.Timeout.lifetime); - /* Cachemgr.cgi expects an integer in the second field of the string */ - storeAppendPrintf(sentry, - "{HttpAccelMode %d \"# Is operating as an HTTP accelerator\"}\n", - Config2.Accel.on); - storeAppendPrintf(sentry, close_bracket); -} - static void proto_newobject(cacheinfo * obj, protocol_t proto_id, int size, int restart) {