Servidor WebDAV em C++ com foco em portabilidade, compilado com Zig Build e Cosmopolitan.
- Servidor HTTP/WebDAV com operações comuns (
GET,PUT,DELETE,MKCOL,PROPFIND,MOVE,COPY,LOCK,UNLOCK) - Interface de listagem de diretórios no navegador
- Autenticação Basic opcional
- Limite de taxa por IP
- Build nativo e matriz de cross-compilation via
build.zig
- Zig 0.15.2
- Cosmocc 4.0.2
Download usado neste projeto:
https://ziglang.org/download/0.15.2/zig-x86_64-linux-0.15.2.tar.xzhttps://cosmo.zip/pub/cosmocc/cosmocc-4.0.2.zip
Build nativo:
zig build native -Doptimize=ReleaseFastBuild da matriz completa de targets:
zig build matrix -Doptimize=ReleaseFastOs binários são gerados em release/bin.
./release/bin/webdav -r . -p 8080Opções disponíveis:
-r <root>diretório raiz (padrão:.)-p <porta>porta do servidor (padrão:8080)-u <usuario>usuário para Basic Auth-w <senha>senha para Basic Auth-t <segundos>timeout de conexão (padrão:30)-m <max_req>máximo de requisições por minuto por IP (padrão:1000)-vmodo verboso-hajuda
Exemplo com autenticação:
./release/bin/webdav -r /srv/webdav -p 8080 -u admin -w senhaforte -vO workflow em .github/workflows/release.yml:
- baixa e instala Zig 0.15.2 diretamente da URL oficial
- baixa e instala
cosmocc4.0.2 - executa
zig build matrix(inclui o build dowebdav_x86_64-unknown-cosmo.comviabuild.zig) - compacta cada binário individualmente em
.tar.gzcom nome por triple/target (ex.:webdav_x86_64-linux-musl.tar.gz) - publica todos os
.tar.gzno artifact do workflow - quando houver evento de release (
published), publica todos os.tar.gzcomo assets da Release
- Samuel Godoy: https://github.com/samuelgodoy
Este projeto está licenciado sob a licença MIT. Você pode usar, modificar e distribuir livremente, desde que mantenha os créditos/autoria no software.
