Commit Graph

636 Commits

Author SHA1 Message Date
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
a768dac29d jwt: increase leeway and add some tests
also export a constant for the Cookie name

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-11 14:14:21 +02:00
Nicola Murino
90685d8ef2 fix random failure in test cases
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-10 21:30:05 +02:00
Nicola Murino
fa70ff35c4 Add debug log to investigate intermittent test failure in CI
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-10-08 19:22:35 +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
35525e22e9 remove rsync support
rsync was executed as an external command, which means we have no insight
into or control over what it actually does.
From a security perspective, this is far from ideal.

To be clear, there's nothing inherently wrong with rsync itself. However,
if we were to support it properly within SFTPGo, we would need to implement
the low-level protocol internally rather than relying on launching an external
process. This would ensure it works seamlessly with any storage backend,
just as SFTP does, for example.
We recommend using one of the many alternatives that rely on the SFTP
protocol, such as rclone

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-28 18:15:15 +02:00
Nicola Murino
e892748ef4 system commands: recursively verify required permissions
If any permission is missing at any level, return a "Permission Denied"
error

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-28 09:36:19 +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
cdaefbf04a Fix flaky test case
ensure the user filter is set on the rule so notification triggers
only when expected.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-22 09:16:28 +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
7f03dc0fab convert action migration: allow to import any command action
EnabledCommands are initialized after the migration so allow any
command, they will be denied if not allowed and this is temporary.
The migration will be removed in the future

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-20 17:59:15 +02:00
Nicola Murino
b160090866 httpdtest: remove unused constant
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-09-07 18:19:45 +02:00
Nicola Murino
a5dd529d88 node token: embed permissions directly in JWT
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-22 15:57:41 +02:00
Nicola Murino
6bde42fc3f dataprovider: prevent action execution after external authentication
As per the documentation for external authentication, provider actions
should  not be executed post-authentication.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-21 07:20:06 +02:00
Nicola Murino
a2d3613250 dataprovider: preserve initial sort order for related resources
Folders and groups now retain their initial order, improving compatibility
and predictability when used with Terraform

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-19 16:11:53 +02:00
Nicola Murino
81a9813376 Windows: fix build
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-17 13:35:29 +02:00
Nicola Murino
63366b0007 virtual folders: fix path placeholder check
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-17 12:42:37 +02:00
Nicola Murino
e7a1128574 remove AWS Marketplace specific code
it is out of context for the Open-Source edition

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-17 12:29:57 +02:00
Nicola Murino
75ad6346c3 removed some unused constants
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-02 19:00:15 +02:00
Nicola Murino
b2948a5255 sshd: removed Git support
Git integration has been removed as it is out of scope for a file transfer
solution like SFTPGo.

Maintaining Git support introduces unnecessary complexity and potential
security risks due to reliance on system commands.

In particular, allowing Git operations could enable authorized users to
upload repositories containing hooks, which might then be executed and abused.

To reduce the attack surface and simplify the codebase, Git support has been
fully dropped.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-02 18:58:03 +02:00
Nicola Murino
ddbe40cefa HTTPD, WebDAV: use http.ResponseController
backport from Enterprise edition

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-08-02 18:00:45 +02:00
Nicola Murino
9a0137befb config: redact master key string
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-22 19:53:19 +02:00
Nicola Murino
0bac81816c WebClient: add an id field to files list to simplify UI logic
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-22 18:59:20 +02:00
Nicola Murino
76f6dc06de Log output from command hooks
Re-adds #1208 now that the CLA has been signed.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-20 10:45:48 +02:00
Nicola Murino
c2835bc19d Enable setting password change requirements in user templates
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-17 19:35:17 +02:00
Nicola Murino
fe78974b47 remove data retention hook
use the EventManager instead

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-14 18:22:32 +02:00
Nicola Murino
7317674b41 Remove legacy data retention API
Data retention is now managed via the EventManager, introduced in v2.4.0.
This allows scheduling retention checks and sending email or HTTP notifications,
making the old API redundant.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-12 22:20:54 +02:00
Nicola Murino
bdd097b1c7 s3: use multipart uploads only when multiple parts are needed
Fixes #2016

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-07-11 18:45:30 +02:00
Nicola Murino
ff5ea7cd40 S3: don't use manager for uploads
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-06-16 18:48:04 +02:00
Nicola Murino
d05250923b Revert "GCS: allow a 10 seconds timeout for client creation"
This reverts commit b2e9935049.

Fixes #2000

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-06-10 20:17:35 +02:00
Nicola Murino
5ca3522dc0 EventManager: avoid copying user struct when updating parameters
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-06-10 20:04:59 +02:00
Nicola Murino
0265c4c4a1 update deps
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-05-31 20:30:58 +02:00
Nicola Murino
b6873768b2 replace strings.Split with SplitSeq
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-05-31 19:03:41 +02:00
Nicola Murino
60af36813b gcs: improve error checking
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-05-23 19:56:21 +02:00
Nicola Murino
3f7533b86a update deps ...
... and adapt the code to the new constants I added to
golang.org/x/crypto/ssh

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-05-19 19:42:36 +02:00
Nicola Murino
9e2230cc33 Support leading and trailing spaces in user passwords
This improves compatibility with external authentication providers that
allow such characters in passwords.

Passwords created via the WebAdmin UI are still sanitized to prevent user
confusion.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-26 14:31:13 +02:00
Nicola Murino
1c48e51384 EventManager: escape email body when content type is text/html
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-24 19:01:17 +02:00
Nicola Murino
683d00caec cmd: remove startsubsys command
SFTPGo is not designed to be used as an OpenSSH subsystem — many
features do not work correctly in subsystem mode. The functionality
was added after a user request in the pkg/sftp repository to
demonstrate that it was feasible, not for actual practical use.

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-20 18:51:01 +02:00
Nicola Murino
c5e76f303a commands: initialize plugins if we have a KMS
this is necessary to be able to read KMS secrets stored within
the data provider

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-20 18:48:19 +02:00
Nicola Murino
11d8fffd1b remove obsoletes build constraints
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-20 17:15:40 +02:00
Nicola Murino
0da8adb7ac EventManager: breaking change for placeholder names
Placeholder names must now be in the format:

{{.VirtualPath}}

instead of:

{{.VirtualPath}}

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-14 09:11:44 +02:00
Nicola Murino
aea036715c OIDC: ensure token username adheres to naming conventions
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-08 18:25:16 +02:00
Nicola Murino
f41f00fec2 httpd: allow to configure referrer policy header
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-07 18:48:48 +02:00
Nicola Murino
5954d4ae20 sshconn: use a generic io.Closer instead of a net.Conn
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-04-02 18:52:06 +02:00
Nicola Murino
d95d773570 oidc: allow login if the password method is disabled
isLoggedInWithOIDC returns false before login so we need to add
a specific check

Fixes #1879

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-03-29 20:28:49 +01:00
Nicola Murino
cf573fc743 pre-login hook: fix loading user after update
Fixes #1890
Closes #1891

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-03-29 17:29:28 +01:00
Nicola Murino
2255c5f000 upgrade golangci-lint to v2
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
2025-03-29 11:36:19 +01:00