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
d2ee43585a
remove x/crypto fork
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-09-21 14:21:47 +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
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
0265c4c4a1
update deps
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-05-31 20:30:58 +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
11d8fffd1b
remove obsoletes build constraints
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-04-20 17:15:40 +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
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
Nicola Murino
66ec11a19f
fix typo
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-03-08 15:49:30 +01:00
Nicola Murino
519d201e74
fix rsync test case
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-02-06 11:01:12 +01:00
Nicola Murino
e2b21ad946
ssh commands: fix for rsync with no arguments
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-01-15 19:23:23 +01:00
Nicola Murino
de3c987802
rsync: enforce a supported format and limit the allowed options
...
Many rsync options are unsafe to use in restricted environments
and may pose security risks.
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-01-13 19:41:58 +01:00
Nicola Murino
bf0961458c
remove some unnecessary string conversions
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-01-04 11:58:37 +01:00
Nicola Murino
e21c989038
logs: add a specific log structure for successful logins
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-12-07 10:29:33 +01:00
Nicola Murino
4a414f0fa4
test cases: fix some random failures
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-21 07:52:45 +01:00
Nicola Murino
ed5ff9c5cc
sftpd: remove allocator
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-21 07:52:24 +01:00
Nicola Murino
f22ec2275f
fix new lint warnings
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-10 20:58:22 +01:00
Nicola Murino
ae1487d733
fix connection limits
...
an SFTP client can start multiple transfers on a single connection
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-26 21:18:19 +02:00
Nicola Murino
d783ffc13f
fix new lint warnings
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-14 08:46:18 +02:00
Nicola Murino
ec4bf3d76a
update deps and replace deprecated methods
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-11 08:59:21 +02:00
Nicola Murino
81433e00d1
event action: add update modtime to fs rename
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-09 20:18:33 +02:00
Nicola Murino
d94f80c8da
replace utils.Contains with slices.Contains
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-24 18:27:13 +02:00
Nicola Murino
bd5eb03d9c
replace hand-written slice utilities with methods from slices package
...
SFTPGo depends on Go 1.22 so we can use slices package
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-24 18:17:55 +02:00
Nicola Murino
6ba1198c47
sftpd: remove unused folder prefix from Connection struct
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-24 16:44:25 +02:00
Nicola Murino
fef388d8cb
don't track quota for private virtual folders
...
they are included within the user quota.
This is a backward incompatible change.
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-13 21:02:40 +02:00
Nicola Murino
92849ca473
quota: move user and folder management to a common method
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-13 19:30:40 +02:00
Nicola Murino
356795f8b0
add a test case for listing files with long names
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-06-22 19:23:02 +02:00
Nicola Murino
8bc08b25dc
sftp: limit max file list
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-06-17 19:24:03 +02:00
Nicola Murino
5bde4b92a2
fix test cases
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-29 19:35:42 +02:00
Nicola Murino
0127fc188b
SSH: allow to configure minimum key size for DHGEX
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-23 18:08:16 +02:00
Nicola Murino
50a3c0d911
defender: allow to impose a delay between login attempts
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-18 10:35:54 +02:00
Nicola Murino
665a980d62
improve error wrapping
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-14 19:10:36 +02:00
Nicola Murino
eb0c6549c4
micro optimization
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-12 18:10:03 +02:00
Nicola Murino
e7627bfcd3
fix test cases after the change in the previous commit
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-10 15:58:07 +02:00
Nicola Murino
5d24d665bd
add an util method to convert []byte to string
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-08 19:01:58 +02:00
Nicola Murino
d3f42e39db
move server version setting to common section
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-05-01 19:42:09 +02:00
Nicola Murino
aa426016f2
sftpd: remove folder_prefix
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-04-26 11:43:25 +02:00
Nicola Murino
26d19abf61
remove reading data provider username and password from file
...
This reverts #1455 because the contributor cannot sign the CLA
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-04-26 10:57:38 +02:00
Nicola Murino
ad7dcdb628
ssh: remove the ability to fully customize the software version
...
many clients rely on the version string to enable/disable some features.
We only allow to hide the version number, clients must be able to reliably
identify SFTPGo
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-04-20 17:15:15 +02:00
Nicola Murino
d8341509e7
micro optimization for external process wrapping
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-04-16 18:34:40 +02:00
JK
2bbd8b3a5f
fix using rsync if running sftpgo as non-root user ( #1535 )
...
Signed-off-by: Jerome Küttner <j.kuettner@mittwald.de >
2024-04-15 12:52:08 +02:00
Nicola Murino
456517af87
notifier plugin: add support for login succeeded events
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-04-10 18:39:08 +02:00
Nicola Murino
be2ed1089c
ssh: add username to sftp auth errors
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-02-25 15:45:50 +01:00
Nicola Murino
f7d9e56cac
ssh: remove moduli, log negotiated algorithms
...
Fixes #1324
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-02-24 20:35:09 +01:00
Nicola Murino
51ae2d7301
add copy permission
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-02-20 18:19:09 +01:00
Nicola Murino
162376fd74
add a nil check for attributes
...
just defensive code
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-02-18 10:14:05 +01:00