Revize 862
Přidáno uživatelem Michal Kliment před více než 13 roky(ů)
freenetis/branches/ulogd/application/controllers/web_interface.php | ||
---|---|---|
|
||
}
|
||
|
||
/**
|
||
* Returns IP addresses of the most traffic-active members
|
||
*
|
||
* @author Michal Kliment
|
||
*/
|
||
public function active_traffic_members_ip_addresses()
|
||
{
|
||
$ips = $this->db->query("
|
||
SELECT q3.* FROM
|
||
(
|
||
SELECT IFNULL(ip.ip_address, ip2.ip_address) AS ip_address, q2.name, q2.download FROM
|
||
(
|
||
SELECT m.*, SUM(q1.download/1073741824) AS download FROM
|
||
(
|
||
SELECT u.*, IFNULL(i.device_id,i2.device_id) AS device_id FROM
|
||
(
|
||
SELECT ip2str(orig_ip_saddr) as src, sum(orig_raw_pktlen) as upload, sum(reply_raw_pktlen) as download, (orig_raw_pktlen+reply_raw_pktlen) AS total FROM ulog2_ct u group by orig_ip_saddr ORDER BY download DESC LIMIT 0,200
|
||
) AS u
|
||
JOIN ip_addresses ip ON u.src = ip.ip_address
|
||
LEFT JOIN ifaces i ON ip.iface_id = i.id
|
||
LEFT JOIN vlan_ifaces vi ON ip.vlan_iface_id = vi.id
|
||
LEFT JOIN ifaces i2 ON vi.iface_id = i2.id
|
||
) AS q1
|
||
JOIN devices d ON q1.device_id = d.id
|
||
JOIN users u ON d.user_id = u.id
|
||
JOIN members m ON u.member_id = m.id AND m.id <> 1
|
||
GROUP BY m.id
|
||
) AS q2
|
||
JOIN users u ON q2.id = u.member_id
|
||
JOIN devices d ON u.id = d.user_id
|
||
JOIN ifaces i ON d.id = i.device_id
|
||
LEFT JOIN ip_addresses ip ON i.id = ip.iface_id
|
||
LEFT JOIN vlan_ifaces vi ON i.id = vi.iface_id
|
||
LEFT JOIN ip_addresses ip2 ON vi.id = ip2.vlan_iface_id
|
||
) AS q3
|
||
WHERE q3.ip_address IS NOT NULL
|
||
ORDER BY download DESC
|
||
");
|
||
|
||
foreach ($ips as $ip)
|
||
{
|
||
echo "$ip->ip_address\n";
|
||
}
|
||
}
|
||
|
||
|
||
|
||
}
|
||
?>
|
freenetis/branches/ulogd/application/controllers/scheduler.php | ||
---|---|---|
//receive SMS
|
||
self::receive_sms();
|
||
|
||
// cleans ulogd's table
|
||
self::clean_ulogd();
|
||
|
||
}
|
||
|
||
/**
|
||
... | ... | |
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Cleans (truncates) ulogd's table
|
||
* @author Michal Kliment
|
||
*/
|
||
private static function clean_ulogd()
|
||
{
|
||
// finds last time of cleaning
|
||
$last_clean_ulogd = (Settings::get('last_clean_ulogd')!='') ? Settings::get('last_clean_ulogd') : 0;
|
||
|
||
// it's time to clean :-)
|
||
if ($last_clean_ulogd + Settings::get('clean_ulogd_interval') < time())
|
||
{
|
||
$db = new Database();
|
||
$db->query("TRUNCATE TABLE `ulog2_ct`");
|
||
|
||
// updates variable
|
||
Settings::set('last_clean_ulogd', time());
|
||
}
|
||
}
|
||
}
|
freenetis/branches/ulogd/application/libraries/Settings.php | ||
---|---|---|
private static $email_driver = 'native';
|
||
private static $email_port = 25;
|
||
|
||
// ulogd settings
|
||
private static $clean_ulogd_interval = 1800;
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
* Function to get value from settings by given key
|
Také k dispozici: Unified diff
Dalsi prace s ulogd - napsan SQL prikaz, ktery najde IP adresy nejaktivnejsich clenu.