Projet

Général

Profil

sympa_regles.sh

Laurent Brillard, 29/04/2025 11:13

Télécharger (7,15 ko)

 
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