all: Automatic/disabled folder-config when receive-encrypted (#7327)

This commit is contained in:
Simon Frei
2021-02-12 22:51:29 +01:00
committed by GitHub
parent 7e4e2f3720
commit 80fc238bec
13 changed files with 221 additions and 130 deletions
+19 -6
View File
@@ -1289,7 +1289,7 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
tempIndexFolders := make([]string, 0, len(folders))
paused := make(map[string]struct{}, len(folders))
seenFolders := make(map[string]struct{}, len(folders))
updatedPending := make([]map[string]string, 0, len(folders))
updatedPending := make([]updatedPendingFolder, 0, len(folders))
deviceID := deviceCfg.DeviceID
for _, folder := range folders {
seenFolders[folder.ID] = struct{}{}
@@ -1304,14 +1304,16 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
l.Infof("Ignoring folder %s from device %s since we are configured to", folder.Description(), deviceID)
continue
}
if err := m.db.AddOrUpdatePendingFolder(folder.ID, folder.Label, deviceID); err != nil {
recvEnc := len(ccDeviceInfos[folder.ID].local.EncryptionPasswordToken) > 0
if err := m.db.AddOrUpdatePendingFolder(folder.ID, folder.Label, deviceID, recvEnc); err != nil {
l.Warnf("Failed to persist pending folder entry to database: %v", err)
}
indexSenders.addPending(cfg, ccDeviceInfos[folder.ID])
updatedPending = append(updatedPending, map[string]string{
"folderID": folder.ID,
"folderLabel": folder.Label,
"deviceID": deviceID.String(),
updatedPending = append(updatedPending, updatedPendingFolder{
FolderID: folder.ID,
FolderLabel: folder.Label,
DeviceID: deviceID,
ReceiveEncrypted: recvEnc,
})
// DEPRECATED: Only for backwards compatibility, should be removed.
m.evLogger.Log(events.FolderRejected, map[string]string{
@@ -2022,6 +2024,10 @@ func (m *model) LoadIgnores(folder string) ([]string, []string, error) {
}
}
if cfg.Type == config.FolderTypeReceiveEncrypted {
return nil, nil, nil
}
// On creation a new folder with ignore patterns validly has no marker yet.
if err := cfg.CheckPath(); err != nil && err != config.ErrMarkerMissing {
return nil, nil, err
@@ -3177,3 +3183,10 @@ func newFolderConfiguration(w config.Wrapper, id, label string, fsType fs.Filesy
fcfg.Path = path
return fcfg
}
type updatedPendingFolder struct {
FolderID string `json:"folderID"`
FolderLabel string `json:"folderLabel"`
DeviceID protocol.DeviceID `json:"deviceID"`
ReceiveEncrypted bool `json:"receiveEncrypted"`
}
+2 -2
View File
@@ -4177,7 +4177,7 @@ func TestPendingFolder(t *testing.T) {
setDevice(t, w, config.DeviceConfiguration{DeviceID: device2})
pfolder := "default"
if err := m.db.AddOrUpdatePendingFolder(pfolder, pfolder, device2); err != nil {
if err := m.db.AddOrUpdatePendingFolder(pfolder, pfolder, device2, false); err != nil {
t.Fatal(err)
}
deviceFolders, err := m.PendingFolders(protocol.EmptyDeviceID)
@@ -4193,7 +4193,7 @@ func TestPendingFolder(t *testing.T) {
device3, err := protocol.DeviceIDFromString("AIBAEAQ-CAIBAEC-AQCAIBA-EAQCAIA-BAEAQCA-IBAEAQC-CAIBAEA-QCAIBA7")
setDevice(t, w, config.DeviceConfiguration{DeviceID: device3})
if err := m.db.AddOrUpdatePendingFolder(pfolder, pfolder, device3); err != nil {
if err := m.db.AddOrUpdatePendingFolder(pfolder, pfolder, device3, false); err != nil {
t.Fatal(err)
}
deviceFolders, err = m.PendingFolders(device2)