https://github.com/gabrielmoura/davserver
https://github.com/gabrielmoura/davserver
i2p webdav-server
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/gabrielmoura/davserver
- Owner: gabrielmoura
- Created: 2024-05-20T18:48:17.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-02T19:20:17.000Z (about 2 years ago)
- Last Synced: 2024-06-19T15:12:39.791Z (about 2 years ago)
- Topics: i2p, webdav-server
- Language: Go
- Homepage:
- Size: 75.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WebDav Server
## Em Desenvolvimento
Um servidor WebDAV simples com autenticação básica e API para gerenciamento de usuários e diretórios.
### Funcionalidades
- **Criação de Usuários e Diretórios:** Permite criar usuários e seus respectivos diretórios de forma automatizada.
- **Autenticação Básica:** Protege o acesso ao servidor através de nome de usuário e senha.
- **Protocolo WebDAV:** Habilita o acesso e manipulação remota de arquivos através do protocolo WebDAV.
- **API de Gerenciamento:** Oferece endpoints para criar, listar, atualizar e deletar usuários e diretórios.
### Uso
```bash
./dav -root=/var/www/webdav -token=meu_token_secreto
```
**Opções:**
- `-port`: Porta em que o servidor irá escutar (padrão: 8080).
- `-root`: Diretório raiz onde os arquivos serão armazenados (padrão: ./root).
- `-token`: Token de autenticação para a API (padrão: 123456).
- `-i2p`: Habilita o uso do I2P.
- `-config`: Habilita o uso de um arquivo de configuração.
- `-h`: Exibe a ajuda com as opções disponíveis.
- `-export`: Exporta os usuários (./users.json).
- `-import`: Importa os usuários (./users.json).
### API
A API Rest permite gerenciar usuários e diretórios. Para utilizar a API, inclua o token de autenticação no
cabeçalho `Authorization` das requisições:
```
Authorization: Bearer meu_token_secreto
```
**Endpoints:**
- `POST /admin/user`: Cria um novo usuário.
- `GET /admin/user`: Lista todos os usuários.
- `DELETE /admin/user`: Deleta um usuário
Mais informações podem ser obtidas em [Arquivo Http](test.http) ou [Coleção Postman](DavServer.postman_collection.json).
#### Observações
- /user/file e /user/pub O token esperado é um base64 da string `username:password` e o token deve ser passado no header
da requisição com o nome "Authorization".
- /admin/users O token esperado é um token simples e o token deve ser passado no header da requisição com o nome "
Authorization" definido no momento da execução do servidor.
- O caminho do DB é por padrão `/tmp/DavServer`, altere o caminho para não perder os dados ao reiniciar o servidor.
- Para Usar com I2P é necessário que o SAM esteja ativo e configurado para o servidor.
- Nenhum usuário é criado por padrão, é necessário criar um usuário para poder acessar o servidor.
- É possível traduzir as mensagens do Srv em `internal/msg`
### Exemplo de Requisição (cURL)
```bash
curl -X POST -H "Authorization: meu_token_secreto" -H "Content-Type: application/json" -d '{"username": "novo_usuario", "password": "senha_forte"}' http://localhost:8080/users
```
### Variáveis de Ambiente
```yaml
# conf.yml
# Configurações principais
APP_NAME: "DavServer"
DB_DIR: "/tmp/DavServer"
PORT: 8080
SHARE_ROOT_DIR: "./root"
TIME_FORMAT: "02-Jan-2006"
TIME_ZONE: "America/Sao_Paulo"
GLOBAL_TOKEN: "123456"
# Configuração Padrão do Servidor
SRV:
# Caso true removerá a pasta do usuário ao remover o usuário.
DELETE_FOLDER: false
CHUNK_SIZE: 500
# Configurações I2P
I2P_CFG:
ENABLED: false
HTTP_HOST_AND_PORT: "127.0.0.1:7672"
URL: "127.0.0.1:7672"
SAM_ADDR: "127.0.0.1:7656"
KEY_PATH: "./"
```