Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 862

Přidáno uživatelem Michal Kliment před více než 13 roky(ů)

Dalsi prace s ulogd - napsan SQL prikaz, ktery najde IP adresy nejaktivnejsich clenu.

Zobrazit rozdíly:

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