WebDav o DAV (Web-based Distributed Authoring and Versioning) è un protocollo che permette di gestire il contenuto di una directory di un server remoto.
Dav di fatto è una estensione del protocollo HTTP/1.1, il quale aggiunge nuovi metodi ed header per poter gestire i file contenuti in una risorsa remota.
Sono disponibili numerosi applicativi sia in licenza Open e Close che implementano qusto protocollo sia lato server come mod_dav il modulo per Apache o lato client come Internet Explorer di MS.
Attualmente non tutte le features come il versioning support (come per RCS o SCCS ) sono completamente disponibili e restano in via di sviluppo.
Di seguito è riportato un elenco delle principali applicazioni che utilizzano WebDAV:
- mod_dav: modulo di Apache per l'implementazione dei protocollo DAV
- Kde Desktop: Desktop per Linux
- PerlDAV: Librerie Perl
- DAVfs: davfs2, altro file system per Linux, per montare le risorse sharate con DAV
- Adobe Photoshop
- Macromedia Dreamweaver
- Microsoft Internet Explorer
- Microsoft Office
WebDAV proprio grazie al buon numero di applicativi da cui viene supportato e alla semplice installazione e configurazione (anche di access list) risulta una valida alternativa sia in ambiente intranet e internet per il file sharing ed il content managment di piccoli e medi siti.
Mod_DAV è un modulo di Apache (non incluso nella distribuzione standard) che permette di implementare il protocollo DAV class 1 e class 2 in Apache web server. E' un progetto Open source relativamente giovane (la prima release è datata 13-6-2000) rilasciato con una licenza Apache-Style.
E' possibile installare il modulo solo dalla versione 1.3.6 in su di Apache (versioni precedenti richiedono un upgrade del server) sia in ambienti Windows che in ambienti Unix.
L'implementazione di questo modulo permette di manipolare le risorse di una directory di un server web, con possibilità di leggere e scrivere file e directorty, oltre a funzionalità come il lock dei file che si stanno editando per avere l'esclusiva sul file.
Installazione in ambiente Unix-like
Come per la maggior parte dei moduli è possibile installare mod_dav tramite apxs quindi come modulo che verrà caricato dinamicamente oppure "linkato" staticamente nel binario di apache.
1- Scaricare i sorgenti dal sito ufficiale: http://www.webdav.org/mod_dav/
2- Scompattare: [root@dido src]# tar zxvf mod_dav-1.0.3-1.3.6.tar.gz
3- Lancio del configure con le opzioni per abilitare o il caricamento dinamico o statico:
Configurazione con carimento dinamico del modulo
[root@dido mod_dav-1.0.3-1.3.6]# ./configure --with-apxs=/usr/local/apache/bin/apxs
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for executable suffix...
checking for object suffix... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for static Apache module support... no
checking for dynamic Apache module support (via APXS)... found at /usr/local/apache/bin/apxs
checking for expat... found in /usr/local/apache/include
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libdav.module
config.status: creating config.h
Configurazione con caricamento statico del modulo
[root@dido mod_dav-1.0.3-1.3.6]#./configure --with-apache=/usr/src/apache_1.3.23/
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for executable suffix...
checking for object suffix... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for static Apache module support... yes - Apache 1.3.x
checking for dynamic Apache module support (via APXS)... no
checking for expat... found in /usr/src/apache_1.3.23//src/lib/expat-lite
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libdav.module
config.status: creating config.h
config.status: config.h is unchanged
4- Compilazione e Installazione:
[root@dido mod_dav-1.0.3-1.3.6]# make && make install
5- Configurazione di Apache
Installazione in ambiente Windows
1- scaricare i sorgenti
2- scompattare i sorgenti
3- compilare i sorgenti:
c:\mod_dav\>nmake /f mod_dav.mak
4- copiare i seguenti file nella ServerRoot di Apache:
Release/mod_dav.dll
expat/bin/xmlparse.dll
expat/bin/xmltok.tll
5- Configurare Apache
Dopo aver installato il modulo mod_dav occorre configurare Apache (tramite httpd.conf) per abilitare il supporto WebDav.
Assicurarsi che Apache esegua il caricamento del modulo dinamico. In httpd.conf si deve trovare:
Ambiente unix
Loadmodule dav_module libexec/libdav.so
Addmodule mod_dav.c
Ambiente Windows
Loadmodule dav_module mod_dav.dll
Addmodule mod_dav.c
Verificato il caricamento del modulo occorre abilitare l'engine di WebDAV tramite la seguente direttiva:
(nb: Tutte le direttive che seguiranno potranno essere abilitate sia in ambiente windows che unix)
DAV On
Nel caso in cui si voglia abilitare il supporto webdav per una directory particolare è possibile inserire la direttiva DAV all'interno di un directory container. Esempio:
<Directory /home/www/share/>
DAV On
</Directory>
Abilitato l'engine occorre specificare il file che fara da database di appoggio per le operazioni di WebDAV tramite la direttiva DAVLockDB che dovrà essere specificata al top-level di httpd.conf e al di fuori dei tag Directory e Location. Esempio:
DAVLockDB /usr/local/apache/var/DAVLock
Il path dovrà avere i permessi di scrittura per l'utente di Apache (Solitamente nobody o apache) ed è preferibile configurare un path che non sia all'interno della DocumentRoot.
Tramite la direttiva DAVMinTimeout è possibile configurare il tempo minimo per il lock di un file, il valore numerico è espresso in secondi. Esempio:
DAVMinTimeout 120
Per una configurazione base senza autenticazione utente o limiti sui metodi HTTP è sufficente specificare le sopra elencate direttive, ne segue un esempio:
DAVLockDB /usr/local/apache/var/DAVLock
DAVMinTimeout 600
<Directory /home/www/share>
DAV On
</Directory>
Tramite la direttiva Limit e require è possibile limitare l'accesso alle risorse, soluzione caldamente consigliata per limitare l'accesso a dati sensibili, come siti o repository di documenti.
Esempio:
<Location /home/www/share>
DAV On
<Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user pippo
</Limit>
</Location>
In questo caso vengono limitati i metodi HTTP e viene richiesto l'utente pippo per accedere alla directory /home/www/share.
Oppure tramite la direttiva LimitExcept è possibile specificare direttamente i metodi HTTP non permessi. Esempio
<Location /home/www/share>
DAV On
<LimitExcept GET OPTIONS>
Require user pippo
</Limit>
</Location>
Cadaver è un client testuale in ambiente Unix per la gestione delle risorse condivise tramite WebDAV.
Mette a disposizione una shell dove è possibile tramite comandi (molto simili a quelli utilizzati con FTP) gestire completamente tutte le risorse, dall'upload di documenti alla gestione del locking di un file.
Installazione Tramite sorgenti
Scaricare i sorgenti dal sito ufficiale http://www.webdav.org/cadaver/
Scompattare e lanciare lo script configure (si trova all'interno dei sorgenti) con le opzioni che più ci aggradano (./configure --help per richiamare un piccolo help).
[root@dido cadaver-0.20.5]# ./configure --prefix=/usr
[....]
Configured to build cadaver 0.20.5:
Install prefix: /usr
Compiler: gcc
Neon library: included libneon (0.23.0)
XML Parser: libxml 1.8.17
SSL library: No SSL support
Internationalization: Not built
GNU readline support: enabled
Now run 'make' to compile cadaver.
Lanciare i comandi di compilazione e installazione
[root@dido cadaver-0.20.5]# make
[root@dido cadaver-0.20.5]# make install
Utilizzare Cadaver
Per accedere alla shell interattiva basta semplicemente lanciare il comando cadaver
[root@dido cadaver-0.20.5]# cadaver
dav:!>
Da notare che finchè non si apre una connessione ad un server il promt della shell sarà !>, non appena si apre la connessione tramite il comando open, il prompt cambierà in PATH>.
dav:!> open 127.0.0.1
dav:/>
oppure
dav:!> open 127.0.0.1/pippo
dav:/pippo/>
Di fatto i comandi per gestire il contenuto di una directory sono molto simili a quelli utilizzati con ftp, ecco alcuni esempi:
Upload di file:
dav:/> mput ssh_overview.pdf
Uploading ssh_overview.pdf to `/ssh_overview.pdf':
Progress: [=============================>] 100.0% of 690199 bytes succeeded.
dav:/>
Visualizzre il contenuto della directory:
dav:/> ls
Listing collection `/': succeeded.
Coll: pippo 0 Dec 9 15:08
ssh_overview.pdf 690199 Dec 9 16:06
dav:/>
Cambiare directory e crearne una nuova
dav:/> cd pippo
dav:/pippo/> mkdir prova
Creating `prova': succeeded.
dav:/pippo/>
Lock ,Unlock e verifica
Locking della risorsa ssh_overview.pdf
dav:/> lock ssh_overview.pdf
Locking `ssh_overview.pdf': succeeded.
Verifica dei lock
dav:/> showlocks
Lock token
Depth 0 on `http://127.0.0.1/ssh_overview.pdf'
Scope: exclusive Type: write Timeout: infinite
Owner:
Tramite il comand "?" è possibile richiamare un help con tutti i comandi che si possono lanciare tramite questa shell, la quale si comporta come una BASH con tanto di Alias e TAB completion.
dav:/pippo/> ?
Commands:
ls [path] List contents of current [or other] collection
cd path Change to specified collection
pwd Display name of current collection
put local [remote] Upload local file
get remote [local] Download remote resource
[...]
Esistono vari tools in ambiente Windows che supportano WebDAV.
Microsoft ha dato un forte appoggio all'implementazione di questo protocollo, al punto che in Windows 2000 WebDAV viene supportato nativamente e incorporato nelle librerie di gestione dei file.
Sotto Windows fra i programmi più rappresentativi che utilizzano WebDAV ci sono:
Internet Explorer (5.0 o superiore): Il Browser più utilizzato supporta già WebDAV, aggiungendo semplicemente una risorsa di rete con indirizzo tipo http://10.0.0.1 è possibile accedere alla cartella remota come se fosse in locale.
Microsfot Office: Word, Excel e tutte le utility di Office si possono appoggiare alle risorse condivise tramite WebDAV.
Macromedia Dreamwaver:Editor per pagine web (html,php,asp etc..) che supporta l'upload e download tramite webDAV
AdobePhotoshop: Uno dei Programma di grafica piu' utilizzati sia in ambiente win che MAC.