New beta plugin: WebDAV (WebFolders)

Discuss and announce Total Commander plugins, addons and other useful tools here, both their usage and their development.

Moderators: Stefan2, white, sheep, Hacker

Post Reply
BennyLi
Junior Member
Junior Member
Posts: 9
Joined: 2015-02-04, 09:54 UTC
Location: Hamburg

No files nor directories are listed after connection

Post by *BennyLi » 2015-02-09, 18:58 UTC

Here is the LOG (finally):

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2015-01-28T05:00:35Z</lp1:creationdate>
<lp1:getlastmodified>Wed, 28 Jan 2015 05:00:35 GMT</lp1:getlastmodified>
<lp1:getetag>"50daf406ee2c0"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
<D:getcontenttype>httpd/unix-directory</D:getcontenttype>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/backups</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-09-18T08:51:16Z</lp1:creationdate>
<lp1:getlastmodified>Fri, 26 Dec 2014 12:55:26 GMT</lp1:getlastmodified>
<lp1:getetag>"50b1e09e2f2af"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/Dokumente%20Steffi%20und%20Benny</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2012-12-28T08:14:07Z</lp1:creationdate>
<lp1:getlastmodified>Sun, 16 Mar 2014 16:37:59 GMT</lp1:getlastmodified>
<lp1:getetag>"4f4bbecfe67c0"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/download</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-05-26T06:44:44Z</lp1:creationdate>
<lp1:getlastmodified>Wed, 24 Sep 2014 11:32:28 GMT</lp1:getlastmodified>
<lp1:getetag>"503ce09f6981b"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/ebooks</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-05-28T05:49:48Z</lp1:creationdate>
<lp1:getlastmodified>Wed, 18 Dec 2013 09:48:27 GMT</lp1:getlastmodified>
<lp1:getetag>"4edcbf25f160d"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/homes</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2012-03-08T15:37:20Z</lp1:creationdate>
<lp1:getlastmodified>Fri, 19 Sep 2014 11:58:37 GMT</lp1:getlastmodified>
<lp1:getetag>"50369d23f8347"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/movie</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-05-26T06:34:37Z</lp1:creationdate>
<lp1:getlastmodified>Tue, 25 Nov 2014 16:12:40 GMT</lp1:getlastmodified>
<lp1:getetag>"508b12e33417d"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/music</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-08-14T15:22:24Z</lp1:creationdate>
<lp1:getlastmodified>Sun, 26 May 2013 11:10:21 GMT</lp1:getlastmodified>
<lp1:getetag>"4dd9d13f0e140"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/photo</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-08-14T15:22:26Z</lp1:creationdate>
<lp1:getlastmodified>Sun, 19 Jan 2014 11:19:43 GMT</lp1:getlastmodified>
<lp1:getetag>"4f050f3ab91c0"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/public</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-05-31T17:23:28Z</lp1:creationdate>
<lp1:getlastmodified>Sun, 16 Feb 2014 06:50:26 GMT</lp1:getlastmodified>
<lp1:getetag>"4f280743d1e94"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/software</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-09-01T07:36:55Z</lp1:creationdate>
<lp1:getlastmodified>Mon, 12 May 2014 08:01:12 GMT</lp1:getlastmodified>
<lp1:getetag>"4f92f59d34779"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/tv-show</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-05-24T22:23:05Z</lp1:creationdate>
<lp1:getlastmodified>Wed, 19 Nov 2014 17:29:48 GMT</lp1:getlastmodified>
<lp1:getetag>"508398efd5998"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/video</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-08-14T15:22:23Z</lp1:creationdate>
<lp1:getlastmodified>Tue, 17 Dec 2013 10:03:48 GMT</lp1:getlastmodified>
<lp1:getetag>"4edb80b6d2aa2"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/web</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-06-08T17:42:16Z</lp1:creationdate>
<lp1:getlastmodified>Tue, 03 Feb 2015 09:44:04 GMT</lp1:getlastmodified>
<lp1:getetag>"50e2be953dd5b"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/xbmc_sync</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2012-02-24T13:45:33Z</lp1:creationdate>
<lp1:getlastmodified>Sun, 26 May 2013 07:21:46 GMT</lp1:getlastmodified>
<lp1:getetag>"4dd99e27ffd17"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp4="http://calendarserver.org/ns/" xmlns:lp3="urn:ietf:params:xml:ns:caldav" xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/">
<D:href>/home</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2012-03-08T15:44:19Z</lp1:creationdate>
<lp1:getlastmodified>Thu, 30 Oct 2014 14:53:55 GMT</lp1:getlastmodified>
<lp1:getetag>"506a50cac9f85"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 37349
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) » 2015-02-10, 15:46 UTC

