[statistiques.py] On fait un reverse DNS IPv6 "du pauvre" pour que les mails soient lisibles...

darcs-hash:20101207233828-ffbb2-a156f218c1feff1fdd8928483e6e76e8d13c95a9.gz
This commit is contained in:
Nicolas Dandrimont 2010-12-08 00:38:28 +01:00
parent 2001cfa8a1
commit 1348314ea3

View file

@ -22,17 +22,42 @@ import config
import smtplib import smtplib
import socket import socket
import time, random, md5 import time, random, md5
import netaddr
from analyse import stats from analyse import stats
from affich_tools import tableau from affich_tools import tableau
from iptools import AddrInNet from iptools import AddrInNet
from ldap_crans import AssociationCrans from ldap_crans import AssociationCrans, crans_ldap
CL = crans_ldap()
# Fonction retournant l'hote quand c'est possible # Fonction retournant l'hote quand c'est possible
def gethostname(s): def gethostname(ip):
try: # Poor man's IPv6 reverse DNS...
return socket.gethostbyaddr(s)[0] if ":" in ip:
except: # reconstruction de l'EUI48 à partir de l'EUI64...
return s addr_bits = list(netaddr.IPAddress(ip).bits(''))
addr_bits[0:64] = []
addr_bits[24:40] = []
addr_bits[6] = '0'
addr_bits = ''.join(addr_bits)
mac = ':'.join("%02x" % int(addr_bits[8*i:8*i+8], 2) for i in range(6))
res = CL.search("mac=%s" % mac)
noms = sorted(r.nom() for r in res["machineFixe"] + res["machineWifi"] + res["machineCrans"] if r.nom().endswith('crans.org'))
if noms:
return str(noms[0])
else:
return ip
else:
try:
return socket.gethostbyaddr(ip)[0]
except:
return ip
def ipv4or6(addr):
if ':' in addr:
return "IPv6"
else:
return "IPv4"
# Liste des IP des serveurs # Liste des IP des serveurs
serveurs_ips = [x.ip() for x in AssociationCrans().machines() serveurs_ips = [x.ip() for x in AssociationCrans().machines()
@ -49,14 +74,6 @@ curseur = pgsql.cursor()
########################### ###########################
# Statistiques d'upload : # # Statistiques d'upload : #
########################### ###########################
# Y a-t-il eu des récidivistes
def ipv4or6(addr):
if ':' in addr:
return "IPv6"
else:
return "IPv4"
# Liste des uploads : # Liste des uploads :
##################### #####################
requete = """SELECT ip_crans, sum(upload) AS somme, sum(download) requete = """SELECT ip_crans, sum(upload) AS somme, sum(download)