Package zephir :: Module prelude_options
[frames] | no frames]

Source Code for Module zephir.prelude_options

 1  # -*- coding: UTF-8 -*- 
 2  ########################################################################### 
 3  # Eole NG - 2007   
 4  # Copyright Pole de Competence Eole  (Ministere Education - Academie Dijon) 
 5  # Licence CeCill  cf /root/LicenceEole.txt 
 6  # eole@ac-dijon.fr  
 7  #   
 8  # prelude_options.py 
 9  #   
10  # options pour l'enregistrement des sondes prelude 
11  #        
12  # les options sont stockées dans un dictionnaire de la forme: 
13  # 
14  #       {<nom_sonde>: [uid, gid, services]} 
15  # 
16  #   uid/gid : utilisateur à utiliser à l'appel de add-user 
17  #   services : liste des services à relancer après enregistrement 
18  # 
19  # Les options snt chargées depuis des fichiers de type .ini  
20  # 
21  # par défaut : /usr/share/zephir/zephir_conf/prelude_eole.ini 
22  # si d'autres fichiers de ce type sont présents dans le répertoire, 
23  # ils seront lus aussi. ordre de priorité des fichiers (croissant): 
24  # - prelude_eole.ini (installé par défaut) 
25  # - prelude_acad.ini (si présent) 
26  # - autres fichiers du type prelude_XXXX.ini 
27  #   (ordre de chargement déterminé par le nom de fichier, 
28  #   le dernier chargé est prioritaire) 
29   
30  from glob import glob 
31  from ConfigParser import ConfigParser 
32  import os 
33   
34  DEFAULT_UID = 'root' 
35  DEFAULT_GID = 'root' 
36  DEFAULT_PERMS = 'idmef:w admin:r' 
37   
38 -def get_conf_files(zephir_dir):
39 """détermine les fichiers à charger et l'ordre de prise en compte""" 40 conf_files = [] 41 fics = glob(os.path.join(zephir_dir, 'zephir_conf', 'prelude_*.ini')) 42 fics.sort() 43 for std_f in ('eole', 'acad'): 44 std_file = os.path.join(zephir_dir, 'zephir_conf', 'prelude_%s.ini' % std_f) 45 if std_file in fics: 46 conf_files.append(std_file) 47 fics.remove(std_file) 48 # on ajoute les éventuels fichiers restants 49 conf_files.extend(fics) 50 return conf_files
51
52 -def get_options(zephir_dir):
53 """création de la liste des fichiers de définition""" 54 conf_files = get_conf_files(zephir_dir) 55 # calcul du dictionnaire des options 56 options = {} 57 58 for conf_file in conf_files: 59 conf_p = ConfigParser() 60 conf_p.read(conf_file) 61 for sonde in conf_p.sections(): 62 perms = uid = gid = services = None 63 # vérification des options déjà chargées 64 if sonde in options: 65 uid, gid, services = options[sonde] 66 if conf_p.has_option(sonde, 'permissions'): 67 perms = conf_p.get(sonde, 'permissions') 68 else: 69 perms = perms or DEFAULT_PERMS 70 if conf_p.has_option(sonde, 'uid'): 71 uid = conf_p.get(sonde, 'uid') 72 else: 73 uid = uid or DEFAULT_UID 74 if conf_p.has_option(sonde, 'gid'): 75 gid = conf_p.get(sonde, 'gid') 76 else: 77 gid = gid or DEFAULT_GID 78 if conf_p.has_option(sonde, 'services'): 79 services = conf_p.get(sonde, 'services').split(',') 80 else: 81 services = services or [sonde] 82 # prise en compte des options pour cette sonde (écrase si déjà présent) 83 options[sonde] = [perms, uid, gid, services] 84 return options
85