File: //usr/local/share/hostingplatform/scripts/__getHostingPackageBandwidth
#!/usr/bin/env php
<?php
if (count($argv) < 2) die ("usage: {$argv[0]} <packagename>\n");
$packagename = $argv[1];
if($packagename && strlen($packagename)) {
$out = -1;
$pattern = "/(?xU)
\S+ # address
\s+
\S+\s+\S+\s+ # - -
# date
\[ # date opening bracket
(?P<day>\d+) # day
\/
(?P<month>\w+) # month
\/
(?P<year>\d+) # year
:.* # time
\] # date closing bracket
\s+
# URL
\".*\"
\s+
\d+ # Status code
\s+
(?P<size>\d+) # Size
\s+
# Reminder...
.*
/";
$current_month = date("M");
$current_year = date("Y");
$db = new SQLite3("/var/local/hostingplatform/db.sqlite");
$db->query("PRAGMA foreign_keys = ON");
$escaped_packagename = $db->escapeString($packagename);
$domains_query = "
SELECT
hosting_domains.domainname as domainname
FROM
hosting_domains
WHERE
hosting_domains.packagename = '$escaped_packagename'
ORDER BY
hosting_domains.domainname
";
$result = $db->query($domains_query);
while($data = $result->fetchArray(SQLITE3_ASSOC)) {
$ifp = fopen("/var/log/apache2/hostingpackages/$packagename/{$data["domainname"]}-access.log", "r");
if ($ifp) {
if ($out < 0) $out = 0;
while (!feof($ifp)) {
$r = preg_match($pattern, fgets($ifp), $matches);
if ($r && $matches["month"] == $current_month && $matches["year"] == $current_year) {
$out += round($matches["size"]);
}
}
}
}
$return = array(
"bandwidth" => ($out > 0 ? round($out/1024/1024) : -1),
);
print json_encode($return);
exit(0);
}
?>