envoi de mails pour :
- la modification des droits d'un adhrent - la modification du firewall concernant une machine - la modification d'un serveur la fonction utilise pour envoyer des mails est dans mail.py pour le firewall je ne sait pas quoi gnrer comme execption si j'arrive pas envoyerr de mail, donc ca part la trappe si komaz n'arrive pas crire le mail darcs-hash:20050221194135-4ec08-9ef761d782311a90d0d6caa495b6862ada6634b9.gz
This commit is contained in:
parent
91f6ae68cc
commit
e1d596eed7
4 changed files with 95 additions and 58 deletions
|
@ -218,18 +218,23 @@ class droits(crans_ldap,gen_config) :
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
self.anim = anim('\tenvoi de mails à roots')
|
self.anim = anim('\tenvoi d\'un mail à roots')
|
||||||
try :
|
try :
|
||||||
self.mail(self.uids)
|
from mail import mail_details
|
||||||
|
adherents = []
|
||||||
|
for uid in self.uids :
|
||||||
|
adherents += self.search('uid=%s' % uid)['adherent']
|
||||||
|
mail_details(adherents, Subject = 'Modification des droits d\'un adherent')
|
||||||
self.anim.reinit()
|
self.anim.reinit()
|
||||||
print OK
|
print OK
|
||||||
except :
|
except :
|
||||||
|
self.services_to_restart('droits',self.uids)
|
||||||
self.anim.reinit()
|
self.anim.reinit()
|
||||||
print ERREUR
|
print ERREUR
|
||||||
if self.debug :
|
if self.debug :
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
elif gethostname().split(".")[0] == 'nectaris':
|
elif gethostname().split(".")[0] == 'nectaris':
|
||||||
self.anim = anim('\tconfiguration master.passwd')
|
self.anim = anim('\tconfiguration master.passwd')
|
||||||
try:
|
try:
|
||||||
|
@ -243,31 +248,6 @@ class droits(crans_ldap,gen_config) :
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
def mail (self, uids) :
|
|
||||||
""" Envoi un mail à roots pour dire que certains droits ont changé """
|
|
||||||
|
|
||||||
# base du mail
|
|
||||||
From = "roots@crans.org"
|
|
||||||
To = "roots@crans.org"
|
|
||||||
base_txt_mail = """From: %(From)s
|
|
||||||
To: %(To)s
|
|
||||||
Subject: Modifications des droits d'un adhérent
|
|
||||||
|
|
||||||
%(Texte)s"""
|
|
||||||
|
|
||||||
# boucle pour chaque adhérent modifié
|
|
||||||
for uid in uids :
|
|
||||||
try :
|
|
||||||
adh = self.search('uid=%s' % uid)['adherent']
|
|
||||||
|
|
||||||
if len(adh):
|
|
||||||
adh = adh[0]
|
|
||||||
conn=smtplib.SMTP(smtpserv)
|
|
||||||
conn.sendmail(From, To , base_txt_mail % { 'From' : From, 'To' : To, 'Texte' : adher_details(adh).encode('iso8859-15') })
|
|
||||||
conn.quit()
|
|
||||||
except :
|
|
||||||
self.services_to_restart('droits',[uid])
|
|
||||||
|
|
||||||
if __name__ == '__main__' :
|
if __name__ == '__main__' :
|
||||||
if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) == 1 :
|
if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) == 1 :
|
||||||
print "%s <switch>" % sys.argv[0].split('/')[-1].split('.')[0]
|
print "%s <switch>" % sys.argv[0].split('/')[-1].split('.')[0]
|
||||||
|
|
|
@ -496,7 +496,19 @@ class firewall_komaz :
|
||||||
|
|
||||||
for tache in to_do :
|
for tache in to_do :
|
||||||
self.__exception_catcher(tache)
|
self.__exception_catcher(tache)
|
||||||
|
|
||||||
|
# envoi d'un mail à roots
|
||||||
|
try :
|
||||||
|
from mail import mail_details
|
||||||
|
machines = []
|
||||||
|
db = crans_ldap()
|
||||||
|
for ip in ip_list :
|
||||||
|
machines += db.search('ipHostNumber=%s' % ip)['machine']
|
||||||
|
mail_details(machines, Subject = 'Modification du firewall de komaz concernant une machine')
|
||||||
|
#mail_details(machines, To = 'quenelle', Subject = 'Modification du firewall du CR@NS', no_ascii = True)
|
||||||
|
except :
|
||||||
|
pass
|
||||||
|
|
||||||
def mac_ip_maj(self,ip_list) :
|
def mac_ip_maj(self,ip_list) :
|
||||||
""" Mise à jour de la correspondance MAC-IP pour les ip fournies """
|
""" Mise à jour de la correspondance MAC-IP pour les ip fournies """
|
||||||
## Que faut-il faire ?
|
## Que faut-il faire ?
|
||||||
|
|
|
@ -275,34 +275,26 @@ if hostname == 'zamok':
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
if 'mail_modification_machine' in to_do.keys() :
|
if 'mail_modification_machine' in to_do.keys() :
|
||||||
from whos import machine_details
|
|
||||||
if auto : db.services_to_restart('-mail_modification_machine')
|
cprint('Modification d\'une machine : envoi d\'un mail à roots@crans.org','gras')
|
||||||
cprint('Modification d\'une machine : envoie d\'un mail à roots@crans.org','gras')
|
|
||||||
for ip in to_do['mail_modification_machine'] :
|
|
||||||
anim('\t' + ip)
|
|
||||||
try :
|
|
||||||
From = "roots@crans.org"
|
|
||||||
To = "roots@crans.org"
|
|
||||||
base_txt_mail = """From: %(From)s
|
|
||||||
To: %(To)s
|
|
||||||
Subject: Modifications sur une machine du CR@NS
|
|
||||||
|
|
||||||
%(Texte)s"""
|
try :
|
||||||
machine = db.search('ipHostNumber=%s' % ip)['machine']
|
from mail import mail_details
|
||||||
if len(machine):
|
|
||||||
machine = machine[0]
|
# liste des machines
|
||||||
conn=smtplib.SMTP(smtpserv)
|
machines = []
|
||||||
conn.sendmail(From, To , base_txt_mail % { 'From' : From, 'To' : To, 'Texte' : machine_details(machine).encode('iso8859-15') })
|
for ip in to_do['mail_modification_machine'] :
|
||||||
conn.quit()
|
anim('\t' + ip)
|
||||||
print OK
|
machines += db.search('ipHostNumber=%s' % ip)['machine']
|
||||||
else:
|
|
||||||
print "Machine qui n'existe plus"
|
# envoi du mail
|
||||||
except Exception, c:
|
mail_details(machines, Subject = 'Modification d\'une machine de l\'association')
|
||||||
print ERREUR
|
|
||||||
if auto : db.services_to_restart('mail_modification_machine',[ip])
|
if auto : db.services_to_restart('-mail_modification_machine')
|
||||||
if debug :
|
print OK
|
||||||
import traceback
|
|
||||||
traceback.print_exc()
|
except :
|
||||||
|
print ERREUR
|
||||||
|
|
||||||
if 'autostatus' in to_do.keys() :
|
if 'autostatus' in to_do.keys() :
|
||||||
if auto : db.services_to_restart('-autostatus')
|
if auto : db.services_to_restart('-autostatus')
|
||||||
|
|
53
gestion/mail.py
Executable file
53
gestion/mail.py
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
|
# -*- coding: iso-8859-15 -*-
|
||||||
|
|
||||||
|
# Licence : GPLv2
|
||||||
|
|
||||||
|
import sys, smtplib
|
||||||
|
sys.path.append('/usr/scripts/gestion')
|
||||||
|
|
||||||
|
from ldap_crans import smtpserv
|
||||||
|
from whos import machine_details, club_details, adher_details
|
||||||
|
from ldap_crans import adherent, club, machine
|
||||||
|
|
||||||
|
def mail_details (Objets, Subject = "Modifications dans la base LDAP", To = ['chove@crans.org'], From = 'roots@crans.org', no_ascii = False ) :
|
||||||
|
"""
|
||||||
|
Envoie un mail à toutes les personnes des 'To', avec les informations
|
||||||
|
détaillées des objets contenus dans 'Objets' (instances de la classe
|
||||||
|
adherent, machine ou club)
|
||||||
|
|
||||||
|
Si no_ascii est à True, on vire la couleur
|
||||||
|
"""
|
||||||
|
|
||||||
|
if not len(Objets) :
|
||||||
|
return True
|
||||||
|
|
||||||
|
base_txt_mail = """From: %(From)s
|
||||||
|
To: %(To)s
|
||||||
|
Subject: %(Subject)s
|
||||||
|
|
||||||
|
%(Text)s"""
|
||||||
|
|
||||||
|
details = []
|
||||||
|
|
||||||
|
for i in Objets :
|
||||||
|
if i.__class__ == machine :
|
||||||
|
details.append(machine_details(i))
|
||||||
|
elif i.__class__ == adherent :
|
||||||
|
details.append(adher_details(i))
|
||||||
|
elif i.__class__ == club :
|
||||||
|
details.append(club_details(i))
|
||||||
|
else :
|
||||||
|
ok = False
|
||||||
|
|
||||||
|
texte = '\n\n- - - - = = = = # # # # # # = = = = - - - -\n\n'.join(details)
|
||||||
|
|
||||||
|
if no_ascii :
|
||||||
|
import sre
|
||||||
|
texte = sre.sub('\x1b\[1;([0-9]|[0-9][0-9])m','',texte)
|
||||||
|
|
||||||
|
mail_complet = base_txt_mail % { 'From' : From, 'To' : ','.join(To), 'Subject' : Subject, 'Text' : texte.encode('iso8859-15') }
|
||||||
|
|
||||||
|
conn=smtplib.SMTP(smtpserv)
|
||||||
|
conn.sendmail(From, To , mail_complet)
|
||||||
|
conn.quit()
|
Loading…
Add table
Add a link
Reference in a new issue