# WebDAV Server

**Access mode:** public reads, authenticated writes
**Base URL:** https://filesystem-pt5.sprites.app/

## Connecting

### macOS
Finder: Go → Connect to Server → `https://filesystem-pt5.sprites.app/`

### Linux
```sh
# Mount (davfs2)
sudo apt install davfs2
sudo mkdir /mnt/webdav
sudo mount -t davfs https://filesystem-pt5.sprites.app/ /mnt/webdav

# GUI: Nautilus address bar
davs://filesystem-pt5.sprites.app/
# GUI: Dolphin address bar
webdavs://filesystem-pt5.sprites.app/

# CLI
cadaver https://filesystem-pt5.sprites.app/
```

### Windows
```
# Map Network Drive → Folder:
https://filesystem-pt5.sprites.app/

# Or via command line:
net use Z: https://filesystem-pt5.sprites.app/
```
Note: if Windows refuses to connect, set registry key
`HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel = 2`
and restart the WebClient service.

### Cross-platform (rclone)
```sh
rclone copy https://filesystem-pt5.sprites.app/ ./local-copy --webdav-vendor other
```
Cyberduck and WinSCP also support WebDAV via the GUI.

### Agents / programmatic access
```sh
# List directory
curl -X PROPFIND -H "Depth: 1" https://filesystem-pt5.sprites.app/

# Download a file
curl https://filesystem-pt5.sprites.app/path/to/file

# Upload a file (requires auth if server has credentials)
curl -T localfile https://filesystem-pt5.sprites.app/path/to/file

# Create a directory
curl -X MKCOL https://filesystem-pt5.sprites.app/newdir/
```

## Source Code

[Download webdav.py](https://filesystem-pt5.sprites.app/webdav.py) — self-contained, PEP 723, runs with `uv run webdav.py`.

## Supported Methods

`GET` `HEAD` `PUT` `DELETE` `MKCOL` `COPY` `MOVE`
`PROPFIND` `PROPPATCH` `LOCK` `UNLOCK` `OPTIONS`

## Protocol

RFC 4918 WebDAV — DAV compliance classes 1, 2, 3.
Use `PROPFIND` with `Depth: 1` to list collections.
Use `PROPFIND` with `Depth: 0` to inspect a single resource.
