advertisement

WebDAV

0 %
100 %
advertisement
Information about WebDAV
Entertainment

Published on February 21, 2008

Author: Rainero

Source: authorstream.com

advertisement

Secure WebDAV:  Secure WebDAV Pisapia Arturo Luigi – artpisapia79@blu.it Scanzio Stefano – zioskenz@inwind.it WebDAV: Introduzione:  WebDAV: Introduzione Cenni preliminari ad Hypertext Transfer Protocol (HTTP) WebDAV HTTP in breve (1):  HTTP in breve (1) HyperText Transfer Protocol (RFC 2616) Protocollo per l’accesso a risorse WWW Il client invia una richiesta al server Il server esegue la richiesta e ritorna il risultato WebDAV: Introduzione HTTP in breve (2):  HTTP in breve (2) Client Server  Marshal request  Transmit request Internet  Unmarshal request  Perform request  Marshal response  Transmit response  Unmarshal response WebDAV: Introduzione HTTP in breve (3):  Web Server HTTP in breve (3) WebDAV: Introduzione Formato HTTP request:  Formato HTTP request Formato della request : {method} {Request-URI} {protocol version} Esempio: GET /users/ejw/flyer.doc HTTP/1.1 Una serie di headers: {header}: {value} RFC 822 (email) style header encoding Esempio: Content-Type: text/html Un request body opzionale Separato dagli headers da un <CR><LF> Un sequenza di 8-bit bytes (ottetti) WebDAV: Introduzione Formato HTTP response (1):  Formato HTTP response (1) Molto simile al formato della request: Una linea di Stato: {protocol version} {status code} {status phrase} Codici di stato: 1xx: Informational 2xx: Successful 3xx: Redirection 4xx: Client error 5xx: Server error Esempio: HTTP/1.1 200 OK WebDAV: Introduzione Formato HTTP response (2):  Formato HTTP response (2) Una serie di headers Stesso formato della request Un body della risposta Stesso formato della request WebDAV: Introduzione Esempio HTTP:  Esempio HTTP GET / HTTP/1.1 Host: www.webdav.org Content-Length: 0 HTTP/1.1 200 OK Date: Wed, 25 Apr 2001 22:58:22 GMT Server: Apache Last-Modified: Thu, 19 Apr 2001 05:30:49 GMT ETag: "30e7da-2f9d-3ade7809" Accept-Ranges: bytes Content-Length: 12189 Content-Type: text/html <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <title>WebDAV risorsas</title> Request Response WebDAV: Introduzione Nozioni importanti di HTTP 1.1:  Nozioni importanti di HTTP 1.1 Le richieste sono trasmesse su TCP/IP La connessione è lasciata aperta alla fine di una richiesta (request) Utilizza la rete con efficienza Protocollo Stateless: tutte le informazioni necessarie per rispondere a una richiesta sono contenute nella request Entity tag è un identificatore per lo stato della risorsa Se la risposta alla GET cambia, cambia anche l’Etag WebDAV: Introduzione Metodi HTTP (1):  Metodi HTTP (1) Le operazioni supportate da HTTP includono: GET – legge una risorsa HEAD – ritorna solo gli headers di una risorsa Utile per il caching (si ottiene velocemente l’entity tag) OPTIONS – metodi supportati POST – protocol-tunneling PUT – scrive una risorsa DELETE – elimina una risorsa WebDAV: Introduzione Metodi HTTP (2):  Metodi HTTP (2) Sebbene HTTP 1.1 può usare PUT e DELETE, viene utilizzato principalmente come protocollo read-only PUT e DELETE non sono utilizzati ampiamente dai client WebDAV: Introduzione WebDAV:  WebDAV Distributed Authoring and Versioning on the World Wide Web Un'architettura per la realizzazione di strumenti interoperabili per l'authoring e il versioning distribuito sul web http://www.webdav.org/ http://www.ics.uci.edu/pub/ietf/webdav/ WebDAV: Introduzione WebDAV e HTTP:  WebDAV e HTTP WebDAV è un'estensione di HTTP Aggiunge proprietà e collezioni al modello HTTP Fornisce comandi per Proprietà - list, add, remove Operazioni sui nomi delle risorse - move, copy Controllo di sovrascrittura - lock, unlock Collezioni - mkcol WebDAV: Introduzione Utilizzo di WebDAV:  Utilizzo di WebDAV Dovete scrivere un documento da mettere disponibile sulla rete Aprite il vostro Word Processor preferito e scrivete Salvate una copia sul Web Decidete di includere un altro autore Attivate la possibilità di condivisione del documento Usando lo stesso Word Processor, continuate a scrivere sul documento L'altro autore può lavorare indipendentemente da voi sul documento WebDAV: Introduzione Ciclo d'uso di WebDAV:  Ciclo d'uso di WebDAV Client Server File… Open LOCK Blocca la risorsa PROPFIND GET Manda il contenuto al client Edit PUT File… Save Exit UNLOCK Salva il contenuto modificato Sblocca la risorsa Ne manda proprietà al client WebDAV: Introduzione Possibili usi di WebDAV:  Possibili usi di WebDAV Un protocollo per l'authoring distribuito Un file system sul Web, con caratteristiche positive in caso di grandi latenze Un meccanismo integrato per accedere a repositories Document management system, configuration management system, file system, ecc. Un protocollo per la gestione di team distribuiti nel software engineering e nel content management WebDAV: Introduzione Aspetti di WebDAV:  Aspetti di WebDAV Infrastruttura di collaborazione Infrastruttura per la memorizzazione di metadata Infrastruttura per la gestione di spazi di nomi Infrastruttura per il Versioning Infrastruttura per l'Access Control Infrastruttura di ricerca – DASL (Distributed Authoring Searching and Locating group) WebDAV: Introduzione Aspetti di WebDAV (1):  Aspetti di WebDAV (1) Infrastruttura di collaborazione Attraverso il meccanismo di locking Permette l'authoring collaborativo remoto di pagine Web e di qualunque tipo di risorsa e ogni formato di dato Infrastruttura per la memorizzazione di metadati E' possibile creare, modificare, rimuovere e accedere a proprietà (coppie <nome,valore> arbitrarie) I valori delle proprietà sono frammenti XML WebDAV: Introduzione Aspetti di WebDAV (2):  Aspetti di WebDAV (2) Infrastruttura per la gestione di spazi di nomi Copy,Move di risorse singole e di gerarchie di strutture Creare e modificare nuove collezioni di risorse WebDAV: Introduzione Aspetti di WebDAV (3):  Aspetti di WebDAV (3) Il Vesioning è una parte fondamentale di WebDAV Infrastruttura per il Versioning check-out, check-in, storia del grafo delle versioni, commenti, accesso alle vecchie versioni, operazioni di configuration management Infrastruttura per l'Access Control Access Control: la possibilità di controllare in remoto chi può leggere e scrivere una risorsa La possibilità di specificare gruppi di collaborazione e gruppi di diritti WebDAV: Introduzione Aspetti di WebDAV (4):  Aspetti di WebDAV (4) Infrastruttura di ricerca Ricerca di risorse con una data proprietà, o un dato valore Ricerca per sottostringhe all'interno di una risorsa o di una collezione di risorse L’obiettivo della ricerca può essere una collezione di risorse,una gerarchia di risorse o un intero server WebDAV: Introduzione WebDAV Object Model:  WebDAV Object Model Risorsa Web Corpo Proprietà Coppie (nome, valore) WebDAV: Introduzione Metodi WebDAV (1):  Metodi WebDAV (1) Prevenzione da sovrascritture: LOCK – evita che chi non possiede il lock in scrittura possa modificare la risorsa UNLOCK – rimuove il lock Metadata Management: PROPFIND – legge le proprietà di una risorsa Allprop – tutte le proprietà Propname – solo i nomi Prop – solo le proprietà desiderate PROPPATCH – scrive le proprietà di una risorsa WebDAV: Introduzione Metodi WebDAV (2):  Metodi WebDAV (2) Namespace Management COPY – copia una risorsa MOVE – sposta una risorsa MKCOL – crea una nuova collezione WebDAV: Introduzione Metodi WebDAV (3):  Metodi WebDAV (3) LOCK UNLOCK COPY MOVE* DELETE* MKCOL* (PUT*) GET PUT* Risorsa Web Corpo Proprietà Coppie (nome, valore) * - dipendono da LOCK PROPFIND PROPPATCH* WebDAV: Introduzione Webdav: Proprietà e collezioni:  Webdav: Proprietà e collezioni Proprietà Live e Non Live Le collezioni Proprietà (1):  Proprietà (1) Le proprietà sono coppie (nome, valore) che contengono informazioni su una risorsa Il nome è sempre un URI (universalità e generalità) WebDAV: Proprietà Proprietà (2):  Proprietà (2) Le proprietà possono essere: Live: proprietà di cui è il server a mantenere coerenza obbligando sintassi e semantica. Ad esempio: data di ultima modifica Non-live: proprietà in cui sintassi e semantica sono fornite dal client. Non esiste obbligo di coerenza. Ad esempio: autore del documento Vantaggi: sia il server che il client possono definire nello stesso modo delle proprietà, e ciascuno si gestisce e tiene aggiornate le proprie (flessibilità) WebDAV: Proprietà Proprietà (3):  Proprietà (3) I valori delle proprietà sono frammenti ben-formati in XML estensibili, internazionali (grazie a Unicode), permettono valori strutturati, permettono l'inserimento senza fatica “Plug-and-Play” di strutture RDF (Resource Description Framework) RDF è un network-based data model con una rappresentazione XML del modello WebDAV: Proprietà Collezioni (1):  Collezioni (1) Una collezione è una lista di URI delle risorse che ne fanno parte Svolge il compito di raggruppamento che hanno le directory nei file system, a parte che: Una risorsa può avere più URI e quindi appartenere a più collezioni Non c'è nessuna implicazione sulle modalità di memorizzazione fisica delle risorse sul server E' possibile definire collezioni ordinate, indipendentemente dal valore di qualunque proprietà WebDAV: Collezioni Collezioni (2):  Collezioni (2) Le risorse forniscono la possibilità di navigare gerarchicamente o meno tra esse Permettono il supporto di finestre di dialogo tipo "File:Open" o "File:Save as" anche su server di rete WebDAV: Collezioni Webdav: metodi HTTP per l’authoring distribuito:  Webdav: metodi HTTP per l’authoring distribuito Propfind, Proppatch Mkcol,Copy e Move PROPFIND (1):  PROPFIND (1) Legge le proprietà su una risorsa tutti i nomi e valori delle proprietà Tutti i nomi e proprietà specificati nella richiesta Solo una lista di nomi di proprietà WebDAV: Metodi PROPFIND (2):  PROPFIND (2) Elenca i membri di una collezione L'intestazione Depth della richiesta permette di specificare quanti livelli mostrare: Depth: 1 - La collezione e i suoi membri Depth: Infinity - La collezione, i suoi membri, i loro membri ecc ricorsivamente. WebDAV: Metodi Sintassi PROPFIND (1):  Sintassi PROPFIND (1) Richiesta: PROPFIND “risorsa della quale si vogliono conoscere delle o tutte le proprietà “ HTTP/1.1 Host: “indirizzo WWW dell’host” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della richiesta PROPFIND in XML Si noti che nel body XML vi sono indicate all’interno del tag prop le proprietà che si vogliono vedere o se non sono indicate per default si intende tutte WebDAV: Metodi Sintassi PROPFIND (2):  Sintassi PROPFIND (2) Risposta: HTTP/1.1”codice di stato della risposta” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio”, si noti che le xxxx negli esempi vi sono solo perché non abbiamo inserito questo dato …resto della risposta PROPFIND in XML Nel codice XML vengono restituiti tutti i codici di stato dovuti alla richiesta delle proprietà all’interno del tag propstat, che contiene anche il tag prop il quale a sua volta contiene le proprietà di interesse WebDAV: Metodi PROPFIND: richiesta:  PROPFIND: richiesta PROPFIND /demo.txt HTTP/1.1 Host:www.foo.bar Content-Type: text/xml; charset=“utf-8” Content-Length: 160 <?xml version="1.0" encoding=“utf-8” ?> <d:propfind xmlns:d="DAV:"> <d:prop> <d:getetag/> <d:getcontenttype/> </d:prop> </d:propfind> WebDAV: Metodi PROPFIND: risposta:  PROPFIND: risposta HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset=“utf-8” Content-Length: 321 <?xml version="1.0” encoding=“utf-8” ?> <a:multistatus xmlns:a="DAV:"> <a:response> <a:href>http://www.foo.bar/demo.txt</a:href> <a:propstat> <a:status>HTTP/1.1 200 OK</a:status> <a:prop> <a:getetag>"10598798c153be1:a82"</a:getetag> <a:getcontenttype>text/plain</a:getcontenttype> </a:prop> </a:propstat> </a:response> </a:multistatus> WebDAV: Metodi Esempio PROPFIND (3):  Esempio PROPFIND (3) Si noti che nell’esempio vengono richieste due particolari proprietà: l’etag e il content type La scrittura charset=“utf-8” indica il set di caratteri utilizzato che si riferisce alle specifiche ISO 10646 WebDAV: Metodi PROPPATCH:  PROPPATCH Crea e rimuove proprietà da una risorsa Le direttive di creazione o rimozione sono eseguite atomicamente ( in modo da assicurare che non avvengano stati inconsistenti) Permette di aggiungere o rimuovere membri da una collezione WebDAV: Metodi Sintassi PROPPATCH (1):  Sintassi PROPPATCH (1) Richiesta: PROPPATCH “risorsa alla quale si vogliono cambiare le proprietà “ HTTP/1.1 Host: “indirizzo WWW dell’host” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della richiesta PROPPATCH in XML È importante notare che all’interno del codice XML vi è una o più URI che identificano dove stanno le proprietà della risorsa che si vogliono andare a modificare, come si può notare nell’esempio proposto WebDAV: Metodi Sintassi PROPPATCH (2):  Sintassi PROPPATCH (2) Risposta: HTTP/1.1”codice di stato della risposta” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio”, si noti che le xxxx negli esempi vi sono solo perché non abbiamo inserito questo dato …resto della risposta PROPPATCH in XML Nel codice XML vengono restituiti tutti i codici di stato che si sono verificati dopo la modifica delle proprietà, ognuna delle quali è contenuta in un tag propstat WebDAV: Metodi PROPPATCH: richiesta:  PROPPATCH: richiesta PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8" Content-Length: 283 <?xml version="1.0" encoding="utf-8" ?> <D:propertyupdate xmlns:d="DAV:"> xmlns:Z="http://www.seclabX.it/webDAV/v09/"> <D:set> <D:prop> <Z:authors> <Z:Author>Arturo Pisapia</Z:Author> <Z:Author>Stefano Scanzio</Z:Author> </Z:authors> </D:prop> </D:set> </D:propertyupdate> WebDAV: Metodi PROPPATCH: risposta (1):  PROPPATCH: risposta (1) HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset=“utf-8” Content-Length: xxxx <?xml version="1.0” encoding=“utf-8” ?> <D:multistatus xmlns:D="DAV:"> xmlns:Z="http://www.seclabX.it/webDAV/v09/"> <D:response> <D:href>http://www.foo.com/bar.html</D:href> <D:propstat> <D:prop><Z:Authors/></a:prop> <D:status>HTTP/1.1 200 OK</a:status> </D:propstat> </D:response> </D:multistatus> WebDAV: Metodi PROPPATCH: risposta (2):  PROPPATCH: risposta (2) Si nota facilmente che il corpo della risposta 207 che indica Multi-Status è un’entity HTTP text/xml che contiene un set di elementi XML chiamati response che contengono una serie di codici di stato del tipo 200,300,400 e 500 generati durante l’invocazione del metodo In particolare nell’esempio viene richiesto di impostare la proprietà all’indirizzo http://www.seclabX.it/webDAV/v09 WebDAV: Metodi Altro Esempio Richiesta (1):  Altro Esempio Richiesta (1) PROPPATCH /bar.html HTTP/1.1 Host: www.foo.com Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:propertyupdate xmlns:D="DAV:" xmlns:Z="http://www.w3.com/standards/z39.50/"> <D:set> <D:prop> <Z:authors> <Z:Author>Arturo Pisapia</Z:Author> <Z:Author>Stefano Scanzio</Z:Author> </Z:authors> </D:prop> WebDAV: Metodi Altro Esempio Richiesta (2):  Altro Esempio Richiesta (2) </D:set> <D:remove> <D:prop><Z:Copyright-Owner/></D:prop> </D:remove> </D:propertyupdate> WebDAV: Metodi Altro Esempio Risposta (1):  Altro Esempio Risposta (1) HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:" xmlns:Z="http://www.w3.com/standards/z39.50"> <D:response> <D:href>http://www.foo.com/bar.html</D:href> <D:propstat> <D:prop><Z:Authors/></D:prop> <D:status>HTTP/1.1 424 Failed Dependency</D:status> </D:propstat> WebDAV: Metodi Altro Esempio Risposta (2):  Altro Esempio Risposta (2) <D:propstat> <D:prop><Z:Copyright-Owner/></D:prop> <D:status>HTTP/1.1 409 Conflict</D:status> </D:propstat> <D:responsedescription> Copyright Owner can not be deleted or altered.</D:responsedescription> </D:response> </D:multistatus> WebDAV: Metodi Breve descrizione esempio :  Breve descrizione esempio Il client richiede al server di impostare il valore della proprietà http://www.w3.com/standards/z39.50/Authors Di rimuovere la proprietà http://www.w3.com/standards/z39.50/Copyright-Owner visto che la proprietà non può essere rimossa viene restituito il codice 409 (Conflict), invece per l’altra richiesta viene restituito il codice 424 (Failed dependency) che ci fa sapere che questa azione sarebbe andata a buon fine se non ci fosse stato il conflitto nella rimozione dell’altra proprietà WebDAV: Metodi MKCOL:  MKCOL Il comando MKCOL crea una nuova collezione vuota Può essere invocato con un corpo di richiesta: Senza corpo di richiesta: crea collezione vuota Con corpo di richiesta: da come risultato particolare media-type WebDAV: Metodi Esempio MKCOL :  Esempio MKCOL Si crea una collezione chiamata /webdisc/xfiles/ sul server www.server.org Richiesta: MKCOL /webdisc/xfiles/ HTTP/1.1 Host: www.server.org Risposta: HTTP/1.1 201 Created WebDAV: Metodi COPY:  COPY Duplica risorse, proprietà e collezioni La copia avviene server-side (non c'è un giro inutile sul client) Copie per valore, eseguite ricorsivamente attraverso l'intestazione Depth Permette di controllare la sovrascrittura di proprietà o risorse già esistenti se una risorsa esiste e l’overwrite header è impostato a “T” allora prima di fare la copy avverra una delete con depth infinity sulla destinazione Se l’overwrite header è impostato a “F” l’operazione non avrà successo WebDAV: Metodi Esempio di Copy con overwrite (1):  Esempio di Copy con overwrite (1) Richiesta: COPY /~s97074/index.html HTTP/1.1 Host: www.cclinf.polito.it Destination: http://www.sito.it/users/~s97074/index.html Risposta: HTTP/1.1 204 No Content WebDAV: Metodi Esempio di Copy con overwrite (2):  Esempio di Copy con overwrite (2) La risorsa viene copiata da www.cclinf.polito.it/~s97074/index.html a http://www.example.it/users/~s97074 Lo status code 204 (no content) ci indica che la risorsa preesistente alla destinazione è stata sovrascritta WebDAV: Metodi Esempio di Copy senza overwrite (1):  Esempio di Copy senza overwrite (1) Richiesta: COPY /~s97074/index.html HTTP/1.1 Host: www.cclinf.polito.it Destination: http://www.sito.it/users/~s97074/index.html Overwrite: F Risposta: HTTP/1.1 412 Precondition Failed WebDAV: Metodi Esempio di Copy senza overwrite (2):  Esempio di Copy senza overwrite (2) Viene svolta la stessa operazione del precedente esempio ma in questo caso viene impostato l’overwrite header a “F” il quale indica che la sovrascrittura non è permessa Una risposta Precondition failed con codice di stato 412 viene ritornata per indicare che la destinazione non è assente WebDAV: Metodi MOVE:  MOVE Definita come equivalente ad una COPY seguita da una DELETE, eseguiti atomicamente Ha le stesse opzioni di COPY Vantaggi: Permette di rinominare risorse Permette di spostare le risorse in una differente posizione nella gerarchia Più efficiente di eseguire copy e delete separatamente WebDAV: Metodi MOVE esempio (1):  MOVE esempio (1) Richiesta: MOVE /~s97074/index.html HTTP/1.1 Host: www.cclinf.polito.it Destination: http://www.es.it/users/~s97074/index.html Risposta: HTTP/1.1 201 Created Location: http://www.es.it/users/~s97074/index.html WebDAV: Metodi MOVE esempio (2):  MOVE esempio (2) Si muove il contenuto della risorsa individuata dall’URL www.cclinf.polito.it/~s97074/index.html in http://www.es.it/users/~s97074/index.html Il contenuto della risorsa destinazione sarà sovrascritto se non-null In questo caso,dal momento in cui non vi era nulla alla destinazione il codice di stato è 201 (created) WebDAV: Metodi WebDAV: Locking:  WebDAV: Locking Lock Unlock LOCK (1):  LOCK (1) Il lock definito da WebDAV è solo in scrittura Un client che non possiede il lock non può eseguire comandi che modifichino lo stato della risorsa bloccata In particolare impedisce i comandi: PUT, POST, DELETE, MKCOL, PROPPATCH, MOVE, LOCK, UNLOCK Al contrario GET e PROPFIND non sono impediti dal lock WebDAV: Locking LOCK (2):  LOCK (2) Il lock funziona solo su intere risorse E' l'unico modo per rendere il meccanismo indipendente dal content type E' molto simile al meccanismo fornito dai file system, rendendo la transizione di un file system in file system distribuito particolarmente semplice Le proprietà live possono cambiare durante la vita di un lock, le proprietà non-live debbono essere modificate dal proprietario del lock WebDAV: Locking LOCK (3):  LOCK (3) Altro motivo: I content types cambiano continuamente due revisioni di Html e Xml mentre si discuteva lo standard WebDAV Supportare una revisione di un content type può rendere il protocollo facilmente obsoleto WebDAV: Locking LOCK (4):  LOCK (4) I lock possono essere esclusivi o condivisi Un lock esclusivo permette l'accesso solo al client che ha ottenuto il lock Un lock condiviso permette al proprietario del lock di specificare altri client che possono accedere alla risorsa I lock condivisi sono un bene e un male!!! WebDAV: Locking LOCK (5):  LOCK (5) Tuttavia i lock esclusivi sono troppo rigidi in condizioni di lavoro opportunistiche La gente si dimentica di rilasciare un lock E' necessario richiedere l'intervento dell'amministratore per rimuovere un lock dimenticato I lock condivisi Permettono di continuare il lavoro anche se il proprietario del lock se ne è andato alle Seychelles Richiedono però meccanismi out-of-band e in definitiva extra-protocollo per la negoziazione sull'accesso alla risorsa WebDAV: Locking Ciclo di vita di un Lock:  Ciclo di vita di un Lock unlocked locked LOCK UNLOCK LOCK lock timeout Rimozione del lock da parte dell'amministratore WebDAV: Locking Procedimento di LOCK:  Procedimento di LOCK LOCK crea il lock specificato dall’elemento xml <lockinfo> sulla URI di richiesta LOCK ritorna un lock token che identifica il lock al server Il client può richiedere un timeout WebDAV: Locking Sintassi Lock (1):  Sintassi Lock (1) Richiesta: LOCK “risorsa sulla quale si vuole fare il Lock “ HTTP/1.1 Host: “indirizzo WWW dell’host” Timeout: “tempo di durata del lock,vi è la possibilità di specificarne più di uno in base a quello che poi il server supporta” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della richiesta LOCK in XML Si noti che la proprietà locktype è sempre impostata a write perché è l’unico tipo di lock supportato WebDAV: Locking Sintassi Lock (2):  Sintassi Lock (2) Risposta: HTTP/1.1 “codice di stato” Content-Type: “content-type nel formato MIME” Content-Length: “lunghezza di questo messaggio” …resto della risposta LOCK in XML All’interno della proprietà lockdiscovery vi sarà la descrizione del lock attivato sulla risorsa WebDAV: Locking LOCK: richiesta:  LOCK: richiesta LOCK /~s97074/webdav.doc HTTP/1.1 Host: www.cclinf.polito.it Timeout: Second-500, Infinite Content-Type: text/xml Content-Length: 151 <?xml version="1.0" ?> <d:lockinfo xmlns:d="DAV:"> <d:locktype><d:write/></d:locktype> <d:lockscope><d:exclusive/></d:lockscope> <d:owner> <d:href>http://www.cclinf.polito.it/~ejw/contact.html </d:href> </d:owner> </d:lockinfo> WebDAV: Locking LOCK: risposta (1):  LOCK: risposta (1) HTTP/1.1 200 OK Content-Type: text/xml Content-Length: xxxx <?xml version="1.0"?> <a:prop xmlns:a="DAV:"> <a:lockdiscovery> <a:activelock> <a:lockscope><a:exclusive/></a:lockscope> <a:locktype><a:write/></a:locktype> <a:depth>infinity</a:depth> <a:owner> <a:href> http://www.cclinf.polito.it/~ejw/contact.html </a:href> </a:owner> WebDAV: Locking LOCK: risposta (2):  LOCK: risposta (2) <a:timeout>Second-500</a:timeout> <a:locktoken> <a:href>opaquelocktoken:918527121.406</a:href> </a:locktoken> </a:activelock> </a:lockdiscovery> </a:prop> WebDAV: Locking Esempio LOCK (3) :  Esempio LOCK (3) Nell’esempio precedente si nota come viene creato con successo un lock esclusivo sulla risorsa www.cclinf.polito.it/~s97074/webdav.doc Il campo <owner> contiene informazioni associate al possessore del lock Il client richiede un lock per tempo infinito,se possibile, altrimenti di 500 secondi infatti il server imposta un timeout che rimuove il lock dopo 500 secondi WebDAV: Locking Lock Token:  Lock Token Il lock token è un tipo di token di stato rappresentato da una URI È ritornato dopo ogni operazione di LOCK terminata con successo all’interno della proprietà lockdiscovery I lock token devono essere Unici Questo viene fatto attraverso gli opaque lock token Per garantire l’unicità su tutte le risorse a tempo indefinito l’opaquelocktoken necessita di utilizzare il meccanismo dell’Universal Unique Identifier (UUID),come descritto nell’[ISO-11578] WebDAV: Locking Loken Token: è rischioso usarli? (1):  Loken Token: è rischioso usarli? (1) La specifica dei lock token richiede l’uso dei UUID Gli UUID contengono un campo nodo che è l’ IEEE address, di solito l’indirizzo dell’host per sistemi con più nodi IEEE 802 ogni nodo disponibile può essere usato, dal momento in cui un WebDAV server emetterà diversi lock è facile che il suo indirizzo IEEE 802 sia esposto WebDAV: Locking Loken Token: è rischioso usarli? (2):  Loken Token: è rischioso usarli? (2) I principali rischi associati all’esposizione dell’indirizzo IEEE 802 sono: È possibile tracciare lo spostamento di HW da subnet a subnet È possibile riconoscere il produttore dell’HW che gira sul Server WebDAV È possibile determinare il numero dei computer che utilizzano WebDAV WebDAV: Locking LOCK Multi-risorsa (1):  LOCK Multi-risorsa (1) Usando l’header depth impostandolo a Infinity si può fare un lock su una collezione e su tutti i suoi figli È ritornato un singolo lock token che specifica il lock su tutte le risorse Un Unlock su questo token rimuove il lock da tutte le risorse in questione WebDAV: Locking LOCK Multi-risorsa (2) :  LOCK Multi-risorsa (2) Il lock gerarchico assicura… Tutte le risorse nella gerarchia fanno parte del lock Le risorse eliminate dalla gerarchia vengono rimosse dal lock Ma… Se una gerarchia locked viene copiata o spostata la gerarchia di destinazione non sarà locked WebDAV: Locking Esempio LOCK Multi-risorsa (1):  Esempio LOCK Multi-risorsa (1) Richiesta: LOCK /webdav/ HTTP/1.1 Host: webdav.sb.aol.com Timeout: Infinite, Second-4100000000 Depth: infinity Content-Type: text/xml; charset="utf-8" Content-Length: xxxx Authorization: Digest username="ejw", realm="ejw@webdav.sb.aol.com", nonce="...", uri="/workspace/webdav/proposal.doc", response="...", opaque="..." WebDAV: Locking Esempio LOCK Multi-risorsa (2):  Esempio LOCK Multi-risorsa (2) <?xml version="1.0" encoding="utf-8" ?> <D:lockinfo xmlns:D="DAV:"> <D:locktype><D:write/></D:locktype> <D:lockscope><D:exclusive/></D:lockscope> <D:owner> <D:href>http://www.ics.uci.edu/~ejw/contact.html </D:href> </D:owner> </D:lockinfo> WebDAV: Locking Esempio LOCK Multi-risorsa (3):  Esempio LOCK Multi-risorsa (3) Risposta: HTTP/1.1 207 Multi-Status Content-Type: text/xml; charset="utf-8" Content-Length: xxxx <?xml version="1.0" encoding="utf-8" ?> <D:multistatus xmlns:D="DAV:"> <D:response> <D:href>http://webdav.sb.aol.com/webdav/secret</D:href> <D:status>HTTP/1.1 403 Forbidden</D:status> WebDAV: Locking Esempio LOCK Multi-risorsa (4):  Esempio LOCK Multi-risorsa (4) </D:response> <D:response> <D:href>http://webdav.sb.aol.com/webdav/</ D:href> <D:propstat> <D:prop><D:lockdiscovery/></D:prop> <D:status>HTTP/1.1 424 Failed Dependency</D:status> </D:propstat> </D:response> </D:multistatus> WebDAV: Locking Esempio LOCK Multi-risorsa (5):  Esempio LOCK Multi-risorsa (5) Si noti che si richiede un lock esclusivo alla collezione e a tutti i suoi figli L’utente inoltre specifica un lock di durata infinita Si ha errore 403 (forbidden) perché non si può fare lock sulla risorsa Il codice di stato 424 (failed dependency) semplicemente sta ad indicare che il metodo non può essere svolto perché qualcos’altro non è andato a buon fine WebDAV: Locking UNLOCK:  UNLOCK UNLOCK rimuove il lock identificato dal token, non solo sulla risorsa specificata nell'URI della richiesta, ma anche su tutte le risorse incluse nel lock Se un lock è stato richiesto su una collezione, tutta la collezione viene liberata dal lock: il lock utilizza la semantica del tutto o niente! WebDAV: Locking Esempio UNLOCK (1):  Esempio UNLOCK (1) Richiesta: UNLOCK /~s97074/webdav/info.doc HTTP/1.1 Host: www.cclinf.polito.it Lock-Token: <opaquelocktoken:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7> Authorization: Digest username="ejw", realm="ejw@webdav.sb.aol.com", nonce="...", uri=" /~s97074/webdav/proposal.doc", response="...", opaque="...“ Risposta: HTTP/1.1 204 No Content WebDAV: Locking Esempio UNLOCK (2):  Esempio UNLOCK (2) Nell’esempio il lock indentificato dal token opaco viene rimosso con successo dalla risorsa Il codice di stato è 204 (no-content) ed indica semplicemente il successo e il fatto che non c’è un body nella risposta WebDAV: Locking Feature Discovery:  Feature Discovery Il metodo OPTIONS (è di HTTP!) viene usato per scoprire le caratteristiche HTTP o WebDAV supportate dal server per una data risorsa OPTIONS /wg/ HTTP/1.1 Host: www.webdav.org HTTP/1.1 200 OK Date: Tue, 09 Feb 1999 02:39:06 GMT Server: Apache/1.3.4 (Unix) DAV/0.9.6 Content-Length: 0 Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE DAV: 1 WebDAV: Options WebDAV Software:  WebDAV Software Sebbene il protocollo sia recente è già ampiamente supportato sia in ambiente Opensource che nei software commerciali Principali WebDAV Clients (1):  Principali WebDAV Clients (1) Application Software: Microsoft: Office 2000 (Word, Excel, PowerPoint, Publisher) apre/salva direttamente da/al web server Usa il meccanismo dei Lock per la protezione da sovrascritture Adobe: Photoshop 6, Acrobat 5 Web Site Authoring Adobe: Go Live 5 Macromedia: Dreamweaver 4 WebDAV: Software Principali WebDAV Clients (2):  Principali WebDAV Clients (2) Remote File Access: Apple: Mac OS X webdavfs OS X ha Apache e mod_dav (si deve configurare mod_dav perchè funzioni) Microsoft: Windows Web Folders Wind River Software: WebDrive Goliath (Mac, open source) Nautilus (GNOME project, Eazel) WebDAV Explorer (UC Irvine, Feise/Kanomata, open source) WebDAV: Software Principali WebDAV Clients (3):  Principali WebDAV Clients (3) XML editors Excosoft: Documentor Altova: XML Spy 3.5 WebDAV: Software Cadaver:  Cadaver è un client WebDAV da linea di comando che permetto upload di file,download,on-screen display,move/copy,utilizzo di collezioni e operazioni di Lock La release corrente è: cadaver 0.21.0 Cadaver WebDAV: Clients Sitecopy:  Sitecopy Permette di editare i web site localmente Aggiorna in modo remoto siti web e permette al sito remoto di essere sincronizzato con quello locale usando un unico comando Il programma si ricorda cosa c’è sul server, così non deve andare a vedere ogni volta il sito Piattaforme supportate:Linux, FreeBSD, OS/2, Win32, IRIX, Solaris, SunOS, Digital Unix WebDAV: Clients PerlDAV (1):  PerlDAV (1) PerlDAV è una libreria Perl per modificare il contenuto dei server Web attraverso il supporto di WebDAV. Si può fare LOCK, DELETE, PUT di files La libreria PerlDAV consiste di: HTTP::DAV – una API object-oriented del client Web-DAV dave - DAV Explorer, una console end-user per interagire con i server WebDAV WebDAV: Clients PerlDAV (2):  PerlDAV (2) Dave permette di: Ricevere e inviare files Creare directory su Web server remoti Remuovere files e directory da un WebServer remoto Editare un file sul server con un solo comando Lock,unlock di files e directory remoti Utilizzo di Https Autenticazione tramite Digest WebDAV: Clients Kiwi:  Kiwi Kiwi è un file system che si basa su HTTPS e WebDAV Kiwi è un file system distribuito realizzato per permettere l’accesso sicuro di file a tal fine ci si è basati su SSL e WebDAV Il server kiwi si basa su Apache,Mod_Dav,Mod_SSL e Mod_Kiwi Il modulo Mod_Kiwi viene utilizzato principalmente per l’autenticazione http://www-cs students.stanford.edu/~austin/kiwi.pdf WebDAV: Clients Neon:  Neon Neon è un http e WebDAV client Supporta tutti i comandi principali di WebDAV (MOVE, COPY, DELETE, MKCOL, PROPPATCH,PROPFIND) Supporto SSL attraverso OpenSSL http://www.webdav.org/neon/neon-0.23.7.tar.gz WebDAV: Clients DAV explorer (1):  DAV explorer (1) DAV Explorer è un client WebDAV che permette: Vedere l’albero del server WebDAV Upload e download di risorse Web Locking e unlocking di risorse Visualizza tutte le proprietà delle risorse Copia,rinomina,crea e elimina collezioni e/o singole risorse Piattaforme supportate:Windows 95/98/ME/NT/2000, Solaris e Linux L’interfaccia del DAV Explorer è simile per look e funzionalità a quello di Windows WebDAV: Clients DAV explorer (2):  DAV explorer (2) Connettersi ad un server WebDAV WebDAV: Clients DAV explorer (3):  DAV explorer (3) Se vi è la basic authentication Dav Explorer vi chiederà login name e password WebDAV: Clients DAV explorer lock (1):  DAV explorer lock (1) Locking di risorse: Per lockare una risorsa selezionarla nel pannello a destra, poi selezionare “Lock” dal File menu, o cliccare sull’icona di lock nella toolbar Per visualizzare le proprietà di un lock andare nel “View” menu e poi selezionare “View Lock Properties” Una piccola finestra apparirà con le informazioni sul lock WebDAV: Clients DAV explorer lock (2):  DAV explorer lock (2) Ecco un esempio di lock: WebDAV: Clients DAV explorer Proprietà (1):  DAV explorer Proprietà (1) Proprietà: Per visualizzare le proprietà selezionare il menù “View” e poi “View Properties” o cliccare click sull’icona view properties Una finestra visualizzerà le proprietà definite sulla risorsa WebDAV: Clients DAV explorer Proprietà (2):  DAV explorer Proprietà (2) Ecco un esempio: WebDAV: Clients Alcuni Prodotti commerciali:  Alcuni Prodotti commerciali My Docs Online! Adobe Acrobat 5 Adobe GoLive Mac OS X Macromedia Dreamweaver Merlin and Lancelot Dav4J Microsoft Windows (attraverso le Web Folders a partire da IE 5.0) WebDAV: Link a prodotti Versioning:  Versioning Panoramica argomenti Terminologia Data model Checkout,checkin e uncheckin Update, Merging Activities Workspaces Baselines Panoramica:  Panoramica Le funzionalità del protocollo sono suddivise in: Caratteristiche Le caratteristiche possono essere Basic o Advanced WebDAV: Versioning Caratteristiche Basic:  Caratteristiche Basic VERSION-CONTROL Basic versioning Solo versioning automatico (no checkin or checkout) REPORT e version-tree report CHECKOUT Checkout, checkin, e uncheckout VERSION-HISTORY La risorsa Version history ha una URL nello spazio dei nomi del server WORKSPACE Server workspace RISORSE DI LAVORO Client workspace UPDATE LABEL WebDAV: Versioning Caratteristiche Advanced:  Caratteristiche Advanced MERGE BASELINE memorizzano checked-in state delle collezioni ACTIVITY Versioni associate ad una modifica logica VERSION-CONTROLLED-COLLECTION Le collezioni possono avere versione WebDAV: Versioning Version History:  Version History WebDAV: Versioning Foo.htm 1 2 7 6 5 4 3 initial Beta1 Test1 Beta2 URL path of Versioned Controlled Resource Version Name Label Successor Linea di Discendenza Revision History Predecessor Fork Merge VERSION-CONTROL (1):  VERSION-CONTROL (1) Il VERSION-CONTROL fa il controllo della versione a una risorsa senza versione una risorsa che è già version-controlled WebDAV: Versioning VERSION-CONTROL (2):  VERSION-CONTROL (2) Se la richiesta di VERSION-CONTROL è fatta per una risorsa senza versione: Crea una nuova version history resource: una risorsa che contiene tutte le versioni di una risorsa version-controlled Una lista di URL delle versioni in questa revisione L’URL della versione principale ovvero il padre di tutte le versioni Crea una nuova version resource: è una risorsa che contiene una copia di un particolare stato (contenuto e proprietà non-live) di una risorsa version-controlled Il server assegna alla nuova version resource una nuova URL univoca Converte la risorsa senza versione in una version controlled resource Ha un puntatore alla version history resource WebDAV: Versioning Fondamenti del Versioning (1):  Fondamenti del Versioning (1) Ogni versione ha un suo URL, in modo da permettere collegamenti ipertestuali a una specifica versione Quindi ogni versione deve essere una risorsa a se stante WebDAV: Versioning Fondamenti del Versioning (2):  Fondamenti del Versioning (2) Le aree di lavoro sono la motivazione per mantenere separata la risorsa version-controlled dalla risorsa history Un workspace permette a un utente di lavorare per conto suo, nella sua porzione del namespace per esempio, Paolo e Luisa potrebbero avere due workspace: /ws/users/paolo/ and /ws/users/luisa/ Se entrambi vogliono pubblicare foo.html nel loro workspace locale, ognuno ha bisogno di una version controlled resource in questo modo una version history può essere associata a più risorse version controlled WebDAV: Versioning CHECKOUT:  CHECKOUT Per lavorare su una risorsa si può fare: Check out editing Check in WebDAV: Versioning CHECKOUT:  CHECKOUT CHECKOUT si può applicare a una risorsa version controlled per creare una nuova working resource Permette modifiche al corpo e alle proprietà non-live della version controlled resource Se una versione è già checked-out, o ha un successore, una fork (ramificazione) è accettabile La proprietà DAV:checkout-fork su una versione ha effetto sulla formazione di ramificazioni (fork) ok: fork permessa discouraged: il client deve indicare che deve fare il fork forbidden: la ramificazione non è permessa (version history lineare) WebDAV: Versioning Esempio Checkout (1):  Esempio Checkout (1) Richiesta: CHECKOUT /his/12/ver/V3 HTTP/1.1 Host: repo.webdav.org Content-Length: 0 Risposta: HTTP/1.1 201 Created Location: http://repo.webdav.org/wr/157 Cache-Control: no-cache WebDAV: Versioning Esempio Checkout (2):  Esempio Checkout (2) Nell’esempio si fa checkout sulla versione V3 e la nuova working resource è http://repo.webdav.org/wr/157 WebDAV: Versioning CHECKIN / UNCHECKIN (1):  CHECKIN / UNCHECKIN (1) CHECKIN blocca lo stato di una risorsa version controlled : Crea una nuova version resource Corpo e proprietà non-live sono uguali a quelle della version controlled resource Blocca il corpo e le proprietà non-live della risorsa version controlled (le rende read-only) Un commento che descrive lo scopo di un cambio può essere scritto in DAV:comment property (prima del CHECKIN) WebDAV: Versioning CHECKIN / UNCHECKIN (2):  CHECKIN / UNCHECKIN (2) UNCHECKOUT interrompe la sequenza di editing Elimina la CHECKOUT Ripristina lo stato precedente all stato di CHECKOUT della version controlled resource WebDAV: Versioning Esempio Checkin (1):  Esempio Checkin (1) Richiesta: CHECKIN /wr/157 HTTP/1.1 Host: repo.webdav.org Content-Length: 0 Risposta : HTTP/1.1 201 Created Location: http://repo.webdav.org/his/23/ver/15 Cache-Control: no-cache WebDAV: Versioning Esempio Checkin (2):  Esempio Checkin (2) La working resource /wr/157 attraverso il checkin permette la creazione della nuova versione all’indirizzo http://repo.webdav.org/his/23/ver/15 WebDAV: Versioning Autoversioning (1):  Autoversioning (1) Ci sono molte applicazioni WebDAV Non conoscono il versioning! Vorrebbero provvedere all’automatic versioning WebDAV: Versioning Autoversioning (2):  Autoversioning (2) Ci sono due tipi di autoversioning: Ogni modifica crea una versione nuova PUT/PROPPATCH  CHECKOUT  PUT/PROPPATCH  CHECKIN Funziona bene con i client che replicano le risorse nel loro spazio locale e poi una volta finito l’editing trasferiscono al server Ogni coppia LOCK/UNLOCK crea una nuova versione LOCK  LOCK  CHECKOUT UNLOCK  CHECKIN  UNLOCK Funziona bene per i clients che lavorano direttamente sul server WebDAV e utilizzano I lock WebDAV: Versioning Labels (1):  Labels (1) È una stringa leggibile che distingue una versione in una version history da tutte le altre versioni all’interno di quella version history Garantisce unicità all’interno di una version history WebDAV: Versioning Labels (2):  Labels (2) Può essere riutilizzata in version history differenti Per esempio, “release_beta” può essere usata per identificare diverse versioni su diverse version history Può essere usata come un semplice modo per memorizzare le strutture Svantaggio: i labels vanno cambiati man mano che le versioni cambiano WebDAV: Versioning Labels (3):  Labels (3) Il metodo LABEL è usato per impostare/muovere/rimuovere un label da una versione Label: header può essere usato con GET/PROPFIND su una risorsa version controlled per recuperare informazioni WebDAV: Versioning UPDATE:  UPDATE Provvede un meccanismo per cambiare lo stato di una checked-in version controlled resource in quello di un’altra versione della version history di quella risorsa Di solito il corpo e le proprietà non-live di una version controlled resource sono le stesse dell’ultima checked-in version UPDATE Modifica il contenuto e le proprietà non-live … … di una risorsa checked-in version-controlled … per diventare l’update dell’ultima versione della version history WebDAV: Versioning Merging (1):  Merging (1) Le ramificazioni in una version history sono utilizzate per due scopi: Rappresentare simultaneamente gli sviluppi di diversi collaboratori (parallel development) Rappresentare varianti di una risorsa Linguaggio naturale, computing platform, ecc È pertanto utile unire le ramificazioni che rappresentano sviluppi paralleli del lavoro Si combinano così gli sforzi di più persone in un unico progetto armonico WebDAV: Versioning Merging (2):  Merging (2) Il MERGE che combina due versioni: Combina in modo minimo le due ramificazioni nel version history Fa uno sforzo per fare il merge del contenuto se il server capisce il content type di entrambe le versioni text/* merge dovrà essere verosimilmente il tipo uniformemente supportato WebDAV: Versioning Version Tree Report:  Version Tree Report Una visualizzazione grafica di una version history aiuta a capire: Informazioni necessarie a creare questa vista: Lista di versioni Nomi delle Versioni Relazioni tra predecessori/successori Nel modello DeltaV le informazioni sono distribuite: Version history resource: liste di versioni Version resources: nomi delle versioni,relazioni pred/succ Usando PROPFIND, abbiamo bisogno di N+1 network requests nel caso peggiore (N=# di versioni) WebDAV: Versioning Activities: cosa sono?:  Activities: cosa sono? Spesso un cambiamento logico si estende attraverso più versioni su diverse version history Le Activities collegano un cambiamento logico con il set di versioni create mentre viene fatto il cambiamento Le versioni di una version history vengono limitate a una sola linea di discendenza Le Activities non hanno versione A volte ci si vuole assicurare che tutto il lavoro venga svolto da tutti su una sola linea di discendenza Per evitare merging tra collaboratori diversi Le Activities vengono usate per rafforzare il lavoro su una sola linea di discendenza WebDAV: Versioning Activities: utilizzo (1):  Activities: utilizzo (1) MKACTIVITY crea una nuova risorsa activity Subito dopo il checkout, l’utente specifica l’activity Questa activity è associata a una nuova versione creata al checkin In particolare: L’URL della risorsa checked-out viene memorizzata nella activity DAV:activity-checkout-set property Al checkin, l’URL della nuova versione viene messa nella activity DAV:activity-version-set property… …e la checked-out resource viene rimossa da DAV:activity-checkout-set WebDAV: Versioning Activities: utilizzo (2):  Activities: utilizzo (2) Usando le activities è possibile selezionare un particolare cambiamento logico per il merging in un altro workspace L’activity viene utilizzata in una MERGE request L’ultima versione di una activity è quella usata nel merge (per ogni version history) WebDAV: Versioning Workspace : cos’è?:  Workspace : cos’è? Un workspace è una locazione… …dove una persona può lavorare da sola … a “riparo” dai cambiamenti fatti dagli altri collaboratori sullo stesso insieme di risorse WebDAV: Versioning Workspace: uso:  Workspace: uso Workspace, tipico utilizzo: Due persone che modificano entrambi lo stesso file e vogliono testare in tranquillità le loro modifiche al codice La struttura di un grande progetto con questi cambiamenti viene cambiata, ma: Non si desidera che tutti si fermino in attesa che quelle modifiche siano completate Si vuole mantenere ogni cambiamento nello spazio dei nomi invisibile agli altri fino al completamento Uno sviluppatore fa in modo che i suoi cambiamenti non siano visibili I nuovi file sono nei loro Workspace, ma non sotto version control finchè non si giunge alla fine dei cambiamenti WebDAV: Versioning Workspace: tipi:  Workspace: tipi Vi sono due tipi di workspace: Server client La differenza principale è che il server contiene una porzione del suo namespace per ogni workspace I workspace possono mantenere dati con e senza versione WebDAV: Versioning Server workspaces (1):  Server workspaces (1) Ha un diverso namespace per ogni workspace Per esempio: Sara e Franco hanno entrambi un workspace Sara : /users/people/Sara/projectX/… Sara fa tutto quel che vuole nella sua area Franco : /users/people/Franco/projectX/… Franco,anche lui fa tutto quel che vuole nella sua area WebDAV: Versioning Server workspaces (2):  Server workspaces (2) Possono esserci repliche locali di versioni Vantaggi Permette l’accesso da locazioni e macchine diverse Permette che le operazioni sul namespace siano isolate Svantaggi Richiede sforzi per implementarlo WebDAV: Versioning Client workspace:  Client workspace Lo spazio dei nomi del server non viene conservato I files vengono replicati nelle macchine locali Vantaggi Si utilizza meno il server namespace Svantaggi Non si può accedere al workspace da macchine e locazioni diverse Le operazioni sul Namespace sono subito visibili WebDAV: Versioning Meccanismi del Server Workspace (1):  Meccanismi del Server Workspace (1) MKWORKSPACE crea un nuovo workspace Questa è la directory radice del progetto Es., /users/people/Sara/projectX/ WebDAV: Versioning Meccanismi del Server Workspace (2):  Meccanismi del Server Workspace (2) VERSION-CONTROL aggiunge delle risorse version controlled al workspace Crea una nuova risorsa version controlled per una version history La version history avrà diverse risorse version controlled Si pensi alla risorsa version controlled come un punto di accesso ad alcune locazioni nel namespace per fare operazioni sulla version history WebDAV: Versioning Sincronizzare i workspace:  Sincronizzare i workspace Ad un certo punto un utente che lavora nel suo workspace avrà bisogno dei cambiamenti fatti dagli altri collaboratori Il MERGE combina due workspace Di solito la sorgente del merge è il workpace del progetto comune e la destinazione è un workspace di un utente MERGE cerca la più recente checked-in version per ogni risorsa version-controlled nel workspace WebDAV: Versioning Server Workspace:esempio (1):  Server Workspace:esempio (1) Si consideri un programma con I seguenti files: /projectX/makefile /projectX/main.c /projectX/defs.h Marco e Gino vogliono collaborare a questo lavoro Ognuno lavora in un diverso server workspace Crea i workspace: MKWORKSPACE /users/marco/projectX/ MKWORKSPACE /users/gino/projectX/ WebDAV: Versioning Server Workspace:esempio (2):  Server Workspace:esempio (2) Utilizzo di version control per aggiungere i files: Workspace di marco: VERSION-CONTROL /users/marco/projectX/makefile da /projectX/makefile VERSION-CONTROL /users/marco/projectX/main.c da /projectX/main.c VERSION-CONTROL /users/marco/projectX/defs.h da /projectX/defs.h Workspace di gino: VERSION-CONTROL /users/gino/projectX/makefile da /projectX/makefile VERSION-CONTROL /users/gino/projectX/main.c da /projectX/main.c VERSION-CONTROL /users/gino/projectX/defs.h da /projectX/defs.h WebDAV: Versioning Server Workspace:esempio (3):  Server Workspace:esempio (3) Version history di main.c: /repo/o522/v1 /repo/o522/v2 /repo/o522/v3 /repo/o522/v4 version history resource /repo/o522/v1 /repo/o522/v2 /repo/o522/v3 /repo/o522/v4 version resources /his/o522 /projectX/main.c /users/gino/ projectX/main.c version controlled resources /repo/o522/v5 /users/marco/ projectX/main.c WebDAV: Versioning Server Workspace:esempio (4):  Server Workspace:esempio (4) main.c makefile defs.h /users/gino/projectX/ main.c, 4 makefile, 3 defs.h, 3 /users/marco/projectX/ main.c, 5 makefile, 3 defs.h, 2 3 5 WebDAV: Versioning Client Workspace:  Client Workspace Il client mantiene il controllo dello spazio dei nomi dei dati locali Il Server viene utilizzato poco Working resource La crea dopo la checkout Una locazione sul server dove si può scrivere il contenuto delle risorsa checked-out Checkin CHECKIN converte la working resource in una version resource Una version history può avere diverse working resource contemporanee WebDAV: Versioning Esempio di Client Workspace (1):  Esempio di Client Workspace (1) Si assuma di lavorare sul file main.c: Il Client per prima cosa fa una copia di main.c usando GET Il risultato della get viene memorizzato in uno spazio locale: /{local workspace name}/main.c Poi il client fa la CHECKOUT Crea una working resource L’URL della risorsa utilizzata si trova nell’header della CHECKOUT response WebDAV: Versioning Esempio di Client Workspace (2):  Esempio di Client Workspace (2) Il Client lavora sulla copia locale di main.c Quando ha finito il client salva I suoi cambiamenti sul server Faccio PUT Poi fa CHECKIN della working resource Rimette la versione alla working resource WebDAV: Versioning Scopi delle Baseline:  Scopi delle Baseline Quando una grande collezione di documenti viene rilasciata al di fuori dell’organizzazione che la sviluppa c’è la necessità di memorizzare con esattezza quale versione è stata rilasciata In particolare per release di software Una Baseline può memorizzare l’esatta versione di una grossa raccolta di risorse sotto version control WebDAV: Versioning Definizione di Baseline (1):  Definizione di Baseline (1) Si tratta di uno speciale tipo di version resource che cattura lo stato dei membri version-controlled di una configurazione Una baseline history è una version history i cui membri sono baseline Le baseline hanno versioni, le quali possono cambiare WebDAV: Versioning Definizione di Baseline (2):  Definizione di Baseline (2) Le nuove baseline vengono create attraverso il checking out e poi il checking in di un tipo speciale di version-controlled resource chiamata : version-controlled configuration Le Baselines hanno lo stesso data model delle altre risorse sotto version control Version history per baselines  baseline history Version resources  baseline Version controlled resource  version controlled configuration WebDAV: Versioning Funzionamento Baseline (1):  Funzionamento Baseline (1) Una collezione viene messa sotto baseline control utilizzando il metodo BASELINE-CONTROL Esempio: Codice sorgente per un progetto nella collezione /project/src/ Si applica BASELINE-CONTROL a /project/src/ Si crea una nuova baseline history: Metodo BASELINE-CONTROL Crea una nuova configurazione version controlled Mette l’URL in DAV:version-controlled-configuration property of collection Memorizza le associazioni tra baseline history e collezioni WebDAV: Versioning Funzionamento Baseline (2):  Funzionamento Baseline (2) Creare una nuova baseline: CHECKOUT version controlled configuration Rende modificabile la configurazione version controlled Prendere visione del progetto: CHECKIN della configurazione version controlled Crea una nuova baseline es., una nuova versione nel version history dei baseline Crea anche una nuova collezione… … in una porzione definita del server nel namespace … … che contiene un set di risorse version-controlled… …ognuna delle quali ha il valore della più recente checked-in version nella sua version history WebDAV: Versioning Il server web Apache e WebDAV:  Il server web Apache e WebDAV Come installare e configurare un server web Apache che implementi il protocollo WebDAV WebDAV su server Apache:  WebDAV su server Apache Guida sulla configurazione di un server web Apache che supporti WebDAV Caratteristiche: Autenticazione: LDAP Sicurezza: SSL Fonte: “Apache based WebDAV Server with LDAP and SSL” di Saquib Ali sotto licenza GNU Free Documentation License WebDAV: Apache Software necessario:  Software necessario Apache versione 1.3.x o superiore http://www.apache.org/dist/httpd/ OpenSSL Per compilare mod_ssl per apache Per maneggiare certificati SSL http://www.openssl.org/suorce/ OpenLDAP http://www.openldap.org/software/download/ WebDAV: Apache Software necessario:  Software necessario Apache è un server a moduli, al software di base si possono cioè aggiungere ulteriori funzionalità, nel nostro caso: mod_dav: per permettere l’utilizzo di WebDAV mod_auth_ldap: per permettere l’autenticazione con LDAP mod_ssl: per permettere l’utilizzo di canali protetti ssl WebDAV: Apache Sequenza di installazione:  Sequenza di installazione Installare le librerie di openLDAP Installare OpenSSL Pre-configurare Apache al fine di permettere l’installazione di mod_dav con lo script ./configure –prefix=/usr/local/apache Installazione di mod_dav Installazione di mod_auth_ldap Installazione di mod_ssl WebDAV: Apache Sequenza di installazione:  Sequenza di installazione Configurazione ed installazione di apache (con inclusione dei 3 moduli necessari) Configurazione: ./configure –prefix=/usr/local/apache \ --enable-module=ssl \ --activate-module= \ src/modules/ldap/mod_auth_ldap.c \ --activate-module=src/modules/dav/libdav.a \ --enable-shared=ssl WebDAV: Apache Configurazione di WebDAV:  Configurazione di WebDAV Una volta installati tutti i componenti si deve procedere alla configurazione di WebDAV andando a modificare alcuni file di configurazione del server Nel file di configurazione /apache/conf/httpd.conf bisogna aggiungere la seguente riga al fine di abilitare il modulo WebDAV Addmodule mod_dav.c WebDAV: Apache Configurazione di WebDAV:  Configurazione di WebDAV WebDAV utilizza un database di lock in cui salva quali risorse sono locked in un determinato istante Creare una directory in cui salvare il database Darne i permessi di accesso al server Specificare in httpd.conf la directory DAVLockDB \ /usr/local/apache/<DIR>/DAVLock WebDAV: Apache Configurazione di WebDAV:  Configurazione di WebDAV Bisogna abilitare ogni directory in cui si vuole utilizzare WebDAV aggiungendo nella entry della relativa directory nel file httpd.conf DAV On Esempio: <Directory /usr/local/apache/htdocs/prova> DAV on … </Directory> WebDAV: Apache Configurazione di WebDAV:  Configurazione di WebDAV Creare la directory in cui si vuole fare utilizzo di WebDAV Verificare la sintassi di httpd.con /usr/local/apache/bin/apachectl configtest Riavviare il server web /usr/local/apache/bin/apachectl restart WebDAV: Apache WebDAV & IIS:  WebDAV & IIS Configurazione di WebDAV in IIS e problemi correlati IIS (1):  IIS (1) IIS è il server web di Microsoft Di default non è installato all’installazione del sistema operativo Integra la possibilità di supportare diversi estensioni che permettono l’utilizzo di molteplici protocolli e linguaggi WebDAV: IIS IIS (2):  IIS (2) Alcune estensioni dinamiche devono essere appositamente installate: ASP ASP.NET Estensioni lato server di Frontpage Altre vengono già installate di default all’installazione del pacchetto WebDAV WebDAV: IIS WebDAV:  WebDAV E’ integrato nei sistemi operativi Microsoft a partire da Windows 2000 E’ supportato a partire da IIS 5.0, in IIS 4.0 doveva essere installato come estensione WebDAV: IIS Abilitazione dell’estensione per WebDAV in IIS 4.0:  Abilitazione dell’estensione per WebDAV in IIS 4.0 Si utilizza IIS manager facendo la seguente procedura Cliccare su Web Service Extensions Cliccare sull’estensione di WebDAV: WebDAV Publishing Cliccate su Allow per abilitarla (o su Prohibit per disabilitarla) Cliccare su OK WebDAV: IIS Client Microsoft per WebDAV (1):  Client Microsoft per WebDAV (1) Microsoft già a partire dal sistema Windows 2000 dà una particolare attenzione al protocollo WebDAV integrandolo pesantemente nei suoi software client Attuando parte dei principi di distribuzione delle risorse in rete per i quali è nato WebDAV Ecco alcuni esempi… WebDAV: IIS Client Microsoft per WebDAV (2):  Client Microsoft per WebDAV (2) Windows 2000 e Windows XP Permettono di accedere direttamente a delle risorse WebDAV tramite sistema operativo Internet explorer (ver. 5.0 e 6.0) Office 2000 e Office XP Permettono di fare un editing distribuito delle risorse WebDAV: IIS Abilitazione dei Client (1):  Abilitazione dei Client (1) I client Microsoft, in alcuni casi, devono essere abilitati per poter funzionare con il protocollo WebDAV Procedura: Andare in Administrative Tools e cliccare su Computer Management Fare doppio-click su Services and Applications e fare doppio-click su Services WebDAV: IIS Abilitazione dei Client (2):  Abilitazione dei Client (2) Andare su WebClient, cliccare con il tasto destro del mouse e andare su Properties In Status type andare su Automatic e cliccare su Apply Nella sezione Service status cliccare su Start e poi su OK WebDAV: IIS Creare una directory per le pubblicazioni (1):  Creare una directory per le pubblicazioni (1) Creare la directory, in cui si vogliono fare le pubblicazioni, in una partizione NTFS Essa deve avere i seguenti permessi Read Read and Execute List Write Modify WebDAV: IIS Perché in una partizione NTFS?:  Perché in una partizione NTFS? Un directory WebDAV deve essere creta in una partizione NTFS Se creata in una partizione FAT Posso leggere il contenuto delle risorse Non posso leggere le proprietà delle risorse WebDAV: IIS Creare una directory per le pubblicazioni (2):  Creare una directory per le pubblicazioni (2) Creare una directory virtuale in IIS mettendo l’alias desiderato, con i seguenti permessi: Read Directory Browsing Write Indexing (opzionale): Se voglio abilitare i client a cercare una directory Nota: Per fare queste operazioni bisogna essere loggati come amministratori del sistema WebDAV: IIS Cos’è una directory virtuale?:  Cos’è una directory virtuale? Una directory virtuale è una alias, un nome facile da ricordare o da scrivere che permette di accedere a delle risorse in modo trasparente alla locazione fisica della directory in cui sono memorizzati i file L’utente usa le directory virtuali per accedere ai file di cui ha bisogno WebDAV: IIS Perché le directory virtuali?:  Perché le directory virtuali? Chi accede alla directory non sa dove e come i file sono memorizzati Gli alias che mi consentono l’accesso sono più facili e intuitivi rispetto ai nomi veri e propri Le directory fisiche possono essere collocate in modo distribuito nella rete senza che l’utente se ne accorga WebDAV: IIS

