Migration zamok.
darcs-hash:20050825141815-41617-f9c9222b78b7bc6c276228367d33895cf1b27f81.gz
This commit is contained in:
parent
b71f14546d
commit
e4bbb04a86
4 changed files with 27 additions and 118 deletions
|
@ -36,7 +36,7 @@ make_lock('auto_generate','Big lock',nowait=1)
|
|||
|
||||
class base_reconfigure :
|
||||
__service_develop = {
|
||||
'macip' : [ 'rouge-macip', 'bleu-macip', 'sila-macip' , 'komaz-macip', 'zamok-macip' ] ,
|
||||
'macip' : [ 'rouge-macip', 'bleu-macip', 'sila-macip' , 'komaz-macip' ] ,
|
||||
'droits': [ 'rouge-droits', 'nectaris-droits' ] ,
|
||||
'blacklist_upload' : [ 'bl_squid_upload' , 'komaz-blacklist'] }
|
||||
|
||||
|
@ -131,6 +131,10 @@ class rouge(base_reconfigure) :
|
|||
from adherents import mail_bienvenue
|
||||
self._do(mail_bienvenue(mails))
|
||||
|
||||
def switch(self,chambres) :
|
||||
from gen_confs.switchs import switch
|
||||
self._do(switch(chambres))
|
||||
|
||||
class bleu(base_reconfigure) :
|
||||
# Tout est dans le parent
|
||||
pass
|
||||
|
@ -219,7 +223,7 @@ class nectaris(base_reconfigure) :
|
|||
if self.__restart_wifi_update :
|
||||
os.system("cd / ; systrace -d /etc/systrace/wifi-update -A /usr/local/bin/twistd --syslog -o -y /usr/scripts/gestion/wifi-update.py --pidfile=/var/run/wifi-update.pid")
|
||||
|
||||
class zamok(base_reconfigure) :
|
||||
class vert(base_reconfigure) :
|
||||
def home(self,args) :
|
||||
from adherents import home
|
||||
self._do(home(args))
|
||||
|
@ -228,10 +232,6 @@ class zamok(base_reconfigure) :
|
|||
from adherents import del_user
|
||||
self._do(del_user(args))
|
||||
|
||||
def switch(self,chambres) :
|
||||
from gen_confs.switchs import switch
|
||||
self._do(switch(chambres))
|
||||
|
||||
signal.signal(signal.SIGINT,signal.SIG_DFL) # Comportement normal de Ctrl-C
|
||||
remove_lock('auto_generate')
|
||||
|
||||
|
|
|
@ -248,7 +248,7 @@ def set_etudes(adher) :
|
|||
if result[0] == "Pers":
|
||||
arg = u'--title "Etudes (2/3)" '
|
||||
arg+= u'--msgbox "Personnel ENS\n\n' + \
|
||||
u'Attention, un personnel ENS est un cas bien particulier. Cela correspond à une personne n\'étant pas élève, étant prof dans un département ou un labo, disposant d\'une adresse @ens-cachan.fr. Cela ne donne accès qu\'au wifi, pour l\'année 2005 uniquement. Il ne pourra pas disposer d\'un compte sur zamok et n\'aura pas accès au réseau interne.\n\n\n" 0 0'
|
||||
u'Attention, un personnel ENS est un cas bien particulier. Cela correspond à une personne n\'étant pas élève, étant prof dans un département ou un labo, disposant d\'une adresse @ens-cachan.fr. Cela ne donne accès qu\'au wifi, pour l\'année 2005 uniquement. Il ne pourra pas disposer d\'un compte crans et n\'aura pas accès au réseau interne.\n\n\n" 0 0'
|
||||
dialog(arg)
|
||||
etudes[1] = result[0]
|
||||
|
||||
|
@ -363,9 +363,9 @@ def set_mail(adher) :
|
|||
arg+= u'--menu "Adresse mail de l\'adhérent :" 0 0 0 '
|
||||
arg+= u'"Adresse mail extérieure" "" '
|
||||
if adher.compte() :
|
||||
arg+= u'"Laisser le compte sur zamok" "(login : %s)"' % adher.compte()
|
||||
arg+= u'"Laisser le compte crans" "(login : %s)"' % adher.compte()
|
||||
else :
|
||||
arg+= u'"Créer un compte sur zamok" "(adresse @crans.org)"'
|
||||
arg+= u'"Créer un compte crans" "(adresse @crans.org)"'
|
||||
|
||||
annul , result = dialog(arg)
|
||||
if annul : return 1
|
||||
|
@ -412,11 +412,11 @@ def set_mail_ext(adher) :
|
|||
|
||||
def set_compte(adher) :
|
||||
"""
|
||||
Créé un compte sur zamok pour un adhérent.
|
||||
Créé un compte sur vert pour un adhérent.
|
||||
"""
|
||||
|
||||
# Message d'avertissement
|
||||
arg = u'--title "Création compte sur zamok pour %s" ' % adher.Nom()
|
||||
arg = u'--title "Création compte crans pour %s" ' % adher.Nom()
|
||||
arg+= u'--colors --yesno "\Zr\Z1AVERTISSEMENT :\Zn \n'
|
||||
arg+= u'L\'adhérent devra impérativement consulter l\'adresse mail associée\n\n\n\\ZnContinuer ?" '
|
||||
arg+= u'0 0'
|
||||
|
@ -443,7 +443,7 @@ def set_compte(adher) :
|
|||
if err :
|
||||
while 1:
|
||||
# Mauvais login => on demande
|
||||
arg = u'--title "Création d\'un compte sur zamok pour %s" ' % adher.Nom()
|
||||
arg = u'--title "Création d\'un compte crans pour %s" ' % adher.Nom()
|
||||
arg+= u'--inputbox "Choix du login\n'
|
||||
arg+= u'Le login doit faire au maximum %s caractères\n' % config.maxlen_login
|
||||
arg+= u'Il ne doit pas être un pseudo ou prénom mais doit être relié au nom de famille\n'
|
||||
|
@ -458,7 +458,7 @@ def set_compte(adher) :
|
|||
except EnvironmentError, c : e = c.args[0]
|
||||
except ValueError, c : e = c.args[0]
|
||||
if e :
|
||||
arg = u'--title "Création compte sur zamok pour %s" ' % adher.Nom()
|
||||
arg = u'--title "Création compte crans pour %s" ' % adher.Nom()
|
||||
arg+= u'--msgbox "%s\n\n\n" 0 0' % e
|
||||
dialog(arg)
|
||||
continue
|
||||
|
@ -475,7 +475,7 @@ def set_compte(adher) :
|
|||
|
||||
txt+= u'\n'
|
||||
|
||||
arg = u'--title "Création compte sur zamok pour %s" ' % adher.Nom()
|
||||
arg = u'--title "Création compte crans pour %s" ' % adher.Nom()
|
||||
arg+= u'--colors --msgbox "%s\n\n\n" 0 0' % txt
|
||||
dialog(arg)
|
||||
|
||||
|
@ -609,14 +609,14 @@ def set_local(club) :
|
|||
|
||||
def set_club_compte(club) :
|
||||
"""
|
||||
Créé un compte sur zamok pour un club.
|
||||
Créé un compte sur vert pour un club.
|
||||
"""
|
||||
|
||||
while 1 :
|
||||
arg = u'--title "Création d\'un compte sur zamok pour %s" ' % club.Nom()
|
||||
arg = u'--title "Création d\'un compte crans pour %s" ' % club.Nom()
|
||||
arg+= u'--inputbox "Choix du login\n'
|
||||
arg+= u'Le nom pour le login doit faire au maximum %s caractères\n' % config.maxlen_login
|
||||
arg+= u'Le login sur zamok sera club-\'nom du club\'\n'
|
||||
arg+= u'Le login sur ssh sera club-\'nom du club\'\n'
|
||||
arg+= u'Le site web du club sera accessible via l\'adresse http://clubs.crans.ens-cachan.fr/\'nom du club\'\n'
|
||||
arg+= u'Seuls les caractères alphabétiques et le - sont autorisés" '
|
||||
arg+= u'0 0 ""'
|
||||
|
@ -629,7 +629,7 @@ def set_club_compte(club) :
|
|||
except EnvironmentError, c : e = c.args[0]
|
||||
except ValueError, c : e = c.args[0]
|
||||
if e :
|
||||
arg = u'--title "Création compte sur zamok pour %s" ' % club.Nom()
|
||||
arg = u'--title "Création compte crans pour %s" ' % club.Nom()
|
||||
arg+= u'--msgbox "%s\n\n\n" 0 0' % e
|
||||
dialog(arg)
|
||||
continue
|
||||
|
@ -640,7 +640,7 @@ def set_club_compte(club) :
|
|||
|
||||
txt+= u'\n'
|
||||
|
||||
arg = u'--title "Création compte sur zamok pour %s" ' % club.Nom()
|
||||
arg = u'--title "Création compte crans pour %s" ' % club.Nom()
|
||||
arg+= u'--colors --msgbox "%s\n\n\n" 0 0' % txt
|
||||
dialog(arg)
|
||||
|
||||
|
@ -939,7 +939,7 @@ def modif_club(club) :
|
|||
arg+= u'"Responsable" "Changer le responsable du club %s" ' % club.responsable().Nom()
|
||||
arg+= u'"Administratif" "Précâblage" '
|
||||
arg+= u'"Local" "Modifier le local du club" '
|
||||
arg+= u'"Compte" "Créer un compte sur zamok" '
|
||||
arg+= u'"Compte" "Créer un compte crans." '
|
||||
if club.compte() :
|
||||
arg+= u'"Alias" "Créer ou supprimer un alias mail" '
|
||||
if isdeconnecteur :
|
||||
|
|
|
@ -1203,7 +1203,7 @@ class base_proprietaire(base_classes_crans) :
|
|||
|
||||
if err : ret += '\nEssayer de corriger les erreurs machines en éditant celles-ci.\n'
|
||||
|
||||
# Faut-il créer un compte sur zamok ?
|
||||
# Faut-il créer un compte sur vert ?
|
||||
if 'compte' in self.modifs :
|
||||
ret += u'\nUn compte a été créé :\n login : %s\n' % self.compte()
|
||||
args = self._data['homeDirectory'][0] + ','
|
||||
|
@ -1389,7 +1389,10 @@ class adherent(base_proprietaire) :
|
|||
# Personne sur le campus
|
||||
return ''
|
||||
else :
|
||||
return map(decode,self._data.get('postalAddress', ['','','',''])[:4])
|
||||
addr = self._data.get('postalAddress', ['','','',''])[:4]
|
||||
if len(addr) < 4:
|
||||
addr = addr + ['']*(4-len(addr))
|
||||
return map(decode,addr)
|
||||
|
||||
if type(new)!=list and len(new)!=4 :
|
||||
raise TypeError
|
||||
|
@ -1689,7 +1692,7 @@ class club(base_proprietaire) :
|
|||
return decode(annu.get(self.chbre(),''))
|
||||
|
||||
def compte(self,login=None) :
|
||||
""" Créé un compte au club sur zamok"""
|
||||
""" Créé un compte au club sur vert"""
|
||||
if login==None :
|
||||
return self._data.get('uid',[''])[0]
|
||||
|
||||
|
|
|
@ -1,94 +0,0 @@
|
|||
#! /usr/bin/env python
|
||||
# -*- coding: iso-8859-15 -*-
|
||||
|
||||
import sys, sre
|
||||
from socket import gethostname
|
||||
hostname = gethostname().split(".")[0]
|
||||
|
||||
# Fichiers à modifier et chaine indiquant un commentaire dans ceux-ci
|
||||
if hostname == 'zamok' :
|
||||
fichiers = { '/etc/bind/named.conf.options' : '//' ,
|
||||
'/etc/postfix/main.cf' : '#' }
|
||||
elif hostname == 'sila' :
|
||||
fichiers = { '/etc/bind/named.conf.options' : '//' ,
|
||||
'/etc/squid/squid.conf' : '#' }
|
||||
elif hostname == 'rouge' :
|
||||
fichiers = { '/etc/bind/named.conf.options' : '//' ,
|
||||
'/etc/postfix/main.cf' : '#' }
|
||||
else :
|
||||
print "Script sans effet sur cette machine."
|
||||
sys.exit(1)
|
||||
|
||||
def edit(file,comment,secours) :
|
||||
""" Edite le fichier fourni en commentant (mode normal)
|
||||
ou décommentant (mode secours) les lignes signalées :
|
||||
* celles se terminant avec #POUR SECOURS
|
||||
* ou les n lignes (<10)suivant une qui commande par #POUR SECOURS-n
|
||||
(si le -n est omis une seule ligne est affectée)"""
|
||||
|
||||
signal = '#POUR SECOURS'
|
||||
l = len(signal)
|
||||
|
||||
fd = open(file)
|
||||
line = fd.readline()
|
||||
new = ''
|
||||
reste = 0 # Nombre de lignes restant à traiter
|
||||
while line :
|
||||
l = line.rstrip()
|
||||
mo = sre.match('^(.*)'+signal+'(|-.)$',l)
|
||||
if (mo and len(mo.group(1)) > 1) or reste:
|
||||
# Ligne pour secours
|
||||
if not sre.match('^' + comment,l) and not secours:
|
||||
# On est actuellement configuré en secours
|
||||
# Il faut passer en normal
|
||||
new += comment + line
|
||||
elif sre.match('^' + comment,l) and secours :
|
||||
# On est actuellement configuré en normal
|
||||
# Il faut passer en secours
|
||||
new += line.replace(comment,'',1)
|
||||
else :
|
||||
# Rien à faire, on est bien configuré
|
||||
new += line
|
||||
if reste :
|
||||
reste -= 1
|
||||
elif mo and len(mo.group(1)) == 0:
|
||||
# On a une ligne avec secours uniquement, c'est les n
|
||||
# prochaines lignes qui font foi
|
||||
try : reste = int(mo.group(2)[1:])
|
||||
except : reste = 1
|
||||
new += line
|
||||
else :
|
||||
# Ligne normale
|
||||
new += line
|
||||
|
||||
line = fd.readline()
|
||||
|
||||
fd.close()
|
||||
|
||||
# Ecriture de la nouvelle version
|
||||
fd = open(file,'w')
|
||||
fd.write(new)
|
||||
fd.close()
|
||||
|
||||
|
||||
def usage() :
|
||||
print 'Usage : %s 0 pour reconfigurer les services locaux en normal' % sys.argv[0]
|
||||
print ' %s 1 pour reconfigurer les services locaux en secours' % sys.argv[0]
|
||||
print 'Fichiers modifiés par le changement de mode : \n\t', '\n\t'.join(fichiers.keys())
|
||||
|
||||
if __name__ == '__main__' :
|
||||
if len(sys.argv) != 2 :
|
||||
usage()
|
||||
else :
|
||||
mode = sys.argv[1]
|
||||
if mode not in '01' :
|
||||
usage()
|
||||
else :
|
||||
mode = int(mode)
|
||||
for f, c in fichiers.items() :
|
||||
try :
|
||||
print 'Edition de %s' % f
|
||||
edit(f,c,mode)
|
||||
except :
|
||||
import traceback
|
||||
traceback.print_exc()
|
Loading…
Add table
Add a link
Reference in a new issue