No description
Find a file
2026-02-12 22:21:11 +01:00
cache First commit. 2026-02-12 18:22:27 +01:00
clientip Ajout fichier de configuration. 2026-02-12 18:54:58 +01:00
config Ajout fichier de configuration. 2026-02-12 18:54:58 +01:00
kdrive Lecture paresseuse des fichiers via HTTP Range requests 2026-02-12 22:17:46 +01:00
webdavfs Lecture paresseuse des fichiers via HTTP Range requests 2026-02-12 22:17:46 +01:00
.gitignore Ajout fichier de configuration. 2026-02-12 18:54:58 +01:00
config.example.toml Ajout fichier de configuration. 2026-02-12 18:54:58 +01:00
Dockerfile Create Dockerfile 2026-02-12 19:53:19 +01:00
go.mod Ajout fichier de configuration. 2026-02-12 18:54:58 +01:00
go.sum Ajout fichier de configuration. 2026-02-12 18:54:58 +01:00
main.go Redéfinition des logs (et ajout d'un auth failed) 2026-02-12 22:21:11 +01:00
README.md Ajout README 2026-02-12 18:55:05 +01:00

kdrive-webdav-proxy

Proxy WebDAV pour Infomaniak kDrive. Permet d'accéder à un kDrive depuis n'importe quel client WebDAV (Finder, Explorateur Windows, davfs2, Cyberduck, etc.).

Build

go build -o kdrive-webdav-proxy

Utilisation

Avec des flags / variables d'environnement

./kdrive-webdav-proxy --token "VOTRE_TOKEN" --drive-id "123456"

Ou :

export KDRIVE_TOKEN="VOTRE_TOKEN"
export KDRIVE_DRIVE_ID="123456"
./kdrive-webdav-proxy

Avec un fichier de configuration

./kdrive-webdav-proxy --config config.toml

Le chemin du fichier peut aussi être fourni via la variable d'environnement KDRIVE_CONFIG.

Voir config.example.toml pour un exemple documenté.

Configuration

Priorité

Les sources de configuration s'appliquent dans cet ordre (la dernière gagne) :

  1. Valeurs par défaut
  2. Fichier de configuration TOML
  3. Variables d'environnement
  4. Flags CLI

Options

Option Clé TOML Variable d'env Flag Défaut Description
Adresse d'écoute addr KDRIVE_ADDR --addr :8080 Adresse et port d'écoute
Token API token KDRIVE_TOKEN --token Token API kDrive (requis)
ID du drive drive_id KDRIVE_DRIVE_ID --drive-id ID du drive kDrive (requis)
ID racine root_id KDRIVE_ROOT_ID --root-id "1" ID du dossier racine à exposer
TTL du cache cache_ttl KDRIVE_CACHE_TTL --cache-ttl 30s Durée de vie du cache métadonnées
Préfixe URL prefix KDRIVE_PREFIX --prefix / Préfixe du chemin WebDAV
Utilisateur auth_user KDRIVE_AUTH_USER --auth-user kdrive Nom d'utilisateur Basic Auth
Mot de passe auth_pass KDRIVE_AUTH_PASS --auth-pass Mot de passe Basic Auth
Proxies de confiance trusted_proxies [] IPs, CIDRs ou hostnames des reverse proxies
Fichier de config KDRIVE_CONFIG --config Chemin vers le fichier TOML

Authentification

L'authentification HTTP Basic Auth est activée dès que auth_pass est renseigné. Si le champ est vide, le proxy est accessible sans authentification.

Les requêtes OPTIONS (utilisées par les clients WebDAV pour la découverte) ne sont pas soumises à l'authentification.

Reverse proxy et trusted_proxies

Quand le proxy tourne derrière un reverse proxy (nginx, Caddy, etc.), l'IP vue par le serveur est celle du reverse proxy. Le paramètre trusted_proxies permet de récupérer la vraie IP du client depuis les headers X-Real-IP ou X-Forwarded-For.

Formats acceptés

# IP unique
trusted_proxies = ["10.0.1.50"]

# Bloc CIDR
trusted_proxies = ["10.0.0.0/8", "172.16.0.0/12"]

# Hostname (résolu par DNS à chaque requête, supporte les IP dynamiques)
trusted_proxies = ["mon-proxy.duckdns.org"]

# Mix
trusted_proxies = ["10.0.1.50", "mon-proxy.duckdns.org"]

# Tout accepter (développement uniquement)
trusted_proxies = ["*"]

Les headers sont lus dans cet ordre : X-Real-IP, puis X-Forwarded-For (première IP). Si la source de la connexion n'est pas dans trusted_proxies, les headers sont ignorés.

Exposer un sous-dossier

Par défaut, le proxy expose la racine du drive (root_id = "1"). Pour n'exposer qu'un sous-dossier spécifique, récupérez l'ID du dossier dans kDrive et renseignez-le :

root_id = "12345"

Cache

Les métadonnées des fichiers et dossiers sont mises en cache en mémoire avec un TTL configurable (cache_ttl). Le cache est automatiquement invalidé lors des opérations d'écriture (création, suppression, renommage, déplacement).

Exemple de déploiement

# config.toml
addr = "0.0.0.0:8080"
token = "VOTRE_TOKEN_API"
drive_id = "123456"
auth_user = "kdrive"
auth_pass = "un-mot-de-passe-fort"
trusted_proxies = ["mon-proxy.duckdns.org"]
./kdrive-webdav-proxy --config config.toml

Le client WebDAV se connecte ensuite à http://kdrive:un-mot-de-passe-fort@adresse:8080/.