Re: Adding full environment variable support to mod_proxy_ajp

2008-09-05 Thread Mladen Turk

Ian Ward Comfort wrote:


There isn't a problem with new directives.  I merely suggested an 
alternative that I think makes sense in this instance.  Evidently not 
everyone agrees.  Bottom line: if you're doing the work, then you 
decide what approach you prefer.


Fair enough.  I'll keep an open mind in case a better suggestion 
appears, and otherwise do something that works here.




Right now mod_proxy_ajp passes from r-subprocess_env all
key/val pairs having AJP_ prefix and stripping that prefix.
So one needs  basically a duplicate value.

In your example
WEBAUTH_LDAP_DISPLAYNAME=foo
needs to be duplicated to
AJP_WEBAUTH_LDAP_DISPLAYNAME=foo

The solution might be to mark the
envvar so it gets evaluated at runtime
either as:
AJP_WEBAUTH_LDAP_DISPLAYNAME=${WEBAUTH_LDAP_DISPLAYNAME}
or even generic both for mod_proxy_http and mod_proxy_ajp
PROXY_WEBAUTH_LDAP_DISPLAYNAME=${WEBAUTH_LDAP_DISPLAYNAME}

So:
SetEnv PROXY_WEBAUTH_LDAP_DISPLAYNAME ${WEBAUTH_LDAP_DISPLAYNAME}
would cause to strip the PROXY_ from the r-subprocess_env and
use value from ${XX} again from r-subprocess_env.

Some other notion could be used of course, eg.
SetEnv PROXY_FOO
without a value (empty) could just use the FOO's value.

Regards
--
^(TM)


Re: Adding full environment variable support to mod_proxy_ajp

2008-09-04 Thread Rainer Jung

Ian Ward Comfort wrote:

On 2 Sep 2008, at 9:34 PM, Mladen Turk wrote:
Anyhow I agree with Nick that using existing directives from 
mod_rewrite or mod_headers would be much nicer solution, so I'm not in 
favor of adding new directives.


Do you like the idea of proxying the entire subprocess_env table, or 
have another suggestion?  Personally, I'd like to avoid loading 
mod_rewrite in my environment, and a long list of these is neither 
efficient nor pleasant to maintain:


RewriteRule ^ - [C,E=AJP_REMOTE_USER:%{ENV:REMOTE_USER}]


I think, that forwarding the full subprocess_env table is to much and 
usually not what is needed. If you really have use cases, where there 
are lots of env vars you want to forward, you could think about allowing 
patterns on the variable names. That would make administration less 
tedious but of course sacrifice performance a bit.


Regards,

Rainer


Re: Adding full environment variable support to mod_proxy_ajp

2008-09-04 Thread Ian Ward Comfort

On 4 Sep 2008, at 1:48 AM, Rainer Jung wrote:

Ian Ward Comfort wrote:

RewriteRule ^ - [C,E=AJP_REMOTE_USER:%{ENV:REMOTE_USER}]


I think, that forwarding the full subprocess_env table is to much  
and usually not what is needed.


I agree.

If you really have use cases, where there are lots of env vars you  
want to forward, you could think about allowing patterns on the  
variable names. That would make administration less tedious but of  
course sacrifice performance a bit.


I could do without patterns.  It's not the number of variables that's  
a problem for me, it's that config lines like the above are too easy  
to screw up.  (Plus I'd rather not have to worry about interaction  
with rules I might use to do actual URL rewriting.)


To me, 'ProxyEnvVar REMOTE_USER' is succinct and effective.  But if  
new directives are anathema, I'm willing to implement a different  
interface, if a suitable one can be found.


--
Ian Ward Comfort [EMAIL PROTECTED]
System Administrator, Student Computing, Stanford University



Re: Adding full environment variable support to mod_proxy_ajp

2008-09-04 Thread Nick Kew
On Thu, 4 Sep 2008 02:00:47 -0700
Ian Ward Comfort [EMAIL PROTECTED] wrote:


  I think, that forwarding the full subprocess_env table is to much  
  and usually not what is needed.

