Update and return the storage limit

pull/1/head
yflory 8 years ago
parent b76dcba1d6
commit 57ee7de7d4

@ -116,6 +116,12 @@ module.exports = {
'contact', 'contact',
], ],
/* Domain
* If you want to have enable payments on your CryptPad instance, it has to be able to tell
* our account server what is your domain
*/
// domain: 'https://cryptpad.fr',
/* /*
You have the option of specifying an alternative storage adaptor. You have the option of specifying an alternative storage adaptor.
These status of these alternatives are specified in their READMEs, These status of these alternatives are specified in their READMEs,

@ -7,10 +7,14 @@ var Nacl = require("tweetnacl");
var Fs = require("fs"); var Fs = require("fs");
var Path = require("path"); var Path = require("path");
var Https = require("https");
var RPC = module.exports; var RPC = module.exports;
var Store = require("./storage/file"); var Store = require("./storage/file");
var config = require('./config');
var DEFAULT_LIMIT = 100;
var isValidChannel = function (chan) { var isValidChannel = function (chan) {
return /^[a-fA-F0-9]/.test(chan) || return /^[a-fA-F0-9]/.test(chan) ||
@ -454,8 +458,42 @@ var isPrivilegedUser = function (publicKey, cb) {
}); });
}; };
var getLimit = function (cb) { var limits = {};
cb = cb; // TODO var updateLimits = function (publicKey, cb) {
if (typeof cb !== "function") { cb = function () {}; }
var domain = config.domain;
var options = {
host: 'accounts.cryptpad.fr',
path: '/api/getAuthorized?domain=' + encodeURIComponent(domain)
};
var callback = function (response) {
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
try {
var json = JSON.parse(str);
limits = json;
var l;
if (publicKey) {
l = typeof limits[publicKey] === "number" ? limits[publicKey] : DEFAULT_LIMIT;
}
cb(void 0, l);
} catch (e) {
cb(e);
}
});
};
Https.get(options, callback).on('error', function (e) {
console.error(e);
cb(e);
});
};
var getLimit = function (publicKey, cb) {
return void cb(null, typeof limits[publicKey] === "number" ? limits[publicKey] : DEFAULT_LIMIT);
}; };
var safeMkdir = function (path, cb) { var safeMkdir = function (path, cb) {
@ -714,10 +752,16 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
}); });
case 'GET_FILE_SIZE': case 'GET_FILE_SIZE':
return void getFileSize(ctx.store, msg[1], Respond); return void getFileSize(ctx.store, msg[1], Respond);
case 'GET_LIMIT': // TODO implement this and cache it per-user case 'UPDATE_LIMITS':
return void getLimit(function (e, limit) { return void updateLimits(safeKey, function (e, limit) {
if (e) { return void Respond(e); }
Respond(void 0, limit);
});
case 'GET_LIMIT':
return void getLimit(safeKey, function (e, limit) {
if (e) { return void Respond(e); }
limit = limit; limit = limit;
Respond('NOT_IMPLEMENTED'); Respond(void 0, limit);
}); });
case 'GET_MULTIPLE_FILE_SIZE': case 'GET_MULTIPLE_FILE_SIZE':
return void getMultipleFileSize(ctx.store, msg[1], function (e, dict) { return void getMultipleFileSize(ctx.store, msg[1], function (e, dict) {
@ -775,6 +819,14 @@ RPC.create = function (config /*:typeof(ConfigType)*/, cb /*:(?Error, ?Function)
handleMessage(session.privilege); handleMessage(session.privilege);
}; };
var updateLimitDaily = function () {
updateLimits(function (e) {
if (e) { console.error('Error updating the storage limits', e); }
});
};
updateLimitDaily();
setInterval(updateLimitDaily, 24*3600*1000);
Store.create({ Store.create({
filePath: pinPath, filePath: pinPath,
}, function (s) { }, function (s) {

@ -744,8 +744,15 @@ define([
}); });
}; };
common.updatePinLimit = function (cb) {
if (!pinsReady()) { return void cb('[RPC_NOT_READY]'); }
rpc.getFileListSize(cb);
};
common.getPinLimit = function (cb) { common.getPinLimit = function (cb) {
cb(void 0, typeof(AppConfig.pinLimit) === 'number'? AppConfig.pinLimit: 1000); if (!pinsReady()) { return void cb('[RPC_NOT_READY]'); }
rpc.getFileListSize(cb);
//cb(void 0, typeof(AppConfig.pinLimit) === 'number'? AppConfig.pinLimit: 1000);
}; };
common.isOverPinLimit = function (cb) { common.isOverPinLimit = function (cb) {

@ -121,6 +121,29 @@ define([
}); });
}; };
// Update the limit value for all the users and return the limit for your publicKey
exp.updatePinLimits = function (cb) {
rpc.send('UPDATE_LIMITS', undefined, function (e, response) {
if (e) { return void cb(e); }
if (response && typeof response === "number") {
cb (void 0, response);
} else {
cb('INVALID_RESPONSE');
}
});
};
// Get the storage limit associated with your publicKey
exp.getLimit = function (cb) {
rpc.send('GET_LIMIT', undefined, function (e, response) {
if (e) { return void cb(e); }
if (response && typeof response === "number") {
cb (void 0, response);
} else {
cb('INVALID_RESPONSE');
}
});
};
cb(e, exp); cb(e, exp);
}); });
}; };

Loading…
Cancel
Save