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
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
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
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
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
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
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
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
15ac11b575
EventManager: add timestamp and name to scheduled event parameters
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-03-04 18:03:07 +01:00
Nicola Murino
ef2f3e51ea
EventManager: add more datetime placeholders
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-01-16 18:14:43 +01:00
Nicola Murino
e8c5f8ed81
command actions: restrict passing env vars
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-01-13 20:58:32 +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
ff13be4616
zip creation: avoid stat if not strictly required
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2025-01-03 11:43:09 +01:00
Nicola Murino
dee3f3f87a
EventManager: add placeholder for filename without extension
...
Fixes #1828
Fixes #1833
Co-authored-by: Per Osbeck <per.osbeck@consid.se >
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-12-23 19:08:48 +01:00
Nicola Murino
d3db80dc32
set stat: remove unecessary check
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-12-15 09:59:06 +01:00
Nicola Murino
599ee5a58f
EventManager: check file size for more events
...
Also add some defensive code
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-12-14 13:19:02 +01:00
Nicola Murino
7703f57122
rename: minor optimization
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-12-08 09:58:28 +01:00
Nicola Murino
e161015c67
upload: avoid a stat call if not strictly required
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-30 20:43:19 +01:00
Nicola Murino
10b2e5671b
silence lint warning
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-21 07:52:53 +01:00
Nicola Murino
ebc085da77
EventManager: always close the connection filesystem
...
closing the user filesystem is not enough here
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-21 07:52:49 +01:00
Nicola Murino
c37b7f0493
provider rule events: allows to filter by user groups
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-15 14:01:08 +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
b524da11e9
EventManager: disable commands by default
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-10 12:08:17 +01:00
Nicola Murino
88b1850b58
EventManager: allow to define the allowed system commands
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-11-01 11:37:33 +01:00
Nicola Murino
60558de728
proxy protocol: add more logs
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-31 18:04:55 +01:00
Nicola Murino
e4e31ec4fb
TestMaxSessionsSameConnection: make more reproducible
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-26 21:50:15 +02: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
ca41b59fc4
DirLister: returns appropriate protocol errors
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-16 19:04:09 +02:00
Nicola Murino
b23e67ae6a
EventManager: add escaped virtual path
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-12 11:25:07 +02:00
Nicola Murino
eba4c93efd
user: add additional emails
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-11 19:20:51 +02:00
Nicola Murino
4103344989
EventManager: add datetime placeholder
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-10-08 18:39:00 +02:00
Nicola Murino
126cb1ee0d
remove some useless hooks
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-09-27 15:52:51 +02:00
Nicola Murino
eeef23139d
EventManager: filter action execution based on event status
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-09-23 19:55:03 +02:00
Nicola Murino
14cabda5c2
update shortuid to v4
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-09-08 18:01:14 +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
321c3f00d2
fix lint warning
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-11 09:26:07 +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
68e62d3d9b
httpd: allow to use proxy protocol
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-10 21:02:38 +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
a5c5e85144
preserve metadata on copy/rename
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-08 18:44:26 +02:00
Nicola Murino
b94451f731
add builtin rules hook
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-08 07:41:39 +02:00
Nicola Murino
ce189e5065
IDP account check: preserve user profile
...
Fixes #1712
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-08-02 19:25:54 +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
b5c821795a
allow to customize name and log from the WebUI
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-24 09:14:27 +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
58de410850
nt: fix unused write warnings
...
Signed-off-by: Nicola Murino <nicola.murino@gmail.com >
2024-07-03 20:42:51 +02:00