But if we're talking about the backend's env, then (optionally) 
inheriting it from the proxy seems to me to make semantic sense.

  If you really have use cases, where there are lots of env vars you  
  want to forward, you could think about allowing patterns on the  
  variable names. That would make administration less tedious but of  
  course sacrifice performance a bit.

There's a precedent for that, with CGI (and all its followers) using
HTTP_[foo] for presenting HTTP headers to a backend's env.

 I could do without patterns.  It's not the number of variables
 that's a problem for me, it's that config lines like the above are
 too easy to screw up.  (Plus I'd rather not have to worry about
 interaction with rules I might use to do actual URL rewriting.)
 
 To me, 'ProxyEnvVar REMOTE_USER' is succinct and effective.

I'd say quite the reverse!  REMOTE_USER is not normally an env var.
It only becomes one if a consumer of the CGI env is in operation.
In the case of a proxy, that means mod_rewrite, mod_include, or
third-party module.  That'll truly confuse the users!

 But if  
 new directives are anathema, I'm willing to implement a different  
 interface, if a suitable one can be found.

There isn't a problem with new directives.  I merely suggested an
alternative that I think makes sense in this instance.  Evidently
not everyone agrees.  Bottom line: if you're doing the work, then
you decide what approach you prefer.

-- 
Nick Kew

Application Development with Apache - the Apache Modules Book
http://www.apachetutor.org/


Re: Adding full environment variable support to mod_proxy_ajp

2008-09-04 Thread Ian Ward Comfort

On 4 Sep 2008, at 2:54 AM, Nick Kew wrote:
But if we're talking about the backend's env, then (optionally)  
inheriting it from the proxy seems to me to make semantic sense.


There is a logic to that strategy.  I for one rarely need the whole  
environment forwarded, and would probably rather not take the  
performance hit for the sake of logic.  (Reality interferes with clean  
design again.)


On Thu, 4 Sep 2008 02:00:47 -0700 Ian Ward Comfort [EMAIL PROTECTED] 
 wrote:

To me, 'ProxyEnvVar REMOTE_USER' is succinct and effective.


I'd say quite the reverse!  REMOTE_USER is not normally an env var.   
It only becomes one if a consumer of the CGI env is in operation.   
In the case of a proxy, that means mod_rewrite, mod_include, or  
third-party module.  That'll truly confuse the users!


A poorly chosen example, then -- let's say 'ProxyEnvVar  
WEBAUTH_LDAP_DISPLAYNAME'.  (I meant only that a ProxyEnvVar directive  
made sense to me.)


But if new directives are anathema, I'm willing to implement a  
different interface, if a suitable one can be found.


There isn't a problem with new directives.  I merely suggested an  
alternative that I think makes sense in this instance.  Evidently  
not everyone agrees.  Bottom line: if you're doing the work, then  
you decide what approach you prefer.


Fair enough.  I'll keep an open mind in case a better suggestion  
appears, and otherwise do something that works here.


--
Ian Ward Comfort [EMAIL PROTECTED]
System Administrator, Student Computing, Stanford University



Re: Adding full environment variable support to mod_proxy_ajp

2008-09-03 Thread Ian Ward Comfort

On 2 Sep 2008, at 9:58 PM, William A. Rowe, Jr. wrote:

Mladen Turk wrote:
Basically if you add additional config directive it cannot be  
backported.


Cannot isn't quite fair... it simply makes it less likely to be  
accepted.  Essentially you ask yourself, is this fixing a bug or  
problem with 2.2, or is it a new feature that should be added and  
instead of distracting the devs from releasing 2.4.0, should the  
emphasis be on getting the new version released?


OK, it sounds like I should give up on the 2.2 backport anyway, which  
is fine.  (It's easy enough for me to backport and apply locally if I  
need it.)  And in that case, there's no rush on this feature, so the  
devs can decide their own priorities regarding 2.4.0.


I would like to write something that others can/will use, if possible.

On 2 Sep 2008, at 9:34 PM, Mladen Turk wrote:
Anyhow I agree with Nick that using existing directives from  
mod_rewrite or mod_headers would be much nicer solution, so I'm not  
in favor of adding new directives.


Do you like the idea of proxying the entire subprocess_env table, or  
have another suggestion?  Personally, I'd like to avoid loading  
mod_rewrite in my environment, and a long list of these is neither  
efficient nor pleasant to maintain:


