[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:
parent
2001cfa8a1
commit
1348314ea3
1 changed files with 31 additions and 14 deletions
|
@ -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):
|
||||||
|
# Poor man's IPv6 reverse DNS...
|
||||||
|
if ":" in ip:
|
||||||
|
# reconstruction de l'EUI48 à partir de l'EUI64...
|
||||||
|
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:
|
try:
|
||||||
return socket.gethostbyaddr(s)[0]
|
return socket.gethostbyaddr(ip)[0]
|
||||||
except:
|
except:
|
||||||
return s
|
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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue