You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Randy Terbush <ra...@zyzzyva.com> on 1997/07/17 18:17:10 UTC

Re: config files stuff

As long as we are considering an IncludeConfig directive, I would 
like to offer mine. This version can be given a file or directory. 
If given a directory, it recurses the directory tree looking for 
.htaccess. My use for it has been similar to Martijn's. I created 
it when tossing around the idea of having a parallel "registry" 
that could be given a perl script to edit access control for 
certain parts of the existing web space. Making Apache read the 
registry to get it's config and access control info.

Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_core.c,v
retrieving revision 1.96
diff -c -r1.96 http_core.c
*** http_core.c	1997/07/16 00:41:21	1.96
--- http_core.c	1997/07/17 16:15:40
***************
*** 836,841 ****
--- 836,873 ----
      return errmsg;
  }
  
+ const char *include_config (cmd_parms *cmd, void *dummy, char *name)
+ {
+     char *nname;
+     DIR *vdir;
+     struct DIR_TYPE *vdir_entry;
+     core_server_config *conf;
+ 
+     
+     conf = get_module_config(cmd->server->module_config, &core_module);
+ 
+     name = server_root_relative(cmd->pool, name);
+     
+     if ((vdir = opendir(name)) != NULL) {
+ 	while ((vdir_entry = readdir(vdir)) != NULL) {
+ 	    if ((strcmp(vdir_entry->d_name, "..")) <= 0)
+ 		continue;
+ 
+ 	    nname = pstrcat(cmd->pool, name, vdir_entry->d_name, NULL);
+ 
+ 	    if (is_directory(nname))
+ 		nname = pstrcat(cmd->pool, nname, "/", NULL);
+ 
+ 	    include_config(cmd, dummy, nname);
+ 	}
+ 	closedir(vdir);
+     }
+     else if ((strstr(name, conf->access_name)) != NULL)
+ 	process_resource_config(cmd->server, name, cmd->pool, cmd->temp_pool);
+ 
+     return NULL;
+ }
+ 
  const char *add_module_command (cmd_parms *cmd, void *dummy, char *arg)
  {
      if (add_named_module (arg))
***************
*** 1314,1319 ****
--- 1346,1352 ----
  { "Listen", set_listener, NULL, RSRC_CONF, TAKE1,
        "a port number or a numeric IP address and a port number"},
  { "SendBufferSize", set_send_buffer_size, NULL, RSRC_CONF, TAKE1, "send buffer size in bytes"},
+ { "IncludeConf", include_config, NULL, RSRC_CONF, RAW_ARGS, "configuration resource" },
  { "AddModule", add_module_command, NULL, RSRC_CONF, ITERATE,
    "the name of a module" },
  { "ClearModuleList", clear_module_list_command, NULL, RSRC_CONF, NO_ARGS, NULL },