The problem seems to be that your server is returning relative URLs:
<D:href>/Dokumente%20Steffi%20und%20Benny</D:href>

I have never seen a server doing this, so my plugin simply can't handle it. I will try to add it.
Author of Total Commander
http://www.ghisler.com

BennyLi
Junior Member
Junior Member
Posts: 9
Joined: 2015-02-04, 09:54 UTC
Location: Hamburg

Post by *BennyLi » 2015-02-11, 07:11 UTC

ghisler(Author) wrote:The problem seems to be that your server is returning relative URLs:
<D:href>/Dokumente%20Steffi%20und%20Benny</D:href>

I have never seen a server doing this, so my plugin simply can't handle it. I will try to add it.
By "relative URLs" you mean the spaces in the folder "Dokumente Steffi und Benny" which are replaced by "%20"?

Tech background: The WebDAV Server is the one integrated into a Synology DiskStation.

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 37349
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) » 2015-02-12, 10:58 UTC

I thought that it was the path, but this doesn't seem to be the case - I will have to analyze it with a debugger.
Author of Total Commander
http://www.ghisler.com

User avatar
MVV
Power Member
Power Member
Posts: 8255
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV » 2015-02-13, 10:06 UTC

ghisler,
Thank you for this plugin, it works (not from first try but) with Yandex.Drive (unfortunately it doesn't work anymore in my Opera 12)! However there are some issues:

I've installed this plugin via elevation request, but I couldn't be able to create new connection until restarting TC with elevation, and no error message was shown that tcwebdav.ini can't be written so I didn't even know if plugin works correctly or not. I think plugin should ask where to put this file, and fsplugin.ini may be used to store path to it.

Also as I can see only HTTP proxy is supported, is it correct? I tried SOCKS proxy first but with no luck. Is it safe to use HTTP proxy for SSL connections?

Skif_off
Member
Member
Posts: 114
Joined: 2013-09-30, 13:13 UTC

Post by *Skif_off » 2015-02-13, 19:26 UTC

fsplugin.ini may be used to store path to it.
With %COMMANDER_PATH% please :) Or plugin's directory as a valid option for storage tcwebdav.ini.

I use davplug.inc now:

Code: Select all

Yandex.Disk,webdav.yandex.ru,1,1,1,0,0
but plugin can not remember login and password :)

Sob
Power Member
Power Member
Posts: 908
Joined: 2005-01-19, 17:33 UTC

Post by *Sob » 2015-02-13, 20:51 UTC

MVV wrote:Is it safe to use HTTP proxy for SSL connections?
It uses CONNECT method, so it's almost like SOCKS, proxy can't peek inside.

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 37349
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) » 2015-02-16, 10:44 UTC

2BennyLi
I found the problem: Your sever is returning INVALID URLs: You request folder /webdav, but the server returns URLs from the root of the server.

For example, it reports
/Dokumente%20Steffi%20und%20Benny
instead of
/webdav/Dokumente%20Steffi%20und%20Benny

I guess that when it reports the folder like this, TC would still have to access /server/Dokumente%20Steffi%20und%20Benny

Now I have created a test version for you which will handle these invalid paths. However, I cannot guarantee that it will work in subdirectories. If it doesn't, then please post a listing from a subdir too.

Please test it:
http://ghisler.fileburst.com/beta/webdav_26b7.zip
Author of Total Commander
http://www.ghisler.com

BennyLi
Junior Member
Junior Member
Posts: 9
Joined: 2015-02-04, 09:54 UTC
Location: Hamburg

Post by *BennyLi » 2015-02-16, 14:31 UTC

