<!-- review: finished -->

<a id="external-dav-ext"></a>

# DAV-Ext

Este módulo estende o suporte ao WebDAV com os métodos PROPFIND, OPTIONS, LOCK e UNLOCK.

O módulo padrão [DAV](https://pt.angie.software//angie/docs/configuration/modules/http/http_dav.md#http-dav) fornece uma implementação parcial do
WebDAV e suporta apenas os métodos GET, HEAD, PUT, DELETE, MKCOL, COPY e MOVE.
Para obter suporte completo ao WebDAV, você precisa habilitar o módulo padrão
`http_dav_module`, bem como este módulo para os métodos ausentes.

<a id="installation-7"></a>

## Instalação

Para [instalar](https://pt.angie.software//angie/docs/installation/index.md#install-packages) o módulo, use um dos
seguintes pacotes:

- Angie: `angie-module-dav-ext`
- Angie PRO: `angie-pro-module-dav-ext`

<a id="loading-the-module-6"></a>

## Carregando o Módulo

Carregue o módulo no contexto `main{}`:

```nginx
load_module modules/ngx_http_dav_ext_module.so;
```

<a id="configuration-example-83"></a>

## Exemplo de Configuração

```nginx
dav_ext_lock_zone zone=lock_zone:10m;
server {
    listen 80 default_server;

    location / {
        root /usr/share/angie/html;

        dav_methods PUT DELETE MKCOL COPY MOVE;
        dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;
        dav_ext_lock zone=lock_zone;
    }
}
```

<a id="request-execution-examples"></a>

## Exemplos de Execução de Requisições

Fazendo upload de um arquivo para o servidor:

```console
$ curl -i -X PUT -d @testf1.txt http://127.0.0.1/testf1.txt
HTTP/1.1 201 Created
Server: Angie/|angie_version|
Date: |sampledatelong| 19:15:35 GMT
Content-Length: 0
Location: http://127.0.0.1/testf1.txt
Connection: keep-alive
```

Sobrescrevendo o mesmo arquivo:

```console
$ curl -i -X PUT -d @testf1.txt http://127.0.0.1/testf1.txt
HTTP/1.1 204 No Content
Server: Angie/|angie_version|
Date: |sampledatelong| 19:15:35 GMT
Connection: keep-alive
```

Bloqueando o arquivo contra sobrescrita:

```console
$ curl -i -X LOCK http://127.0.0.1/testf1.txt
HTTP/1.1 200 OK
Server: Angie/|angie_version|
Date: |sampledatelong| 19:15:35 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 392
Connection: keep-alive
Lock-Token: <urn:7502d56f>
```

Tentando sobrescrever o arquivo:

```console
$ curl -i -X PUT -d @testf1.txt http://127.0.0.1/testf1.txt
HTTP/1.1 423
Server: Angie/|angie_version|
Date: |sampledatelong| 19:15:35 GMT
Content-Length: 0
Connection: keep-alive
```

O arquivo está bloqueado. Desbloqueando o arquivo:

```console
$ curl -i -X UNLOCK -H 'Lock-Token: <urn:7502d56f>' http://127.0.0.1/testf1.txt
HTTP/1.1 204 No Content
Server: Angie/|angie_version|
Date: |sampledatelong| 19:15:35 GMT
Connection: keep-alive
```

Sobrescrevendo o arquivo:

```console
$ curl -i -X PUT -d @testf1.txt http://127.0.0.1/testf1.txt
HTTP/1.1 204 No Content
Server: Angie/|angie_version|
Date: |sampledatelong| 19:15:35 GMT
Connection: keep-alive
```

O arquivo foi desbloqueado e sobrescrito com sucesso.

<a id="additional-information-7"></a>

## Informações Adicionais

Documentação detalhada e código-fonte estão disponíveis em:
[https://github.com/arut/nginx-dav-ext-module](https://github.com/arut/nginx-dav-ext-module)
