Add more migration options
parent
f6bbe70f3c
commit
176e667128
|
@ -63,6 +63,28 @@ define([
|
|||
});
|
||||
};
|
||||
|
||||
// XXX only needed if we want a manual migration from the share modal...
|
||||
SF.migrate = function (channel) {
|
||||
var sf = allSharedFolders[channel];
|
||||
if (!sf) { return; }
|
||||
var clients = sf.teams;
|
||||
if (!Array.isArray(clients) || !clients.length) { return; }
|
||||
var c = clients[0];
|
||||
// No secondaryKey? ==> already migrated ==> abort
|
||||
if (!c.secondaryKey) { return; }
|
||||
var f = Util.find(c, ['store', 'manager', 'folders', c.id]);
|
||||
// Can't find the folder: abort
|
||||
if (!f) { return; }
|
||||
// Already migrated: abort
|
||||
if (!f.proxy || f.proxy.version) { return; }
|
||||
f.userObject.migrateReadOnly(function () {
|
||||
clients.forEach(function (obj) {
|
||||
var uo = Util.find(obj, ['store', 'manager', 'folders', obj.id, 'userObject']);
|
||||
uo.setReadOnly(false, obj.secondarykey);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
SF.load = function (config, id, data, _cb) {
|
||||
var cb = Util.once(_cb);
|
||||
var network = config.network;
|
||||
|
|
|
@ -478,28 +478,13 @@ define([
|
|||
files.migrateRo = 1;
|
||||
var next = function () {
|
||||
var copy = JSON.parse(JSON.stringify(files));
|
||||
exp.reencrypt(null, config.editKey, copy);
|
||||
// XXX test migration again
|
||||
/*
|
||||
Object.keys(copy[FILES_DATA]).forEach(function (id) {
|
||||
var data = copy[FILES_DATA][id] || {};
|
||||
// If this pad has a visible href, encrypt it
|
||||
// "&& data.roHref" is here to make sure this is not a "file"
|
||||
if (data.href && data.roHref && !data.fileType && data.href.indexOf('#') !== -1) {
|
||||
data.href = exp.cryptor.encrypt(data.href);
|
||||
}
|
||||
exp.reencrypt(config.editKey, config.editKey, copy);
|
||||
Object.keys(copy).forEach(function (k) {
|
||||
files[k] = copy[k];
|
||||
});
|
||||
Object.keys(copy[SHARED_FOLDERS] || {}).forEach(function (id) {
|
||||
var data = copy[SHARED_FOLDERS][id] || {};
|
||||
// If this folder has a visible href, encrypt it
|
||||
if (data.href && data.roHref && !data.fileType && data.href.indexOf('#') !== -1) {
|
||||
data.href = exp.cryptor.encrypt(data.href);
|
||||
}
|
||||
});*/
|
||||
copy.version = 2;
|
||||
delete copy.migrateRo;
|
||||
files.version = 2;
|
||||
delete files.migrateRo;
|
||||
|
||||
files = copy;
|
||||
onSync(cb);
|
||||
};
|
||||
onSync(next);
|
||||
|
|
|
@ -39,6 +39,13 @@ define([
|
|||
userObject: userObject,
|
||||
leave: leave
|
||||
};
|
||||
if (false) { // XXX allow shared folder migration while using it
|
||||
// NOTE: this is not needed if we always use the editKey in userObject, even with old version
|
||||
var path = proxy.drive ? ['drive', 'version'] : ['version'];
|
||||
proxy.on('change', path, function () {
|
||||
userObject.setReadOnly(false, editKey);
|
||||
});
|
||||
}
|
||||
return userObject;
|
||||
};
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ define([
|
|||
// If this pad has a visible href, encrypt it
|
||||
// "&& data.roHref" is here to make sure this is not a "file"
|
||||
if (data.href && data.roHref && !data.fileType) {
|
||||
var _href = oldCryptor.decrypt(data.href);
|
||||
var _href = (data.href && data.href.indexOf('#') === -1) ? oldCryptor.decrypt(data.href) : data.href;
|
||||
data.href = newCryptor.encrypt(_href);
|
||||
}
|
||||
});
|
||||
|
@ -85,7 +85,7 @@ define([
|
|||
var data = obj[SHARED_FOLDERS][id] || {};
|
||||
// If this folder has a visible href, encrypt it
|
||||
if (data.href) {
|
||||
var _href = oldCryptor.decrypt(data.href);
|
||||
var _href = (data.href && data.href.indexOf('#') === -1) ? oldCryptor.decrypt(data.href) : data.href;
|
||||
data.href = newCryptor.encrypt(_href);
|
||||
}
|
||||
});
|
||||
|
@ -93,7 +93,7 @@ define([
|
|||
var data = obj[SHARED_FOLDERS_TEMP][id] || {};
|
||||
// If this folder has a visible href, encrypt it
|
||||
if (data.href) {
|
||||
var _href = oldCryptor.decrypt(data.href);
|
||||
var _href = (data.href && data.href.indexOf('#') === -1) ? oldCryptor.decrypt(data.href) : data.href;
|
||||
data.href = newCryptor.encrypt(_href);
|
||||
}
|
||||
});
|
||||
|
@ -102,6 +102,10 @@ define([
|
|||
module.init = function (files, config) {
|
||||
var exp = {};
|
||||
|
||||
if (false && !files.version) { // XXX if we remove false, old shared folders won't encrypt new hrefs
|
||||
config.editKey = undefined;
|
||||
}
|
||||
|
||||
exp.cryptor = createCryptor(config.editKey);
|
||||
|
||||
exp.setReadOnly = function (state, key) {
|
||||
|
|
Loading…
Reference in New Issue