ghisler(Author) wrote:2BennyLi
I found the problem: Your sever is returning INVALID URLs: You request folder /webdav, but the server returns URLs from the root of the server.
Thank you very much. I guess the problem is a proxy that sits in between and serves the WebDAV content under the /webdav/ subdirectory. Maybe I have to adjust the nginx configuration.

My setup looks like this:

nginx to proxy the content from https://my-server.de/webdav/*.* to my NAS that host the files and folders and the WebDAV with Apache under <local-nas-ip-here>/*.* (so without the /webdav/ directory).

Also tested your new version but i fails (I did not change anything in the configuration):

Code: Select all

221-Goodbye. You uploaded 2 and downloaded 0 kbytes.
221 Logout.
CONNECT \NAS WebDAV
=================
Get dir: /webdav
HTTP error: Error 12168, FormatMessage error 317
PROPFIND /webdav HTTP/1.1
Depth: 1
Content-Type: text/xml; charset="utf-8"
User-Agent: ezdavplugin/2.6 TotalCommander/8.5 (Windows/7; en_EN)
Host: my-server.de
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
******Received headers
HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.1
Date: Mon, 16 Feb 2015 14:20:00 GMT
Content-Type: text/html
Content-Length: 184
Location: https://my-server.de/webdav/
Connection: keep-alive
Error: 301 Moved Permanently
HTTP error: Error 12168, FormatMessage error 317
PROPFIND /webdav HTTP/1.1
Depth: 1
Content-Type: text/xml; charset="utf-8"
User-Agent: ezdavplugin/2.6 TotalCommander/8.5 (Windows/7; en_EN)
Host: my-server.de
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
******Received headers
HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.1
Date: Mon, 16 Feb 2015 14:20:00 GMT
Content-Type: text/html
Content-Length: 184
Location: https://my-server.de/webdav/
Connection: keep-alive
Error: 301 Moved Permanently
Disconnected
EDIT:
My server does not allow to access a subdirectory without the trailing slash. Thats why it fails. I will try to fix this in my configuration!

BennyLi
Junior Member
Junior Member
Posts: 9
Joined: 2015-02-04, 09:54 UTC
Location: Hamburg

Post by *BennyLi » 2015-02-16, 14:39 UTC

After changing the nginx configuration to allow access without the trailing slash (my-server.de/webdav instead of my-server.de/webdav/) the new version (26b7) works.

BennyLi
Junior Member
Junior Member
Posts: 9
Joined: 2015-02-04, 09:54 UTC
Location: Hamburg

Post by *BennyLi » 2015-02-16, 14:56 UTC

Ok. Tried a little with your new version and found a little issue. The current folder is always inside the folder as a subfolder.

Example:
I open my-server.de/webdav/public and become the following list:

Code: Select all

public\
ca.crt
If I try to open the public\ folder I get an error:

Code: Select all

Get dir: /webdav\public\public
PROPFIND /webdav/public/public HTTP/1.1
Depth: 1
Content-Type: text/xml; charset="utf-8"
User-Agent: ezdavplugin/2.6 TotalCommander/8.5 (Windows/7; en_EN)
Host: my-server.de
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
******Received headers
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Mon, 16 Feb 2015 14:54:02 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 211
Connection: keep-alive
Error: 404 Not Found
PROPFIND /webdav/public/public HTTP/1.1
Depth: 1
Content-Type: text/xml; charset="utf-8"
User-Agent: ezdavplugin/2.6 TotalCommander/8.5 (Windows/7; en_EN)
Host: my-server.de
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
******Received headers
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Mon, 16 Feb 2015 14:54:03 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 211
Connection: keep-alive
Error: 404 Not Found
Here is the detailed log:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response xmlns:lp2="http://apache.org/dav/props/" xmlns:lp1="DAV:">
<D:href>/public/</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype><D:collection/></lp1:resourcetype>
<lp1:creationdate>2011-05-31T17:23:28Z</lp1:creationdate>
<lp1:getlastmodified>Mon, 16 Feb 2015 12:37:38 GMT</lp1:getlastmodified>
<lp1:getetag>"33c003d-1000-50f33d9f61d1b"</lp1:getetag>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
<D:getcontenttype>httpd/unix-directory</D:getcontenttype>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response xmlns:lp2="http://apache.org/dav/props/" xmlns:lp1="DAV:">
<D:href>/public/ca.crt</D:href>
<D:propstat>
<D:prop>
<lp1:resourcetype/>
<lp1:creationdate>2012-03-29T06:19:57Z</lp1:creationdate>
<lp1:getcontentlength>855</lp1:getcontentlength>
<lp1:getlastmodified>Thu, 29 Mar 2012 06:19:57 GMT</lp1:getlastmodified>
<lp1:getetag>"33c0afe-357-4bc5bb691b559"</lp1:getetag>
<lp2:executable>F</lp2:executable>
<D:supportedlock>
<D:lockentry>
<D:lockscope><D:exclusive/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
<D:lockentry>
<D:lockscope><D:shared/></D:lockscope>
<D:locktype><D:write/></D:locktype>
</D:lockentry>
</D:supportedlock>
<D:lockdiscovery/>
<D:getcontenttype>application/x-x509-ca-cert</D:getcontenttype>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

