Two libraries differing only by letter case collide into one folder on Windows clients
Target repo: haiwen/seafile (server) + SeaDrive Windows client Versions: Seafile Server CE 12.0.14 (Linux) · SeaDrive client 3.0.22 (Windows)
Summary
Seafile's storage and its Linux/web UI are case-sensitive, so the server happily accepts two
libraries whose names differ only by letter case, e.g. sample and Sample. On a Windows client
(SeaDrive virtual drive, NTFS/Win32 path resolution is case-insensitive), both libraries map
to the same virtual path (e.g. S:\sample ≡ S:\Sample) and end up colliding into a single
folder: content from both libraries appears mixed under one folder, and it is ambiguous which
library a file actually belongs to. Users can silently browse, edit and sync into the wrong
library without any warning.
Steps to reproduce
- On the web UI or via API (server on Linux), user creates two libraries:
sampleandSample(identical names modulo case). The server accepts both — no error. - Sign in with a Windows SeaDrive client as a user who has access to both libraries.
- Open the SeaDrive drive — instead of two distinct entries, the two libraries resolve to one shared folder path and their contents get mixed/confused.
Actual result
- Server-side (and on Linux seadrive-fuse mounts) the two libraries remain distinct.
- On Windows the virtual drive cannot represent both names; the libraries are merged into a
single folder view. Files from
sampleandSampleappear interleaved; writes may land in either library depending on which entry the shell resolves. - No warning is ever shown, on server or client.
(We hit exactly this in production with sample vs Sample. Workaround used: rename one library
to a clearly different name, sample.bak, and adopt a manual rule to always verify names
case-exactly.)
Expected result
The server should offer a compatibility mode — call it "Windows mode" — which, when enabled:
- Rejects creating a library whose name matches an existing library name case-insensitively
(e.g.
Samplewhensampleexists), with a clear error message. - Ideally also applies the same case-insensitive uniqueness check to folders within a library
(same collision happens for
foldervsFolderinside one library on Windows clients).
This prevents the problem at the source instead of leaving it to be discovered as silent data mixing on Windows clients.
Environment
- Seafile CE 12.0.14, Linux server, multiple users on Windows SeaDrive 3.0.22.
Source: haiwen/seafile