Stacked Handlers Location directive -- inside and outside virtualhost

2003-05-31 Thread Shashank Kailash Shringi
I try to do the following:
Outside the virtual host (non-ssl) in the location directive, I have the
following:
Location /~xyz
AuthName someauth
AuthType sometype
PerlAuthenHandler MyModule
require valid-user
/Location

When http://www.abc.com/~xyz gets called PerlAuthenHandler MyModule is
invoked. MyModule code checks for IP after reading a file from xyz
directory.
If the host ip matches with the one in the file, it returns OK and the
PerlAuthzHandler never gets called and the webpage is served to the user.

However, if the IP check fails, the user is redirected to another
PerlAuthenHandler (which is our InHouse Authentication module) called
InHouseModule. This redirection is done over ssl and thus is user is
redirected to https://www.abc.com/~xyz which invokes PerlAuthenHandler
InHouseModule. For this there needs to be an entry for PerlAuthenHandler
InHouseModule inside virtual host like so:
virtual host
Location ~xyz
AuthName someauth
AuthType sometype
PerlAuthenHandler InHouseModule
PerlAuthzHandler MyModule
require valid-user
/Location
/virtual host

Thus the user is asked for netid and password and if the authentication is
successful via InhouseModule PerlAuthzHandler MyModule gets called again
to do some more check by reading file.

My problem is this:
Everything works fine if I have the above two entries in the conf file.
However, we need one single entry in access.conf so that we dont end up
adding the Location directive (both inside and outside) for every URL
(last count there were 250
users) and using IF condition it gets loaded in Location directive both
inside and outside virtual host. Essentially we need one common entry like
this in access.conf:
Location ~xyz
AuthName someauth
AuthType sometype
PerlAuthenHandler MyModule
PerlAuthenHandler InHouseModule
PerlAuthzHandler MyModule
require valid-user
/Location

But this doesnt work when PerlAuthenHandler MyModule returns OK (i.e
when IP
check is successful). Probably
becoz it still tries to invoke the second PerlAuthenHandler InHouseModule
or maybe two PerlAuthenHandler in one location directive in itself is not
the right thing to do.

Then I find out about stacked_handlers and try to make this common entry
work:
Location ~xyz
AuthName someauth
AuthType sometype
PerlAuthenHandler MyModule
PerlAuthzHandler MyModule
require valid-user
/Location

Basically take off PerlAuthenHandler InHouseModule from conf file and use
$r-push_handlers( PerlAuthenHandler, Apache::Bluestem );
in the PerlAuthenHandler MyModule code when it tries to do the REDIRECT
(after failing IP check and before proceeding for other checks
authenticating the user netid and password).
I get an internal server error.

Where am I going wrong? I hope I have explained myself clearly.
Is there any other way of doing this?
Thanks for help.

--
Shashank.


Re: Stacked Handlers Location directive -- inside and outside virtualhost

2003-05-31 Thread Geoffrey Young

When http://www.abc.com/~xyz gets called PerlAuthenHandler MyModule is
invoked. MyModule code checks for IP after reading a file from xyz
directory.
If the host ip matches with the one in the file, it returns OK and the
PerlAuthzHandler never gets called and the webpage is served to the user.
you may want to try using a PerlAccessHander for checking the IP, then 
combine that with Satisfy Any (as opposed to the Satisfy All default).

HTH

--Geoff



Re: Stacked Handlers Location directive -- inside and outside virtualhost

2003-05-31 Thread Shashank Kailash Shringi
I tried that already. When I use PerlAccessHander with Satisfy Any, the
webpage is always served even if IP check fails. Interestingley, when IP
check fails, it redirects (https url) but never ask for any userid or
password and straight away serves the page.

--
Shashank

On Fri, 30 May 2003, Geoffrey Young wrote:


  When http://www.abc.com/~xyz gets called PerlAuthenHandler MyModule is
  invoked. MyModule code checks for IP after reading a file from xyz
  directory.
  If the host ip matches with the one in the file, it returns OK and the
  PerlAuthzHandler never gets called and the webpage is served to the user.

 you may want to try using a PerlAccessHander for checking the IP, then
 combine that with Satisfy Any (as opposed to the Satisfy All default).

 HTH

 --Geoff



Re: Stacked Handlers Location directive -- inside and outside virtualhost

2003-05-31 Thread Shashank Kailash Shringi
Hi There,
I read the following thread (with Geoff's comment in there too):
http://www.gossamer-threads.com/archive/mod_perl_C1/docs-dev_F5/a_little_feedback_P38941/
than I thought about Geoff's advice about using PerlAccess Handler and
came
up with this concoction (which works :-) )

