diff --git a/surveillance/analyse.py b/surveillance/analyse.py index 141249dd..af779e4b 100755 --- a/surveillance/analyse.py +++ b/surveillance/analyse.py @@ -94,11 +94,18 @@ def stats(ip_crans=[], ip_ext=[], requete = """ SELECT * FROM ( - SELECT %(select)s FROM upload WHERE (%(ip_crans)s) AND (%(ip_ext)s) - AND (date > timestamp 'now' - interval '%(begin_time)d hours') - AND (date < timestamp 'now' - interval '%(end_time)d hours') - GROUP BY %(show)s) - AS resultat_intemediaire + ( + SELECT %(select)s FROM upload WHERE (%(ip_crans)s) AND (%(ip_ext)s) + AND (date > timestamp 'now' - interval '%(begin_time)d hours') + AND (date < timestamp 'now' - interval '%(end_time)d hours') + GROUP BY %(show)s + ) UNION ( + SELECT %(select)s FROM upload6 WHERE (%(ip_crans)s) AND (%(ip_ext)s) + AND (date > timestamp 'now' - interval '%(begin_time)d hours') + AND (date < timestamp 'now' - interval '%(end_time)d hours') + GROUP BY %(show)s + ) + ) AS resultat_intemediaire WHERE %(sort_by)s >= '%(sort_mini)d' ORDER BY %(sort_by)s DESC LIMIT %(show_limit)d;""" % { diff --git a/surveillance/statistiques.py b/surveillance/statistiques.py index 055c1c66..94e4c837 100755 --- a/surveillance/statistiques.py +++ b/surveillance/statistiques.py @@ -57,7 +57,7 @@ curseur = pgsql.cursor() ########################### # Liste des uploads : ##################### -requete = """SELECT ip_crans, sum(upload) AS somme, sum(download) +requete = """(SELECT ip_crans, sum(upload) AS somme, sum(download) FROM upload WHERE date > timestamp 'now' - interval '1 day' @@ -68,7 +68,25 @@ WHERE upload.ip_crans <<= exemptes.ip_crans AND upload.ip_ext <<= exemptes.ip_dest ) -GROUP BY ip_crans + GROUP BY ip_crans +) + +UNION + +(SELECT ip_crans, sum(upload) AS somme, sum(download) +FROM upload6 +WHERE + date > timestamp 'now' - interval '1 day' + AND NOT EXISTS ( + SELECT 1 + FROM exemptes + WHERE + upload6.ip_crans <<= exemptes.ip_crans + AND upload6.ip_ext <<= exemptes.ip_dest + ) + GROUP BY ip_crans +) + ORDER BY somme DESC""" curseur.execute(requete) data_upload = curseur.fetchall() @@ -84,7 +102,7 @@ liste_upload = tableau(data = [ (l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn( # Trafic exempté : ################## -requete = """SELECT ip_crans, sum(upload) AS somme, sum(download) +requete = """(SELECT ip_crans, sum(upload) AS somme, sum(download) FROM upload WHERE date > timestamp 'now' - interval '1 day' @@ -96,6 +114,21 @@ WHERE -- AND upload.ip_ext <<= exemptes.ip_dest ) GROUP BY ip_crans +) +UNION +(SELECT ip_crans, sum(upload) AS somme, sum(download) +FROM upload6 +WHERE + date > timestamp 'now' - interval '1 day' + AND EXISTS ( + SELECT 1 + FROM exemptes + WHERE + upload6.ip_crans = exemptes.ip_crans + -- AND upload6.ip_ext <<= exemptes.ip_dest + ) +GROUP BY ip_crans +) ORDER BY somme DESC""" curseur.execute(requete) liste_exemptes = tableau(data = [[l[1], l[2], ipv4or6(str(l[0])), socket.getfqdn(str(l[0]))] @@ -140,11 +173,20 @@ gros_uploads_des_serveurs = stats(ip_crans=ips_serveurs, # IPs envoyant des paquets de protocole Ethernet inconnu : ######################################################### -requete = """SELECT COUNT(*), ip_ext +requete = """(SELECT COUNT(*), ip_ext FROM upload WHERE id=-1 -GROUP BY ip_ext""" +GROUP BY ip_ext) + +UNION + +(SELECT COUNT(*), ip_ext +FROM upload6 +WHERE + id=-1 +GROUP BY ip_ext +)""" curseur.execute(requete) liste_etherunk = tableau(data = [[l[0], socket.getfqdn(str(l[1]))]