|
1
|
#!/bin/bash
|
|
2
|
# Paramétrage des listes SYMPA sur Scribe
|
|
3
|
# LaB
|
|
4
|
# Version 24 avril 2025
|
|
5
|
|
|
6
|
# Création d'un fichier ldap-PROFESSEURS.incl qui servira à les déclarer modérateurs des listes
|
|
7
|
FICHIER="/etc/sympa/data_sources/ldap-professeurs.incl"
|
|
8
|
# Vérification de l'existence du fichier
|
|
9
|
if [ ! -f "$FICHIER" ]; then
|
|
10
|
# Récupération du numéro UAI en minuscules
|
|
11
|
uai=$(CreoleGet numero_etab | tr '[:upper:]' '[:lower:]')
|
|
12
|
# Création du répertoire si nécessaire
|
|
13
|
mkdir -p "$(dirname "$FICHIER")"
|
|
14
|
# Écriture du contenu avec substitution de la variable $uai
|
|
15
|
cat > "$FICHIER" <<EOF
|
|
16
|
include_ldap_2level_query
|
|
17
|
scope2 sub
|
|
18
|
suffix2 ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
19
|
select2 first
|
|
20
|
ca_verify none
|
|
21
|
attrs1 memberUid
|
|
22
|
timeout1 30
|
|
23
|
filter1 (objectClass=posixGroup)
|
|
24
|
host 127.0.0.1
|
|
25
|
suffix1 cn=professeurs,ou=local,ou=groupes,ou=$uai,ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
26
|
select1 all
|
|
27
|
port 389
|
|
28
|
ssl_ciphers ALL
|
|
29
|
attrs2 mail
|
|
30
|
use_tls none
|
|
31
|
filter2 (uid=[attrs1])
|
|
32
|
ssl_version tlsv1_3
|
|
33
|
timeout2 30
|
|
34
|
scope1 base
|
|
35
|
EOF
|
|
36
|
# Modification des permissions
|
|
37
|
chown sympa:sympa "$FICHIER"
|
|
38
|
echo "Fichier ldap-professeurs.incl créé et permissions modifiées."
|
|
39
|
else
|
|
40
|
echo "Le fichier ldap-professeurs.incl existe déjà, aucune action nécessaire."
|
|
41
|
fi
|
|
42
|
|
|
43
|
# Création d'un fichier ldap-DIR.incl qui servira à déclarer les PERDIR modérateurs des listes
|
|
44
|
FICHIER="/etc/sympa/data_sources/ldap-dir.incl"
|
|
45
|
# Vérification de l'existence du fichier
|
|
46
|
if [ ! -f "$FICHIER" ]; then
|
|
47
|
# Récupération du numéro UAI en minuscules
|
|
48
|
uai=$(CreoleGet numero_etab | tr '[:upper:]' '[:lower:]')
|
|
49
|
# Création du répertoire si nécessaire
|
|
50
|
mkdir -p "$(dirname "$FICHIER")"
|
|
51
|
# Écriture du contenu avec substitution de la variable $uai
|
|
52
|
cat > "$FICHIER" <<EOF
|
|
53
|
include_ldap_2level_query
|
|
54
|
scope2 sub
|
|
55
|
suffix2 ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
56
|
select2 first
|
|
57
|
ca_verify none
|
|
58
|
attrs1 memberUid
|
|
59
|
timeout1 30
|
|
60
|
filter1 (objectClass=posixGroup)
|
|
61
|
host 127.0.0.1
|
|
62
|
suffix1 cn=dir,ou=local,ou=groupes,ou=$uai,ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
63
|
select1 all
|
|
64
|
port 389
|
|
65
|
ssl_ciphers ALL
|
|
66
|
attrs2 mail
|
|
67
|
use_tls none
|
|
68
|
filter2 (uid=[attrs1])
|
|
69
|
ssl_version tlsv1_3
|
|
70
|
timeout2 30
|
|
71
|
scope1 base
|
|
72
|
EOF
|
|
73
|
# Modification des permissions
|
|
74
|
chown sympa:sympa "$FICHIER"
|
|
75
|
echo "Fichier ldap-dir.incl créé et permissions modifiées."
|
|
76
|
else
|
|
77
|
echo "Le fichier ldap-dir.incl existe déjà, aucune action nécessaire."
|
|
78
|
fi
|
|
79
|
|
|
80
|
# Création d'un fichier ldap-EDU.incl qui servira à déclarer les CPE modérateurs des listes
|
|
81
|
FICHIER="/etc/sympa/data_sources/ldap-edu.incl"
|
|
82
|
# Vérification de l'existence du fichier
|
|
83
|
if [ ! -f "$FICHIER" ]; then
|
|
84
|
# Récupération du numéro UAI en minuscules
|
|
85
|
uai=$(CreoleGet numero_etab | tr '[:upper:]' '[:lower:]')
|
|
86
|
# Création du répertoire si nécessaire
|
|
87
|
mkdir -p "$(dirname "$FICHIER")"
|
|
88
|
# Écriture du contenu avec substitution de la variable $uai
|
|
89
|
cat > "$FICHIER" <<EOF
|
|
90
|
include_ldap_2level_query
|
|
91
|
scope2 sub
|
|
92
|
suffix2 ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
93
|
select2 first
|
|
94
|
ca_verify none
|
|
95
|
attrs1 memberUid
|
|
96
|
timeout1 30
|
|
97
|
filter1 (objectClass=posixGroup)
|
|
98
|
host 127.0.0.1
|
|
99
|
suffix1 cn=edu,ou=local,ou=groupes,ou=$uai,ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
100
|
select1 all
|
|
101
|
port 389
|
|
102
|
ssl_ciphers ALL
|
|
103
|
attrs2 mail
|
|
104
|
use_tls none
|
|
105
|
filter2 (uid=[attrs1])
|
|
106
|
ssl_version tlsv1_3
|
|
107
|
timeout2 30
|
|
108
|
scope1 base
|
|
109
|
EOF
|
|
110
|
# Modification des permissions
|
|
111
|
chown sympa:sympa "$FICHIER"
|
|
112
|
echo "Fichier ldap-edu.incl créé et permissions modifiées."
|
|
113
|
else
|
|
114
|
echo "Le fichier ldap-edu.incl existe déjà, aucune action nécessaire."
|
|
115
|
fi
|
|
116
|
|
|
117
|
# Création d'un fichier ldap-ADF.incl qui servira à déclarer les GESTIONNAIRES modérateurs des listes
|
|
118
|
FICHIER="/etc/sympa/data_sources/ldap-adf.incl"
|
|
119
|
# Vérification de l'existence du fichier
|
|
120
|
if [ ! -f "$FICHIER" ]; then
|
|
121
|
# Récupération du numéro UAI en minuscules
|
|
122
|
uai=$(CreoleGet numero_etab | tr '[:upper:]' '[:lower:]')
|
|
123
|
# Création du répertoire si nécessaire
|
|
124
|
mkdir -p "$(dirname "$FICHIER")"
|
|
125
|
# Écriture du contenu avec substitution de la variable $uai
|
|
126
|
cat > "$FICHIER" <<EOF
|
|
127
|
include_ldap_2level_query
|
|
128
|
scope2 sub
|
|
129
|
suffix2 ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
130
|
select2 first
|
|
131
|
ca_verify none
|
|
132
|
attrs1 memberUid
|
|
133
|
timeout1 30
|
|
134
|
filter1 (objectClass=posixGroup)
|
|
135
|
host 127.0.0.1
|
|
136
|
suffix1 cn=adf,ou=local,ou=groupes,ou=$uai,ou=ac-reunion,ou=education,o=gouv,c=fr
|
|
137
|
select1 all
|
|
138
|
port 389
|
|
139
|
ssl_ciphers ALL
|
|
140
|
attrs2 mail
|
|
141
|
use_tls none
|
|
142
|
filter2 (uid=[attrs1])
|
|
143
|
ssl_version tlsv1_3
|
|
144
|
timeout2 30
|
|
145
|
scope1 base
|
|
146
|
EOF
|
|
147
|
# Modification des permissions
|
|
148
|
chown sympa:sympa "$FICHIER"
|
|
149
|
echo "Fichier ldap-adf.incl créé et permissions modifiées."
|
|
150
|
else
|
|
151
|
echo "Le fichier ldap-adf.incl existe déjà, aucune action nécessaire."
|
|
152
|
fi
|
|
153
|
|
|
154
|
# Modifie les paramètres de toutes les listes
|
|
155
|
echo "Listage des listes Sympa..."
|
|
156
|
find /var/lib/sympa/expl -type f -path '*/config' | while read -r config_file; do
|
|
157
|
list_name=$(basename "$(dirname "$config_file")")
|
|
158
|
message="$list_name :"
|
|
159
|
|
|
160
|
# Ajout modérateurs
|
|
161
|
if ! grep -qx "editor_include" "$config_file" || ! grep -qx "source ldap-professeurs" "$config_file"; then
|
|
162
|
printf "\neditor_include\nsource ldap-professeurs\n" >> "$config_file"
|
|
163
|
message+=" profs modérateurs"
|
|
164
|
fi
|
|
165
|
if ! grep -qx "editor_include" "$config_file" || ! grep -qx "source ldap-dir" "$config_file"; then
|
|
166
|
printf "\neditor_include\nsource ldap-dir\n" >> "$config_file"
|
|
167
|
message+=" perdir modérateurs"
|
|
168
|
fi
|
|
169
|
if ! grep -qx "editor_include" "$config_file" || ! grep -qx "source ldap-edu" "$config_file"; then
|
|
170
|
printf "\neditor_include\nsource ldap-edu\n" >> "$config_file"
|
|
171
|
message+=" CPE modérateurs"
|
|
172
|
fi
|
|
173
|
if ! grep -qx "editor_include" "$config_file" || ! grep -qx "source ldap-adf" "$config_file"; then
|
|
174
|
printf "\neditor_include\nsource ldap-adf\n" >> "$config_file"
|
|
175
|
message+=" gestionnaires modérateurs"
|
|
176
|
fi
|
|
177
|
|
|
178
|
# Modification send
|
|
179
|
if grep -q "^send[[:space:]]" "$config_file" && ! grep -q "^send newsletter$" "$config_file"; then
|
|
180
|
sed -i '/^send[[:space:]]\+/c send newsletter' "$config_file"
|
|
181
|
message+=" send newsletter"
|
|
182
|
fi
|
|
183
|
|
|
184
|
# Modification topics / catégories : écrire la catégorie en minuscule
|
|
185
|
# pour que l'interface web Sympa permette de rechercher les listes par catégories
|
|
186
|
if grep -E '^topics[[:space:]]+[A-Z]' "$config_file"; then
|
|
187
|
sed -i '/^topics /s/.*/\L&/' "$config_file"
|
|
188
|
message+=" catégorie en minuscule"
|
|
189
|
fi
|
|
190
|
|
|
191
|
# Affichage
|
|
192
|
[ -n "$message" ] && echo "$message"
|
|
193
|
done
|
|
194
|
|
|
195
|
# Interdire la création de listes à d'autres comptes qu'administrateur
|
|
196
|
# Attention, fichier sympa.conf peut être dans /etc/sympa ou /etc/sympa/sympa
|
|
197
|
# Test des deux chemins possibles
|
|
198
|
if [ -f "/etc/sympa/sympa/sympa.conf" ]; then
|
|
199
|
FICHIER="/etc/sympa/sympa/sympa.conf"
|
|
200
|
elif [ -f "/etc/sympa/sympa.conf" ]; then
|
|
201
|
FICHIER="/etc/sympa/sympa.conf"
|
|
202
|
else
|
|
203
|
echo "ERREUR : sympa.conf non trouvé dans /etc/sympa/ ni /etc/sympa/sympa/" >&2
|
|
204
|
exit 1
|
|
205
|
fi
|
|
206
|
if ! grep -q "create_list listmaster" $FICHIER; then
|
|
207
|
echo "" >> "$FICHIER"
|
|
208
|
echo "# Création de liste réservée à admin" >> "$FICHIER"
|
|
209
|
echo "create_list listmaster" >> "$FICHIER"
|
|
210
|
echo "Ajout interdiction de création de listes à d'autres comptes qu'administrateur"
|
|
211
|
else
|
|
212
|
echo "Interdiction de création de listes à d'autres comptes qu'administrateur déjà en place"
|
|
213
|
fi
|
|
214
|
|
|
215
|
echo "Paramétrage des listes Sympa terminé."
|
|
216
|
|