Conf entry:
Location /~xyz
AuthName someauth
AuthType someauth
PerlAccessHandler Apache::MyModule
PerlAuthenHandler Apache::SuperAuthen
PerlAuthzHandler Apache::Xdoc
require valid-user
/Location
--
package Apache::SuperAuthen;

use Apache::Constants qw(:common);
use Apache::Registry ();
use Apache::InHouseModule;
use Apache::MyModule;

sub handler {
my $r = shift;
if (Apache::MyModule::handler($r) == OK ||
Apache::InHouseModule::handler($r) == OK){
return OK;
}

return AUTH_REQUIRED;
}
1;
__END__
---
However, I would be please if someone can explain what actually happens. I
dont clearly understand why it works :--)

Thanks,

Shashank.

On Fri, 30 May 2003, Geoffrey Young wrote:


  When http://www.abc.com/~xyz gets called PerlAuthenHandler MyModule is
  invoked. MyModule code checks for IP after reading a file from xyz
  directory.
  If the host ip matches with the one in the file, it returns OK and the
  PerlAuthzHandler never gets called and the webpage is served to the user.

 you may want to try using a PerlAccessHander for checking the IP, then
 combine that with Satisfy Any (as opposed to the Satisfy All default).

 HTH

 --Geoff



Re: location directive

2001-11-28 Thread Perrin Harkins

On Tue, 27 Nov 2001, [EMAIL PROTECTED] wrote:
 I have put mod_perl handler inside a virtual host section
 
 then inside the virtualhost section, i also put location
 directives to override overall modperl handler in some
 situations, with sethandler default-handler.
 
 for instance
 
 Alias /icons/ d:/Apache/icons/
 location /icons/
 SetHandler default-handler
 /location
 
 
 this works ok as soon as the uri is /icons/file
 
 but modperl handler intercept if the uri is just
 /icons/ which should otherwise show the directory index of the
 location.
 
 
 isn't it a sort of bug ?

No.  See if this post solves your problem:
[EMAIL PROTECTED]">http://mathforum.org/epigone/modperl/relskoxpee/[EMAIL PROTECTED]

- Perrin




location directive

2001-11-27 Thread [EMAIL PROTECTED]

Hi

I have put mod_perl handler inside a virtual host section

then inside the virtualhost section, i also put location
directives to override overall modperl handler in some
situations, with sethandler default-handler.

for instance

Alias /icons/ d:/Apache/icons/
location /icons/
SetHandler default-handler
/location


this works ok as soon as the uri is /icons/file

but modperl handler intercept if the uri is just
/icons/ which should otherwise show the directory index of the
location.


isn't it a sort of bug ?

everything works ok if i put modperl handler inside a
location, inside the virtual host but this is precisely what i
don't want to do.
















Ce message vous est envoyé par laposte.net - web : www.laposte.net/  minitel : 3615 
LAPOSTENET (0,84 F TTC la minute)/ téléphone : 08 92 68 13 50 (2,21 F TTC la minute)





Location directive on a network drive

2001-10-01 Thread Dave Hodson



I'm attempting to run some code off a 
mounted drive on RH Linux 7.1 (Apache 1.3.2, modperl-1.26), but for some reason, 
my Location directive is ignored (code is executed from the local drive 
instead)

I'm pointing to /mnt/qa_load_www/cgi-shl, 
but code is instead executed from /apache/cgi-shl. The mounted drive is 
available for read, etc (if I su nobody, I can see it, etc). I've read http://perl.apache.org/guide/config.html#Alias_Configurationsseveral 
times, and everything looks correct...

Ideas/suggestions welcome

Dave

/apache/conf/httpd.conf 
[pertinent parts only]

 # # 
ScriptAlias: This controls which directories contain server 
scripts. # ScriptAliases are essentially the same as 
Aliases, except that # documents in the realname directory 
are treated as applications and # run by the server when 
requested rather than as documents sent to the client. # 
The same rules about trailing "/" apply to ScriptAlias directives as 
to # Alias. # 
Alias /cgi-shl/ /mnt/qa_load_www/cgi-shl/
 # # 
"/apache/cgi-bin" should be changed to whatever your 
ScriptAliased # CGI directory exists, if you have that 
configured. # PerlModule Apache::Registry 


 #Enable 
mod_perl Location "/cgi-shl" 
SetHandler perl-script PerlHandler 
Apache::Registry Options 
+ExecCGI /Location

/IfModule




Location directive not working for mod perl

2000-12-26 Thread Bill Eberle