RewriteRule ^ - [C,E=AJP_REMOTE_USER:%{ENV:REMOTE_USER}]

I don't see a way to extend mod_headers for this, but I might be  
missing something.


(Also, for my own understanding, what are the primary concerns about  
new directives?  Namespace pollution?)


--
Ian Ward Comfort [EMAIL PROTECTED]
System Administrator, Student Computing, Stanford University



Re: Adding full environment variable support to mod_proxy_ajp

2008-09-02 Thread Ian Ward Comfort

On 28 Aug 2008, at 12:23 PM, Ian Ward Comfort wrote:





[...]



Any further thoughts on this thread?  If not, I'll take a stab at a  
patch and cross my fingers re: inclusion.


--
Ian Ward Comfort [EMAIL PROTECTED]
System Administrator, Student Computing, Stanford University



Re: Adding full environment variable support to mod_proxy_ajp

2008-09-02 Thread Mladen Turk

Ian Ward Comfort wrote:


I don't think I understand the API versioning issues, but the 
possibility of a 2.2 backport would make me happy. :)




Basically if you add additional config directive it cannot
be backported. Anyhow I agree with Nick that using existing
directives from mod_rewrite or mod_headers would be much
nicer solution, so I'm not in favor of adding new directives.


Regards
--
^(TM)


Re: Adding full environment variable support to mod_proxy_ajp

2008-09-02 Thread William A. Rowe, Jr.

Mladen Turk wrote:

Ian Ward Comfort wrote:


I don't think I understand the API versioning issues, but the 
possibility of a 2.2 backport would make me happy. :)




Basically if you add additional config directive it cannot
be backported. Anyhow I agree with Nick that using existing
directives from mod_rewrite or mod_headers would be much
nicer solution, so I'm not in favor of adding new directives.


Cannot isn't quite fair... it simply makes it less likely to be
accepted.  Essentially you ask yourself, is this fixing a bug or
problem with 2.2, or is it a new feature that should be added
and instead of distracting the devs from releasing 2.4.0, should
the emphasis be on getting the new version released?


Adding full environment variable support to mod_proxy_ajp

2008-08-28 Thread Ian Ward Comfort
My environment is affected by bug 40047, the lack of a mod_proxy_ajp  
equivalent to mod_jk's JkEnvVar directive.  (The mod_rewrite gyrations  
required to work around this with AJP_* vars are too unpleasant to  
maintain.)  If I write a patch for this feature, might it stand a  
chance of upstream inclusion?  If so, thoughts on the following would  
be appreciated.


* The directive should probably be handled by mod_proxy.  It may be  
relevant to protocols besides AJP, and mod_proxy already has  
configuration objects, unlike mod_proxy_ajp.


* A lot of the code can probably be reused from mod_jk, unless anyone  
foresees a problem with this.


* What's an appropriate name for the directive -- ProxyEnvVar?

--
Ian Ward Comfort [EMAIL PROTECTED]
System Administrator, Student Computing, Stanford University



Re: Adding full environment variable support to mod_proxy_ajp

2008-08-28 Thread Nick Kew
On Wed, 27 Aug 2008 23:53:24 -0700
Ian Ward Comfort [EMAIL PROTECTED] wrote:

 My environment is affected by bug 40047, the lack of a mod_proxy_ajp  
 equivalent to mod_jk's JkEnvVar directive.  (The mod_rewrite
 gyrations required to work around this with AJP_* vars are too
 unpleasant to maintain.)  If I write a patch for this feature, might
 it stand a chance of upstream inclusion?  If so, thoughts on the
 following would be appreciated.
 
 * The directive should probably be handled by mod_proxy.  It may be  
 relevant to protocols besides AJP, and mod_proxy already has  
 configuration objects, unlike mod_proxy_ajp.
 
 * A lot of the code can probably be reused from mod_jk, unless
 anyone foresees a problem with this.
 
 * What's an appropriate name for the directive -- ProxyEnvVar?

How big is this proposed patch?  A patch that can be reviewed in
five minutes has a lower barrier to inclusion than one that a
developer has to spend all day reviewing :-)

