Oh, shoot, get some sleep! I really appreciate all the help.

I'm also willing to concede that this might not be the best approach to 
this...there are similar solutions in PHP, but would much rather be able to 
use a Flask environment to generate these pages...

On Tuesday, September 29, 2015 at 11:32:24 AM UTC-7, Graham Dumpleton wrote:
>
> Okay, I was seeing requests for index.html.en as well, but figured it was 
> because of the odd way I was testing it overlaid on DocumentRoot where 
> index stuff may have been set up. I didn’t try ensuring DirectoryIndex was 
> off and was hoping it would just work. :-(
>
> I will have to play some more with that approach later then, when I am 
> supposed to be awake, and not at this ridiculous jet lagged induced early 
> morning wake up time.
>
> Graham
>
> On 30 Sep 2015, at 4:21 am, Josh Rodriguez <[email protected] 
> <javascript:>> wrote:
>
> Hmmm, just tried that. For some reason, it's redirecting WebDAV requests 
> to /.special-listing/index.html...but I've turned the default Directory 
> Listing page option off...
>
>
>
> On Monday, September 28, 2015 at 11:41:54 PM UTC-7, Graham Dumpleton wrote:
>>
>> Perhaps mod_rewrite then.
>>
>> WSGIScriptAlias /.special-listing 
>> /Library/WebServer/Documents/environ.wsgi
>>
>> #Script GET /.special-listing
>> #Script POST /.special-listing
>>
>> RewriteEngine On
>> RewriteCond %{PATH_INFO} !^/.special-listing
>> RewriteCond %{REQUEST_METHOD} GET [OR]
>> RewriteCond %{REQUEST_METHOD} POST
>> RewriteRule (.*) /.special-listing$1 [PT,L]
>>
>> Graham
>>
>> On 29 Sep 2015, at 4:26 pm, Graham Dumpleton <[email protected]> 
>> wrote:
>>
>> Oh, didn’t know that. I only tested overriding for POST case with GET 
>> being the one which goes through normally.
>>
>> Let me think some more then.
>>
>> Graham
>>
>> On 29 Sep 2015, at 4:20 pm, Josh Rodriguez <[email protected]> wrote:
>>
>> Hmm, not sure that this is going to work...not having luck getting the 
>> GET script to run...
>>
>> According to the mod_actions documentation:
>>
>> "Also note that Script with a method of GET will only be called if there 
>> are query arguments present (*e.g.*, foo.html?hi). Otherwise, the 
>> request will proceed normally."
>>
>>
>>
>>
>> On Monday, September 28, 2015 at 6:36:58 PM UTC-7, Graham Dumpleton wrote:
>>>
>>>
>>> > On 29 Sep 2015, at 11:21 am, Graham Dumpleton <[email protected]> 
>>> wrote: 
>>> > 
>>> > 
>>> >> On 29 Sep 2015, at 11:17 am, Graham Dumpleton <[email protected]> 
>>> wrote: 
>>> >> 
>>> >> 
>>> >>> On 29 Sep 2015, at 10:38 am, Josh Rodriguez <[email protected]> 
>>> wrote: 
>>> >>> 
>>> >>> I'm trying to use Flask (via mod_wsgi) and mod_dav in the same 
>>> location. I want mod_wsgi/Python to handle GET and POST requests (because I 
>>> want to return enhanced HTML directory listings) while mod_dav handles 
>>> methods like OPTIONS and PROPFIND. 
>>> >>> 
>>> >>> I'm getting an 400 error with the log message "The URL contains 
>>> extraneous path components. The resource could not be identified." when I 
>>> try to access a resource via WebDAV. 
>>> >>> 
>>> >>> I think I've figured out what's up. 
>>> >>> 
>>> >>> I'm using WSGIScriptAlias as follows: 
>>> >>> 
>>> >>> `WSGIScriptAlias / /usr/local/apache2/htdocs/test/test.wsgi` 
>>> >>> 
>>> >>> But when I use a WebDAV client to connect to `/files/`, I find that 
>>> the path that's passed to mod_dav has turned into: 
>>> >>> 
>>> >>> `/usr/local/apache2/htdocs/test/test.wsgi/files` 
>>> >>> 
>>> >>> Which makes sense, given the alias directive. 
>>> >>> 
>>> >>> My question is, is there a way to keep this from happening for 
>>> WebDAV requests? I'm assuming I can't do anything in Flask, that I need to 
>>> catch and modify the request before it reaches mod_dav. 
>>> >> 
>>> >> As a first guess, try adding: 
>>> >> 
>>> >>   <Location /files> 
>>> >>   SetHandler default-handler 
>>> >>   </Location> 
>>> >> 
>>> >> I am not sure whether this will interact with WebDav properly or not, 
>>> but I think would normally stop mod_wsgi at least interfering with requests 
>>> under that URL. It may be necessary to work out what the handler name for 
>>> WebDav is and use it, although from memory I suspect it doesn’t use the 
>>> handler concept. 
>>> > 
>>> > Okay. Didn’t grok what you want properly. 
>>> > 
>>> > That will only disable it for selected sub URLs, not by method type. 
>>> > 
>>> > I will have to think some more. Unfortunately the Limit/LimitExcept 
>>> directives don’t I believe work for handlers, only auth control. 
>>>
>>> Lets try again. 
>>>
>>> Presuming you want the whole site to be WebDav, but with GET/POST only 
>>> redirect to a Python script for outputting something different, try the 
>>> following: 
>>>
>>> 1. Use WSGIScriptAlias to mount your Flask application to generate the 
>>> special listing under a special unique sub URL which isn’t going to match 
>>> anything valid that WebDav may generate. 
>>>
>>>     WSGIScriptAlias /.my-special-directory-listing 
>>> /usr/local/apache2/htdocs/test/test.wsgi 
>>>
>>> 2. Enable mod_actions in Apache configuration. 
>>>
>>> 3. Add a Script directive mapping GET/POST to that special Python script.
>>>  
>>>
>>>     Script GET /.my-special-directory-listing 
>>>     Script POST /.my-special-directory-listing 
>>>
>>> It is possible that the original information about the URL used may not 
>>> be in the normal WSGI environ variables where Flask expects them. You may 
>>> need to use a WSGI middleware around Flask to tweak the WSGI environ 
>>> variables, copying values from different values that Apache passes through. 
>>> Look through what you might get for the following to see where the original 
>>> details may lie. 
>>>
>>> CONTEXT_DOCUMENT_ROOT: '/Library/WebServer/Documents' 
>>> CONTEXT_PREFIX: '' 
>>> DOCUMENT_ROOT: '/Library/WebServer/Documents' 
>>> PATH_INFO: '/index.html.en' 
>>> PATH_TRANSLATED: '/Library/WebServer/Documents/index.html.en' 
>>> QUERY_STRING: '' 
>>> REDIRECT_STATUS: '200' 
>>> REDIRECT_URL: '/index.html.en' 
>>> REQUEST_METHOD: 'POST' 
>>> REQUEST_URI: '/' 
>>> SCRIPT_FILENAME: '/Library/WebServer/Documents/environ.wsgi' 
>>> SCRIPT_NAME: '/.special-listing’ 
>>>
>>> This may be necessary due to how Apache does internal redirects to 
>>> invoke the script for that method type. 
>>>
>>> Please let me know the results as I will be curious. 
>>>
>>> Graham
>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "modwsgi" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/modwsgi.
>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>>
>>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at http://groups.google.com/group/modwsgi.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/modwsgi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to