mturk 2004/11/30 00:22:47 Modified: jk/native/apache-1.3 mod_jk.c jk/native/apache-2.0 mod_jk.c Log: Allow JkMount and JkUnMount directives to be defined inside Location and Files sections. This allows security to be implemented on apache side. Revision Changes Path 1.54 +45 -13 jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c Index: mod_jk.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- mod_jk.c 30 Nov 2004 07:30:41 -0000 1.53 +++ mod_jk.c 30 Nov 2004 08:22:47 -0000 1.54 @@ -665,20 +665,37 @@ static const char *jk_mount_context(cmd_parms * cmd, void *dummy, char *context, - char *worker, char *maybe_cookie) + char *worker) { server_rec *s = cmd->server; jk_server_conf_t *conf = (jk_server_conf_t *) ap_get_module_config(s->module_config, &jk_module); char *old; - if (context[0] != '/') - return "Mount context should start with /"; + const char *c, *w; + + if (worker != NULL && cmd->path == NULL ) {
+ c = context; + w = worker; + } + else if (worker == NULL && cmd->path != NULL) { + c = cmd->path; + w = context; + } + else { + if (worker == NULL) + return "JkMount needs a path when not defined in a location"; + else + return "JkMount can not have a path when defined in a location"; + } + + if (c[0] != '/') + return "JkMount context should start with /"; /* * Add the new worker to the alias map. */ - jk_map_put(conf->uri_to_context, context, worker, (void **)&old); + jk_map_put(conf->uri_to_context, c, w, (void **)&old); return NULL; } @@ -691,21 +708,36 @@ static const char *jk_unmount_context(cmd_parms * cmd, void *dummy, const char *context, - const char *worker, - const char *maybe_cookie) + const char *worker) { server_rec *s = cmd->server; jk_server_conf_t *conf = (jk_server_conf_t *) ap_get_module_config(s->module_config, &jk_module); char *old , *uri; - if (context[0] != '/') - return "Unmount context should start with /"; - uri = ap_pstrcat(cmd->temp_pool, "!", context, NULL); + const char *c, *w; + + if (worker != NULL && cmd->path == NULL ) { + c = context; + w = worker; + } + else if (worker == NULL && cmd->path != NULL) { + c = cmd->path; + w = context; + } + else { + if (worker == NULL) + return "JkUnMount needs a path when not defined in a location"; + else + return "JkUnMount can not have a path when defined in a location"; + } + if (c[0] != '/') + return "JkUnMount context should start with /"; + uri = ap_pstrcat(cmd->temp_pool, "!", c, NULL); /* * Add the new worker to the alias map. */ - jk_map_put(conf->uri_to_context, uri, worker, (void **)&old); + jk_map_put(conf->uri_to_context, uri, w, (void **)&old); return NULL; } @@ -1453,14 +1485,14 @@ * JkMount mounts a url prefix to a worker (the worker need to be * defined in the worker properties file. */ - {"JkMount", jk_mount_context, NULL, RSRC_CONF, TAKE23, + {"JkMount", jk_mount_context, NULL, RSRC_CONF|ACCESS_CONF, TAKE12, "A mount point from a context to a servlet-engine worker"}, /* * JkUnMount unmounts a url prefix to a worker (the worker need to be * defined in the worker properties file. */ - {"JkUnMount", jk_unmount_context, NULL, RSRC_CONF, TAKE23, + {"JkUnMount", jk_unmount_context, NULL, RSRC_CONF|ACCESS_CONF, TAKE12, "A no mount point from a context to a servlet-engine worker"}, /* 1.103 +47 -14 jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c Index: mod_jk.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v retrieving revision 1.102 retrieving revision 1.103 diff -u -r1.102 -r1.103 --- mod_jk.c 30 Nov 2004 07:30:42 -0000 1.102 +++ mod_jk.c 30 Nov 2004 08:22:47 -0000 1.103 @@ -705,21 +705,37 @@ static const char *jk_mount_context(cmd_parms * cmd, void *dummy, const char *context, - const char *worker, - const char *maybe_cookie) + const char *worker) { server_rec *s = cmd->server; jk_server_conf_t *conf = (jk_server_conf_t *) ap_get_module_config(s->module_config, &jk_module); char *old; - if (context[0] != '/') - return "Mount xontext should start with /"; + const char *c, *w; + + if (worker != NULL && cmd->path == NULL ) { + c = context; + w = worker; + } + else if (worker == NULL && cmd->path != NULL) { + c = cmd->path; + w = context; + } + else { + if (worker == NULL) + return "JkMount needs a path when not defined in a location"; + else + return "JkMount can not have a path when defined in a location"; + } + + if (c[0] != '/') + return "JkMount context should start with /"; /* * Add the new worker to the alias map. */ - jk_map_put(conf->uri_to_context, context, worker, (void **)&old); + jk_map_put(conf->uri_to_context, c, w, (void **)&old); return NULL; } @@ -732,21 +748,38 @@ static const char *jk_unmount_context(cmd_parms * cmd, void *dummy, const char *context, - const char *worker, - const char *maybe_cookie) + const char *worker) { server_rec *s = cmd->server; jk_server_conf_t *conf = (jk_server_conf_t *) ap_get_module_config(s->module_config, &jk_module); char *old , *uri; - if (context[0] != '/') - return "Unmount context should start with /"; - uri = apr_pstrcat(cmd->temp_pool, "!", context, NULL); + const char *c, *w; + + if (worker != NULL && cmd->path == NULL ) { + c = context; + w = worker; + } + else if (worker == NULL && cmd->path != NULL) { + c = cmd->path; + w = context; + } + else { + if (worker == NULL) + return "JkUnMount needs a path when not defined in a location"; + else + return "JkUnMount can not have a path when defined in a location"; + } + + if (c[0] != '/') + return "JkUnMount context should start with /"; + + uri = apr_pstrcat(cmd->temp_pool, "!", c, NULL); /* * Add the new worker to the alias map. */ - jk_map_put(conf->uri_to_context, uri, worker, (void **)&old); + jk_map_put(conf->uri_to_context, uri, w, (void **)&old); return NULL; } @@ -1554,14 +1587,14 @@ * JkMount mounts a url prefix to a worker (the worker need to be * defined in the worker properties file. */ - AP_INIT_TAKE23("JkMount", jk_mount_context, NULL, RSRC_CONF, + AP_INIT_TAKE12("JkMount", jk_mount_context, NULL, RSRC_CONF|ACCESS_CONF, "A mount point from a context to a Tomcat worker"), /* * JkUnMount unmounts a url prefix to a worker (the worker need to be * defined in the worker properties file. */ - AP_INIT_TAKE23("JkUnMount", jk_unmount_context, NULL, RSRC_CONF, + AP_INIT_TAKE12("JkUnMount", jk_unmount_context, NULL, RSRC_CONF|ACCESS_CONF, "A no mount point from a context to a Tomcat worker"), /* --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]