4.3. Managing S3 User and Bucket Limits in WHMCS¶
This section describes limits you can define for users and buckets in WHMCS. You can apply the limits according to specific options that can be a part of your service plan.
4.3.1. Setting User Limits¶
You can limit operations rate with the ostor-limits
service and the following parameters: emailAddress
specifying the email address, default=
, get=
, put=
, list=
, or delete=
specifying the limit value.
Similarly, you can limit outgoing bandwidth of a response with the following parameters: emailAddress
specifying the email address, out=
specifying the limit value. WHMCS configures user limits in an S3 cluster when you click the Set button. Create a file S3_setLimitsForUser.php
with the following contents:
<?php
// Load configuration and libraries.
require('../../includes/staas_scripts/S3_getClient.php');
require('../../includes/staas_scripts/S3_getConfig.php');
require('../../includes/staas_scripts/S3_requestCurl.php');
require('../../init.php');
// Set s3 user limits.
function S3_setLimitsForUser($vars) {
// Load configuration.
$s3_config = s3_getConfig();
// Get whmcs user email.
$s3_whmcs = S3_getClient($vars['userid'], $s3_config['whmcs_username']);
// Set only if value specified.
if (!empty($vars['ops-value'])) {
// Set s3 bucket limits (ops).
S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&emailAddress=" . $s3_whmcs['email'] .
"&limit-type=ops&limit-resource=" . $vars['ops-name'] .
'&limit-value=' . $vars['ops-value'],
"PUT"
);
}
// Set only if value specified.
if (!empty($vars['bandwidth-value'])) {
// Set s3 bucket limits (bandwidth).
S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&emailAddress=" . $s3_whmcs['email'] .
"&limit-type=bandwidth&limit-resource=" . $vars['bandwidth-name'] .
'&limit-value=' . $vars['bandwidth-value'],
"PUT"
);
}
// Redirect back.
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
// Call function.
S3_setLimitsForUser($_GET);
?>

4.3.2. Querying User Limits¶
You can display the current limits with the ostor-limits
service and parameter emailAddress
specifying the email address. WHMCS displays the user limits in S3 cluster when you click the Get button. Create a file S3_getLimitsForUser.php
with the following contents:
<?php
// Load configuration and libraries.
require('../../includes/staas_scripts/S3_getClient.php');
require('../../includes/staas_scripts/S3_getConfig.php');
require('../../includes/staas_scripts/S3_requestCurl.php');
require('../../init.php');
// Get s3 user limits.
function S3_getLimitsForUser($userid) {
// Load configuration.
$s3_config = s3_getConfig();
// Get whmcs user email.
$s3_whmcs = S3_getClient($userid, $s3_config['whmcs_username']);
// Get s3 user limits.
$s3_client = S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&emailAddress=" . $s3_whmcs['email'],
"GET"
);
// Store s3 result.
$_SESSION['s3_limits_user'] = $s3_client;
// Redirect back.
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
// Call function.
S3_getLimitsForUser($_GET['userid']);
?>
4.3.3. Deleting User Limits¶
You can delete the current limits with the ostor-limits
service and parameter emailAddress
specifying the email address. WHMCS removes the user limits from S3 cluster when you click the Delete button. Create a file S3_deleteLimitsForUser.php
with the following contents:
<?php
// Load configuration and libraries.
require('../../includes/staas_scripts/S3_getClient.php');
require('../../includes/staas_scripts/S3_getConfig.php');
require('../../includes/staas_scripts/S3_requestCurl.php');
require('../../init.php');
// Delete s3 user limits.
function S3_getLimitsForUser($userid) {
// Load configuration.
$s3_config = s3_getConfig();
// Get whmcs user email.
$s3_whmcs = S3_getClient($userid, $s3_config['whmcs_username']);
// Delete s3 user limits.
S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&emailAddress=" . $s3_whmcs['email'],
"DELETE"
);
// Clear array.
$_SESSION['s3_limits_user'] = null;
// Redirect back.
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
// Call function.
S3_getLimitsForUser($_GET['userid']);
?>
4.3.4. Setting Buckets Limits¶
You can limit operations rate with the ostor-limits
service and the following parameters: bucket
specifying the bucket name, default=
, get=
, put=
, list=
, delete=
specifying the limit value.
Similarly, you can limit outgoing bandwidth of a response with the ostor-limits
service and the following parameters: bucket
specifying the bucket name, out=
specifying the limit value. WHMCS configures the bucket limits in S3 cluster when you click the Set button. Create a file S3_setLimitsForBucket.php
with the following contents:
<?php
// Load configuration and libraries.
require('../../includes/staas_scripts/S3_getConfig.php');
require('../../includes/staas_scripts/S3_requestCurl.php');
require('../../init.php');
// Set s3 bucket limits.
function S3_setLimitsForBucket($vars) {
// Load configuration.
$s3_config = s3_getConfig();
// Set only if value specified.
if (!empty($vars['ops-value'])) {
// Set s3 bucket limits (ops).
S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&bucket=" . $vars['bucket'] .
"&limit-type=ops&limit-resource=" . $vars['ops-name'] .
'&limit-value=' . $vars['ops-value'],
"PUT"
);
}
// Set only if value specified.
if (!empty($vars['bandwidth-value'])) {
// Set s3 bucket limits (bandwidth).
S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&bucket=" . $vars['bucket'] .
"&limit-type=bandwidth&limit-resource=" . $vars['bandwidth-name'] .
'&limit-value=' . $vars['bandwidth-value'],
"PUT"
);
}
// Redirect back.
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
// Call function.
S3_setLimitsForBucket($_GET);
?>
4.3.5. Querying Bucket Limits¶
You can display the current limits with the ostor-limits
service and parameter bucket
specifying the bucket name. WHMCS displays the bucket limits in S3 cluster when you click the Get button. Create a file S3_getLimitsForBucket.php
with the following contents:
<?php
// Load configuration and libraries.
require('../../includes/staas_scripts/S3_getConfig.php');
require('../../includes/staas_scripts/S3_requestCurl.php');
require('../../init.php');
// Get s3 bucket limits.
function S3_getLimitsForBucket($bucket) {
// Load configuration.
$s3_config = s3_getConfig();
// Get s3 user limits.
$s3_client = S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&bucket=" . $bucket,
"GET"
);
// Store s3 result.
$_SESSION['s3_limits_bucket'] = $s3_client;
$_SESSION['s3_bucket'] = $bucket;
// Redirect back.
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
// Call function.
S3_getLimitsForBucket($_GET['bucket']);
?>

4.3.6. Deleting Bucket Limits¶
You can delete the current limits with the ostor-limits
service and parameter bucket
specifying the bucket name. WHMCS removes the bucket limits from S3 cluster when you click the Delete button. Create a file S3_deleteLimitsForBucket.php
with the following contents:
<?php
// Load configuration and libraries.
require('../../includes/staas_scripts/S3_getConfig.php');
require('../../includes/staas_scripts/S3_requestCurl.php');
require('../../init.php');
// Delete s3 bucket limits.
function S3_deleteLimitsForBucket($bucket) {
// Load configuration.
$s3_config = s3_getConfig();
// Delete s3 bucket limits.
S3_requestCurl(
$s3_config['s3_key'],
$s3_config['s3_secret'],
$s3_config['s3_gateway'],
"/?ostor-limits&bucket=" . $bucket,
"DELETE"
);
// Clear array.
$_SESSION['s3_limits_bucket'] = null;
// Redirect back.
header('Location: ' . $_SERVER['HTTP_REFERER']);
}
// Call function.
S3_deleteLimitsForBucket($_GET['bucket']);
?>