[deconnexion.py] On ne déconnecte plus pour Bittorrent

Maintenant ils reçoivent seulement un mail d'avertissement

darcs-hash:20110307233611-ddb99-be4482514f3f841735ec695e36a8b45f63c878fc.gz
This commit is contained in:
Michel Blockelet 2011-03-08 00:36:11 +01:00
parent 0339aea604
commit acef69c7da
2 changed files with 81 additions and 1 deletions

View file

@ -369,6 +369,7 @@ Nombre de paquets : %(nb_paquets)s paquets depuis le %(datedebut)s.
--\u0020
Message créé par deconnexion.py"""
deconnexion = u"""From: %(From)s
To: %(To)s
Subject: Avis de =?iso-8859-15?Q?D=E9connexion?=
@ -393,6 +394,38 @@ il pénalise l'ensemble des adhérents de l'association.
Tu seras donc déconnecté 24h.
--\u0020
Disconnect Team"""
avertissement_bt = u"""From: %(From)s
To: %(To)s
Subject: Avertissement d'utilisation du protocole Bittorrent
Content-Type: text/plain; charset="utf-8"
Bonjour,
Nous avons détecté que ta machine, %(hostname)s utilisait le
*protocole* %(protocole)s.
*Ce message t'est envoyé à titre informatif, il ne te sanctionne pas.*
Cela signifie :
- Ou bien que tu utilises le logiciel qui a le même nom
que ce protocole,
- Ou bien que tu utilises un logiciel qui utilise le
protocole en question pour partager des fichiers.
Or l'usage de *protocoles* de type peer to peer est interdit
sur notre réseau, conformément aux documents que tu as acceptés
en adhérant au CR@NS.
Nous empêchons donc ce trafic Bittorrent de sortir du réseau Cr@ns,
rendant inopérant les logiciels l'utilisant.
Si tu es à l'origine de ce trafic, merci de couper les logiciels en
question. Sinon, il est possible qu'un logiciel malveillant en soit la
cause, nous te conseillons d'installer un anti-virus et un pare-feu afin
d'arrêter la source de ce trafic.
--\u0020
Disconnect Team"""

View file

@ -417,7 +417,7 @@ for IP in infectes:
################################################################################
# Dans la table p2p on sélectionne les ip_src qui appartiennent au réseau
requete = "SELECT ip_src,id_p2p,count(ip_src) FROM p2p WHERE %s AND date > timestamp 'now' - interval '2 hours' GROUP BY ip_src,id_p2p ORDER BY ip_src" % ip_src_in_crans
requete = "SELECT ip_src,id_p2p,count(ip_src) FROM p2p WHERE %s AND date > timestamp 'now' - interval '2 hours' AND id_p2p != 1 GROUP BY ip_src,id_p2p ORDER BY ip_src" % ip_src_in_crans
curseur.execute(requete)
fraudeurs = curseur.fetchall()
@ -501,3 +501,50 @@ for ip, id_p2p, nombre in fraudeurs:
'ps': fichier_ps }
corps = corps.encode('utf-8')
mail.sendmail(p2p.expediteur, p2p.expediteur, corps)
################################################################################
# Gestion du bittorrent #
################################################################################
# Dans la table p2p on sélectionne les ip_src qui appartiennent au réseau
requete = "SELECT ip_src,count(ip_src) FROM p2p WHERE %s AND date > timestamp 'now' - interval '2 hours' AND id_p2p = 1 GROUP BY ip_src,id_p2p ORDER BY ip_src" % ip_src_in_crans
curseur.execute(requete)
fraudeurs = curseur.fetchall()
# Récupération des fraudeurs pour ne pas les avertir de nouveau
requete = "SELECT ip_crans,protocole FROM avertis_p2p WHERE date > timestamp 'now' - interval '14 days'"
curseur.execute(requete)
avertisp2p = curseur.fetchall()
for ip, nombre in fraudeurs:
# On récupére le protocole de p2p :
protocole = 'Bittorrent'
# On ne prend pas en compte s'il est sous le seuil admis, ou
#s'il est averti
if nombre <= p2p.limite[protocole] or [ip, protocole] in avertisp2p:
continue
# Récupération des ref de la machine
machines = ldap.search('ipHostNumber=%s' % ip, 'w' )['machine']
if len(machines) == 0:
# La machine a ete supprimee entre temps
continue
machine = machines[0]
hostname = machine.nom()
proprio = machine.proprietaire()
# On envoie un mail a l'adhérent
################################
mail = connectsmtp()
corps = p2p.avertissement_bt % { 'From': p2p.expediteur,
'To': proprio.email(),
'protocole': protocole,
'hostname': hostname }
corps = corps.encode('utf-8')
mail.sendmail(p2p.expediteur, proprio.email(), corps)
# Inscription dans la base des avertis
requete = "INSERT INTO avertis_p2p (ip_crans,date,protocole) VALUES ('%s','now','%s')" % (ip, protocole)
curseur.execute(requete)