mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-08 07:10:56 +03:00
WebClient/REST API: add sharing support
This commit is contained in:
@@ -182,6 +182,10 @@ func restoreBackup(content []byte, inputFile string, scanQuota, mode int, execut
|
||||
return err
|
||||
}
|
||||
|
||||
if err = RestoreShares(dump.Shares, inputFile, mode, executor, ipAddress); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
logger.Debug(logSender, "", "backup restored, users: %v, folders: %v, admins: %vs",
|
||||
len(dump.Users), len(dump.Folders), len(dump.Admins))
|
||||
|
||||
@@ -244,6 +248,34 @@ func RestoreFolders(folders []vfs.BaseVirtualFolder, inputFile string, mode, sca
|
||||
return nil
|
||||
}
|
||||
|
||||
// RestoreShares restores the specified shares
|
||||
func RestoreShares(shares []dataprovider.Share, inputFile string, mode int, executor,
|
||||
ipAddress string,
|
||||
) error {
|
||||
for _, share := range shares {
|
||||
share := share // pin
|
||||
s, err := dataprovider.ShareExists(share.ShareID, "")
|
||||
if err == nil {
|
||||
if mode == 1 {
|
||||
logger.Debug(logSender, "", "loaddata mode 1, existing share %#v not updated", share.ShareID)
|
||||
continue
|
||||
}
|
||||
share.ID = s.ID
|
||||
err = dataprovider.UpdateShare(&share, executor, ipAddress)
|
||||
share.Password = redactedSecret
|
||||
logger.Debug(logSender, "", "restoring existing share: %+v, dump file: %#v, error: %v", share, inputFile, err)
|
||||
} else {
|
||||
err = dataprovider.AddShare(&share, executor, ipAddress)
|
||||
share.Password = redactedSecret
|
||||
logger.Debug(logSender, "", "adding new share: %+v, dump file: %#v, error: %v", share, inputFile, err)
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to restore share %#v: %w", share.ShareID, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RestoreAPIKeys restores the specified API keys
|
||||
func RestoreAPIKeys(apiKeys []dataprovider.APIKey, inputFile string, mode int, executor, ipAddress string) error {
|
||||
for _, apiKey := range apiKeys {
|
||||
|
||||
Reference in New Issue
Block a user