scripts/gestion/gen_confs/supervison.py
Nicolas Dandrimont 9f97ac091b [supervision] encodage
Ignore-this: 73a00660b5fb8fadbe90ff56ace87c3d

darcs-hash:20091108014153-ffbb2-75ee72617da0a901716449b1a5f123aeea34f641.gz
2009-11-08 02:41:53 +01:00

120 lines
3.7 KiB
Python

#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
# Licence : GPLv2
import sys, smtplib, commands
sys.path.append('/usr/scripts/gestion')
from ldap_crans import smtpserv, crans_ldap, Machine, Adherent, Club
from whos import machine_details, adher_details, club_details
from gen_confs import gen_config
from affich_tools import cprint, OK, anim
class mail:
"""
Envoie un mail à toutes les personnes de la liste 'To', avec les
informations détaillées des objets contenus dans 'objets'
(instances des classes Adherent, Machine ou Club) """
From = 'roots@crans.org'
To = [ 'roots@crans.org' ]
Subject = "Surveillance modifications de la base LDAP"
mail_template = """From: %(From)s
To: %(To)s
Subject: %(Subject)s
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
%(Text)s"""
# Avec les caractères d'échappement qui vont bien pour la couleur ?
couleur = False
def __init__(self,recherches) :
self.recherches = recherches
def reconfigure(self) :
""" Envoi le mail """
cprint(u'Mail de notification de modifications', 'gras')
a = anim('\tRecherches dans la base',len(self.recherches))
db = crans_ldap()
details = []
vus = []
for rech in self.recherches :
for results in db.search(rech).values() :
for res in results :
if res.dn in vus : continue
vus.append(res.dn)
if isinstance(res, Machine):
details.append(machine_details(res))
elif res.__class__ == Adherent:
details.append(adher_details(res))
elif res.__class__ == Club:
details.append(club_details(res))
a.cycle()
texte = '\n\n- - - - = = = = # # # # # # = = = = - - - -\n\n'.join(details)
a.reinit()
if not details :
print "rien"
return
print OK
anim('\tEnvoi mail')
if not self.couleur :
import re
texte = re.sub('\x1b\[1;([0-9]|[0-9][0-9])m','',texte)
conn=smtplib.SMTP(smtpserv)
conn.sendmail(self.From, self.To , \
self.mail_template % { 'From' : self.From,
'To' : ','.join(self.To),
'Subject' : self.Subject,
'Text' : texte.encode('iso8859-15') } )
conn.quit()
print OK
class mail_solde:
"""
Envoie un mail a la ML impression pour les modifications de solde"""
From = 'root@crans.org'
To = [ 'impression@crans.org' ]
Subject = "Modification de solde"
mail_template = """From: %(From)s
To: %(To)s
Subject: %(Subject)s
%(Text)s"""
# Avec les caractères d'échappement qui vont bien pour la couleur ?
couleur = False
def __init__(self,modifs) :
self.modifs = modifs
def reconfigure(self) :
""" Envoi le mail """
cprint(u'Mail de notification de modifications du solde', 'gras')
texte = ''
for modif in self.modifs:
texte = texte + modif.decode('utf-8', 'ignore') + u'\n'
anim('\tEnvoi mail')
conn=smtplib.SMTP(smtpserv)
conn.sendmail(self.From, self.To , \
self.mail_template % { 'From' : self.From,
'To' : ','.join(self.To),
'Subject' : self.Subject,
'Text' : texte.encode('iso8859-15', 'ignore') } )
conn.quit()
print OK