diff --git a/weave_utils.php b/weave_utils.php index a2b1047..046fa10 100644 --- a/weave_utils.php +++ b/weave_utils.php @@ -20,6 +20,7 @@ # # Contributor(s): # Daniel Triendl +# Mark Straver # # 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)