Skip to content

Commit cfc79e7

Browse files
committed
Ftp statistics feature
1 parent b6a0ab0 commit cfc79e7

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

install/sql/ispconfig3.sql

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,20 @@ CREATE TABLE `ftp_user` (
638638

639639
-- --------------------------------------------------------
640640

641+
--
642+
-- Table structure for table `ftp_traffic`
643+
--
644+
645+
CREATE TABLE `ftp_traffic` (
646+
`hostname` varchar(255) NOT NULL,
647+
`traffic_date` date NOT NULL,
648+
`in_bytes` bigint(32) unsigned NOT NULL,
649+
`out_bytes` bigint(32) unsigned NOT NULL,
650+
PRIMARY KEY (`hostname`,`traffic_date`)
651+
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
652+
653+
-- --------------------------------------------------------
654+
641655
--
642656
-- Table structure for table `help_faq`
643657
--

interface/lib/classes/quota_lib.inc.php

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,67 @@ public function get_trafficquota_data($clientid = null, $lastdays = 0) {
156156

157157
return $traffic_data;
158158
}
159+
160+
public function get_ftptrafficquota_data($clientid = null, $lastdays = 0) {
161+
global $app;
162+
163+
$traffic_data = array();
164+
165+
// select vhosts (belonging to client)
166+
if($clientid != null){
167+
$sql_where = " AND sys_groupid = (SELECT default_group FROM sys_user WHERE client_id=?)";
168+
}
169+
$sites = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE active = 'y' AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')".$sql_where, $clientid);
170+
171+
$hostnames = array();
172+
$traffic_data = array();
173+
174+
foreach ($sites as $site) {
175+
$hostnames[] = $site['domain'];
176+
$traffic_data[$site['domain']]['domain_id'] = $site['domain_id'];
177+
}
178+
179+
// fetch all traffic-data of selected vhosts
180+
if (!empty($hostnames)) {
181+
$tmp_year = date('Y');
182+
$tmp_month = date('m');
183+
// This Month
184+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE YEAR(traffic_date) = ? AND MONTH(traffic_date) = ? AND hostname IN ? GROUP BY hostname", $tmp_year, $tmp_month, $hostnames);
185+
foreach ($tmp_recs as $tmp_rec) {
186+
$traffic_data[$tmp_rec['hostname']]['this_month'] = $tmp_rec['t'];
187+
}
188+
// This Year
189+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE YEAR(traffic_date) = ? AND hostname IN ? GROUP BY hostname", $tmp_year, $hostnames);
190+
foreach ($tmp_recs as $tmp_rec) {
191+
$traffic_data[$tmp_rec['hostname']]['this_year'] = $tmp_rec['t'];
192+
}
193+
194+
$tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")));
195+
$tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y")));
196+
// Last Month
197+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE YEAR(traffic_date) = ? AND MONTH(traffic_date) = ? AND hostname IN ? GROUP BY hostname", $tmp_year, $tmp_month, $hostnames);
198+
foreach ($tmp_recs as $tmp_rec) {
199+
$traffic_data[$tmp_rec['hostname']]['last_month'] = $tmp_rec['t'];
200+
}
201+
202+
$tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1));
203+
// Last Year
204+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE YEAR(traffic_date) = ? AND hostname IN ? GROUP BY hostname", $tmp_year, $hostnames);
205+
foreach ($tmp_recs as $tmp_rec) {
206+
$traffic_data[$tmp_rec['hostname']]['last_year'] = $tmp_rec['t'];
207+
}
208+
209+
if (is_int($lastdays) && ($lastdays > 0)) {
210+
// Last xx Days
211+
$tmp_recs = $app->db->queryAllRecords("SELECT hostname, SUM(in_bytes) AS ftp_in, SUM(out_bytes) AS ftp_out FROM ftp_traffic WHERE (traffic_date >= DATE_SUB(NOW(), INTERVAL ? DAY)) AND hostname IN ? GROUP BY hostname", $lastdays, $hostnames);
212+
foreach ($tmp_recs as $tmp_rec) {
213+
$traffic_data[$tmp_rec['hostname']]['lastdays'] = $tmp_rec['t'];
214+
}
215+
}
216+
}
217+
218+
return $traffic_data;
219+
}
159220

160221
public function get_mailquota_data($clientid = null, $readable = true) {
161222
global $app;

interface/lib/classes/remote.d/sites.inc.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,21 @@ public function trafficquota_get_by_user($session_id, $client_id, $lastdays = 0)
980980
return $app->quota_lib->get_trafficquota_data($client_id, $lastdays);
981981
}
982982

983+
public function ftptrafficquota_data($session_id, $client_id, $lastdays = 0)
984+
{
985+
global $app;
986+
$app->uses('quota_lib');
987+
988+
if(!$this->checkPerm($session_id, 'trafficquota_get_by_user')) {
989+
$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
990+
return false;
991+
}
992+
if ($client_id != null)
993+
$client_id = $app->functions->intval($client_id);
994+
995+
return $app->quota_lib->get_ftptrafficquota_data($client_id, $lastdays);
996+
}
997+
983998
public function databasequota_get_by_user($session_id, $client_id)
984999
{
9851000
global $app;

0 commit comments

Comments
 (0)