I hope this is the correct mailing list for newbie mod perl questions.
I have just installed mod_perl 1.24 with Apache 1.3.14.  Mod perl seems
to be running because upon startup of httpd, the Apache error log file
says

Apache/1.3.14 (Unix) mod_perl/1.24_02-dev configured -- resuming normal
operations

The problem I'm having is that the Location directive does not seem to
be working.  I have the following in my httpd.conf file:

Alias  /perl/  "/home/httpd/perl"

Location /perl
 SetHandler perl-script
 PerlHandler Apache::Registry
 Options +ExecCGI
 allow from all
 PerlSendHeader On
/Location

I have placed a file called test-cgi in the directory
"/home/httpd/perl/".  It is executable and runs if executed from the
command line.  However, when I try to call this script through the
browser using the URL http://localhost/perl/test-cgi I get a 404 not
found error (The requested URL /perl/test-cgi was not found on this
server.The requested URL /perl/test-cgi was not found on this server.)

The ScriptAlias directive works fine.  I have:

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

and the same file (test-cgi) placed in /usr/local/apache/cgi-bin
executes without problems.

This all seems very simple so I don't understand what I'm doing wrong.
Any ideas anyone?





Re: Location directive not working for mod perl

2000-12-26 Thread Rod Butcher

I believe you need the trailing / 
i.e. Alias  /perl/  "/home/httpd/perl/"
(but why not use Scriptalias ?)
Rod

