# Funciones WebDAV en Amaya

## Acerca de WebDAV

WebDAV (WWW Distributed Authoring and Versioning) es un conjunto de extensiones al protocolo HTTP que permite a los usuarios colaborar en la edición y gestión de recursos web en servidores remotos. Su objetivo es extender el protocolo HTTP para permitir una arquitectura abierta en el nivel del protocolo, para desarrollar nuevas herramientas de creación distribuida en la web, haciendo hincapié en la creación de páginas web en colaboración (ver RFC 2518). WebDAV define operaciones sobre las propiedades, las colecciones, los espacios de nombres y la potección de sobreescritura (mecanismo de bloqueo) y, para estas operaciones, define nuevos métodos, encabezados, organismos de entidad de petición y respuesta. Sin embargo, las características de tratamiento de versiones incluidas en la propuesta original se han trasladado al grupo de trabajo de la IEFT Delta-V, que pretende extender WebDAV y HTTP/1.1 en estas características (ver el artículo de E. J. Whitehead "El futuro del desarrollo de software distribuido en Internet").

El mecanismo de bloqueo definido en WebDAV ha sido diseñado para prevenir la sobreescritura de recursos (es decir, prevenir el problema de la actualización perdida), empleando las operaciones de bloqueo y desbloqueo. Un bloqueo controla el acceso de escritura a un recurso limitando las operaciones de escritura HTTP, como PUT, POST y DELETE. Esto significa que solamente alguien que conozca el bloqueo podrá ejectuar estas operaciones. El protocolo WebDAV también define dos ámbitos de bloqueo: bloqueo exclusivo y bloqueo compartido. Un bloqueo exclusivo garantiza que una persona posee el bloqueo y que nadie más podrá bloquear el recurso (esto no afecta a la lectura del recurso). Un bloqueo exclusivo permite a un grupo de usuarios crear sus bloqueos sobre un recurso, pero deben confiar unos en otros para prevenir problemas de acceso. Además, cada bloqueo tiene una duración límite y el usuario no puede olvidar que los bloqueos pueden desaparecer en el servidor debido a excepciones en el servidor.

Puedes encontrar más información sobre WebDAV en RFC 2518 y también en WebDAV.org.

## Soporte de WebDAV en Amaya

Amaya tiene un soporte de WebDAV opcional y limitado. Este soporte incluye las operaciones siguientes: bloqueo/desbloqueo de un recurso compilante WebDAV, ver las propiedades WebDAV de un recurso y capacidades de descubrimiento de bloqueos. Además, este soporte incluye algunas funciones de reconocimiento, que pueden informar automáticamente al usuario sobre los recursos bloqueados.

### ¿Cómo utilizarlo?

El soporte de WebDAV presente en Amaya pretende ayudar a pequeños grupos de usuarios a editar en colaboración sus páginas Web. Para mostrar cómo funciona, he aquí un ejemplo; supón que tienes un servidor WebDAV (en realidad, necesitas un servidor Web que soporte WebDAV para trabajar con él) que se llama `servidordav.miempresa.com`, y que tú y tus compañeros queréis editar en colaboración algunos documentos que están en la carpeta WebDAV `/shared/` (las carpetas WebDAV se denominan colecciones).

Entonces, imagina que necesitas modificar el documento `http://servidordav.miempresa.com/shared/Doc1.html`. Para ello, abres el documento en tu editor Amaya y a continuación bloqueas el documento (Bloquear recurso en el menú Cooperación ver Figura 1). Una vez has bloqueado el documento, si uno de tus compañeros intenta guardar algún cambio en el documento, será avisado de tu bloqueo y las actualizaciones no se perderán automáticamente. Mientras el documento está bloqueado puedes modificarlo, y cuando hayas terminado tu trabajo, al desbloquear el documento, permitirás que otros compañeros puedan bloquearlo y realizar sus modificaciones.

Por otro lado, si quieres saber si algún compañero ha bloqueado una página Web, puedes utilizar la opción Ver propiedades del recurso en el menú Cooperación para ver todas las propiedades de la página o puedes configurar Amaya para que te informe automáticamente cuando se bloquee la página. para ello, tendrás que abrir la caja de diálogo Cooperación>Preferencias, marcar la opción de Conocimiento general y escribir la dirección de tu carpeta compartida en el campo Lista de recursos WebDAV de usuario (`http://servidordav.miemmpresa.com/shared/`, como muestra la Figura 2). Una vez lo hayas hecho, al abrir una página bloqueada por un compañero de la carpeta `http://servidordev.miempresa.com/shared/`, Amaya te informará.

### Opciones WebDAV en Amaya

Estas opciones se encuentran en el menú Cooperación > Preferencias. Se indican los valores por omisión:

`DAV_DEPTH= [ infinity | 0 ]`
  Profundidad del bloqueo. Si la profundidad es infinita, el bloqueo de una colección (carpeta) afectará a todos sus componentes. En caso contrario el bloqueo afectará únicamente a la colección, impidiendo al usuario que no conozca el bloqueo la creación o eliminación de componentes de la colección.
`DAV_TIMEOUT= [ Infinite | Second-XXXX ]`
  Duración del bloqueo. El valor "infinita" significa que el bloqueo no termina nunca y "Second-xxxx" intentará obtener un bloqueo durante XXXX segundos.
`DAV_LOCK_SCOPE= [ exclusive | shared ]`
  Ámbito del bloqueo.
`DAV_USER_URL= [ URL ]`
  URL que identifica al usuario. Ejemplo: mailto:yomismo@miservidor.com o http://miservidor.com/mihomepage.html
`DAV_AWARENESS= [ yes |``no``]`
  Indica si el usuario desea información básica sobre los recursos bloqueados.
`DAV_AWARENESS_ONEXIT=[ yes |````no``]`
  Indica si el usuario quiere recibir información sobre sus propios bloqueos al abandonar un recurso.
`DAV_URLS= [ URL URL URL ... ]`
  Lista de URLs de recursos empleados por el usuario como recursos WebDAV

## ¿Cómo compilar Amaya con funciones WebDAV?

WebDAV es una característica opcional en Amaya. Para compilarla y poderla utilizar, necesitarás:

- Libwww con soporte WebDAV
- opciones de configuración de Amaya
- un servidor WebDAV para poder utilizar estas funciones... Jigsaw y Apache son algunos de los servidores web que soportan WebDAV.

Una vez has comprobado el cvs de Libwww con soporte WebDAV y has obtenido el código fuente de Amaya, debes seguir los pasos siguientes en un sistema Linux/Unix (para sistema Windows, consulta las páginas de Amaya y Libwww):

#### En el directorio libwww:

- libtoolize -c -f
- perl config/winConfigure.pl
- aclocal; autoheader; automake; autoconf

#### En el directorio Amaya:

- autoconf
- mkdir LINUX-ELF (or GTK, or obj)
- cd LINUX-ELF
- ../configure --with-dav ... (and all other options that you need)
- make

Escrito por Manuele Kirsch Pinheiro, 13 de junio de 2002.