A remote file browser using SFTP
- Rust 71.1%
- JavaScript 15.6%
- HTML 13.2%
- Jinja 0.1%
| src | ||
| static | ||
| templates | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
GiraffePath
A web-based file browser and WebDAV server over SSH/SFTP, with OIDC authentication. No server-side installation required on the remote host — only SSH access.
Features
Core
- Browse files over SSH/SFTP
- Upload files
- Delete files (via FreeDesktop Trash)
- Restore files from Trash
- Create directories
- Rename / move files and directories (with cross-filesystem support)
- Download files
- Preview text files
Authentication & Security
- OIDC login (Google, etc.)
- CSRF protection + PKCE in OAuth2 flow
- Session fixation prevention
- Safe post-login redirect
- WebDAV Basic Auth with app tokens (argon2id hashed, stored per-user)
- SSH keys stored encrypted
- Multiple SSH key support with host picker
WebDAV
- PROPFIND (directory listing)
- GET / HEAD
- PUT
- DELETE (sends to Trash)
- MKCOL
- MOVE
- COPY
- Per-credential ACL rules (read/write/block per path)
- WebDAV credential management UI (create, regenerate, delete)
File Browser UI
- Breadcrumb navigation
- Click-to-edit breadcrumb navigation
- File detail preview pane
- Lazy-load file entries via SSE
- Fuzzy file search
- Keyboard shortcuts (j/k/h/l vim navigation)
- Remember selected row when navigating back
- Multi-select with bulk delete and move
- Bookmarks (GTK/Freedesktop
~/.config/gtk-3.0/bookmarks) - Favorites (per-row toggle, shown in sidebar)
- Mobile-responsive layout (off-canvas sidebar, touch-friendly)
File Sharing
- Share files/directories with expiry dates
- Allow upload to shared folders
- Rename files in shared folders
Infrastructure
- SSH connection pool
- Atomic file writes (temp file + rename pattern)
- Cross-filesystem move (SSH exec
cpfallback) .envfile support- ACL enforcement in file browser