BennyLi
Junior Member
Junior Member
Posts: 9
Joined: 2015-02-04, 09:54 UTC
Location: Hamburg

Post by *BennyLi » 2015-02-16, 15:07 UTC

Sorry for spaming. I'm testing my folders and run straight into the next issue: A folder with german Umlaut

Code: Select all

my-server.de/webdav/some/path/to/a/folder/Süd
Here is the log (the detailed log did not show something...):

Code: Select all

Get dir: /webdav\some\path\to\a\folder\Süd
PROPFIND /webdav/some/path/to/a/folder/S%fcd HTTP/1.1
Depth: 1
Content-Type: text/xml; charset="utf-8"
User-Agent: ezdavplugin/2.6 TotalCommander/8.5 (Windows/7; en_EN)
Host: my-server.de
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
******Received headers
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Mon, 16 Feb 2015 15:02:20 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 260
Connection: keep-alive
Error: 404 Not Found
PROPFIND /webdav/some/path/to/a/folder/S%fcd HTTP/1.1
Depth: 1
Content-Type: text/xml; charset="utf-8"
User-Agent: ezdavplugin/2.6 TotalCommander/8.5 (Windows/7; en_EN)
Host: my-server.de
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache
******Received headers
HTTP/1.1 404 Not Found
Server: nginx/1.2.1
Date: Mon, 16 Feb 2015 15:02:20 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 260
Connection: keep-alive
Error: 404 Not Found
EDIT:
From my server log the access via the Windows Explorer:

Code: Select all

"PROPFIND /webdav/some/path/to/a/folder/S%C3%BCd HTTP/1.1" 207 910 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601"
This is actually an UTF-8 encoding (ü = %C3%BC). I guess what your plugin does use is ANSI HEX encoding (ü = %fc).

Hurdet
Senior Member
Senior Member
Posts: 431
Joined: 2003-05-10, 18:02 UTC

Post by *Hurdet » 2015-02-16, 16:28 UTC

Problem with in webdav_26b7:
=================
Get dir: /user\folder
HTTP error: Error 12168, FormatMessage error 317
PROPFIND /user/folder HTTP/1.1
Error: 301 Moved Permanently
HTTP error: Error 12168, FormatMessage error 317
PROPFIND /user/folder HTTP/1.1
Error: 301 Moved Permanently
Disconnected
Last edited by Hurdet on 2015-02-19, 13:46 UTC, edited 1 time in total.

User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 37349
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) » 2015-02-19, 10:42 UTC

Here is a new beta, please test it:
http://ghisler.fileburst.com/beta/webdav_26b8.zip

1. I changed the way to handle the bad path problem: If you enter the path in the form
server.com/subdir
TC will now also try to handle paths without prefix "subdir".

2. Redirect 301 should now work. If it doesn't, please append a slash to the configured server to ensure that TC sends paths with slash.
Author of Total Commander
http://www.ghisler.com

Hurdet
Senior Member
Senior Member
Posts: 431
Joined: 2003-05-10, 18:02 UTC

Post by *Hurdet » 2015-02-19, 11:01 UTC

It work now for me, ty.

Post Reply