Julien,

Does that mean that patch I hacked together works OK? I haven't had time to
properly test it yet.

Regards,

James Williamson
www.nameonthe.net

----- Original Message -----
From: Julien OIX <[EMAIL PROTECTED]>
To: Tomcat list <[EMAIL PROTECTED]>
Sent: Thursday, April 04, 2002 10:45 AM
Subject: mod_webapp problem


> hi everyone,
>
>
> I'm using Tomcat4 and Apache (mod_webapp connector) on a Linux RedHat
> 7.1;
>
> to build my connector, I do a snapshot from CVS repository:
>
> cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic checkout
> jakarta-tomcat-connectors/webapp
> cd jakarta-tomcat-connectors/webapp/
> cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic checkout apr
>
> then,
>
> ./support/buildconf.sh
> ./configure --with-apxs=/usr/sbin/apxs --with-apr=./apr/
> make
>
> and I move my mod_webapp.so to my apache module directory
>
> if I stop here, access control directives from apache can't work (
> <Directory> sections and .htaccess ); I can't accept that, that's one of
> the reasons why I'm using Tomcat AND apache
>
> I had a solution, which was to apply before compiling a patch (see
> attached file); the effect of it should be the capacity to add
> WebAppIgnore directives to my httpd.conf, but a second effect was that
> my control directives worked !!
>
> this solution (CVS + patch) worked fine last week, but now with the same
> protocol, when I try a jsp, I have the source code in my browser, and
> when I call a servlet in a .html, here's what I get in my error_log:
>
> [Thu Apr  4 11:10:01 2002] [error] [client 193.52.112.79] File does not
> exist: /var/tomcat4/webapps/univ/servlet/com.jsbsoft.jtf.core.SG
>
>
> in first case, can I consider there's a bug in CVS sources ?
>
> any ideas are welcome
>
> thanks in advance.
>
> Julien OIX
> Service Informatique de Gestion
> Tél: 02 40 99 83 65
> mail: [EMAIL PROTECTED]


----------------------------------------------------------------------------
----


> --- apache-1.3/mod_webapp.c Wed Feb 13 17:53:58 2002
> +++ apache-1.3/mod_webapp.c.new Sat Mar 23 17:30:05 2002
> @@ -227,6 +227,16 @@
>      return(NULL);
>  }
>
> +/* Allow the option to override certain urls */
> +static const char *wam_directive_ignore(cmd_parms *parms, void *mconfig,
char *w) {
> + wa_virtualhost *vhost = NULL;
> + vhost = (wa_virtualhost
*)ap_get_module_config(parms->server->module_config, &webapp_module);
> + if(wa_ignore(vhost, w) != NULL) {
> +  ap_log_error(APLOG_MARK,APLOG_NOERRNO|APLOG_ERR, parms->server,"Cannot
add new ignore url");
> + }
> + return NULL;
> +}
> +
>  /* The list of Directives for the WebApp module */
>  static const command_rec wam_directives[] = {
>      {
> @@ -250,7 +260,14 @@
>          RSRC_CONF,                  /* where available */
>          TAKE3,                      /* arguments */
>          "<name> <connection> <uri-path>"
> -    }, {NULL}
> +    }, {
> + "WebAppIgnore",
> + wam_directive_ignore,
> + NULL,
> + RSRC_CONF,
> + ITERATE,
> + "<ignore pattern>"
> + }, {NULL}
>
>  };
>
> @@ -410,7 +427,7 @@
>
>      /* Set the webapp request structure into Apache's request structure
*/
>      ap_set_module_config(r->request_config, &webapp_module, appl);
> -    return(OK);
> +    return(DECLINED);
>  }
>
>  /* Handle the current request */
> @@ -420,6 +437,7 @@
>      wa_application *appl=NULL;
>      wa_request *req=NULL;
>      const char *msg=NULL;
> + ignore_urls *igurls = NULL;
>      char *stmp=NULL;
>      char *ctmp=NULL;
>      char *ssl_temp;
> @@ -431,6 +449,14 @@
>      /* Try to get a hold on the webapp request structure */
>      appl=(wa_application *)ap_get_module_config(r->request_config,
>                                                  &webapp_module);
> +
> + /* Now check for ignored urls */
> + for(igurls = appl->host->ignore_urls; igurls; igurls = igurls->next) {
> + if(apr_fnmatch(igurls->url, r->uri) == APR_SUCCESS) {
> + return(DECLINED);
> + }
> + }
> +
>      if (appl==NULL) return(DECLINED);
>
>      /* Allocate the webapp request structure */
> --- lib/wa_config.c Wed Feb 13 17:53:58 2002
> +++ lib/wa_config.c.new Sat Mar 23 17:28:29 2002
> @@ -121,6 +121,7 @@
>      host->name=apr_pstrdup(wa_pool,n);
>      host->port=p;
>      host->apps=NULL;
> + host->ignore_urls = NULL;
>
>      /* Done! :) */
>      wa_debug(WA_MARK,"Created virtual host
\"%s:%d\"",host->name,host->port);
> @@ -168,4 +169,14 @@
>               n,p,a);
>      *c=conn;
>      return(NULL);
> +}
> +
> +/* Add an ignored url to a virtual host */
> +const char *wa_ignore(wa_virtualhost *vhost, char *url) {
> + ignore_urls *ig = vhost->ignore_urls;
> + ignore_urls *igu = apr_palloc(wa_pool, sizeof(ignore_urls));
> + igu->url = apr_pstrdup(wa_pool, url);
> + igu->next = ig;
> + vhost->ignore_urls = igu;
> + return(NULL);
>  }
> --- include/wa_config.h Wed Feb 13 17:53:58 2002
> +++ include/wa_config.h.new Sat Mar 23 17:36:32 2002
> @@ -63,6 +63,14 @@
>  #ifndef _WA_CONFIG_H_
>  #define _WA_CONFIG_H_
>
> +/**
> + * What a 'orrible hack
> + */
> +typedef struct {
> + char *url;
> + void *next;
> +} ignore_urls;
> +
>  /**
>   * The WebApp Library connection structure.
>   * <br>
> @@ -91,6 +99,8 @@
>      char *name;
>      /** The virtual host port. */
>      int port;
> + /* Patterns to ignore */
> + ignore_urls *ignore_urls;
>      /** The list of all applications deployed in this virtual hosts. */
>      wa_chain *apps;
>  };
> @@ -167,5 +177,8 @@
>                             const char *n,
>                             const char *p,
>                             const char *a);
> +
> +/* Ignore certain urls */
> +const char *wa_ignore(wa_virtualhost *vhost, char *url);
>
>  #endif /* ifndef _WA_CONFIG_H_ */
>
>
>


----------------------------------------------------------------------------
----


> --
> To unsubscribe:   <mailto:[EMAIL PROTECTED]>
> For additional commands: <mailto:[EMAIL PROTECTED]>
> Troubles with the list: <mailto:[EMAIL PROTECTED]>


--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to