mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-06 14:20:55 +03:00
eventmanager: add support for data retention checks
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -1836,6 +1836,30 @@ func getKeyValsFromPostFields(r *http.Request, key, val string) []dataprovider.K
|
||||
return res
|
||||
}
|
||||
|
||||
func getFoldersRetentionFromPostFields(r *http.Request) ([]dataprovider.FolderRetention, error) {
|
||||
var res []dataprovider.FolderRetention
|
||||
for k := range r.Form {
|
||||
if strings.HasPrefix(k, "folder_retention_path") {
|
||||
folderPath := r.Form.Get(k)
|
||||
if folderPath != "" {
|
||||
idx := strings.TrimPrefix(k, "folder_retention_path")
|
||||
retention, err := strconv.Atoi(r.Form.Get(fmt.Sprintf("folder_retention_val%s", idx)))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid retention for path %q: %w", folderPath, err)
|
||||
}
|
||||
options := r.Form[fmt.Sprintf("folder_retention_options%s", idx)]
|
||||
res = append(res, dataprovider.FolderRetention{
|
||||
Path: folderPath,
|
||||
Retention: retention,
|
||||
DeleteEmptyDirs: util.Contains(options, "1"),
|
||||
IgnoreUserPermissions: util.Contains(options, "2"),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func getEventActionOptionsFromPostFields(r *http.Request) (dataprovider.BaseEventActionOptions, error) {
|
||||
httpTimeout, err := strconv.Atoi(r.Form.Get("http_timeout"))
|
||||
if err != nil {
|
||||
@@ -1845,6 +1869,10 @@ func getEventActionOptionsFromPostFields(r *http.Request) (dataprovider.BaseEven
|
||||
if err != nil {
|
||||
return dataprovider.BaseEventActionOptions{}, fmt.Errorf("invalid command timeout: %w", err)
|
||||
}
|
||||
foldersRetention, err := getFoldersRetentionFromPostFields(r)
|
||||
if err != nil {
|
||||
return dataprovider.BaseEventActionOptions{}, err
|
||||
}
|
||||
options := dataprovider.BaseEventActionOptions{
|
||||
HTTPConfig: dataprovider.EventActionHTTPConfig{
|
||||
Endpoint: r.Form.Get("http_endpoint"),
|
||||
@@ -1867,6 +1895,9 @@ func getEventActionOptionsFromPostFields(r *http.Request) (dataprovider.BaseEven
|
||||
Subject: r.Form.Get("email_subject"),
|
||||
Body: r.Form.Get("email_body"),
|
||||
},
|
||||
RetentionConfig: dataprovider.EventActionDataRetentionConfig{
|
||||
Folders: foldersRetention,
|
||||
},
|
||||
}
|
||||
return options, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user