Add a comment

Related presentations

Related pages

WebDAV – Wikipedia

WebDAV (Web-based Distributed Authoring and Versioning) ist ein offener Standard zur Bereitstellung von Dateien im Internet. Dabei können Benutzer auf ...
Read more

WebDAV Resources

WebDAV Resources. This site is being produced for the WebDAV community as a central resource for documentation, specifications, software ...
Read more

WebDAV — Fragen & Antworten - com! professional

Egal ob Ihre Daten bei Skydrive, Strato Hidrive oder im GMX Mediacenter liegen und egal ob Sie übers Internet auf Ihr NAS zugreifen: WebDAV präsentiert ...
Read more

Webdav mit Windows 7 und 8 - Zentrum für ...

Webdav mit Windows 7 und 8 Heimverzeichnis verbinden. Gruppenlaufwerk verbinden. Fehlermeldung beim Kopieren großer Dateien
Read more

WebDAV - Wikipedia, the free encyclopedia

Web Distributed Authoring and Versioning (WebDAV) is an extension of the Hypertext Transfer Protocol (HTTP) that allows clients to perform remote Web ...
Read more

About WebDAV

About WebDAV. Updated: August 22, 2005. Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1
Read more

WebDAV › Wiki › ubuntuusers.de

WebDAV (Web-based Distributed Authoring and Versioning) ist ein offener Standard zur Bereitstellung von Dateien im Internet. Der Benutzer kann durch WebDAV ...
Read more

WebDAV (Windows)

Create and manage connections to WebDAV servers. Perform file I/O operations on remote files on WebDAV servers. Web Distributed Authoring and Versioning ...
Read more

WebDAV : The Official Microsoft IIS Site

WebDAV Overview; Compatibility; Setup; How To; Configuration; Sample Code; Overview. The element contains the settings that configure Web ...
Read more

WebDAV - Einrichtung unter Windows Vista - NetzwerkTotal News

WebDAV (Web-based Distributed Authoring and Versioning) ist eine Erweiterung des HTTP-Protokolls. Mit WebDAV hat der Anwender eine Möglichkeit auf Dateien ...
Read more