gui, lib: Handle pw adding remote encrypted folder (fixes #7705) (#7772)

This commit is contained in:
Simon Frei 2021-06-17 13:53:02 +02:00 committed by GitHub
parent cb5ef250f4
commit ac2988a485
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 165 additions and 111 deletions

View File

@ -804,6 +804,14 @@ angular.module('syncthing.core')
}); });
} }
$scope.pendingIsRemoteEncrypted = function(folderID, deviceID) {
var pending = $scope.pendingFolders[folderID];
if (!pending || !pending.offeredBy || !pending.offeredBy[deviceID]) {
return false;
}
return pending.offeredBy[deviceID].remoteEncrypted;
};
$scope.refreshFailed = function (page, perpage) { $scope.refreshFailed = function (page, perpage) {
if (!$scope.failed || !$scope.failed.folder) { if (!$scope.failed || !$scope.failed.folder) {
return; return;
@ -1932,17 +1940,20 @@ angular.module('syncthing.core')
$('#globalChanges').modal(); $('#globalChanges').modal();
}; };
function editFolderModal() { function editFolderModal(initialTab) {
initVersioningEditing(); initVersioningEditing();
$scope.currentFolder._recvEnc = $scope.currentFolder.type === 'receiveencrypted'; $scope.currentFolder._recvEnc = $scope.currentFolder.type === 'receiveencrypted';
$scope.folderPathErrors = {}; $scope.folderPathErrors = {};
$scope.folderEditor.$setPristine(); $scope.folderEditor.$setPristine();
if (!initialTab) {
initialTab = "#folder-general";
}
$('.nav-tabs a[href="' + initialTab + '"]').tab('show');
$('#editFolder').modal().one('shown.bs.tab', function (e) { $('#editFolder').modal().one('shown.bs.tab', function (e) {
if (e.target.attributes.href.value === "#folder-ignores") { if (e.target.attributes.href.value === "#folder-ignores") {
$('#folder-ignores textarea').focus(); $('#folder-ignores textarea').focus();
} }
}).one('hidden.bs.modal', function () { }).one('hidden.bs.modal', function () {
$('.nav-tabs a[href="#folder-general"]').tab('show');
window.location.hash = ""; window.location.hash = "";
$scope.currentFolder = {}; $scope.currentFolder = {};
}); });
@ -1971,7 +1982,7 @@ angular.module('syncthing.core')
return 'fas fa-folder'; return 'fas fa-folder';
}; };
function editFolder() { function editFolder(initialTab) {
if ($scope.currentFolder.path.length > 1 && $scope.currentFolder.path.slice(-1) === $scope.system.pathSeparator) { if ($scope.currentFolder.path.length > 1 && $scope.currentFolder.path.slice(-1) === $scope.system.pathSeparator) {
$scope.currentFolder.path = $scope.currentFolder.path.slice(0, -1); $scope.currentFolder.path = $scope.currentFolder.path.slice(0, -1);
} else if (!$scope.currentFolder.path) { } else if (!$scope.currentFolder.path) {
@ -1979,7 +1990,7 @@ angular.module('syncthing.core')
$scope.currentFolder.path = ''; $scope.currentFolder.path = '';
} }
initShareEditing('folder'); initShareEditing('folder');
editFolderModal(); editFolderModal(initialTab);
} }
$scope.internalVersioningEnabled = function(guiVersioning) { $scope.internalVersioningEnabled = function(guiVersioning) {
@ -2020,7 +2031,7 @@ angular.module('syncthing.core')
} }
}; };
$scope.editFolderExisting = function(folderCfg) { $scope.editFolderExisting = function(folderCfg, initialTab) {
$scope.editingExisting = true; $scope.editingExisting = true;
$scope.editingDefaults = false; $scope.editingDefaults = false;
$scope.currentFolder = angular.copy(folderCfg); $scope.currentFolder = angular.copy(folderCfg);
@ -2040,7 +2051,7 @@ angular.module('syncthing.core')
$scope.emitHTTPError(err); $scope.emitHTTPError(err);
}); });
editFolder(); editFolder(initialTab);
}; };
$scope.editFolderDefaults = function() { $scope.editFolderDefaults = function() {
@ -2115,11 +2126,18 @@ angular.module('syncthing.core')
} }
$scope.shareFolderWithDevice = function (folder, device) { $scope.shareFolderWithDevice = function (folder, device) {
$scope.folders[folder].devices.push({ var folderCfg = $scope.folders[folder];
deviceID: device if (folderCfg.type == "receiveencrypted" || !$scope.pendingIsRemoteEncrypted(folder, device)) {
}); $scope.folders[folder].devices.push({
$scope.config.folders = folderList($scope.folders); deviceID: device
$scope.saveConfig(); });
$scope.config.folders = folderList($scope.folders);
$scope.saveConfig();
} else {
// Open edit folder dialog to enter encryption password
$scope.editFolderExisting(folderCfg, "#folder-sharing");
$scope.currentSharing.selected[device] = true;
}
}; };
$scope.saveFolder = function () { $scope.saveFolder = function () {

View File

@ -56,7 +56,7 @@
<a href="#" ng-click="selectAllSharedDevices(false)" translate>Deselect All</a></small> <a href="#" ng-click="selectAllSharedDevices(false)" translate>Deselect All</a></small>
</p> </p>
<div class="form-group" ng-repeat="device in currentSharing.shared"> <div class="form-group" ng-repeat="device in currentSharing.shared">
<share-template selected="currentSharing.selected" encryption-passwords="currentSharing.encryptionPasswords" id="{{device.deviceID}}" label="{{deviceName(device)}}" folder-type="{{currentFolder.type}}" untrusted="device.untrusted" /> <share-template selected="currentSharing.selected" encryption-passwords="currentSharing.encryptionPasswords" id="{{device.deviceID}}" label="{{deviceName(device)}}" folder-type="{{currentFolder.type}}" untrusted="device.untrusted || pendingIsRemoteEncrypted(currentFolder.id, device.deviceID)" />
</div> </div>
</div> </div>
<div class="form-horizontal" ng-if="currentSharing.unrelated.length || otherDevices().length <= 0"> <div class="form-horizontal" ng-if="currentSharing.unrelated.length || otherDevices().length <= 0">
@ -70,7 +70,7 @@
<span translate>There are no devices to share this folder with.</span> <span translate>There are no devices to share this folder with.</span>
</p> </p>
<div class="form-group" ng-repeat="device in currentSharing.unrelated" ng-init="id = device.deviceID; folder = currentFolder"> <div class="form-group" ng-repeat="device in currentSharing.unrelated" ng-init="id = device.deviceID; folder = currentFolder">
<share-template selected="currentSharing.selected" encryption-passwords="currentSharing.encryptionPasswords" id="{{device.deviceID}}" label="{{deviceName(device)}}" folder-type="{{currentFolder.type}}" untrusted="device.untrusted" /> <share-template selected="currentSharing.selected" encryption-passwords="currentSharing.encryptionPasswords" id="{{device.deviceID}}" label="{{deviceName(device)}}" folder-type="{{currentFolder.type}}" untrusted="device.untrusted || pendingIsRemoteEncrypted(currentFolder.id, device.deviceID)" />
</div> </div>
</div> </div>
</div> </div>

View File

@ -458,13 +458,9 @@ func (cfg *Configuration) FolderMap() map[string]FolderConfiguration {
// folders that have an encryption password set. // folders that have an encryption password set.
func (cfg Configuration) FolderPasswords(device protocol.DeviceID) map[string]string { func (cfg Configuration) FolderPasswords(device protocol.DeviceID) map[string]string {
res := make(map[string]string, len(cfg.Folders)) res := make(map[string]string, len(cfg.Folders))
nextFolder:
for _, folder := range cfg.Folders { for _, folder := range cfg.Folders {
for _, dev := range folder.Devices { if dev, ok := folder.Device(device); ok && dev.EncryptionPassword != "" {
if dev.DeviceID == device && dev.EncryptionPassword != "" { res[folder.ID] = dev.EncryptionPassword
res[folder.ID] = dev.EncryptionPassword
continue nextFolder
}
} }
} }
return res return res

View File

@ -403,6 +403,7 @@ type ObservedFolder struct {
Time time.Time `protobuf:"bytes,1,opt,name=time,proto3,stdtime" json:"time" xml:"time"` Time time.Time `protobuf:"bytes,1,opt,name=time,proto3,stdtime" json:"time" xml:"time"`
Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label" xml:"label"` Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label" xml:"label"`
ReceiveEncrypted bool `protobuf:"varint,3,opt,name=receive_encrypted,json=receiveEncrypted,proto3" json:"receiveEncrypted" xml:"receiveEncrypted"` ReceiveEncrypted bool `protobuf:"varint,3,opt,name=receive_encrypted,json=receiveEncrypted,proto3" json:"receiveEncrypted" xml:"receiveEncrypted"`
RemoteEncrypted bool `protobuf:"varint,4,opt,name=remote_encrypted,json=remoteEncrypted,proto3" json:"remoteEncrypted" xml:"remoteEncrypted"`
} }
func (m *ObservedFolder) Reset() { *m = ObservedFolder{} } func (m *ObservedFolder) Reset() { *m = ObservedFolder{} }
@ -494,98 +495,100 @@ func init() {
func init() { proto.RegisterFile("lib/db/structs.proto", fileDescriptor_5465d80e8cba02e3) } func init() { proto.RegisterFile("lib/db/structs.proto", fileDescriptor_5465d80e8cba02e3) }
var fileDescriptor_5465d80e8cba02e3 = []byte{ var fileDescriptor_5465d80e8cba02e3 = []byte{
// 1445 bytes of a gzipped FileDescriptorProto // 1476 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcf, 0x6f, 0x1b, 0x45, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x6f, 0xdb, 0x46,
0x14, 0xce, 0xc6, 0xce, 0x0f, 0x8f, 0x9d, 0xb4, 0xd9, 0xd2, 0xc8, 0x04, 0xf0, 0x98, 0x69, 0x2a, 0x13, 0x36, 0x2d, 0xf9, 0x43, 0x2b, 0xf9, 0x8b, 0x79, 0x6d, 0xe8, 0xf5, 0xfb, 0x56, 0xab, 0x6e,
0x19, 0x90, 0x1c, 0x29, 0x55, 0x23, 0x54, 0x09, 0xaa, 0x6e, 0x43, 0xda, 0x54, 0xa5, 0x45, 0x93, 0x1c, 0x40, 0xfd, 0x80, 0x0c, 0x38, 0x88, 0x51, 0x04, 0x68, 0x83, 0x30, 0xae, 0x13, 0x07, 0x69,
0xaa, 0x20, 0x38, 0x58, 0xfb, 0x63, 0xe2, 0xac, 0xba, 0xde, 0x35, 0x3b, 0x9b, 0xa4, 0xee, 0x8d, 0x52, 0xac, 0x83, 0xa4, 0x68, 0x0f, 0x82, 0x48, 0xae, 0x65, 0x22, 0x14, 0xa9, 0x72, 0x69, 0x3b,
0x0b, 0x12, 0xb7, 0xaa, 0xe2, 0x80, 0x10, 0x42, 0x3d, 0xf1, 0x27, 0xf0, 0x17, 0x70, 0xe8, 0x31, 0xca, 0xad, 0x97, 0x02, 0xbd, 0x05, 0x41, 0x0f, 0x45, 0x51, 0x14, 0x39, 0xf5, 0x27, 0xf4, 0x17,
0x47, 0xc4, 0x61, 0x51, 0x93, 0x0b, 0x58, 0xe2, 0xe2, 0x13, 0xe2, 0x84, 0xe6, 0xcd, 0xec, 0xec, 0x14, 0x45, 0x8e, 0x3e, 0x16, 0x3d, 0xb0, 0x88, 0x7d, 0x69, 0x75, 0xd4, 0xa9, 0xe8, 0xa9, 0xd8,
0xba, 0x51, 0x51, 0x5b, 0x72, 0xdb, 0xf7, 0xbd, 0xef, 0x3d, 0xef, 0xbc, 0xf9, 0xde, 0xdb, 0x67, 0xd9, 0xe5, 0x92, 0xb2, 0x91, 0x22, 0x49, 0x7d, 0xd3, 0x3c, 0xf3, 0xcc, 0x88, 0x9c, 0x7d, 0x66,
0xf4, 0x5a, 0xe0, 0x3b, 0x2b, 0x9e, 0xb3, 0xc2, 0x93, 0x78, 0xd7, 0x4d, 0x78, 0xbb, 0x1f, 0x47, 0x76, 0x88, 0xfe, 0xe3, 0x7b, 0xf6, 0xaa, 0x6b, 0xaf, 0xf2, 0x38, 0xda, 0x73, 0x62, 0xde, 0xec,
0x49, 0x64, 0x4e, 0x7a, 0xce, 0xd2, 0xb9, 0x98, 0xf5, 0x23, 0xbe, 0x02, 0x80, 0xb3, 0xbb, 0xbd, 0x45, 0x61, 0x1c, 0x9a, 0xe3, 0xae, 0xbd, 0x7c, 0x3e, 0x62, 0xbd, 0x90, 0xaf, 0x02, 0x60, 0xef,
0xd2, 0x8d, 0xba, 0x11, 0x18, 0xf0, 0x24, 0x89, 0x4b, 0xb8, 0x1b, 0x45, 0xdd, 0x80, 0xe5, 0xac, 0xed, 0xac, 0x76, 0xc2, 0x4e, 0x08, 0x06, 0xfc, 0x92, 0xc4, 0x65, 0xdc, 0x09, 0xc3, 0x8e, 0xcf,
0xc4, 0xef, 0x31, 0x9e, 0xd8, 0xbd, 0xbe, 0x22, 0x2c, 0x8a, 0xfc, 0xf0, 0xe8, 0x46, 0xc1, 0x8a, 0x32, 0x56, 0xec, 0x75, 0x19, 0x8f, 0xdb, 0xdd, 0x9e, 0x22, 0x2c, 0x89, 0xfc, 0xf0, 0xd3, 0x09,
0xc3, 0x32, 0xbc, 0xc2, 0xee, 0x27, 0xf2, 0x91, 0xfc, 0x38, 0x89, 0xaa, 0x1b, 0x7e, 0xc0, 0xee, 0xfd, 0x55, 0x9b, 0xa5, 0x78, 0x89, 0x3d, 0x8c, 0xe5, 0x4f, 0xf2, 0xfd, 0x38, 0x2a, 0x6f, 0x7a,
0xb2, 0x98, 0xfb, 0x51, 0x68, 0xde, 0x44, 0x33, 0x7b, 0xf2, 0xb1, 0x6e, 0x34, 0x8d, 0x56, 0x75, 0x3e, 0xbb, 0xc7, 0x22, 0xee, 0x85, 0x81, 0x79, 0x0b, 0x4d, 0xed, 0xcb, 0x9f, 0x55, 0xa3, 0x6e,
0xf5, 0x74, 0x3b, 0x4b, 0xd0, 0xbe, 0xcb, 0xdc, 0x24, 0x8a, 0xad, 0xe6, 0x93, 0x14, 0x4f, 0x0c, 0x34, 0xca, 0x6b, 0xf3, 0xcd, 0x34, 0x41, 0xf3, 0x1e, 0x73, 0xe2, 0x30, 0xb2, 0xea, 0xcf, 0x12,
0x53, 0x9c, 0x11, 0x47, 0x29, 0x9e, 0xbb, 0xdf, 0x0b, 0x2e, 0x11, 0x65, 0x13, 0x9a, 0x79, 0xcc, 0x3c, 0x36, 0x48, 0x70, 0x4a, 0x1c, 0x26, 0x78, 0xe6, 0x61, 0xd7, 0xbf, 0x4c, 0x94, 0x4d, 0x68,
0x35, 0x34, 0xe3, 0xb1, 0x80, 0x25, 0xcc, 0xab, 0x4f, 0x36, 0x8d, 0xd6, 0xac, 0xf5, 0xa6, 0x88, 0xea, 0x31, 0xd7, 0xd1, 0x94, 0xcb, 0x7c, 0x16, 0x33, 0xb7, 0x3a, 0x5e, 0x37, 0x1a, 0xd3, 0xd6,
0x53, 0x90, 0x8e, 0x53, 0x36, 0xa1, 0x99, 0xc7, 0xbc, 0x28, 0xe2, 0xf6, 0x7c, 0x97, 0xf1, 0x7a, 0xff, 0x45, 0x9c, 0x82, 0x74, 0x9c, 0xb2, 0x09, 0x4d, 0x3d, 0xe6, 0x25, 0x11, 0xb7, 0xef, 0x39,
0xa9, 0x59, 0x6a, 0xd5, 0xac, 0x37, 0x64, 0x1c, 0x40, 0xa3, 0x14, 0xd7, 0x54, 0x9c, 0xb0, 0x21, 0x8c, 0x57, 0x0b, 0xf5, 0x42, 0xa3, 0x62, 0xfd, 0x4f, 0xc6, 0x01, 0x34, 0x4c, 0x70, 0x45, 0xc5,
0x0c, 0x1c, 0x26, 0x45, 0xa7, 0xfc, 0x70, 0xcf, 0x0e, 0x7c, 0xaf, 0x93, 0x85, 0x97, 0x21, 0xfc, 0x09, 0x1b, 0xc2, 0xc0, 0x61, 0x52, 0x34, 0xe7, 0x05, 0xfb, 0x6d, 0xdf, 0x73, 0x5b, 0x69, 0x78,
0x9d, 0x61, 0x8a, 0xe7, 0x95, 0x6b, 0x5d, 0x67, 0x39, 0x03, 0x59, 0xc6, 0x60, 0x42, 0x9f, 0xa1, 0x11, 0xc2, 0xdf, 0x1a, 0x24, 0x78, 0x56, 0xb9, 0x36, 0x74, 0x96, 0x73, 0x90, 0x65, 0x04, 0x26,
0x91, 0xaf, 0x0c, 0x54, 0x55, 0xc5, 0xb9, 0xe9, 0xf3, 0xc4, 0x0c, 0xd0, 0xac, 0x3a, 0x1d, 0xaf, 0xf4, 0x04, 0x8d, 0x7c, 0x61, 0xa0, 0xb2, 0x2a, 0xce, 0x2d, 0x8f, 0xc7, 0xa6, 0x8f, 0xa6, 0xd5,
0x1b, 0xcd, 0x52, 0xab, 0xba, 0x7a, 0xaa, 0xed, 0x39, 0xed, 0x42, 0x0d, 0xad, 0xcb, 0xa2, 0x40, 0xdb, 0xf1, 0xaa, 0x51, 0x2f, 0x34, 0xca, 0x6b, 0x73, 0x4d, 0xd7, 0x6e, 0xe6, 0x6a, 0x68, 0x5d,
0x87, 0x29, 0xae, 0x52, 0x7b, 0x5f, 0x61, 0x7c, 0x98, 0x62, 0x1d, 0x77, 0xac, 0x60, 0x8f, 0x0e, 0x11, 0x05, 0x3a, 0x4a, 0x70, 0x99, 0xb6, 0x0f, 0x14, 0xc6, 0x07, 0x09, 0xd6, 0x71, 0xa7, 0x0a,
0x96, 0x8b, 0x5c, 0xaa, 0x99, 0x97, 0xca, 0xdf, 0x3d, 0xc6, 0x13, 0xe4, 0x6f, 0x84, 0x16, 0xc4, 0xf6, 0xe4, 0x70, 0x25, 0xcf, 0xa5, 0x9a, 0x79, 0xb9, 0xf8, 0xcd, 0x53, 0x3c, 0x46, 0xfe, 0x44,
0x0f, 0x6c, 0x86, 0xdb, 0xd1, 0x9d, 0x78, 0x37, 0x74, 0x6d, 0x51, 0xa4, 0x77, 0x51, 0x39, 0xb4, 0x68, 0x41, 0xfc, 0xc1, 0x56, 0xb0, 0x13, 0xde, 0x8d, 0xf6, 0x02, 0xa7, 0x2d, 0x8a, 0xf4, 0x36,
0x7b, 0x0c, 0xee, 0xa9, 0x62, 0x2d, 0x0e, 0x53, 0x0c, 0xf6, 0x28, 0xc5, 0x08, 0xb2, 0x0b, 0x83, 0x2a, 0x06, 0xed, 0x2e, 0x83, 0x73, 0x2a, 0x59, 0x4b, 0x83, 0x04, 0x83, 0x3d, 0x4c, 0x30, 0x82,
0x50, 0xc0, 0x04, 0x97, 0xfb, 0x0f, 0x58, 0xbd, 0xd4, 0x34, 0x5a, 0x25, 0xc9, 0x15, 0xb6, 0xe6, 0xec, 0xc2, 0x20, 0x14, 0x30, 0xc1, 0xe5, 0xde, 0x23, 0x56, 0x2d, 0xd4, 0x8d, 0x46, 0x41, 0x72,
0x0a, 0x83, 0x50, 0xc0, 0xcc, 0xcb, 0x08, 0xf5, 0x22, 0xcf, 0xdf, 0xf6, 0x99, 0xd7, 0xe1, 0xf5, 0x85, 0xad, 0xb9, 0xc2, 0x20, 0x14, 0x30, 0xf3, 0x0a, 0x42, 0xdd, 0xd0, 0xf5, 0x76, 0x3c, 0xe6,
0x29, 0x88, 0x68, 0x0e, 0x53, 0x5c, 0xc9, 0xd0, 0xad, 0x51, 0x8a, 0x4f, 0x41, 0x98, 0x46, 0x08, 0xb6, 0x78, 0x75, 0x02, 0x22, 0xea, 0x83, 0x04, 0x97, 0x52, 0x74, 0x7b, 0x98, 0xe0, 0x39, 0x08,
0xcd, 0xbd, 0xe6, 0xcf, 0x06, 0xaa, 0xea, 0x0c, 0xce, 0xa0, 0x5e, 0x6b, 0x1a, 0xad, 0xb2, 0xf5, 0xd3, 0x08, 0xa1, 0x99, 0xd7, 0xfc, 0xd1, 0x40, 0x65, 0x9d, 0xc1, 0xee, 0x57, 0x2b, 0x75, 0xa3,
0xad, 0x21, 0xca, 0xf2, 0x5b, 0x8a, 0x2f, 0x74, 0xfd, 0x64, 0x67, 0xd7, 0x69, 0xbb, 0x51, 0x6f, 0x51, 0xb4, 0xbe, 0x36, 0x44, 0x59, 0x7e, 0x4d, 0xf0, 0xc5, 0x8e, 0x17, 0xef, 0xee, 0xd9, 0x4d,
0x85, 0x0f, 0x42, 0x37, 0xd9, 0xf1, 0xc3, 0x6e, 0xe1, 0xa9, 0x28, 0xda, 0xf6, 0xd6, 0x4e, 0x14, 0x27, 0xec, 0xae, 0xf2, 0x7e, 0xe0, 0xc4, 0xbb, 0x5e, 0xd0, 0xc9, 0xfd, 0xca, 0x8b, 0xb6, 0xb9,
0x27, 0x9b, 0xeb, 0xc3, 0x14, 0xeb, 0x97, 0xb2, 0x06, 0xa3, 0x14, 0x9f, 0x1e, 0xfb, 0x7d, 0x6b, 0xbd, 0x1b, 0x46, 0xf1, 0xd6, 0xc6, 0x20, 0xc1, 0xfa, 0xa1, 0xac, 0xfe, 0x30, 0xc1, 0xf3, 0x23,
0x40, 0xbe, 0x3f, 0x58, 0x7e, 0x95, 0xc4, 0xb4, 0x90, 0xb6, 0x28, 0xfe, 0xca, 0xff, 0x17, 0xff, 0xff, 0x6f, 0xf5, 0xc9, 0xb7, 0x87, 0x2b, 0xaf, 0x93, 0x98, 0xe6, 0xd2, 0xe6, 0xc5, 0x5f, 0xfa,
0x25, 0x34, 0xcb, 0xd9, 0x97, 0xbb, 0x2c, 0x74, 0x59, 0x1d, 0x41, 0x15, 0x1b, 0x42, 0x05, 0x19, 0xf7, 0xe2, 0xbf, 0x8c, 0xa6, 0x39, 0xfb, 0x7c, 0x8f, 0x05, 0x0e, 0xab, 0x22, 0xa8, 0x62, 0x4d,
0x36, 0x4a, 0xf1, 0xbc, 0xac, 0xbd, 0x02, 0x08, 0xd5, 0x3e, 0xf3, 0x36, 0x9a, 0xe7, 0x83, 0x5e, 0xa8, 0x20, 0xc5, 0x86, 0x09, 0x9e, 0x95, 0xb5, 0x57, 0x00, 0xa1, 0xda, 0x67, 0xde, 0x41, 0xb3,
0xe0, 0x87, 0xf7, 0x3a, 0x89, 0x1d, 0x77, 0x59, 0x52, 0x5f, 0x80, 0x5b, 0x6e, 0x0d, 0x53, 0x3c, 0xbc, 0xdf, 0xf5, 0xbd, 0xe0, 0x41, 0x2b, 0x6e, 0x47, 0x1d, 0x16, 0x57, 0x17, 0xe0, 0x94, 0x1b,
0xa7, 0x3c, 0x77, 0xc0, 0xa1, 0x75, 0x3c, 0x86, 0x12, 0x3a, 0xce, 0x32, 0xaf, 0xa2, 0xaa, 0x13, 0x83, 0x04, 0xcf, 0x28, 0xcf, 0x5d, 0x70, 0x68, 0x1d, 0x8f, 0xa0, 0x84, 0x8e, 0xb2, 0xcc, 0x6b,
0x44, 0xee, 0x3d, 0xde, 0xd9, 0xb1, 0xf9, 0x4e, 0xdd, 0x6c, 0x1a, 0xad, 0x9a, 0x45, 0x44, 0x59, 0xa8, 0x6c, 0xfb, 0xa1, 0xf3, 0x80, 0xb7, 0x76, 0xdb, 0x7c, 0xb7, 0x6a, 0xd6, 0x8d, 0x46, 0xc5,
0x25, 0x7c, 0xdd, 0xe6, 0x3b, 0xba, 0xac, 0x39, 0x44, 0x68, 0xc1, 0x6f, 0x7e, 0x88, 0x2a, 0x2c, 0x22, 0xa2, 0xac, 0x12, 0xbe, 0xd1, 0xe6, 0xbb, 0xba, 0xac, 0x19, 0x44, 0x68, 0xce, 0x6f, 0x7e,
0x74, 0xe3, 0x41, 0x5f, 0x34, 0xf4, 0x19, 0x48, 0x01, 0xc2, 0xd0, 0xa0, 0x16, 0x86, 0x46, 0x08, 0x80, 0x4a, 0x2c, 0x70, 0xa2, 0x7e, 0x4f, 0x34, 0xf4, 0x39, 0x48, 0x01, 0xc2, 0xd0, 0xa0, 0x16,
0xcd, 0xbd, 0xa6, 0x85, 0xca, 0xc9, 0xa0, 0xcf, 0x60, 0x16, 0xcc, 0xaf, 0x2e, 0xe6, 0xc5, 0xd5, 0x86, 0x46, 0x08, 0xcd, 0xbc, 0xa6, 0x85, 0x8a, 0x71, 0xbf, 0xc7, 0x60, 0x16, 0xcc, 0xae, 0x2d,
0xe2, 0x1e, 0xf4, 0x99, 0x54, 0xa7, 0xe0, 0x69, 0x75, 0x0a, 0x83, 0x50, 0xc0, 0xcc, 0x0d, 0x54, 0x65, 0xc5, 0xd5, 0xe2, 0xee, 0xf7, 0x98, 0x54, 0xa7, 0xe0, 0x69, 0x75, 0x0a, 0x83, 0x50, 0xc0,
0xed, 0xb3, 0xb8, 0xe7, 0x73, 0xd9, 0x82, 0xe5, 0xa6, 0xd1, 0x9a, 0xb3, 0x96, 0x87, 0x29, 0x2e, 0xcc, 0x4d, 0x54, 0xee, 0xb1, 0xa8, 0xeb, 0x71, 0xd9, 0x82, 0xc5, 0xba, 0xd1, 0x98, 0xb1, 0x56,
0xc2, 0xa3, 0x14, 0x2f, 0x40, 0x64, 0x01, 0x23, 0xb4, 0xc8, 0x30, 0x6f, 0x14, 0x34, 0x1a, 0xf2, 0x06, 0x09, 0xce, 0xc3, 0xc3, 0x04, 0x2f, 0x40, 0x64, 0x0e, 0x23, 0x34, 0xcf, 0x30, 0x6f, 0xe6,
0x7a, 0xb5, 0x69, 0xb4, 0xa6, 0x60, 0x4e, 0x68, 0x41, 0xdc, 0xe2, 0xc7, 0x74, 0x76, 0x8b, 0x93, 0x34, 0x1a, 0xf0, 0x6a, 0xb9, 0x6e, 0x34, 0x26, 0x60, 0x4e, 0x68, 0x41, 0xdc, 0xe6, 0xa7, 0x74,
0x7f, 0x52, 0x5c, 0xf2, 0xc3, 0x84, 0x16, 0x68, 0xe6, 0x36, 0x92, 0x55, 0xea, 0x40, 0x8f, 0xcd, 0x76, 0x9b, 0x93, 0xbf, 0x12, 0x5c, 0xf0, 0x82, 0x98, 0xe6, 0x68, 0xe6, 0x0e, 0x92, 0x55, 0x6a,
0x41, 0xaa, 0x6b, 0x87, 0x29, 0xae, 0x51, 0x7b, 0xdf, 0x12, 0x8e, 0x2d, 0xff, 0x01, 0x13, 0x85, 0x41, 0x8f, 0xcd, 0x40, 0xaa, 0xeb, 0x47, 0x09, 0xae, 0xd0, 0xf6, 0x81, 0x25, 0x1c, 0xdb, 0xde,
0x72, 0x32, 0x43, 0x17, 0x4a, 0x23, 0x59, 0xe2, 0x47, 0x07, 0xcb, 0x63, 0x61, 0x34, 0x0f, 0x32, 0x23, 0x26, 0x0a, 0x65, 0xa7, 0x86, 0x2e, 0x94, 0x46, 0xd2, 0xc4, 0x4f, 0x0e, 0x57, 0x46, 0xc2,
0xd7, 0x51, 0x35, 0x88, 0x5c, 0x3b, 0xe8, 0x6c, 0x07, 0x76, 0x97, 0xd7, 0xff, 0x98, 0x81, 0xc3, 0x68, 0x16, 0x64, 0x6e, 0xa0, 0xb2, 0x1f, 0x3a, 0x6d, 0xbf, 0xb5, 0xe3, 0xb7, 0x3b, 0xbc, 0xfa,
0xc3, 0x2d, 0x02, 0xbe, 0x21, 0x60, 0xfd, 0xd2, 0x39, 0x44, 0x68, 0xc1, 0x6f, 0x5e, 0x47, 0x35, 0xfb, 0x14, 0xbc, 0x3c, 0x9c, 0x22, 0xe0, 0x9b, 0x02, 0xd6, 0x0f, 0x9d, 0x41, 0x84, 0xe6, 0xfc,
0x25, 0x51, 0xa9, 0x85, 0x3f, 0x67, 0xe0, 0x26, 0xa1, 0x86, 0xca, 0xa1, 0xd4, 0xb0, 0x50, 0x54, 0xe6, 0x0d, 0x54, 0x51, 0x12, 0x95, 0x5a, 0xf8, 0x63, 0x0a, 0x4e, 0x12, 0x6a, 0xa8, 0x1c, 0x4a,
0xb6, 0x94, 0x43, 0x91, 0x51, 0x1c, 0xef, 0xd3, 0x2f, 0x33, 0xde, 0x29, 0x9a, 0x51, 0x53, 0xb6, 0x0d, 0x0b, 0x79, 0x65, 0x4b, 0x39, 0xe4, 0x19, 0xf9, 0xf1, 0x3e, 0xf9, 0x2a, 0xe3, 0x9d, 0xa2,
0x3e, 0x03, 0x71, 0xef, 0x1f, 0xa6, 0x18, 0x51, 0x7b, 0x7f, 0x53, 0xa2, 0x22, 0x8b, 0x22, 0xe8, 0x29, 0x35, 0x65, 0xab, 0x53, 0x10, 0xf7, 0xde, 0x51, 0x82, 0x11, 0x6d, 0x1f, 0x6c, 0x49, 0x54,
0x2c, 0xca, 0x16, 0xb3, 0xb2, 0xc0, 0xa4, 0x19, 0x4f, 0x74, 0x4c, 0x18, 0x75, 0x8a, 0xd2, 0x98, 0x64, 0x51, 0x04, 0x9d, 0x45, 0xd9, 0x62, 0x56, 0xe6, 0x98, 0x34, 0xe5, 0x89, 0x8e, 0x09, 0xc2,
0x85, 0xd4, 0xd0, 0x31, 0x61, 0xf4, 0xc9, 0x98, 0x38, 0x64, 0xc7, 0x8c, 0xa1, 0x84, 0x8e, 0xb3, 0x56, 0x5e, 0x1a, 0xd3, 0x90, 0x1a, 0x3a, 0x26, 0x08, 0x3f, 0x1e, 0x11, 0x87, 0xec, 0x98, 0x11,
0xd4, 0xe8, 0xfd, 0x14, 0x55, 0xe0, 0x2a, 0x60, 0xf6, 0xdf, 0x40, 0xd3, 0xb2, 0x1b, 0xd4, 0xe4, 0x94, 0xd0, 0x51, 0x96, 0x1a, 0xbd, 0xf7, 0x51, 0x09, 0x8e, 0x02, 0x66, 0xff, 0x4d, 0x34, 0x29,
0x3f, 0x93, 0x2b, 0x18, 0x48, 0x42, 0xc2, 0xd6, 0x5b, 0x6a, 0x42, 0x28, 0xea, 0x28, 0xc5, 0xd5, 0xbb, 0x41, 0x4d, 0xfe, 0x73, 0x99, 0x82, 0x81, 0x24, 0x24, 0x6c, 0xbd, 0xa1, 0x26, 0x84, 0xa2,
0xfc, 0xa6, 0x09, 0x55, 0x30, 0xf9, 0xc9, 0x40, 0x67, 0x37, 0x43, 0xcf, 0x8f, 0x99, 0x9b, 0xa8, 0x0e, 0x13, 0x5c, 0xce, 0x4e, 0x9a, 0x50, 0x05, 0x93, 0x1f, 0x0c, 0xb4, 0xb8, 0x15, 0xb8, 0x5e,
0x7a, 0x32, 0x7e, 0x3b, 0x0c, 0x06, 0x27, 0xd3, 0xaa, 0x27, 0x76, 0xc9, 0xe4, 0x87, 0x32, 0x9a, 0xc4, 0x9c, 0x58, 0xd5, 0x93, 0xf1, 0x3b, 0x81, 0xdf, 0x3f, 0x9b, 0x56, 0x3d, 0xb3, 0x43, 0x26,
0xbe, 0x1a, 0xed, 0x86, 0x09, 0x37, 0x2f, 0xa2, 0xa9, 0x6d, 0x3f, 0x60, 0x1c, 0x3e, 0x39, 0x53, 0xdf, 0x15, 0xd1, 0xe4, 0xb5, 0x70, 0x2f, 0x88, 0xb9, 0x79, 0x09, 0x4d, 0xec, 0x78, 0x3e, 0xe3,
0x16, 0x1e, 0xa6, 0x58, 0x02, 0xfa, 0x90, 0x60, 0xe9, 0x1e, 0x91, 0x4e, 0xf3, 0x63, 0x54, 0x95, 0x70, 0xe5, 0x4c, 0x58, 0x78, 0x90, 0x60, 0x09, 0xe8, 0x97, 0x04, 0x4b, 0xf7, 0x88, 0x74, 0x9a,
0xe7, 0x8c, 0x62, 0x9f, 0x71, 0xe8, 0xfe, 0x29, 0xeb, 0x3d, 0xf1, 0x26, 0x05, 0x58, 0xbf, 0x49, 0x1f, 0xa1, 0xb2, 0x7c, 0xcf, 0x30, 0xf2, 0x18, 0x87, 0xee, 0x9f, 0xb0, 0xde, 0x11, 0x4f, 0x92,
0x01, 0xd3, 0x89, 0x8a, 0x44, 0xf3, 0x0a, 0x9a, 0x55, 0xb3, 0x8d, 0xc3, 0xf7, 0x6c, 0xca, 0x3a, 0x83, 0xf5, 0x93, 0xe4, 0x30, 0x9d, 0x28, 0x4f, 0x34, 0xaf, 0xa2, 0x69, 0x35, 0xdb, 0x38, 0xdc,
0x0f, 0x73, 0x55, 0x61, 0xf9, 0x5c, 0x55, 0x80, 0xce, 0xa2, 0x29, 0xe6, 0x07, 0xb9, 0x70, 0xcb, 0x67, 0x13, 0xd6, 0x05, 0x98, 0xab, 0x0a, 0xcb, 0xe6, 0xaa, 0x02, 0x74, 0x16, 0x4d, 0x31, 0xdf,
0x90, 0xe1, 0xdc, 0x7f, 0x09, 0x37, 0x8b, 0xd7, 0xfa, 0x6d, 0xa3, 0x29, 0x67, 0x90, 0xb0, 0xec, 0xcf, 0x84, 0x5b, 0x84, 0x0c, 0xe7, 0xff, 0x49, 0xb8, 0x69, 0xbc, 0xd6, 0x6f, 0x13, 0x4d, 0xd8,
0xe3, 0x58, 0x17, 0x75, 0x00, 0x20, 0xbf, 0x6c, 0x61, 0x11, 0x2a, 0xd1, 0xb1, 0x2f, 0xc1, 0xf4, 0xfd, 0x98, 0xa5, 0x97, 0x63, 0x55, 0xd4, 0x01, 0x80, 0xec, 0xb0, 0x85, 0x45, 0xa8, 0x44, 0x47,
0x4b, 0x7e, 0x09, 0xb6, 0x50, 0x45, 0xee, 0x32, 0x1d, 0xdf, 0x83, 0x8f, 0x40, 0xcd, 0x5a, 0x3b, 0x6e, 0x82, 0xc9, 0x57, 0xbc, 0x09, 0xb6, 0x51, 0x49, 0xee, 0x32, 0x2d, 0xcf, 0x85, 0x4b, 0xa0,
0x4c, 0xf1, 0xac, 0xdc, 0x4f, 0xe0, 0xcb, 0x38, 0x2b, 0x09, 0x9b, 0x9e, 0x4e, 0x94, 0x01, 0xa2, 0x62, 0xad, 0x1f, 0x25, 0x78, 0x5a, 0xee, 0x27, 0x70, 0x33, 0x4e, 0x4b, 0xc2, 0x96, 0xab, 0x13,
0x5b, 0x34, 0x93, 0x6a, 0x9e, 0x90, 0x58, 0x71, 0x90, 0x98, 0xaf, 0x32, 0x47, 0x54, 0x83, 0x7c, 0xa5, 0x80, 0xe8, 0x16, 0xcd, 0xa4, 0x9a, 0x27, 0x24, 0x96, 0x1f, 0x24, 0xe6, 0xeb, 0xcc, 0x11,
0x6d, 0xa0, 0x8a, 0x94, 0xc7, 0x16, 0x4b, 0xcc, 0x2b, 0x68, 0xda, 0x05, 0x43, 0x75, 0x08, 0x12, 0xd5, 0x20, 0x5f, 0x1a, 0xa8, 0x24, 0xe5, 0xb1, 0xcd, 0x62, 0xf3, 0x2a, 0x9a, 0x74, 0xc0, 0x50,
0xbb, 0x91, 0x74, 0xe7, 0x8d, 0x21, 0x19, 0xba, 0x56, 0x60, 0x12, 0xaa, 0x60, 0x31, 0x54, 0xdc, 0x1d, 0x82, 0xc4, 0x6e, 0x24, 0xdd, 0x59, 0x63, 0x48, 0x86, 0xae, 0x15, 0x98, 0x84, 0x2a, 0x58,
0x98, 0xd9, 0xd9, 0xce, 0x58, 0x92, 0x43, 0x45, 0x41, 0xfa, 0x6e, 0x94, 0x4d, 0x68, 0xe6, 0x21, 0x0c, 0x15, 0x27, 0x62, 0xed, 0x74, 0x67, 0x2c, 0xc8, 0xa1, 0xa2, 0x20, 0x7d, 0x36, 0xca, 0x26,
0xdf, 0x4c, 0xa2, 0xb3, 0x85, 0x2d, 0x6c, 0x9d, 0xf5, 0x63, 0x26, 0x17, 0xa5, 0x93, 0xdd, 0x69, 0x34, 0xf5, 0x90, 0xaf, 0xc6, 0xd1, 0x62, 0x6e, 0x0b, 0xdb, 0x60, 0xbd, 0x88, 0xc9, 0x45, 0xe9,
0x57, 0xd1, 0xb4, 0xac, 0x23, 0xbc, 0x5e, 0xcd, 0x5a, 0x12, 0x47, 0x92, 0xc8, 0xb1, 0xcd, 0x54, 0x6c, 0x77, 0xda, 0x35, 0x34, 0x29, 0xeb, 0x08, 0x8f, 0x57, 0xb1, 0x96, 0xc5, 0x2b, 0x49, 0xe4,
0xe1, 0xe2, 0x4c, 0xd9, 0xc0, 0x2b, 0xe5, 0x83, 0xf2, 0x79, 0x23, 0x2e, 0x1f, 0x6a, 0x6b, 0xe3, 0xd4, 0x66, 0xaa, 0x70, 0xf1, 0x4e, 0xe9, 0xc0, 0x2b, 0x64, 0x83, 0xf2, 0x45, 0x23, 0x2e, 0x1b,
0x3a, 0x7d, 0xd1, 0x01, 0x4b, 0xf6, 0xd1, 0xd9, 0xc2, 0xce, 0x5a, 0x28, 0xc5, 0x67, 0xc7, 0xb6, 0x6a, 0xeb, 0xa3, 0x3a, 0x7d, 0xd9, 0x01, 0x4b, 0x0e, 0xd0, 0x62, 0x6e, 0x67, 0xcd, 0x95, 0xe2,
0xd7, 0xd7, 0x9f, 0xd9, 0x5e, 0x73, 0xb2, 0xf5, 0xb6, 0x2a, 0xca, 0xf3, 0x17, 0xd7, 0x63, 0x9b, 0x93, 0x53, 0xdb, 0xeb, 0x7f, 0x4f, 0x6c, 0xaf, 0x19, 0xd9, 0x7a, 0x53, 0x15, 0xe5, 0xc5, 0x8b,
0xea, 0x5f, 0x06, 0x9a, 0xbf, 0xed, 0x70, 0x16, 0xef, 0x31, 0x6f, 0x23, 0x0a, 0x3c, 0x16, 0x9b, 0xeb, 0xa9, 0x4d, 0xf5, 0xe7, 0x71, 0x34, 0x7b, 0xc7, 0xe6, 0x2c, 0xda, 0x67, 0xee, 0x66, 0xe8,
0xb7, 0x50, 0x59, 0xfc, 0x2f, 0x51, 0xa5, 0x5f, 0x6a, 0xcb, 0x3f, 0x2d, 0xed, 0xec, 0x4f, 0x4b, 0xbb, 0x2c, 0x32, 0x6f, 0xa3, 0xa2, 0xf8, 0x2e, 0x51, 0xa5, 0x5f, 0x6e, 0xca, 0x8f, 0x96, 0x66,
0xfb, 0x4e, 0xf6, 0xa7, 0xc5, 0x6a, 0xa8, 0xdf, 0x03, 0x7e, 0xfe, 0xf1, 0xf7, 0x7b, 0x8c, 0x3c, 0xfa, 0xd1, 0xd2, 0xbc, 0x9b, 0x7e, 0xb4, 0x58, 0x35, 0xf5, 0x7f, 0xc0, 0xcf, 0x2e, 0x7f, 0xaf,
0xfc, 0x1d, 0x1b, 0x14, 0x70, 0xd1, 0x7c, 0x81, 0xed, 0xb0, 0x00, 0xca, 0x5f, 0x91, 0xcd, 0x07, 0xcb, 0xc8, 0xe3, 0xdf, 0xb0, 0x41, 0x01, 0x17, 0xcd, 0xe7, 0xb7, 0x6d, 0xe6, 0x43, 0xf9, 0x4b,
0x80, 0x16, 0x14, 0x58, 0x84, 0x4a, 0xd4, 0xfc, 0x02, 0x2d, 0xc4, 0xcc, 0x65, 0xfe, 0x1e, 0xeb, 0xb2, 0xf9, 0x00, 0xd0, 0x82, 0x02, 0x8b, 0x50, 0x89, 0x9a, 0x9f, 0xa1, 0x85, 0x88, 0x39, 0xcc,
0xe4, 0xcb, 0x8b, 0xbc, 0x85, 0xf6, 0x30, 0xc5, 0xa7, 0x95, 0xf3, 0xa3, 0xc2, 0x0e, 0xb3, 0x08, 0xdb, 0x67, 0xad, 0x6c, 0x79, 0x91, 0xa7, 0xd0, 0x1c, 0x24, 0x78, 0x5e, 0x39, 0x3f, 0xcc, 0xed,
0x69, 0x9e, 0x75, 0x10, 0x7a, 0x8c, 0x4b, 0x7e, 0x29, 0x9c, 0x57, 0xf6, 0xd9, 0x89, 0x9f, 0x37, 0x30, 0x4b, 0x90, 0xe6, 0xa4, 0x83, 0xd0, 0x53, 0x5c, 0xf3, 0x3e, 0x9a, 0x8f, 0x58, 0x37, 0x8c,
0x5b, 0xf3, 0x27, 0x5f, 0x60, 0xcd, 0x5f, 0x43, 0x33, 0xb6, 0xe7, 0xc5, 0x8c, 0xcb, 0xc9, 0x58, 0xf3, 0xb9, 0xe5, 0x49, 0xbd, 0x3b, 0x48, 0xf0, 0x9c, 0xf4, 0xe5, 0x53, 0x2f, 0xaa, 0xd4, 0x23,
0x91, 0x7a, 0x51, 0x90, 0xbe, 0x3d, 0x65, 0x13, 0x9a, 0x79, 0xac, 0x6b, 0x4f, 0x9e, 0x36, 0x26, 0x38, 0xa1, 0x27, 0x99, 0xe4, 0x27, 0x23, 0x2b, 0xa4, 0x6c, 0xe0, 0x33, 0x2f, 0x64, 0xfa, 0xfd,
0x0e, 0x9e, 0x36, 0x26, 0x9e, 0x1c, 0x36, 0x8c, 0x83, 0xc3, 0x86, 0xf1, 0xf0, 0xa8, 0x31, 0xf1, 0x30, 0xfe, 0x12, 0xdf, 0x0f, 0xeb, 0x68, 0xaa, 0xed, 0xba, 0x11, 0xe3, 0x72, 0xe4, 0x96, 0xa4,
0xf8, 0xa8, 0x61, 0x1c, 0x1c, 0x35, 0x26, 0x7e, 0x3d, 0x6a, 0x4c, 0x7c, 0x7e, 0xfe, 0x05, 0x76, 0x10, 0x15, 0xa4, 0x65, 0xa1, 0x6c, 0x42, 0x53, 0x8f, 0x75, 0xfd, 0xd9, 0xf3, 0xda, 0xd8, 0xe1,
0x6b, 0xcf, 0x71, 0xa6, 0xe1, 0x98, 0x17, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xbf, 0x3c, 0x81, 0xf3, 0xda, 0xd8, 0xb3, 0xa3, 0x9a, 0x71, 0x78, 0x54, 0x33, 0x1e, 0x1f, 0xd7, 0xc6, 0x9e, 0x1e,
0x94, 0xda, 0x0e, 0x00, 0x00, 0xd7, 0x8c, 0xc3, 0xe3, 0xda, 0xd8, 0x2f, 0xc7, 0xb5, 0xb1, 0x4f, 0x2f, 0xbc, 0xc4, 0xd2, 0xee,
0xda, 0xf6, 0x24, 0xbc, 0xe6, 0xc5, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb3, 0xa4, 0xea, 0xfc,
0x33, 0x0f, 0x00, 0x00,
} }
func (m *FileVersion) Marshal() (dAtA []byte, err error) { func (m *FileVersion) Marshal() (dAtA []byte, err error) {
@ -1145,6 +1148,16 @@ func (m *ObservedFolder) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i _ = i
var l int var l int
_ = l _ = l
if m.RemoteEncrypted {
i--
if m.RemoteEncrypted {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x20
}
if m.ReceiveEncrypted { if m.ReceiveEncrypted {
i-- i--
if m.ReceiveEncrypted { if m.ReceiveEncrypted {
@ -1472,6 +1485,9 @@ func (m *ObservedFolder) ProtoSize() (n int) {
if m.ReceiveEncrypted { if m.ReceiveEncrypted {
n += 2 n += 2
} }
if m.RemoteEncrypted {
n += 2
}
return n return n
} }
@ -3108,6 +3124,26 @@ func (m *ObservedFolder) Unmarshal(dAtA []byte) error {
} }
} }
m.ReceiveEncrypted = bool(v != 0) m.ReceiveEncrypted = bool(v != 0)
case 4:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field RemoteEncrypted", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowStructs
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.RemoteEncrypted = bool(v != 0)
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipStructs(dAtA[iNdEx:]) skippy, err := skipStructs(dAtA[iNdEx:])

View File

@ -1305,6 +1305,7 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
delete(expiredPending, folder.ID) delete(expiredPending, folder.ID)
of.Label = folder.Label of.Label = folder.Label
of.ReceiveEncrypted = len(ccDeviceInfos[folder.ID].local.EncryptionPasswordToken) > 0 of.ReceiveEncrypted = len(ccDeviceInfos[folder.ID].local.EncryptionPasswordToken) > 0
of.RemoteEncrypted = len(ccDeviceInfos[folder.ID].remote.EncryptionPasswordToken) > 0
if err := m.db.AddOrUpdatePendingFolder(folder.ID, of, deviceID); err != nil { if err := m.db.AddOrUpdatePendingFolder(folder.ID, of, deviceID); err != nil {
l.Warnf("Failed to persist pending folder entry to database: %v", err) l.Warnf("Failed to persist pending folder entry to database: %v", err)
} }
@ -1316,6 +1317,7 @@ func (m *model) ccHandleFolders(folders []protocol.Folder, deviceCfg config.Devi
FolderLabel: folder.Label, FolderLabel: folder.Label,
DeviceID: deviceID, DeviceID: deviceID,
ReceiveEncrypted: of.ReceiveEncrypted, ReceiveEncrypted: of.ReceiveEncrypted,
RemoteEncrypted: of.RemoteEncrypted,
}) })
// DEPRECATED: Only for backwards compatibility, should be removed. // DEPRECATED: Only for backwards compatibility, should be removed.
m.evLogger.Log(events.FolderRejected, map[string]string{ m.evLogger.Log(events.FolderRejected, map[string]string{
@ -3265,6 +3267,7 @@ type updatedPendingFolder struct {
FolderLabel string `json:"folderLabel"` FolderLabel string `json:"folderLabel"`
DeviceID protocol.DeviceID `json:"deviceID"` DeviceID protocol.DeviceID `json:"deviceID"`
ReceiveEncrypted bool `json:"receiveEncrypted"` ReceiveEncrypted bool `json:"receiveEncrypted"`
RemoteEncrypted bool `json:"remoteEncrypted"`
} }
// redactPathError checks if the error is actually a os.PathError, and if yes // redactPathError checks if the error is actually a os.PathError, and if yes

View File

@ -94,6 +94,7 @@ message ObservedFolder {
google.protobuf.Timestamp time = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; google.protobuf.Timestamp time = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
string label = 2; string label = 2;
bool receive_encrypted = 3; bool receive_encrypted = 3;
bool remote_encrypted = 4;
} }
message ObservedDevice { message ObservedDevice {