- Original Message - 
From: "Bill Eberle" [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, December 27, 2000 12:48 AM
Subject: Location directive not working for mod perl


 I hope this is the correct mailing list for newbie mod perl questions.
 I have just installed mod_perl 1.24 with Apache 1.3.14.  Mod perl seems
 to be running because upon startup of httpd, the Apache error log file
 says
 
 Apache/1.3.14 (Unix) mod_perl/1.24_02-dev configured -- resuming normal
 operations
 
 The problem I'm having is that the Location directive does not seem to
 be working.  I have the following in my httpd.conf file:
 
 Alias  /perl/  "/home/httpd/perl"
 
 Location /perl
  SetHandler perl-script
  PerlHandler Apache::Registry
  Options +ExecCGI
  allow from all
  PerlSendHeader On
 /Location
 
 I have placed a file called test-cgi in the directory
 "/home/httpd/perl/".  It is executable and runs if executed from the
 command line.  However, when I try to call this script through the
 browser using the URL http://localhost/perl/test-cgi I get a 404 not
 found error (The requested URL /perl/test-cgi was not found on this
 server.The requested URL /perl/test-cgi was not found on this server.)
 
 The ScriptAlias directive works fine.  I have:
 
 ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
 
 and the same file (test-cgi) placed in /usr/local/apache/cgi-bin
 executes without problems.
 
 This all seems very simple so I don't understand what I'm doing wrong.
 Any ideas anyone?
 
 
 





Re: Location directive not working for mod perl

2000-12-26 Thread Bill Eberle

Rod Butcher wrote:

 I believe you need the trailing /
 i.e. Alias  /perl/  "/home/httpd/perl/"

Yes, that was it...thanks!


 (but why not use Scriptalias ?)

Somewhere in the perl.apache.org docs it was suggested that Alias was
preferrable to ScriptAlias for mod_perl.  I'll have another look.



 Rod

 - Original Message -
 From: "Bill Eberle" [EMAIL PROTECTED]
 To: [EMAIL PROTECTED]
 Sent: Wednesday, December 27, 2000 12:48 AM
 Subject: Location directive not working for mod perl

  I hope this is the correct mailing list for newbie mod perl questions.
  I have just installed mod_perl 1.24 with Apache 1.3.14.  Mod perl seems
  to be running because upon startup of httpd, the Apache error log file
  says
 
  Apache/1.3.14 (Unix) mod_perl/1.24_02-dev configured -- resuming normal
  operations
 
  The problem I'm having is that the Location directive does not seem to
  be working.  I have the following in my httpd.conf file:
 
  Alias  /perl/  "/home/httpd/perl"
 
  Location /perl
   SetHandler perl-script
   PerlHandler Apache::Registry
   Options +ExecCGI
   allow from all
   PerlSendHeader On
  /Location
 
  I have placed a file called test-cgi in the directory
  "/home/httpd/perl/".  It is executable and runs if executed from the
  command line.  However, when I try to call this script through the
  browser using the URL http://localhost/perl/test-cgi I get a 404 not
  found error (The requested URL /perl/test-cgi was not found on this
  server.The requested URL /perl/test-cgi was not found on this server.)
 
  The ScriptAlias directive works fine.  I have:
 
  ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
 
  and the same file (test-cgi) placed in /usr/local/apache/cgi-bin
  executes without problems.
 
  This all seems very simple so I don't understand what I'm doing wrong.
  Any ideas anyone?
 
 
 




Re: Location directive not working for mod perl

2000-12-26 Thread Stas Bekman

On Wed, 27 Dec 2000, Bill Eberle wrote:

 Rod Butcher wrote:
 
  I believe you need the trailing /
  i.e. Alias  /perl/  "/home/httpd/perl/"
 
 Yes, that was it...thanks!
 
 
  (but why not use Scriptalias ?)
 
 Somewhere in the perl.apache.org docs it was suggested that Alias was
 preferrable to ScriptAlias for mod_perl.  I'll have another look.

http://perl.apache.org/guide/config.html#Alias_Configurations

 
 
 
  Rod
 
  - Original Message -
  From: "Bill Eberle" [EMAIL PROTECTED]
  To: [EMAIL PROTECTED]
  Sent: Wednesday, December 27, 2000 12:48 AM
  Subject: Location directive not working for mod perl
 
   I hope this is the correct mailing list for newbie mod perl questions.
   I have just installed mod_perl 1.24 with Apache 1.3.14.  Mod perl seems
   to be running because upon startup of httpd, the Apache error log file
   says
  
   Apache/1.3.14 (Unix) mod_perl/1.24_02-dev configured -- resuming normal
   operations
  
   The problem I'm having is that the Location directive does not seem to
   be working.  I have the following in my httpd.conf file:
  
   Alias  /perl/  "/home/httpd/perl"
  
   Location /perl
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
allow from all
PerlSendHeader On
   /Location
  
   I have placed a file called test-cgi in the directory
   "/home/httpd/perl/".  It is executable and runs if executed from the
   command line.  However, when I try to call this script through the
   browser using the URL http://localhost/perl/test-cgi I get a 404 not
   found error (The requested URL /perl/test-cgi was not found on this
   server.The requested URL /perl/test-cgi was not found on this server.)
  
   The ScriptAlias directive works fine.  I have:
  
   ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
  
   and the same file (test-cgi) placed in /usr/local/apache/cgi-bin
   executes without problems.
  
   This all seems very simple so I don't understand what I'm doing wrong.
   Any ideas anyone?
  
  
  
 



_
Stas Bekman  JAm_pH --   Just Another mod_perl Hacker
http://stason.org/   mod_perl Guide  http://perl.apache.org/guide 
mailto:[EMAIL PROTECTED]   http://apachetoday.com http://logilune.com/
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/  





Re: Location directive not working for mod perl

2000-12-26 Thread Vivek Khera

 "RB" == Rod Butcher [EMAIL PROTECTED] writes:

RB I believe you need the trailing / 
RB i.e. Alias  /perl/  "/home/httpd/perl/"
RB (but why not use Scriptalias ?)

Because ScriptAlias makes it use mod_cgi rather than mod_perl.

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Vivek Khera, Ph.D.Khera Communications, Inc.
Internet: [EMAIL PROTECTED]   Rockville, MD   +1-240-453-8497
AIM: vivekkhera Y!: vivek_khera   http://www.khera.org/~vivek/



Re: Location Directive Problem

2000-08-18 Thread Tony Whyte

To close loop , I discovered I had redundant Location directives for
/hello/world amongst my various *.conf files. Once I got rid of the
extras I was good to go. Thanks for ideas !

Tony

Tony Whyte wrote:

 Running apache-1.3.11, mod_perl-1.24, irix6.5.5

 this works: (gets handled by mod_perl)

 Location /hello-world
   SetHandler perl-script
   PerlHandler Apache::Hello
 /Location

 this doesnt:

 Location /hello/world
   SetHandler perl-script
   PerlHandler Apache::Hello
 /Location

 Tried quoting "/hello/world" I still get  "File does not exist:
 /usr/local/apache/htdocs/hello/world" in logs.

 Is there some other directive Ive missed or misconfigured.

 Thanks

 Tony




Location Directive Problem

2000-08-17 Thread Tony Whyte


Running apache-1.3.11, mod_perl-1.24, irix6.5.5

this works: (gets handled by mod_perl)

Location /hello-world
  SetHandler perl-script
  PerlHandler Apache::Hello
/Location

this doesnt:

Location /hello/world
  SetHandler perl-script
  PerlHandler Apache::Hello
/Location

Tried quoting "/hello/world" I still get  "File does not exist:
/usr/local/apache/htdocs/hello/world" in logs.

Is there some other directive Ive missed or misconfigured.

Thanks

Tony