Managing Domino File Resources Using WebDAV [ROUGH CUT]
Lotus Domino provides us a convenient way of centrally storing all the files that make up a website - the NSF file. For most websites this is great. For a website where you need to include lots of files it can become a pain.
Problem
When using methods like this folder structure is needed it becomes a nightmare. With the prevalance of JavaScript Libraries about at the moment this problem is now come to the fore. Ideally we'd be able to store the many files and folders that make a library in the Domino HTML folder of the server. Realistically this isn't always possible and we need to add all the files to the database design.
In the past I've found myself importing dozens of files in the NSF and then having to manually rename them all to provide a structured hierarchy. Time-consuming and boring.
Another problem of adding all the files from a library to is keeping them up to date. When a new version of a library is released, unless you know which files have changed, you'll need to go through the whole process again.
Solution
Using WebDAV we can eliminate all this renaming of resource elements and simple drag-drop copy folders full of files in to our Domino databases.
Assumptions
You're running a Domino server on Windows and have access to setup new DNS entries. You're using Windows XP or other suitable WebDAV client.
Setup
First thing to do is open the server's Address Book. Find your development server's own document and open it up. You need to make sure that Internet Site documents are enabled. As below:
We're going to create a new Internet Site document just for use with WebDAV. I'm assuming you're using session-based authentication on your server as is, which WebDAV does not work with. The easiest way to interact in a non-session-based way with the same server is to create a separate website doc that handles a distinct subdomain, such as webdav.dev.company.com or whatever.
So, go to the Configuration\Web\Internet Sites view and create a new one, like below:
Notice the subdomain, which we'll setup in our DNS later. Now go to the Configuration tab and make sure WebDAV is enabled down at the bottom, as below:
Then, on the Domino Web Engine tab make sure that session-based authentication is disabled:
At this point you'll probably want to restart (refresh?) the HTTP task, if not the whole server. All we need to do now is setup the DNS. How you do this depends on your environment. I'm in charge of my own little LAN and so can do it in one of two ways. The preffered option is to logon to my DNS server and add a new A Host record. If you work in a corporate environment you might need to get your sysadmins to do this.
The easiest way to add a new DNS entry for your Windows PC is to add a line to the text file found at Windows\System32\drivers\etc\hosts. Open this file in a text editor and add a line in the format: IP Address space FQDN e.g. 192.168.0.10 webdav.rockalldesign.com.
Open a browser and try the address. It should take you to the Domino server. Try and access a secured database and you should see an old-fashioned login prompt appear. If so, all is well. If not, start over.
Using WebDAV
WebDAV is supported by a variety of clients. For now we're only interested in using Windows Explorer to transfer folders and files in to our Domino databases.
First thi ng to do is allow access to the database we want to work with. Open the A CL's advanced tab and make sure the admin server is correct and that max internet access is set to at least Designer:
Optionally we can enable design.document locking on this database. Investigate.
Now open Windows Explorer and we'll connect to the database. From the Tools menu select Map Network Drive. From the dialog that appears, press the link to "Sign up for online storage":
You should get to a screen where you can choose the option below:
You will then be asked for the address of the web site, as below:
Enter the path in the format:
http://domain.company.com/path/to/db.nsf$files
Note that I've used the subdomain we setup for WebDAV and non-session-based authentictation. Pressing next will prompt you to login. Use the credentials of a user with DEsigner+ access to the database you're connecting to.
If all works ok you'll be asked to name this new folder and if you want to open it. Both choices are down to you.
Open Windows Explorer again and go to My Network Places. You should see a folder with the name you chose above.
In my case it's a database called yui.nsf. YUI being the Yahoo! User Interface Library. This JavaScript toolkit comprises dozens of files contained within a strict folder structure. Using WebDAV we can import all these files in to Designer and keep the directory hierarchy. To do so, having downloaded the YUI Zip file and extracted to a folder called "yui", simply drag the folder to your new network place folder. Once copying is complete you should be able to open the folder and see all the files, as below:
Now for the really magic part. Open the database in Domino Designer and go to the File Resources section. You should see all the files correctly imported, as below:
And there you have it.
Still needs adding
- talk about editing images/stylesheets/JS-files directly from the NSF via WebDAV.
brilliant
Hey Jake, just happened for me to play with external JS resources a couple of days ago, it took me a while to discover to join the database in Explorer as /db.nsf$files.
I think this is the main trick, rest of it can be summarized as: 1. Remove session authentication. 2. Make use of Internet Sites documents. 3. Make maximum web access to Manager And the MAIN TRICK : join your db in Explorer with $files after the db file name.
Once you do this on a dev server somewhere, same design elements can be copied/moved into production environment where you might have session/SSO or whatever enabled.
Reply
Re: brilliant
Really nice Jake, Is possible to upload files as well directly on the server ( instead in a database ) ? thx again. Dev
Reply
Show the rest of this thread
Thanks
I always wondered how to use WebDAV in Domino.
Thank you very much.
Reply
FWIW
Interesting, I didn't know that...
Quite off-topic, but your /etc/hosts file can be streamlined. The syntax is: "IP-address hostname hostname", so "192.168.0.10 webdav.rockalldesign.com webdav" (all one one line) would also do the trick ;-)
BTW, if you need to access your Webdav server from the command-line, I recommend http://www.webdav.org/cadaver/
Reply
Re: FWIW
Nice tip. Thanks for that.
Is there a limit to the number of hostnames you can list on one line?
Jake
Reply
Show the rest of this thread
Thanks
i have not tried yet but this kind of article on domino & webdav was much needed Thank you so much!
Reply
Nice Work
I've been looking at doing this for a while now. Your article saved me a ton of messing around.
Reply
Well Done Jake
Excellent - I never knew that (infact I've been meaning to find out what WebDAV did for Domino!). Great stuff.
Reply
Fantastic - thankyou
I wasted a couple of days trying to get Webdav working so that I could import the latest version of TinyMCE into a DB.
In the end I gave up - thanks for this Jake.
Reply
Great Article
I like the article. I have an issue with files. I paste the directory over to the web folder and it creates the directory entries in the database but I keep getting the "an error occurred copying some or all of the files". I look in the web log and keep getting a 405, Method Not Allowed.
Anyone else seen this problem while trying to use WebDAV?
Thanks
Reply
Ran into a problem...
I can't get this to work correctly:
I can connect to the nsf and browse all files (and directories)
I can change existing filenames, but I can't add new files (from Windows Explorer)
From the log: HTTP Web Server: The HTTP method is not allowed for the specified URL (my url). (status code 405 I think)
Webdav is enabled in the Internet site document... (and all methods are enabled)
Anyone that knows anything about this?
Reply
Re: Ran into a problem...
Hi
- Remember to restart HTTP task - maybe the URL your are using are actually not using the Internet Site document you have made. Make shure they match
just some ideas..
brgds Jesper Kiaer
http://www.jezzper.com
Reply
Re: design locking
Just found out, it is because you need to enable design locking on the db properties.
I got my webdav up and running, but only for anonymous access.
I can't seem to log in, when access is restricted on the database. I can log in from a browser ..getting the correct prompt.
brgds Jesper Kiaer
http://www.jezzper.com
Reply
Show the rest of this thread
Been doing this for years, it's awesome
My team at SNAPPS has been using Domino WebDAV for several years as a code management solution with Dreamweaver (a WebDAV client). I even did presentations on it in 2003-04 but it did not get the interest level of Domino folks I would have liked to see, given the productivity benefits I've personally seen with my team. We have a server dedicated to WebDAV.
BTW it just got cooler mwith Domino 7.0.2 - as WebDAV requires basic authentication, and we can now selectively assign URLs to basic authentication while having the rest of the server participate in MSSO.
Reply
Read Only
I've run through this guide, and can now add, delete, rename, and open files remotely. The only problem now is that whenever I open a file in an editor it is read only. Any ideas? I'm using WinXp with PrimalScript.
Reply
If you get "The HTTP method is not allowed" i R7
If you get "The HTTP method is not allowed for the specified URL" then check that the database property 'Allow design locking' is checked and that a Administration server (Master Lock Server) is set in the ACL
Reply
Re: If you get
Sweet :o) - thanks for sharing.
Reply
Mime type of attached files?
I'm about to give this a try (finally), but I'm worried about the file's mime types.
When I add a file resource manually, smart ass Domino serves JS files as content-type "text/html" and (it get's even better) CSS files as content-type "application/octet-stream". Consequentially, Firefox refuses to use the style sheets. This leaves us with the options to either edit the mime type manually (yeah, that's why we were using WebDAV in the first place) or write an agent that sets the $MimeType item for certain file resources based on the file extension part of the resource name.
Is this the same when using WebDAV? I'd like to hear it's not, but I don't have much hope.
Reply
More or less trouble free
O.K., I could have tried this prior to posting, but I wasn't sure if I would even get it up and running.
So, CSS resources are automatically filed under Style Sheets, so the mime type is text/html, which works. JS files are still filed under files and served as text/html as well. Images, PDF files, Office files and so on seem to all get the correct corresponding mime type.
Reply
Show the rest of this thread
Wow..
just very odd... I got it working I think... disabled my Norton Firewall... I got frustrated and started to manually add the files... then went back to check via the windows explorer. and I could remove the files from the NSF to OS but not OS to NSF... configured Dreamweaver again... and the remote folder got populated, but quicky timed out... Disabled the firewall and it seems to be flowing nicely now...
thanks for all of your help....
Reply
Having problem to setup WebDav on LN 8
I'm having problem with setting up the WebDav on Lotus Notes 8. I'm able to configure everything like on this web page, but when I try to copy some file to the network place of my database, then I'm alerted with message "An error occurred copying some or all of the selected files". Has anyone got an idea how to get rid of this problem? I'll really appreciate any solution. Tomas
Reply
Re: Having problem to setup WebDav on LN 8
You can deal with this error message by enabling Design Locking.
Design Locking is not the same as Document Locking. The tab for Design Locking is on the Design Tab of the Database Properties box. That tab is the fourth from the left. Its the one where you specify whether the database is a template.
cheers
Dietrich
Reply
Wish I knew this the last time I loaded the EXT.
Fantastic article. I just wish I knew this the last time I loaded the EXT framework into domino. Made life a lot easier for the update I have just done though!
Just for reference, works OK on Domino 8.5
Reply
Nice article, everything works fine in windows. However, I am unable to connect to database using linux (i tried several clients, but no luck). I wonder if this is even possible.
Lukas
Reply
I first used this tutorial on Sun 5 Aug 2007. Just reused it again today to finally get back into ExtJS & Domino 8.5.1 using DreamWeaver CS4... :-)
Great Article... Stands the test of time... :-)
Reply
just wondering if you ever worked a way to have a domino database without the ".nsf"
it works in the client and designer, but not in domino....
-is there a way to set up domino to accept these?
i am going to try replica id tonight to see if it is possible that way...
may be adding the database to a catalog somewhere...
handy to avoid .nsf in urls...
url substitution seems a bit messy
-keep my email address private please!!
Reply
Thanks for posting this as my memory of how to set this up was not so great. just blogged about it and pointed everyone here.
Reply
Goodday,
I was wondering if this topic is to be updated, while I have suggestion which my be interesting: Lialis Lotus WebDAV is to be released inOctober and will give users the possibility to download, upload and synchronize Lotus Domino databases directly to mobile devices (iPad, iPhone, Blackberry, Android APad, etc.).
The software will be free for one user, so maybe you want to try it out for yourself: http://www.lialis.com/lotussolutionprovider.nsf/pages/lotuswebdav
Reply
To extend my previous post, Lialis Lotus WebDAV is available (free for one user): Download, upload or synchronize attachments stored in IBM Lotus Domino databases directly to your iPad, iPhone or other mobile device or tablet, over the WebDAV HTTP(s) protocol, without using the IBM Lotus Domino web interface.
http://www.lialis.com/lotussolutionprovider.nsf/pages/lotuswebdav
Quickr iPad was our first WebDAV solution and is extended with many functionalities throught the time, test yourself with the free software download for one user: http://www.lialis.com/lotussolutionprovider.nsf/pages/quickrwebdav
While we noticed many people benefit from these solutions, we want to serve all users with any type of Lotus Domino environment. Therefore we are currently developing Connections iPad, to be released in January 2012: http://www.lialis.com/lotussolutionprovider.nsf/pages/connectionsipad
Reply
FYI, a new .ini variable was introduced in Domino 8.5.3 to restrict the $files behaviour by default. It leads to the following 404 error when accessing the $files url through a browser:
HTTP Web Server: Item Not Found Exception
Here are the details:
http://www-10.lotus.com/ldd/r5fixlist.nsf/Public/1FD2EF70EB0EEB3D8525782D00737635?OpenDocument
Reply
Please note that for the "DominoEnableNsf$FileCollectionGet" ini variable to take effect, a restart of Domino is required - not just http.
Reply
I am using Domino 8.5.3FP2 and it seems not possible to upload big files through WebDav. More generally speaking, it does not seem possible to import huge files as Domino database resources.
I get the following error message for files > 300 MB:
HTTP Web Server: Lotus Notes Exception - Field is too large (32K) or View's column & selection formulas are too large
Reply
Jake, still referencing this after all these years ....
Reply