|
|
|
@ -146,6 +146,32 @@ var flushCache = function (Env, Server, cb) {
|
|
|
|
|
cb(void 0, true);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// CryptPad_AsyncStore.rpc.send('ADMIN', ['ARCHIVE_DOCUMENT', documentID], console.log)
|
|
|
|
|
var archiveDocument = function (Env, Server, cb, data) {
|
|
|
|
|
var id = Array.isArray(data) && data[1];
|
|
|
|
|
if (typeof(id) !== 'string' || id.length < 32) { return void cb("EINVAL"); }
|
|
|
|
|
|
|
|
|
|
switch (id.length) {
|
|
|
|
|
case 32:
|
|
|
|
|
return void Env.msgStore.archiveChannel(id, cb);
|
|
|
|
|
case 48:
|
|
|
|
|
return void Env.blobStore.archive.blob(id, cb);
|
|
|
|
|
default:
|
|
|
|
|
return void cb("INVALID_ID_LENGTH");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// archival for blob proofs isn't automated, but evict-inactive.js will
|
|
|
|
|
// clean up orpaned blob proofs
|
|
|
|
|
// Env.blobStore.archive.proof(userSafeKey, blobId, cb)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var restoreArchivedDocument = function (Env, Server, cb) {
|
|
|
|
|
// Env.msgStore.restoreArchivedChannel(channelName, cb)
|
|
|
|
|
// Env.blobStore.restore.blob(blobId, cb)
|
|
|
|
|
// Env.blobStore.restore.proof(userSafekey, blobId, cb)
|
|
|
|
|
|
|
|
|
|
cb("NOT_IMPLEMENTED");
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// CryptPad_AsyncStore.rpc.send('ADMIN', ['SET_DEFAULT_STORAGE_LIMIT', 1024 * 1024 * 1024 /* 1GB */], console.log)
|
|
|
|
|
var setDefaultStorageLimit = function (Env, Server, cb, data) {
|
|
|
|
@ -174,6 +200,9 @@ var commands = {
|
|
|
|
|
GET_FILE_DESCRIPTOR_LIMIT: getFileDescriptorLimit,
|
|
|
|
|
SET_DEFAULT_STORAGE_LIMIT: setDefaultStorageLimit,
|
|
|
|
|
GET_CACHE_STATS: getCacheStats,
|
|
|
|
|
|
|
|
|
|
ARCHIVE_DOCUMENT: archiveDocument,
|
|
|
|
|
RESTORE_ARCHIVED_DOCUMENT: restoreArchivedDocument,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Admin.command = function (Env, safeKey, data, _cb, Server) {
|
|
|
|
|