Anyway, as an alternative to your proposal, would it fix your
problem if variables set using SetEnv or PassEnv - or dynamically
using mod_rewrite - were propagated to the backend appserver?
If so, I'd think that a nicer solution than a new directive.

-- 
Nick Kew

Application Development with Apache - the Apache Modules Book
http://www.apachetutor.org/


Re: Adding full environment variable support to mod_proxy_ajp

2008-08-28 Thread Jim Jagielski


On Aug 28, 2008, at 6:15 AM, Nick Kew wrote:


On Wed, 27 Aug 2008 23:53:24 -0700
Ian Ward Comfort [EMAIL PROTECTED] wrote:


My environment is affected by bug 40047, the lack of a mod_proxy_ajp
equivalent to mod_jk's JkEnvVar directive.  (The mod_rewrite
gyrations required to work around this with AJP_* vars are too
unpleasant to maintain.)  If I write a patch for this feature, might
it stand a chance of upstream inclusion?  If so, thoughts on the
following would be appreciated.

* The directive should probably be handled by mod_proxy.  It may be
relevant to protocols besides AJP, and mod_proxy already has
configuration objects, unlike mod_proxy_ajp.

* A lot of the code can probably be reused from mod_jk, unless
anyone foresees a problem with this.

* What's an appropriate name for the directive -- ProxyEnvVar?


How big is this proposed patch?  A patch that can be reviewed in
five minutes has a lower barrier to inclusion than one that a
developer has to spend all day reviewing :-)

Anyway, as an alternative to your proposal, would it fix your
problem if variables set using SetEnv or PassEnv - or dynamically
using mod_rewrite - were propagated to the backend appserver?
If so, I'd think that a nicer solution than a new directive.


I think we would want some sort of control over which vars are
and aren't passed back, so I don't see how we could get around not
having another set of directives (unless we do something hankie
like PassEnv  FOO_HOO_BOO_HOO where the '' means all envars
after the '' should get passed thru)...

Even so, this seem more an enhancement for mod_env than mod_proxy
(although mod_proxy would be the prime user :) ) But, this
means, afaict with a quick glance, that some minor API bumps would
be needed (at least) so maybe doing it in mod_proxy would be an
easier pill to swallow (esp for anything hoped to be backported
to 2.2).



Re: Adding full environment variable support to mod_proxy_ajp

2008-08-28 Thread Ian Ward Comfort

On 28 Aug 2008, at 3:15 AM, Nick Kew wrote:
How big is this proposed patch?  A patch that can be reviewed in  
five minutes has a lower barrier to inclusion than one that a  
developer has to spend all day reviewing :-)


At the moment, it's just hypothetical, but mod_jk implements JkEnvVar  
in about 100 lines.  Then there's documentation, of course.


Anyway, as an alternative to your proposal, would it fix your  
problem if variables set using SetEnv or PassEnv - or dynamically  
using mod_rewrite - were propagated to the backend appserver?


If it were strictly limited to variables set this way -- no, since we  
also require the propagation of variables set by custom modules  
(mod_webauthldap).  Propagating the entire subprocess_env table might  
work for us...


On 28 Aug 2008, at 6:21 AM, Jim Jagielski wrote:
I think we would want some sort of control over which vars are and  
aren't passed back, so I don't see how we could get around not  
having another set of directives


... but I agree that in general one wants independent control over  
variables exported to CGI scripts versus variables sent to proxy  
backends.


Even so, this seem more an enhancement for mod_env than mod_proxy  
(although mod_proxy would be the prime user :) )


Hmm, you may be right.  Unless we can think of another consumer for  
this information, though, I think mod_proxy might be the right place.   
The data would sit unused if mod_proxy weren't loaded, and mod_proxy  
would have to check for mod_env and possibly fiddle with its data  
structures.  FWIW, we don't load mod_env.


But, this means, afaict with a quick glance, that some minor API  
bumps would be needed (at least) so maybe doing it in mod_proxy  
would be an easier pill to swallow (esp for anything hoped to be  
backported to 2.2).


I don't think I understand the API versioning issues, but the  
possibility of a 2.2 backport would make me happy. :)


--
Ian Ward Comfort [EMAIL PROTECTED]
System Administrator, Student Computing, Stanford University