2360 Commits
Author SHA1 Message Date
Nicola Murino 9888a3d169 CI: update Go version
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
v2.7.5
2026-07-17 18:25:27 +02:00
Nicola Murino 13da9740c3 set version to 2.7.5
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-17 18:23:56 +02:00
Nicola Murino d9a1835380 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-17 18:20:14 +02:00
Nicola Murino 4f751232d7 sftpd: fix panic on malformed SSH subsystem request
Parse the payload with ssh.Unmarshal into a single string field, which
validates the wire format and rejects short or malformed payloads, and
compare the decoded name to "sftp".

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-17 18:11:28 +02:00
Nicola Murino 385c840763 suppress a lint warning
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-12 08:44:25 +02:00
Nicola Murino ac4195f7f2 totp: harden 2FA enrollment
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-12 08:26:47 +02:00
Nicola Murino 35e0a07458 WebUIs: clear also i18n-options before localizing a text
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-12 08:26:40 +02:00
Nicola Murino 6bb3e769db totp: harden one-time passcode use
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-10 17:23:21 +02:00
Nicola Murino 6617b5cc9c invalidate WebDAV user cache on user creation
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-09 19:43:42 +02:00
Nicola Murino 8e0675391b update deps and nfpm
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-06 20:26:51 +02:00
Nicola Murino 8751655d1e user: assign each connection an independent fs cache
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-06 15:19:51 +02:00
Nicola Murino ec34d489b8 httpd: make sure to always close connection for shares
double closes are no-op

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-06 12:48:13 +02:00
Nicola Murino 555bf6842a user: clear recovery codes in SetEmptySecrets
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-06 11:39:14 +02:00
Nicola Murino 5c1286eaed skip POSIX specific tests on Windows
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
v2.7.4
2026-06-27 18:01:07 +02:00
Nicola Murino 4bba00cd6f vfs: refactor Readlink
add new test cases. Most of this code is temporary and will be
removed once we'll switch to os.Root

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-27 18:01:04 +02:00
Nicola Murino f9a6df45b9 vfs: fix symlink failure introduced in previous commits
rewrite the checks so that they can handle short paths on Windows
and home dir over symlinks

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-27 11:13:17 +02:00
Nicola Murino 9a41a3e227 update sponsors section
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-26 08:31:11 +02:00
Nicola Murino 1865e36380 suppress a lint warning
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 11:16:10 +02:00
Nicola Murino da0a440124 set version to 2.7.4
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:08:34 +02:00
Nicola Murino 9c3ed674fe CI: update actions
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:07:09 +02:00
Nicola Murino 05390b586c update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:05:53 +02:00
Nicola Murino 19da7af8ed update js deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:03:43 +02:00
Nicola Murino fdeaa0a705 fix symlink test cases
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:03:37 +02:00
Nicola Murino e760178473 update security policy
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:03:16 +02:00
Nicola Murino 55e0cf15b9 harden symlink checks and add more test cases
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:02:32 +02:00
Nicola Murino d6538e5601 common: require create_symlinks on both the link and the target directory
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:02:26 +02:00
Nicola Murino db64d32fdb httpd: harden and unify the redirect target validation
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:02:21 +02:00
Nicola Murino 725be081bc httpd: clean the web client login redirect target
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:02:11 +02:00
Nicola Murino 97a0d2130f httpd: return after CSRF failure in web client login
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:02:06 +02:00
Nicola Murino 239eda778b oidc redirect: preserve next url for WebClient
Fixes #2241

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 09:01:51 +02:00
Nicola Murino 04e7798f3a kms: fail fast on an unavailable secret provider
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 08:50:53 +02:00
Nicola Murino a4304835ab Add dedicated setting to control symlink creation
Symlink creation is now disabled by default

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 08:50:47 +02:00
Nicola Murino 96850d2563 i18n: improve some help texts
Fixes #2242
Closes #2243

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-08 14:03:36 +02:00
Nicola Murino 47af8ba9e3 openapi: clarify speed limits and max sessions
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-08 13:13:14 +02:00
Nicola Murino b2d5c68b98 fix overquota transfers check
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-04 08:15:19 +02:00
Nicola Murino ec3c16f047 CI: create release in draf mode
this should allow to enable immutable release

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-31 09:28:41 +02:00
Nicola Murino a779e50448 set version to 2.7.3
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
v2.7.3
2026-05-30 21:45:57 +02:00
Nicola Murino b9cf2a3193 update js and css deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 19:31:04 +02:00
Nicola Murino d29d1f5a5a update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 18:34:57 +02:00
Nicola Murino dae8cac61c CI: update Go and nfpm version
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:42:28 +02:00
Nicola Murino 101b42c431 set version to 2.7.2
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:40:58 +02:00
Nicola Murino 522e2936b9 keyboard interactive program: check for scanner errors
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:39:46 +02:00
Nicola Murino 09628fb708 suppress lint warning
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:31:59 +02:00
Nicola Murino b5409a4781 httpd: always download share and user files as attachments
The `inline` query parameter on the browsable-share file download
and on the authenticated user file download suppressed the
`Content-Disposition: attachment` header. A file placed in a share
or user home (for example an HTML document) could then be served
inline as `text/html` and execute in SFTPGo's web origin,
allowing stored XSS through a shared link.

These endpoints now always respond with `Content-Disposition:
attachment`. The `inline` parameter is removed from the API and from
the OpenAPI schema: it dates back to a time when the WebClient had no
built-in viewers, and the current web client previews images, video,
PDF and other files directly within shares through its own viewer
endpoints, so the flag is obsolete.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:30:33 +02:00
Nicola Murino b931573a07 fix test cases
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:16:34 +02:00
Nicola Murino 31fc0b5eb4 admins: restrict 2FA reset on other admins to super-admins
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:04:21 +02:00
Nicola Murino c425f8a745 CI: use Go 1.26 in FreeBSD tests
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:04:16 +02:00
Nicola Murino c495d5a479 Event Manager: neutralize CSV formula injection
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:04:08 +02:00
Nicola Murino 6c723ff2bd config: fix default naming rules in code
align with the value in the json file

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:04:00 +02:00
Nicola Murino 47bbff2974 fs: enforce a configurable minimum entropy for data-encryption secrets
The CryptFs passphrase and the S3 SSE-C key are used directly as
data-at-rest encryption key material, yet they were accepted with no
strength check, so an operator could protect encrypted data with a
trivially guessable secret.

Add common.secret_min_entropy (default 80): when one of these
secrets is submitted in plain text it must pass a minimum-entropy
check before it is encrypted and stored. The check runs on
plain-text input, so secrets that are already stored keep working even
if the threshold is later raised. The estimate is a heuristic used to
reject obviously weak input, not a measure of cryptographic strength:
always supply key material generated by a CSPRNG.

Thanks to Vishal Shukla (@shukla304) for the report.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 13:03:44 +02:00