Some feedback, based on having tried out surfer (great little app, by the way!)
- The "App passwords" dropdown for a surfer instance mentions SFTP, which seems a little wrong.
- It might be useful to mention _webdav in the documentation, as an alternative for interacting with surfer?
- It would be great to be able to customize the handling of some mimetypes. For example, when uploading a QML file, surfer will serve it up with application/octet-stream, rather than a text type, which makes browsers offer to download it, which is a bit annoying given how they are basically just text.
Lastly, a small script here for anyone who wants basic "upload this file" functionality but cannot use npm for whatever reason. You are expected to have a file ~/.surfer/auth with two lines (user/pass), and ~/.server/server which contains the bare hostname to upload to. You can use Cloudron's app passwords feature to avoid using your "regular" password, for some added paranoia.
#!/usr/bin/env bash set -euo pipefail user=$(head -n1 ~/.surfer/auth) password=$(tail -n1 ~/.surfer/auth) server=$(cat ~/.surfer/server) # the file to upload... FILE=up.sh.txt curl -T "$FILE" -u "$user:$password" https://$server/_webdav/ echo "Uploaded to https://$server/$(basename $FILE)"
A few other small suggestions while I'm thinking of it:
- It would be nice if the admin UI had the ability to multiselect (and perhaps "select all") files, to delete a bunch of stuff at once.
- It would be neat if it were possible to write-protect a file to prevent it being overwritten or deleted without removing the write protection
@robi indeed I have, some like better content type handling and multiselect are in preparation.
The _webdav point is I think already fixed, as it is mentioned in the settings dialog within surfer.
Write-protection is going to be harder. Surfer does not even have any database or so to store per-file/folder metadata.
@nebulon My thinking for write protection was actually that it could - literally - use filesystem permissions rather than introducing a database. Check if the file is writable before deleting/writing, and fail if it isn't writable (or offer to override, which will have to chmod +w it)