| Home | Trees | Indices | Help |
|---|
|
|
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
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
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
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0.1 on Thu Jan 23 17:05:22 2014 | http://epydoc.sourceforge.net |