Add more migration options
This commit is contained in:
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) {
|
SF.load = function (config, id, data, _cb) {
|
||||||
var cb = Util.once(_cb);
|
var cb = Util.once(_cb);
|
||||||
var network = config.network;
|
var network = config.network;
|
||||||
|
|||||||
@ -478,28 +478,13 @@ define([
|
|||||||
files.migrateRo = 1;
|
files.migrateRo = 1;
|
||||||
var next = function () {
|
var next = function () {
|
||||||
var copy = JSON.parse(JSON.stringify(files));
|
var copy = JSON.parse(JSON.stringify(files));
|
||||||
exp.reencrypt(null, config.editKey, copy);
|
exp.reencrypt(config.editKey, config.editKey, copy);
|
||||||
// XXX test migration again
|
Object.keys(copy).forEach(function (k) {
|
||||||
/*
|
files[k] = copy[k];
|
||||||
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);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
Object.keys(copy[SHARED_FOLDERS] || {}).forEach(function (id) {
|
files.version = 2;
|
||||||
var data = copy[SHARED_FOLDERS][id] || {};
|
delete files.migrateRo;
|
||||||
// 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 = copy;
|
|
||||||
onSync(cb);
|
onSync(cb);
|
||||||
};
|
};
|
||||||
onSync(next);
|
onSync(next);
|
||||||
|
|||||||
@ -39,6 +39,13 @@ define([
|
|||||||
userObject: userObject,
|
userObject: userObject,
|
||||||
leave: leave
|
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;
|
return userObject;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -77,7 +77,7 @@ define([
|
|||||||
// If this pad has a visible href, encrypt it
|
// If this pad has a visible href, encrypt it
|
||||||
// "&& data.roHref" is here to make sure this is not a "file"
|
// "&& data.roHref" is here to make sure this is not a "file"
|
||||||
if (data.href && data.roHref && !data.fileType) {
|
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);
|
data.href = newCryptor.encrypt(_href);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -85,7 +85,7 @@ define([
|
|||||||
var data = obj[SHARED_FOLDERS][id] || {};
|
var data = obj[SHARED_FOLDERS][id] || {};
|
||||||
// If this folder has a visible href, encrypt it
|
// If this folder has a visible href, encrypt it
|
||||||
if (data.href) {
|
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);
|
data.href = newCryptor.encrypt(_href);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -93,7 +93,7 @@ define([
|
|||||||
var data = obj[SHARED_FOLDERS_TEMP][id] || {};
|
var data = obj[SHARED_FOLDERS_TEMP][id] || {};
|
||||||
// If this folder has a visible href, encrypt it
|
// If this folder has a visible href, encrypt it
|
||||||
if (data.href) {
|
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);
|
data.href = newCryptor.encrypt(_href);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -102,6 +102,10 @@ define([
|
|||||||
module.init = function (files, config) {
|
module.init = function (files, config) {
|
||||||
var exp = {};
|
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.cryptor = createCryptor(config.editKey);
|
||||||
|
|
||||||
exp.setReadOnly = function (state, key) {
|
exp.setReadOnly = function (state, key) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user