750 Commits
Author SHA1 Message Date
Nicola Murino 36a48a4a19 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-10-03 15:26:29 +02:00
Nicola Murino ba53d28fe6 Revert "remove AWS Marketplace specific code"
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-09-27 19:44:36 +02:00
Nicola Murino 1cc81798ba update gopsutil to v4
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-09-27 09:19:14 +02:00
Nicola Murino fc15873eab update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-09-18 14:50:07 +02:00
Nicola Murino 17a855f8e6 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-09-07 19:43:44 +02:00
Nicola Murino c737df6cd4 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-08-31 21:17:39 +02:00
Nicola Murino ffeec76674 webdav: return the correct ETag after upload, or no ETag if unavailable
Fixes #2282

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-08-27 15:27:27 +02:00
Nicola Murino 5a4ff1a0b0 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-08-03 22:45:50 +02:00
Nicola Murino 6cce58233c virtual folders: add subpath support
A virtual folder mapping can now re-root the mount onto a sub-path of
the folder: the mount at the virtual path serves the folder starting
from the configured subpath, which stays invisible in the virtual tree.
The same folder can be mapped multiple times with distinct subpaths;
quota remains a property of the whole folder, so every mapping must use
the same limits.

Supported for local, encrypted, S3, GCS, Azure Blob and SFTP folders.

Fixes #2037

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-18 16:19:43 +02:00
Nicola Murino 2332bcb41d update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-17 18:15:08 +02:00
Nicola Murino 95b290c93b update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-12 08:26:58 +02:00
Nicola Murino 13c9f698c9 fix error detection for HTTP and WebDAV uploads
Fixes #2260

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-09 17:27:49 +02:00
Nicola Murino f520d2aea3 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-06 20:28:11 +02:00
Nicola Murino 661d77f47b vfs: migrate OsFs/CryptFs to os.Root and remove temp_path
Confine all local filesystem access to an os.Root, with path resoultion
enforced by the underlying OS.

Behavior changes an upgrading deployment may notice:

- temp_path is removed and ignored if still configured. Its purpose
  was to stage files (atomic uploads, scratch and streaming data)
  outside the user's storage and rename them into place, and that is
  fundamentally incompatible with the confinement: an os.Root cannot
  rename a file in from outside the root, so every staged upload would
  degrade to a full copy-then-delete even when temp_path is on the
  same filesystem, defeating the very atomicity the option existed to
  provide. It was not a great idea before this change either: a
  temp_path on a different device already turned the final rename into
  a silent full copy. Staged and scratch files (the atomic upload
  temporary, the CryptFs download pipe backing file) now live in the
  storage root itself, on the same filesystem as the data, so the
  final rename stays atomic.

- Cross-folder / cross-root renames are no longer atomic. A rename
  spanning the home and a local virtual folder, or two local folders,
  falls back to copy-then-delete: slower for large data even on the
  same device, and a midway failure can leave a partial tree at the
  destination. Symlinks and other non-regular entries inside a moved
  directory are skipped, not copied, and the rename still reports
  success. File mode bits are not preserved; regular files keep their
  modification time, directories do not.

- Absolute symlinks created outside SFTPGo, or by versions predating
  this change, are no longer traversable and Readlink rejects them with
  permission denied, even when the target is inside the root: os.Root
  refuses an absolute link target regardless of where it points.
  Symlinks created through SFTPGo are stored relative to the link
  directory and keep working.

- Execute-only home directories (e.g. mode 0111) are unusable:
  os.OpenRoot requires read permission, so every operation fails with
  permission denied until the directory is made readable, where
  previously only the listing failed. Since the root open is retried on
  demand, fixing the permissions (or creating a missing home
  externally) makes the same connection work again without
  reconnecting.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-07-06 13:08:12 +02:00
Nicola Murino 68887961bd update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-26 21:19:56 +02:00
Nicola Murino 18391d62ef update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-21 08:35:16 +02:00
Nicola Murino 352476c1a0 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-06-08 14:21:49 +02:00
Nicola Murino ce2729f824 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-30 18:36:03 +02:00
Nicola Murino 6e543c6f08 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-15 14:56:09 +02:00
Nicola Murino 6a662f015c update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-05-10 15:31:28 +02:00
Nicola Murino 529732b019 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-04-19 10:59:22 +02:00
Nicola Murino 7ba1cce65f update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-04-18 21:25:28 +02:00
Nicola Murino 4f8369954e update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-03-28 10:20:16 +01:00
Nicola Murino dda97dd758 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-03-19 19:51:22 +01:00
Nicola Murino baedf15e0e update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-03-12 19:50:41 +01:00
Nicola Murino 7a9f5eb50c update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-02-07 20:46:16 +01:00
Nicola Murino e48954f05c update deps
replace deprecated WithCredentialsJSON with WithAuthCredentialsJSON.
This change explicitly enforces `option.ServiceAccount` as the
required credential type from JSON files

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-02-04 21:18:50 +01:00
Nicola Murino c26cfa364f log: remove uncessary dependency
ftpserverlib use slog now

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2026-02-04 19:33:40 +01:00
Nicola Murino 4a091d6c24 logger: remove journald support
It was only used by the removed startsubsys mode.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-12-27 16:41:26 +01:00
Nicola Murino 891248e7c9 update deps
added a slog/log adapter for ftpserverlib 0.28.0

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-12-27 11:48:06 +01:00
Nicola Murino babdee5be1 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-12-20 17:58:57 +01:00
Nicola Murino d0f4c6423e update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-12-11 08:44:52 +01:00
Nicola Murino 0cf9036f47 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-12-06 22:10:29 +01:00
Nicola Murino e608805b13 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-11-30 12:29:42 +01:00
Nicola Murino 32cc426cb9 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-11-20 09:00:39 +01:00
Nicola Murino 4230da8e7d s3: implement multipart downloads without using the S3 Manager
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-11-19 18:53:27 +01:00
Nicola Murino accb9703d0 back to development
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-26 08:14:24 +01:00
Nicola Murino 29c635a9a6 update version and deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-23 18:26:44 +02:00
Nicola Murino f21c3d2af2 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-09 20:46:29 +02:00
Nicola Murino 314bb5c886 update deps and nfpm
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-08 18:51:52 +02:00
Nicola Murino 0ae2354fed JWT: replace jwtauth/jwx with lightweight wrapper around go-jose
We replaced the jwtauth and jwx libraries with a minimal custom wrapper
around go-jose because we don’t need the full feature set provided by jwx.
Implementing our own wrapper simplifies the codebase and improves
maintainability.

Moreover, go-jose depends only on the standard library, resulting in a
leaner dependency that still meets all our requirements.

This change also reduces the SFTPGo binary size by approximately 1MB

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-08 18:10:39 +02:00
Nicola Murino 9ca35c3555 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-04 11:42:35 +02:00
Nicola Murino 3f21db14e4 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-28 09:36:28 +02:00
Nicola Murino f4092b9f9e sftpd: use VerifiedPublicKeyCallback
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-28 09:22:27 +02:00
Nicola Murino 255ad5f6db remove automaxprocs: no longer required with Go 1.25
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-22 09:16:14 +02:00
Nicola Murino 29e9d95088 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-21 14:21:57 +02:00
Nicola Murino 952df50a98 remove ftpserverlib fork
the correct flow is to add features to the upstream library first

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-21 14:21:53 +02:00
Nicola Murino d2ee43585a remove x/crypto fork
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-21 14:21:47 +02:00
Nicola Murino 19d1a0e0c1 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-22 15:57:55 +02:00
Nicola Murino 0f6202f059 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-17 12:34:35 +02:00