Rcriture de generate pour la migration.

Mise en place du firewall sur toutes les machines

darcs-hash:20050611170224-41617-068d285a581f2c65799ca3fbe33a57a3075b9d03.gz
This commit is contained in:
pauget 2005-06-11 19:02:24 +02:00
parent cf8b87b9b9
commit caf1bb803e
11 changed files with 1681 additions and 1666 deletions

View file

@ -1,24 +1,31 @@
#! /usr/bin/env python
# -*- coding: iso-8859-15 -*-
import sys, signal, os, smtplib
import sys, signal, os
# Imports pour LDAP
sys.path.append('/usr/scripts/gestion')
from gen_confs import gen_config, anim, cprint, OK, ERREUR
from ldap_crans import crans_ldap, crans, preattr, ldap, smtpserv
from whos import adher_details
from ldap_crans import crans_ldap, preattr, ldap
from socket import gethostname
if gethostname().split(".")[0] == 'zamok':
# Imports pour mailman
try:
sys.path.append('/usr/lib/mailman')
from Mailman import MailList
from Mailman import Utils
from Mailman.UserDesc import UserDesc
except:
# Machine sans mailman, les ML ne seront pas reconfigurées
pass
class droits(crans_ldap,gen_config) :
class droits(gen_config) :
def restart(s) :
# Rien à faire
pass
def __str__(s):
return "droits"
class droits_ldap(crans_ldap,droits) :
####### Les groupes
base_group_dn = 'ou=Group,dc=crans,dc=org'
@ -38,14 +45,7 @@ class droits(crans_ldap,gen_config) :
'respbats' : [ u'Câbleur', u'Nounou' ],
'+moderateurs' : [ u'Modérateur' ],
'+disconnect' : [ u'Déconnecteur' ] }
def restart(s) :
# Rien à faire
pass
def __str__(self):
return "droits"
def build_group(self) :
""" Reconstruit les groupes dans la base LDAP """
self.anim.iter = len( self.groupes.keys() )
@ -74,61 +74,6 @@ class droits(crans_ldap,gen_config) :
modlist = ldap.modlist.modifyModlist(init_data,data)
self.conn.modify_s(dn,modlist)
def build_master_passwd_group(self) :
"""Reconstruit les entrées à ajouter dans master.passwd
Reconstruit également /etc/group pour le group wheel
"""
master = ""
group = "wheel:*:0:root"
self.anim.iter = 2
for fonction in ("Nounou", "Apprenti"):
self.anim.cycle()
# Qui doit être dans ce groupe ?
res = self.search('droits=%s' % fonction)['adherent']
for a in res:
if fonction == "Nounou":
# On rajoute à /etc/group
group = "%s,%s" % (group, a._data['uid'][0])
# On ajoute dans master
# Le mot de passe est bidon
master = "%s%s:$1$rQcJgpD8$ZZjjszWKnSp9rR6iZ9GPm2:%s:1000:ldap:0:0:%s:%s:%s\n" % (master,
a._data['uid'][0],
a._data['uidNumber'][0],
a._data['gecos'][0],
a._data['homeDirectory'][0],
"/bin/zsh")
# On crée le home
try:
os.mkdir("%s" % a._data['homeDirectory'][0])
except: # Façon Fred
pass
group = "%s\n" % group
# On va réécrire /etc/master.passwd
# cf man master.passwd
fichier = file("/etc/master.passwd")
for line in fichier:
if line.split(":")[4].strip() != "ldap":
master = "%s%s" % (line,master)
fichier.close()
# On va écrire par-dessus
fichier = file("/etc/master.passwd", "w")
fichier.write(master)
fichier.close()
os.system("pwd_mkdb -p /etc/master.passwd")
# On réécrit /etc/group
fichier = file("/etc/group")
for line in fichier:
if line.split(":")[0].strip() != "wheel":
group = "%s%s" % (group,line)
fichier.close()
# On va réécrire par-dessus
fichier = file("/etc/group", "w")
fichier.write(group)
fichier.close()
def print_liste(self,poste) :
""" Donne la liste des membres actifs """
for adh in self.search('droits=%s&chbre!=EXT' % poste)['adherent'] :
@ -188,65 +133,104 @@ class droits(crans_ldap,gen_config) :
self.mlist_to_unlock = None
def gen_conf(self) :
if gethostname().split(".")[0] == 'zamok':
self.anim = anim('\tconfiguration groupes')
try :
self.build_group()
self.anim.reinit()
print OK
except :
self.anim.reinit()
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
self.anim = anim('\tconfiguration ML Crans')
try :
self.sync_ML()
self.anim.reinit()
print OK
except :
self.anim.reinit()
try :
# Au cas où...
self.mlist_to_unlock.Unlock()
except :
pass
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
self.anim = anim('\tenvoi d\'un mail à roots')
try :
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()
print OK
except :
self.services_to_restart('droits',self.uids)
self.anim.reinit()
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
elif gethostname().split(".")[0] == 'nectaris':
self.anim = anim('\tconfiguration master.passwd')
self.anim = anim('\tconfiguration groupes')
try:
self.build_group()
self.anim.reinit()
print OK
except:
self.anim.reinit()
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
self.anim = anim('\tconfiguration ML Crans')
try:
self.sync_ML()
self.anim.reinit()
print OK
except:
self.anim.reinit()
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
try:
self.build_master_passwd_group()
self.anim.reinit()
print OK
except:
self.anim.reinit()
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
# Au cas où...
self.mlist_to_unlock.Unlock()
except :
pass
class droits_openbsd(droits) :
def build_master_passwd_group(self) :
"""Reconstruit les entrées à ajouter dans master.passwd
Reconstruit également /etc/group pour le group wheel
"""
master = ""
group = "wheel:*:0:root"
self.anim.iter = 2
for fonction in ("Nounou", "Apprenti"):
self.anim.cycle()
# Qui doit être dans ce groupe ?
res = crans_ldap().search('droits=%s' % fonction)['adherent']
for a in res:
if fonction == "Nounou":
# On rajoute à /etc/group
group = "%s,%s" % (group, a._data['uid'][0])
# On ajoute dans master
# Le mot de passe est bidon
master = "%s%s:$1$rQcJgpD8$ZZjjszWKnSp9rR6iZ9GPm2:%s:1000:ldap:0:0:%s:%s:%s\n" % (master,
a._data['uid'][0],
a._data['uidNumber'][0],
a._data['gecos'][0],
a._data['homeDirectory'][0],
"/bin/zsh")
# On crée le home
try:
os.mkdir("%s" % a._data['homeDirectory'][0])
except:
pass
group = "%s\n" % group
# On va réécrire /etc/master.passwd
# cf man master.passwd
fichier = file("/etc/master.passwd")
for line in fichier:
if line.split(":")[4].strip() != "ldap":
master = "%s%s" % (line,master)
fichier.close()
# On va écrire par-dessus
fichier = file("/etc/master.passwd", "w")
fichier.write(master)
fichier.close()
os.system("pwd_mkdb -p /etc/master.passwd")
# On réécrit /etc/group
fichier = file("/etc/group")
for line in fichier:
if line.split(":")[0].strip() != "wheel":
group = "%s%s" % (group,line)
fichier.close()
# On va réécrire par-dessus
fichier = file("/etc/group", "w")
fichier.write(group)
fichier.close()
def gen_conf(self) :
self.anim = anim('\tconfiguration master.passwd')
try:
self.build_master_passwd_group()
self.anim.reinit()
print OK
except:
self.anim.reinit()
print ERREUR
if self.debug :
import traceback
traceback.print_exc()
if __name__ == '__main__' :
if '-h' in sys.argv or '--help' in sys.argv or len(sys.argv) == 1 :