[deconnexion, ipt, surveillance] On compte l'upload ipv6 par adresses mac à partir de la correspondance fournie par la parssage des logs du firewall par mac_ip. On affiche un avertissement si on trouve deux mac avec le même ip sur les 3 derniers jours
This commit is contained in:
parent
fee4e88908
commit
15c518cc17
3 changed files with 91 additions and 20 deletions
|
@ -75,16 +75,27 @@ class machines(gen_config) :
|
|||
pgsql = psycopg2.connect(database='filtrage', user='crans')
|
||||
curseur = pgsql.cursor()
|
||||
curseur.execute("DELETE FROM machines;")
|
||||
|
||||
ipv6_vu={}
|
||||
def ipv6_already_set(ipv6):
|
||||
ret = ipv6_vu.get(ipv6, False)
|
||||
ipv6_vu[ipv6] = True
|
||||
return ret
|
||||
|
||||
# ajout des entrée
|
||||
for m in machines:
|
||||
if m.proprietaire().__class__ == Club:
|
||||
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','club',%s);"%(m.ip(),m.proprietaire().id()))
|
||||
if not ipv6_already_set(m.ipv6()):
|
||||
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','club',%s);"%(m.ipv6(),m.proprietaire().id()))
|
||||
elif m.proprietaire().__class__ == Adherent:
|
||||
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','adherent',%s);"%(m.ip(),m.proprietaire().id()))
|
||||
if not ipv6_already_set(m.ipv6()):
|
||||
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','adherent',%s);"%(m.ipv6(),m.proprietaire().id()))
|
||||
elif m.proprietaire().__class__ == AssociationCrans:
|
||||
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','crans',%s);"%(m.ip(),m.id()))
|
||||
|
||||
if not ipv6_already_set(m.ipv6()):
|
||||
curseur.execute("INSERT INTO machines (ip, type, id) VALUES (inet'%s','crans',%s);"%(m.ipv6(),m.id()))
|
||||
# on commit
|
||||
pgsql.commit()
|
||||
|
||||
|
|
|
@ -440,9 +440,25 @@ def check_ip_proto(ip_proto):
|
|||
def ipv6_addr(mac, net):
|
||||
''' Renvoie l'adresse ipv6 d'auto-configuration de la mac sur le réseau '''
|
||||
mac_s = mac.split(':')
|
||||
eui = '2'+':'.join(mac_s[1:3])+'ff:fe'+':'.join(mac_s[3:5])+mac_s[5]
|
||||
eui = hex(int(mac_s[0],16) ^ 0x02)[2:] + ':'.join(mac_s[1:3]) + 'ff:fe' + ':'.join(mac_s[3:5]) + mac_s[5]
|
||||
return re.sub(':/64', eui , prefix[dprefix[net]][0])
|
||||
|
||||
def mac_addr(ipv6):
|
||||
''' Renvoie l'adresse mac de l'ipv6 d'auto-configuration '''
|
||||
ipv6_s= ipv6.split(':')[4:]
|
||||
mac=''
|
||||
if ipv6_s[1].endswith('ff') and ipv6_s[2].startswith('fe'):
|
||||
elt = "%04x" % int(ipv6_s[0], 16)
|
||||
mac += "%02x" % (int(elt[0:2],16) ^ 0x02) + ':' + elt[2:]
|
||||
elt = "%04x" % int(ipv6_s[1], 16)
|
||||
mac += ':' + elt[0:2]
|
||||
elt = "%04x" % int(ipv6_s[2], 16)
|
||||
mac += ':' + elt[2:]
|
||||
elt = "%04x" % int(ipv6_s[3], 16)
|
||||
mac += ':' + elt[0:2] + ':' + elt[2:]
|
||||
return mac
|
||||
return None
|
||||
|
||||
# TODO Fusionner les deux fonctions.
|
||||
def iface(net):
|
||||
'''Retourne l'interface réseau associée à un certain type de réseau
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue