scripts/gestion/gen_confs/adherents.py
chove 9e38dd90da des restes du passages en utf-8
le fichier tait dclar utf8 mais il y avait de l'iso en plein milieu

darcs-hash:20060405233812-4ec08-a888e05ad944b5a395a8d1314ba306dd45602e5a.gz
2006-04-06 01:38:12 +02:00

134 lines
4.8 KiB
Python
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#! /usr/bin/env python
# -*- coding: iso8859-15 -*-
# Copyright (C) Frédéric Pauget
# Licence : GPLv2
import smtplib, sys, commands, shutil, os
sys.path.append('/usr/scripts/gestion')
from affich_tools import cprint, anim, OK, WARNING, ERREUR
import config
from time import strftime
class del_user :
debug = True
def __init__(self,args) :
self.args=args
def reconfigure(self) :
cprint(u'Archivage fichiers utilisateur', 'gras')
for args in self.args :
anim('\t' + args)
try:
login, home = args.split(',')
if not login or not home :
raise ValueError('Argument invalide')
warn = ''
f = config.cimetiere + '/files/' + strftime('%Y-%m-%d-%Hh%Mm_') + login + '.tar.bz2'
status, output = commands.getstatusoutput("tar cjf '%s' '%s' /var/spool/mail/%s" % ( f,home,login) )
if ( status != 512 and status!=0 ) or not os.path.isfile(f) :
# La 512 est si un des paths n'exite pas.
raise OSError(output)
if os.path.isdir(home) and os.stat(home)[4] >= 500 :
shutil.rmtree(home)
else :
warn += '%s incorrect\n' % home
if os.path.isdir('/var/spool/mail/' + login ) :
shutil.rmtree('/var/spool/mail/' + login)
else :
warn += '/var/spool/mail/%s incorrect\n' % login
if warn :
print WARNING
if self.debug :
sys.stderr.write(warn)
else :
print OK
except :
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
class home:
debug = True
def __init__(self,args) :
self.args = args
def reconfigure(self) :
cprint(u'Création home', 'gras')
for args in self.args :
anim('\t' + args)
try:
home, uid, login = args.split(',')
### Home
if not os.path.exists(home) :
# Le home n'existe pas
os.mkdir(home, 0755)
os.chown(home, int(uid) ,config.gid)
elif os.path.isdir(home) :
# Il y un r-bépertoire existant-A
# Bon UID ?
stat = os.stat(home)
if stat[4] != int(uid) or stat[5] != config.gid :
# Le home n'est pas -bà la bonne personne-A
raise OSError('home existant')
### Quota
status, output = commands.getstatusoutput('/usr/sbin/edquota -p pauget %s' % login )
if status :
print WARNING
if self.debug :
sys.stderr.write(output+'\n')
else :
print OK
### Mail
os.mkdir(home + '/Mail', 0700)
os.chown(home + '/Mail', int(uid) ,config.gid)
os.mkdir('/var/mail/' + login,0770)
os.chown('/var/mail/' + login, int(uid) ,8)
except :
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
class mail_bienvenue :
debug = True
def __init__(self,mails) :
self.mails = mails
def reconfigure(self) :
cprint(u'Envoi mail de bienvenue', 'gras')
for mail in self.mails :
anim('\t' + mail)
try:
From = "respbats@crans.org"
To = mail
if To.find('@') == -1 : To += '@crans.org'
conn=smtplib.SMTP('localhost')
conn.sendmail(From, To , config.txt_mail_bienvenue % { 'From' : From, 'To' : To })
conn.quit()
print OK
except Exception, c:
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
class ML_ens :
debug = True
def __init__(self,mails) :
self.mails = mails
def reconfigure(self) :
cprint(u'Inscription ML-ENS', 'gras')
for mail in self.mails :
anim('\t'+mail)
status, output = commands.getstatusoutput("echo '%s' | /usr/sbin/add_members -r - com-ens >/dev/null 2>&1" % mail)
if status :
print ERREUR
if self.debug :
sys.stderr.write(output+'\n')
else :
print OK