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]
> <javascript:>> 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]
> <javascript:>> 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] <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.