server = WEBrick::HTTPServer.new(context.values)
server.mount("/webdav", WEBrick::HTTPServlet::WebDAVHandler, Dir.pwd)
…
and can mount and read the files, i still can’t actually modify any of
the exported/mounted webdav files.
before i start diving into real problem tracking i would like to ask if
someone of you had the same problems? i export/mount on mac os x. might
this be a mac or a webrick-webdav problem? any tips welcomed,
Il giorno 03/nov/06, alle ore 10:11, Dirk Lüsebrink ha scritto:
server.mount(“/webdav”, WEBrick::HTTPServlet::WebDAVHandler,
this be a mac or a webrick-webdav problem? any tips welcomed,
have fun
dirk
Exactly, that’s a Mac OS X issue: webrick-webdav supports protocol
version 1.0, while Mac OS X wants the server to support v2.0 in order
to let you write on that share.
I had the same problem as yours, but I couldn’t find enough
documentation anywhere (about webrick-webdav or about the version
required by OS X) so I started reading webrick-webdav sources and
comparing the traffic dump with an apache webdav module and I found
out this version issue.
Actually I think that the only difference between 1.0 and 2.0 servers
is that the latter ones support LOCK methods, which allow to lock
files (exclusive or shared locks). I didn’t need this, so I just
inherited from WebDAVHandler:
module WEBrick
module HTTPServlet
class WebDAVHandlerVersion2 < WebDAVHandler
def do_OPTIONS(req, res)
super
res[“DAV”] = “1,2”
end
end
end
end
So I started using WebDAVHandlerVersion2 instead of WebDAVHandler. In
fact, on the source code of WebDAVHandler there is a commented out
‘res[“DAV”] = “1,2”’ line…
It worked, I’m quite sure I could write to that share, but right now
it seems like it doesn’t work very well with OS X: I get strange
errors when writing into a file or creating a new one.
Some time ago I wrote a page about my experiments with WebDAV, since
I couldn’t find enough documentation: http://gmarrone.objectblues.net/
cgi-bin/wiki/WebDAV_-_Linux_server%2c_Mac_OS_X_client .
I summed up almost everything in this mail, but maybe you can find
something useful over there
It isn’t up to date, though: I don’t describe the errors I get now
with that solution.
Please let me know if your Mac OS X is able to write without any
error on that modified version of webrick-webdav
Il giorno 03/nov/06, alle ore 10:11, Dirk Luesebrink ha scritto:
server.mount(“/webdav”, WEBrick::HTTPServlet::WebDAVHandler,
this be a mac or a webrick-webdav problem? any tips welcomed,
…
I had the same problem as yours, but I couldn’t find enough
documentation anywhere (about webrick-webdav or about the version
required by OS X) so I started reading webrick-webdav sources and
comparing the traffic dump with an apache webdav module and I found
out this version issue.
yes, i’ve also found the res[“DAV”] = “1,2” but uncommenting it did not
work for me at first. but than i found the HTTPS stuff on your
page(http://gmarrone.objectblues.net/cgi-bin/wiki/WebDAV_-_Linux_server%2C_Mac_OS_X_client)
and i could get it to work. The strange errors you got, i had also,
“(Error code, -50)”. I guess this is because of the missing UN/LOCK
implementation and so i tried putting an empty LOCK method in there:
class WebDAVHandlerVersion2
def do_LOCK req, res
puts “LOCK request: #{req}”
end
end
and this got me rid of the the ‘strange’ errors.
But now, what does it mean? What is UN/LOCK actually supposed to do?
(UNLOCK does not seem to be called at all?) Yeah, i could start looking
it up in the RFC, but i’m sick an tired of the Webdav promise. All could
have been so nice, when apple/microsoft/apache/etc would just have had
implemented what is written in the RFCs an i would not need to bother,
sigh. So, now i have a kind of working(kind of) webdav-webrick/version
2/read&write version server. lets see what happens next when putting it
into production use, hehe
Il giorno 07/nov/06, alle ore 23:07, Dirk Lüsebrink ha scritto:
def do_LOCK req, res
puts “LOCK request: #{req}”
end
end
and this got me rid of the the ‘strange’ errors.
Great work!
I didn’t think about it.
into production use, hehe
I’ve just given a small peek at the RFC, looks like LOCK must return
a unique “lock token”, which should be a URI, associated to that lock.
I guess your empty implementation confuses Mac OS X a little bit,
which thinks the lock has succeded but isn’t going to UNLOCK since it
doesn’t know the lock token.
Well, I guess that’s fine for a single user webdav share