Implement quota hard cap (refusal if over)

- Added quota logging for debugging/monitoring
- Hard-coded for now to 25000 KB, should be configurable in settings.php in the future.
pull/5/head
wolfbeast 8 years ago
parent 540b41055b
commit 1d840ef750

@ -20,6 +20,7 @@
#
# Contributor(s):
# Daniel Triendl <daniel@pew.cc>
# Mark Straver <moonchild@palemoon.org>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
@ -49,9 +50,23 @@
define ('WEAVE_ERROR_FUNCTION_NOT_SUPPORTED', 11);
define ('WEAVE_ERROR_NO_EMAIL', 12);
define ('WEAVE_ERROR_INVALID_COLLECTION', 13);
define ('WEAVE_ERROR_OVER_QUOTA', 14);
define ('LOG_THE_ERROR', 0);
define ('LOG_QUOTAS', 1);
function log_quota($msg)
{
if ( LOG_QUOTAS == 1 )
{
$datei = fopen("/tmp/FSyncMS-quota.log","a");
$fmsg = sprintf("$msg\n");
fputs($datei,$fmsg);
// fputs($datei,"Server ".print_r( $_SERVER, true));
fclose($datei);
}
}
function log_error($msg)
{
@ -60,7 +75,7 @@
$datei = fopen("/tmp/FSyncMS-error.txt","a");
$fmsg = sprintf("$msg\n");
fputs($datei,$fmsg);
fputs($datei,"Server ".print_r( $_SERVER, true));
// fputs($datei,"Server ".print_r( $_SERVER, true));
fclose($datei);
}
}
@ -242,7 +257,20 @@
function check_quota(&$db)
{
return;
// Checks the quota and if over limit, returns "over quota" to the user.
$auth_user = array_key_exists('PHP_AUTH_USER', $_SERVER) ? $_SERVER['PHP_AUTH_USER'] : null;
try {
$quota_used = $db->get_storage_total();
log_quota("Debug quota: ".$auth_user." @ ".$quota_used." KB.");
} catch (Exception $e) {
log_error($e->getMessage(), $e->getCode());
}
if ($quota_used > 25000) {
log_quota("[!!] Over quota: ".$auth_user." @ ".$quota_used." KB.");
// HTTP 400 with body error code 14 means over quota.
report_problem(WEAVE_ERROR_OVER_QUOTA, 400);
}
}
function check_timestamp($collection, &$db)

Loading…
Cancel
Save