Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 58

Julien Enselme, 05/08/2013 17:54
flush-files.sh : import scripts-config.sh if needed. Doesn't exit.

1 1 Julien Enselme
Afin de gagner du temps et d'éviter les erreurs humaines, des scripts ont été écrits tout au long du projet. Certains sont même exécutés automatiquement toutes les semaines.
2 1 Julien Enselme
3 13 Florent Torregrosa
{{>toc}}
4 1 Julien Enselme
5 1 Julien Enselme
h1. Les tâches planifiées
6 1 Julien Enselme
7 26 Florent Torregrosa
h2. Crontab
8 26 Florent Torregrosa
9 3 Julien Enselme
Pour exécuter ces tâches régulièrement, on utilise le "crontab":http://fr.wikipedia.org/wiki/Crontab. Il s'agit d'un programme installé sur notre serveur.
10 1 Julien Enselme
11 3 Julien Enselme
Pour voir et modifier la liste des actions :
12 3 Julien Enselme
# se connecter au serveur : <code>ssh assos@sas1.centrale-marseille</code>
13 3 Julien Enselme
# taper la commande pour voir le crontab <code>crontab -l</code>
14 47 Julien Enselme
# taper la commande pour modifier le crontab <code>crontab -e</code>.
15 1 Julien Enselme
16 47 Julien Enselme
{{important(Ne pas effectuer cette opération avant de s'être renseigné sur "vi":http://fr.wikipedia.org/wiki/Vi (l'éditeur de texte utilisé qui n'est pas vraiment intuitif :p) et sur "la syntaxe du crontab":http://fr.wikipedia.org/wiki/Crontab#Modification !
17 47 Julien Enselme
Les scripts doivent si possible s’exécuter avant le club Drupal pour que les problèmes éventuels y soient réglés)}}
18 47 Julien Enselme
19 52 Julien Enselme
{{tip(Pour utiliser un autre éditeur que vi taper : export EDITOR=editor_name exemple : vim, nano
20 52 Julien Enselme
d7-all-update-contrib.sh fait des sauvegardes automatiques individuelles pour les sites drupal)}}
21 26 Florent Torregrosa
22 26 Florent Torregrosa
<pre>
23 26 Florent Torregrosa
<code class="php">
24 42 Florent Torregrosa
######## How to use
25 42 Florent Torregrosa
# mm hh jj MMM JJJ task
26 42 Florent Torregrosa
# minutes hour day_month month day_week
27 42 Florent Torregrosa
# for more informations : https://fr.wikipedia.org/wiki/Crontab#Notation
28 42 Florent Torregrosa
######## End how to
29 42 Florent Torregrosa
30 43 Florent Torregrosa
### Traqu-heure
31 43 Florent Torregrosa
43 6 * * * /users/guest/assos/bin/traqu_heure/script-restitution.sh > /dev/null 2>&1 
32 43 Florent Torregrosa
0 * * * *  /users/guest/assos/bin/traqu_heure/script-traque.sh > /dev/null 2>&1 
33 1 Julien Enselme
34 1 Julien Enselme
35 43 Florent Torregrosa
### Cleaning
36 43 Florent Torregrosa
00 22 * * * /users/guest/assos/bin/all-reset-permissions.sh > /dev/null 2>&1
37 43 Florent Torregrosa
00 23 * * * /users/guest/assos/bin/delete-temporary-files.sh > /dev/null 2>&1
38 1 Julien Enselme
39 1 Julien Enselme
40 43 Florent Torregrosa
### Databases
41 43 Florent Torregrosa
# Create backup
42 43 Florent Torregrosa
00 21 * * 1 /users/guest/assos/bin/d7-all-dump-full.sh > /dev/null 2>&1
43 43 Florent Torregrosa
00 1 * * 2  /users/guest/assos/bin/d6-all-dump-full.sh > /dev/null 2>&1
44 42 Florent Torregrosa
45 43 Florent Torregrosa
# flush backup
46 43 Florent Torregrosa
00 21 * * 2 /users/guest/assos/bin/flush-full-databases-backups.sh d7 > /dev/null 2>&1
47 43 Florent Torregrosa
00 22 * * 2 /users/guest/assos/bin/flush-full-databases-backups.sh d6 > /dev/null 2>&1
48 43 Florent Torregrosa
00 23 * * 2 /users/guest/assos/bin/flush-individual-databases-backups.sh auto d7 > /dev/null 2>&1
49 43 Florent Torregrosa
00 1 * * 3  /users/guest/assos/bin/flush-individual-databases-backups.sh manual d7 > /dev/null 2>&1
50 42 Florent Torregrosa
51 42 Florent Torregrosa
52 43 Florent Torregrosa
### Updates for drupal 7
53 43 Florent Torregrosa
00 22 * * 3 /users/guest/assos/bin/d7-all-update-contrib.sh | mail -s "d7-all-update-contrib.sh" assos
54 56 Julien Enselme
00 1 * * 3  /users/guest/assos/bin/d7-all-update-localisation.sh | mail -s "d7-all-update-localisation.sh" assos
55 43 Florent Torregrosa
00 3 * * 3  /users/guest/assos/bin/d7-all-reset-variables.sh > /dev/null 2>&1  
56 42 Florent Torregrosa
57 44 Florent Torregrosa
00 5 * * 3  /users/guest/assos/bin/d7-all-releases-info.sh | mail -s "d7-all-releases-info.sh" assos
58 43 Florent Torregrosa
00 23 * * 4 /users/guest/assos/bin/d7-all-security-review.sh
59 42 Florent Torregrosa
60 42 Florent Torregrosa
61 43 Florent Torregrosa
# Updates for drupal 6
62 43 Florent Torregrosa
00 22 * * 6 /users/guest/assos/bin/d6-all-update-contrib.sh > /dev/null 2>&1
63 43 Florent Torregrosa
00 23 * * 6 /users/guest/assos/bin/d6-all-reset-variables.sh > /dev/null 2>&1 
64 42 Florent Torregrosa
65 43 Florent Torregrosa
# Launch drush cron on fellowings
66 43 Florent Torregrosa
45 17 * * *     /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.ginfo > /dev/null 2>&1 
67 43 Florent Torregrosa
*/15 * * * *    /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.clubfinance > /dev/null 2>&1
68 43 Florent Torregrosa
45 3 * * *      /users/guest/assos/bin/drushcronone default > /dev/null 2>&1 
69 43 Florent Torregrosa
35 00 * * *     /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.cac13 > /dev/null 2>&1 
70 43 Florent Torregrosa
*/45 * * * *    /users/guest/assos/bin/drushcronone assos.centrale-marseille.fr.expat > /dev/null 2>&1 
71 1 Julien Enselme
*/10 * * * *    /users/guest/assos/bin/drushcronone forum.centrale-marseille.fr > /dev/null 2>&1 
72 44 Florent Torregrosa
73 44 Florent Torregrosa
00 22 * * 7 /users/guest/assos/bin/disk-usage.sh | mail -s "disk-usage.sh" assos
74 1 Julien Enselme
75 1 Julien Enselme
</code>
76 25 Florent Torregrosa
</pre>
77 1 Julien Enselme
78 25 Florent Torregrosa
Voici la liste des tâches effectuées régulièrement.
79 3 Julien Enselme
80 25 Florent Torregrosa
h2. La réinitialisation des variables
81 25 Florent Torregrosa
82 1 Julien Enselme
Cette tâche consiste à réinitialiser certaines variables qui donnent des droits considérés comme trop permissifs donc dangereux aux administrateurs des sites ou nécessaire pour d'autres scripts tels que piwik ou security_review.
83 1 Julien Enselme
84 25 Florent Torregrosa
En voici quelques exemples :
85 1 Julien Enselme
86 1 Julien Enselme
<pre>
87 1 Julien Enselme
<code class="bash">
88 25 Florent Torregrosa
drush -y vset error_level 0
89 25 Florent Torregrosa
</code>
90 1 Julien Enselme
</pre>
91 21 Florent Torregrosa
92 25 Florent Torregrosa
Cette commande permet de ne pas afficher les messages d'erreurs. En effet, ils contiennent parfois des informations sensibles sur l'installation et ne doivent donc pas être divulgués à n'importe qui.
93 25 Florent Torregrosa
94 3 Julien Enselme
<pre>
95 1 Julien Enselme
<code class="php">
96 1 Julien Enselme
drush -y vset --always-set reverse_proxy TRUE
97 25 Florent Torregrosa
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
98 1 Julien Enselme
</code>
99 3 Julien Enselme
</pre>
100 1 Julien Enselme
101 3 Julien Enselme
Ces commandes permettent de déclarer à Drupal les serveurs proxy du CRI afin d'éviter qu'il ne répertorie tous les visiteurs comme ayant l'adresse des serveurs sus-cités. **Pas fini : voir http://assos.centrale-marseille.fr/content/t%C3%A2che/d%C3%A9clarer-les-proxy-du-cri-%C3%A0-drupal**
102 1 Julien Enselme
103 6 Julien Enselme
h2. La sauvegarde des bases de données
104 1 Julien Enselme
105 3 Julien Enselme
Sur les installations d6 et d7 : une fois par semaine
106 1 Julien Enselme
107 3 Julien Enselme
On utilise les [[Scripts_et_taches_planifiees#Tout-sauvegarder|scripts de sauvegarde créés par le club Drupal]].
108 1 Julien Enselme
109 3 Julien Enselme
h2. La purge des sauvegardes de bdd
110 1 Julien Enselme
111 1 Julien Enselme
Sur les installations d6 et d7 : toutes les semaines
112 1 Julien Enselme
113 1 Julien Enselme
Cette tâche utilise le script de [[Scripts_et_taches_planifiees#purge_des_sauvegardes.sh|purge des sauvegardes]] afin de libérer de l'espace disque en supprimant les sauvegardes de bdd les plus vieilles.
114 1 Julien Enselme
115 1 Julien Enselme
h1. Liste des scripts à disposition
116 21 Florent Torregrosa
117 21 Florent Torregrosa
Les scripts utilisés sont hébergés dans le répertoire bin du compte assos.
118 21 Florent Torregrosa
119 53 Julien Enselme
h2. Configuration et utilitaires
120 1 Julien Enselme
121 53 Julien Enselme
h3. scripts-config-site.sh
122 53 Julien Enselme
123 21 Florent Torregrosa
<pre>
124 21 Florent Torregrosa
<code class="php">
125 21 Florent Torregrosa
#!/bin/sh
126 1 Julien Enselme
127 53 Julien Enselme
# Sets useful variables of a site.
128 53 Julien Enselme
# ARGS: site_name
129 53 Julien Enselme
# Requires scripts-config.sh
130 53 Julien Enselme
131 53 Julien Enselme
# Check if scripts-config.sh is imported.
132 53 Julien Enselme
if [ -z $scripts_config ] ; then
133 53 Julien Enselme
    echo "Import of scripts-config.sh required."
134 53 Julien Enselme
    exit 1
135 53 Julien Enselme
fi
136 53 Julien Enselme
137 53 Julien Enselme
if [ -z $1 ] ; then
138 53 Julien Enselme
    echo "This script needs a site name as argument."
139 53 Julien Enselme
    exit 1
140 53 Julien Enselme
fi
141 53 Julien Enselme
142 53 Julien Enselme
scripts_config_site='imported'
143 53 Julien Enselme
144 53 Julien Enselme
d7_site_name=$1
145 53 Julien Enselme
d7_site_dir="$d7_dir_sites/assos.centrale-marseille.fr.$d7_site_name"
146 53 Julien Enselme
d7_site_settings="$d7_site_dir/settings.php"
147 53 Julien Enselme
</code>
148 53 Julien Enselme
</pre>
149 53 Julien Enselme
150 53 Julien Enselme
h3. scripts-config.sh
151 53 Julien Enselme
152 53 Julien Enselme
<pre>
153 53 Julien Enselme
<code class="php">
154 53 Julien Enselme
#!/bin/sh
155 53 Julien Enselme
156 53 Julien Enselme
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/users/guest/assos/bin
157 53 Julien Enselme
PATH=$PATH:/usr/guest/assos/bin
158 53 Julien Enselme
159 53 Julien Enselme
scripts_config='imported'
160 53 Julien Enselme
161 53 Julien Enselme
email_multi_assos="assos@centrale-marseille.fr"
162 53 Julien Enselme
163 53 Julien Enselme
dir_multi_assos='/users/guest/assos'
164 53 Julien Enselme
dir_scripts="$dir_multi_assos/bin"
165 53 Julien Enselme
dir_template="$dir_multi_assos/template"
166 53 Julien Enselme
167 53 Julien Enselme
###### Database
168 53 Julien Enselme
db_server="myassos.serv.int"
169 53 Julien Enselme
db_user="assos"
170 53 Julien Enselme
dir_log="$dir_multi_assos/log"
171 53 Julien Enselme
172 53 Julien Enselme
###### Backup
173 53 Julien Enselme
db_full_backup_number=3
174 53 Julien Enselme
db_individual_manual_backup_number=3
175 53 Julien Enselme
db_individual_auto_backup_number=3
176 53 Julien Enselme
177 53 Julien Enselme
dir_backup="$dir_multi_assos/backup"
178 53 Julien Enselme
dir_full_backup="$dir_backup/full"
179 53 Julien Enselme
dir_individual_backup="$dir_backup/individual"
180 53 Julien Enselme
dir_individual_manual_backup="$dir_individual_backup/manual"
181 53 Julien Enselme
dir_individual_auto_backup="$dir_individual_backup/auto"
182 53 Julien Enselme
183 53 Julien Enselme
184 53 Julien Enselme
###### D7 variables
185 53 Julien Enselme
d7_dir="$dir_multi_assos/htmltest"
186 53 Julien Enselme
d7_dir_sites="$d7_dir/sites"
187 53 Julien Enselme
188 53 Julien Enselme
### Log
189 53 Julien Enselme
d7_dir_log="$dir_log/d7"
190 53 Julien Enselme
191 53 Julien Enselme
### Backup
192 53 Julien Enselme
d7_dir_full_backup="$dir_full_backup/d7"
193 53 Julien Enselme
d7_dir_individual_manual_backup="$dir_individual_manual_backup/d7"
194 53 Julien Enselme
d7_dir_individual_auto_backup="$dir_individual_auto_backup/d7"
195 53 Julien Enselme
196 53 Julien Enselme
### Template
197 53 Julien Enselme
d7_settings_template_name="settings-D7-bddinde-template.php"
198 53 Julien Enselme
d7_settings_template="$dir_template/$d7_settings_template_name"
199 53 Julien Enselme
200 53 Julien Enselme
201 53 Julien Enselme
###### D6 variables
202 53 Julien Enselme
d6_dir="$dir_multi_assos/html"
203 53 Julien Enselme
d6_dir_sites="$d6_dir/sites"
204 53 Julien Enselme
205 53 Julien Enselme
### Backup
206 53 Julien Enselme
d6_dir_full_backup="$dir_full_backup/d6"
207 53 Julien Enselme
d6_dir_individual_manual_backup="$dir_individual_manual_backup/d6"
208 53 Julien Enselme
d6_dir_individual_auto_backup="$dir_individual_auto_backup/d6"
209 53 Julien Enselme
</code>
210 53 Julien Enselme
</pre>
211 53 Julien Enselme
212 53 Julien Enselme
h3. scripts-utils.sh
213 53 Julien Enselme
214 53 Julien Enselme
<pre>
215 53 Julien Enselme
<code class="php">
216 53 Julien Enselme
#!/bin/sh
217 53 Julien Enselme
218 53 Julien Enselme
# This script contains useful functions for other scripts.
219 53 Julien Enselme
220 53 Julien Enselme
# Check if scripts-config.sh is imported.
221 53 Julien Enselme
if [ -z $scripts_config ] ; then
222 53 Julien Enselme
    echo "Import of scripts-config.sh required."
223 58 Julien Enselme
    . scripts-config.sh
224 53 Julien Enselme
fi
225 53 Julien Enselme
226 53 Julien Enselme
scripts_utils='imported'
227 53 Julien Enselme
228 53 Julien Enselme
ask_password() {
229 53 Julien Enselme
    # read -s doesn't work with sh.
230 53 Julien Enselme
    # usage: pass=`ask_password "password please:"`
231 53 Julien Enselme
    echo $1 >&2
232 53 Julien Enselme
    echo -n ">" >&2
233 53 Julien Enselme
    stty_avant=`stty -g`
234 53 Julien Enselme
    stty -echo
235 53 Julien Enselme
    read password
236 53 Julien Enselme
    stty $stty_avant
237 53 Julien Enselme
    echo "$password"
238 53 Julien Enselme
    unset password
239 53 Julien Enselme
}
240 53 Julien Enselme
241 53 Julien Enselme
ask_password_db() {
242 53 Julien Enselme
    # ARGS: server_name, user_name
243 53 Julien Enselme
    local db_password="pour_boucler"
244 53 Julien Enselme
    # empty db request to validate password
245 53 Julien Enselme
    while ! mysql -h $1 -u $2 -p$db_password -e "" 2>/dev/null ; do
246 53 Julien Enselme
        db_password=`ask_password "database password:"`
247 53 Julien Enselme
    done
248 53 Julien Enselme
    echo $db_password
249 53 Julien Enselme
}
250 53 Julien Enselme
251 53 Julien Enselme
generate_password(){
252 53 Julien Enselme
    # ARGS: [password_length]
253 53 Julien Enselme
    # The password contains special characters. '/' must be excluded to avoid sed malfunction.
254 53 Julien Enselme
255 53 Julien Enselme
    local site_password='/'
256 53 Julien Enselme
257 53 Julien Enselme
    if [ -z $1 ] ; then
258 53 Julien Enselme
        local password_length=20
259 53 Julien Enselme
    else
260 53 Julien Enselme
        local password_length=$1
261 53 Julien Enselme
    fi
262 53 Julien Enselme
263 53 Julien Enselme
    while echo "$site_password" | grep -Fq '/' ; do
264 53 Julien Enselme
        site_password=`dd if=/dev/urandom count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-$password_length`
265 53 Julien Enselme
    done
266 53 Julien Enselme
267 53 Julien Enselme
    echo $site_password
268 53 Julien Enselme
}
269 53 Julien Enselme
270 53 Julien Enselme
count_d7_sites(){
271 53 Julien Enselme
    find $d7_dir_sites -type d ! -name all -maxdepth 1 | wc -l
272 53 Julien Enselme
}
273 53 Julien Enselme
274 53 Julien Enselme
check_arguments() {
275 53 Julien Enselme
    # ARGS: number of arguments passed to script, number of arguments required
276 53 Julien Enselme
    if [ $1 -lt $2  ] ; then
277 53 Julien Enselme
        echo "Number of arguments insuffisant."
278 53 Julien Enselme
        exit 1
279 53 Julien Enselme
    fi
280 53 Julien Enselme
}
281 53 Julien Enselme
</code>
282 53 Julien Enselme
</pre>
283 53 Julien Enselme
284 53 Julien Enselme
h2. Scripts généraux
285 53 Julien Enselme
286 53 Julien Enselme
h3. all-reset-permissions.sh
287 53 Julien Enselme
288 53 Julien Enselme
<pre>
289 53 Julien Enselme
<code class="php">
290 53 Julien Enselme
#!/bin/sh
291 53 Julien Enselme
292 21 Florent Torregrosa
. scripts-config.sh
293 21 Florent Torregrosa
294 21 Florent Torregrosa
# This script puts the correct permissions to sites folders, settings.php and scripts.
295 21 Florent Torregrosa
296 21 Florent Torregrosa
######### drupal 6
297 21 Florent Torregrosa
for dir in `find $d6_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all ! -name images ! -name languages` ; do
298 21 Florent Torregrosa
    chmod 755 $dir
299 21 Florent Torregrosa
    chmod 400 $dir/settings.php
300 35 Florent Torregrosa
done
301 35 Florent Torregrosa
302 35 Florent Torregrosa
######### drupal 7
303 35 Florent Torregrosa
for dir in `find $d7_dir_sites -type d -maxdepth 1 -mindepth 1 ! -name all` ; do
304 35 Florent Torregrosa
    chmod 755 $dir
305 35 Florent Torregrosa
    chmod 400 $dir/settings.php
306 21 Florent Torregrosa
done
307 21 Florent Torregrosa
308 1 Julien Enselme
####### bin
309 21 Florent Torregrosa
chmod -R 700 $dir_scripts
310 21 Florent Torregrosa
311 21 Florent Torregrosa
####### backup
312 21 Florent Torregrosa
chmod -R 700 $dir_backup
313 21 Florent Torregrosa
314 21 Florent Torregrosa
####### log
315 21 Florent Torregrosa
chmod -R 700 $dir_log
316 21 Florent Torregrosa
</code>
317 1 Julien Enselme
</pre>
318 21 Florent Torregrosa
319 53 Julien Enselme
h3. contrib-usage.sh
320 29 Florent Torregrosa
321 21 Florent Torregrosa
<pre>
322 21 Florent Torregrosa
<code class="php">
323 21 Florent Torregrosa
#!/bin/sh
324 21 Florent Torregrosa
325 21 Florent Torregrosa
. scripts-config.sh
326 21 Florent Torregrosa
. scripts-utils.sh
327 21 Florent Torregrosa
328 21 Florent Torregrosa
# ARGS: Drupal_version, project_status, project_name
329 21 Florent Torregrosa
# List sites that have the project_name with the corresponding project_status.
330 41 Florent Torregrosa
# project status: enabled or disabled
331 21 Florent Torregrosa
332 21 Florent Torregrosa
check_arguments $# 3
333 21 Florent Torregrosa
334 21 Florent Torregrosa
if [ $1 = d6 ] ; then
335 21 Florent Torregrosa
    cd $d6_dir_sites
336 21 Florent Torregrosa
else
337 21 Florent Torregrosa
    cd $d7_dir_sites
338 21 Florent Torregrosa
fi
339 29 Florent Torregrosa
340 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images | sort ` ; do
341 21 Florent Torregrosa
    # List non-core projects that correspond to the status.
342 21 Florent Torregrosa
    # Keep project_name if listed.
343 21 Florent Torregrosa
    # Count line result. 0 if not listed or 1 if listed.
344 1 Julien Enselme
	# Print site_dir if listed.
345 21 Florent Torregrosa
346 21 Florent Torregrosa
    cd $dir;
347 21 Florent Torregrosa
	if [ 1 -eq `drush pml --no-core --status=$2 | grep $3 | wc -l` ] ; then
348 21 Florent Torregrosa
        echo $dir; 
349 21 Florent Torregrosa
    fi
350 21 Florent Torregrosa
    cd -
351 21 Florent Torregrosa
done
352 1 Julien Enselme
</code>
353 21 Florent Torregrosa
</pre>
354 21 Florent Torregrosa
355 53 Julien Enselme
h3. delete-temporary-files.sh
356 21 Florent Torregrosa
357 41 Florent Torregrosa
<pre>
358 21 Florent Torregrosa
<code class="php">
359 1 Julien Enselme
#!/bin/sh
360 1 Julien Enselme
361 1 Julien Enselme
. scripts-config.sh
362 53 Julien Enselme
363 53 Julien Enselme
find $dir_multi_assos -name '*~' -delete
364 53 Julien Enselme
</code>
365 53 Julien Enselme
</pre>
366 53 Julien Enselme
367 53 Julien Enselme
h3. disk-usage.sh
368 53 Julien Enselme
369 53 Julien Enselme
<pre>
370 53 Julien Enselme
<code class="php">
371 53 Julien Enselme
#!/bin/sh
372 53 Julien Enselme
373 53 Julien Enselme
. scripts-config.sh
374 53 Julien Enselme
375 53 Julien Enselme
echo -e "Quotas: 9.1 GB\n"
376 53 Julien Enselme
377 53 Julien Enselme
echo "Assos:"
378 53 Julien Enselme
du -hcs $dir_multi_assos | grep total
379 53 Julien Enselme
echo -e "\n"
380 53 Julien Enselme
381 53 Julien Enselme
echo "D6:"
382 53 Julien Enselme
cd $d6_dir_sites
383 53 Julien Enselme
du -h -d 1
384 53 Julien Enselme
echo -e "\n"
385 53 Julien Enselme
386 53 Julien Enselme
echo "D7:"
387 53 Julien Enselme
cd $d7_dir_sites
388 53 Julien Enselme
du -h -d 1
389 53 Julien Enselme
echo -e "\n"
390 53 Julien Enselme
391 53 Julien Enselme
echo "Logs:"
392 53 Julien Enselme
du -hcs $dir_log | grep total
393 53 Julien Enselme
echo -e "\n"
394 53 Julien Enselme
395 53 Julien Enselme
echo "Backups:"
396 53 Julien Enselme
cd $dir_backup
397 53 Julien Enselme
du -h -d 2
398 53 Julien Enselme
</code>
399 53 Julien Enselme
</pre>
400 53 Julien Enselme
401 53 Julien Enselme
h3. drushcronone
402 53 Julien Enselme
403 53 Julien Enselme
<pre>
404 53 Julien Enselme
<code class="php">
405 53 Julien Enselme
#!/bin/sh
406 53 Julien Enselme
407 53 Julien Enselme
. scripts-config.sh
408 53 Julien Enselme
409 53 Julien Enselme
if [ $# -lt 1 ]; then
410 53 Julien Enselme
  echo "usage: $0 <site's folder name>"
411 53 Julien Enselme
  exit 1
412 53 Julien Enselme
fi
413 53 Julien Enselme
414 53 Julien Enselme
cd "$d6_sites_dir/$*"
415 53 Julien Enselme
pwd;
416 53 Julien Enselme
drush cron;
417 53 Julien Enselme
</code>
418 53 Julien Enselme
</pre>
419 53 Julien Enselme
420 53 Julien Enselme
h3. flush-files.sh
421 53 Julien Enselme
422 53 Julien Enselme
<pre>
423 53 Julien Enselme
<code class="php">
424 53 Julien Enselme
#!/bin/sh
425 53 Julien Enselme
426 53 Julien Enselme
# ARGS: number of files to keep, email address
427 53 Julien Enselme
# usage: flush files from a folder except a number equal to argument.
428 53 Julien Enselme
429 53 Julien Enselme
# Check if scripts-config.sh is imported.
430 53 Julien Enselme
if [ -z $scripts_utils ] ; then
431 53 Julien Enselme
    echo "Import of scripts-utils.sh required."
432 57 Julien Enselme
    . scripts-utils.sh
433 53 Julien Enselme
fi
434 53 Julien Enselme
435 53 Julien Enselme
check_arguments $# 2
436 53 Julien Enselme
437 53 Julien Enselme
backups_number=`ls | wc -l`
438 53 Julien Enselme
let "number_of_backups_to_delete = backups_number - $1"
439 53 Julien Enselme
440 53 Julien Enselme
if [ $number_of_backups_to_delete -gt 0 ] ; then
441 53 Julien Enselme
    ls | head -$number_of_backups_to_delete | xargs rm
442 53 Julien Enselme
else
443 53 Julien Enselme
    dir=`pwd`
444 53 Julien Enselme
    echo "There are not enough files in $dir to Flush it. Check if backup script works fine." | mail -s "[db] $dir has a backup problem" $2
445 53 Julien Enselme
fi
446 53 Julien Enselme
</code>
447 53 Julien Enselme
</pre>
448 53 Julien Enselme
449 53 Julien Enselme
h3. flush-full-databases-backups.sh
450 53 Julien Enselme
451 53 Julien Enselme
<pre>
452 53 Julien Enselme
<code class="php">
453 53 Julien Enselme
#!/bin/sh
454 53 Julien Enselme
455 53 Julien Enselme
. scripts-config.sh
456 53 Julien Enselme
457 53 Julien Enselme
# ARGS: Drupal version
458 53 Julien Enselme
459 53 Julien Enselme
cd $dir_full_backup/$1
460 53 Julien Enselme
461 53 Julien Enselme
for dir in `ls` ; do
462 53 Julien Enselme
    cd $dir
463 53 Julien Enselme
    flush-files.sh $db_full_backup_number $email_multi_assos
464 53 Julien Enselme
    cd -
465 53 Julien Enselme
done
466 53 Julien Enselme
</code>
467 53 Julien Enselme
</pre>
468 53 Julien Enselme
469 53 Julien Enselme
h3. flush-individual-databases-backups.sh
470 53 Julien Enselme
471 53 Julien Enselme
<pre>
472 53 Julien Enselme
<code class="php">
473 53 Julien Enselme
#!/bin/sh
474 53 Julien Enselme
475 53 Julien Enselme
. scripts-config.sh
476 53 Julien Enselme
477 53 Julien Enselme
# ARGS: manual or auto, Drupal version
478 53 Julien Enselme
479 53 Julien Enselme
cd $dir_individual_backup/$1/$2
480 53 Julien Enselme
481 53 Julien Enselme
for dir in `ls` ; do
482 53 Julien Enselme
    cd $dir
483 53 Julien Enselme
    if [ $1 = 'auto' ] ; then
484 53 Julien Enselme
        flush-files.sh $db_individual_auto_backup_number $email_multi_assos
485 53 Julien Enselme
    else
486 53 Julien Enselme
        flush-files.sh $db_individual_manual_backup_number $email_multi_assos
487 53 Julien Enselme
    fi
488 53 Julien Enselme
    cd -
489 53 Julien Enselme
done
490 53 Julien Enselme
</code>
491 53 Julien Enselme
</pre>
492 53 Julien Enselme
493 53 Julien Enselme
h2. Scripts Drupal 6
494 53 Julien Enselme
495 53 Julien Enselme
h3. d6-all-drush.sh
496 53 Julien Enselme
497 53 Julien Enselme
<pre>
498 53 Julien Enselme
<code class="php">
499 53 Julien Enselme
#!/bin/sh
500 53 Julien Enselme
501 53 Julien Enselme
. scripts-config.sh
502 21 Florent Torregrosa
. scripts-utils.sh
503 21 Florent Torregrosa
504 21 Florent Torregrosa
# ARGS: drush_command
505 21 Florent Torregrosa
506 21 Florent Torregrosa
check_arguments $# 1
507 21 Florent Torregrosa
508 21 Florent Torregrosa
for dir in `find $d6_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images | sort` ; do
509 21 Florent Torregrosa
    cd $dir
510 21 Florent Torregrosa
    echo $dir
511 21 Florent Torregrosa
    drush $*
512 1 Julien Enselme
done
513 21 Florent Torregrosa
</code>
514 45 Florent Torregrosa
</pre>
515 21 Florent Torregrosa
516 53 Julien Enselme
h3. d6-all-dump-full.sh
517 45 Florent Torregrosa
518 37 Florent Torregrosa
<pre>
519 37 Florent Torregrosa
<code class="php">
520 37 Florent Torregrosa
#!/bin/sh
521 37 Florent Torregrosa
522 37 Florent Torregrosa
. scripts-config.sh
523 37 Florent Torregrosa
524 37 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
525 37 Florent Torregrosa
526 37 Florent Torregrosa
# Dump D6 database with webassos user.
527 37 Florent Torregrosa
mysqldump --single-transaction webassos -h myweb.serv.int -u webassos --password=password > $d6_dir_full_backup/webassos/$current_date.webassos.sql
528 41 Florent Torregrosa
529 1 Julien Enselme
# Dump D6 form database with forum user.
530 37 Florent Torregrosa
mysqldump forum -h myweb.serv.int -u forum --password=password > $d6_dir_full_backup/forum/$current_date.forum.sql
531 37 Florent Torregrosa
</code>
532 39 Florent Torregrosa
</pre>
533 1 Julien Enselme
534 53 Julien Enselme
h3. d6-all-reset-variables.sh
535 21 Florent Torregrosa
536 21 Florent Torregrosa
<pre>
537 21 Florent Torregrosa
<code class="php">
538 21 Florent Torregrosa
#!/bin/sh
539 21 Florent Torregrosa
540 21 Florent Torregrosa
. scripts-config.sh
541 21 Florent Torregrosa
542 21 Florent Torregrosa
cd $d6_dir_sites
543 1 Julien Enselme
d6-all-drush.sh vset --always-set reverse_proxy TRUE
544 21 Florent Torregrosa
d6-all-drush.sh vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
545 21 Florent Torregrosa
drush @sites -y ev "variable_set('update_notify_emails', array('@email_multi_assos'));"
546 21 Florent Torregrosa
</code>
547 21 Florent Torregrosa
</pre>
548 21 Florent Torregrosa
549 53 Julien Enselme
h3. d6-all-update-contrib.sh
550 21 Florent Torregrosa
551 21 Florent Torregrosa
<pre>
552 21 Florent Torregrosa
<code class="php">
553 21 Florent Torregrosa
#!/bin/sh
554 21 Florent Torregrosa
555 21 Florent Torregrosa
. scripts-config.sh
556 21 Florent Torregrosa
557 21 Florent Torregrosa
d6-all-drush.sh -y en update
558 1 Julien Enselme
# Launch cron to check for updates.
559 21 Florent Torregrosa
d6-all-drush.sh -q cron
560 21 Florent Torregrosa
561 21 Florent Torregrosa
d6-all-drush.sh cc all
562 21 Florent Torregrosa
d6-all-dump-full.sh
563 21 Florent Torregrosa
564 21 Florent Torregrosa
d6-all-drush.sh -y upc --no-core
565 1 Julien Enselme
d6-all-drush.sh -y updb
566 1 Julien Enselme
567 1 Julien Enselme
d6-all-drush.sh -y dis update
568 1 Julien Enselme
569 1 Julien Enselme
d6-all-drush.sh cron
570 1 Julien Enselme
</code>
571 1 Julien Enselme
</pre>
572 41 Florent Torregrosa
573 53 Julien Enselme
h3. d6-dump-individual.sh
574 41 Florent Torregrosa
575 41 Florent Torregrosa
<pre>
576 41 Florent Torregrosa
<code class="php">
577 41 Florent Torregrosa
#!/bin/sh
578 41 Florent Torregrosa
579 41 Florent Torregrosa
. scripts-config.sh
580 21 Florent Torregrosa
581 21 Florent Torregrosa
# ARGS: auto or manual, site_prefix
582 21 Florent Torregrosa
# WARNING : backup are regularly flushed, put your backup in a safe place.
583 21 Florent Torregrosa
584 21 Florent Torregrosa
cd $dir_individual_backup
585 1 Julien Enselme
586 1 Julien Enselme
#!/bin/sh
587 1 Julien Enselme
588 1 Julien Enselme
. scripts-config.sh
589 21 Florent Torregrosa
590 1 Julien Enselme
# ARGS: auto or manual, site_prefix
591 21 Florent Torregrosa
# WARNING : backup are regularly flushed, put your backup in a safe place.
592 21 Florent Torregrosa
593 21 Florent Torregrosa
cd $dir_individual_backup
594 21 Florent Torregrosa
595 41 Florent Torregrosa
#récupération des tables du site dans le fichier liste_tables.temp
596 41 Florent Torregrosa
tables='_%'
597 41 Florent Torregrosa
liste="$1$tables"
598 41 Florent Torregrosa
599 21 Florent Torregrosa
mysql -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY -BNe "show tables like '"$liste"'" webassos | tr '\r\n' ' ' > liste_tables.temp
600 21 Florent Torregrosa
601 21 Florent Torregrosa
#transformation de cette liste en une variable
602 21 Florent Torregrosa
var=$(cat liste_tables.temp)
603 21 Florent Torregrosa
604 1 Julien Enselme
#sauvegarde de toutes ces tables
605 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
606 21 Florent Torregrosa
suffixe="_dump$current_date.sql"
607 21 Florent Torregrosa
fichier="$1$suffixe"
608 21 Florent Torregrosa
609 1 Julien Enselme
if [ $1 = 'auto' ] ; then
610 21 Florent Torregrosa
    mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_auto_backup/$fichier
611 21 Florent Torregrosa
else
612 1 Julien Enselme
    mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_manual_backup/$fichier
613 21 Florent Torregrosa
fi
614 1 Julien Enselme
615 1 Julien Enselme
#suppression du fichier temporaire utilisé
616 21 Florent Torregrosa
rm liste_tables.temp
617 21 Florent Torregrosa
</code>
618 21 Florent Torregrosa
</pre>
619 21 Florent Torregrosa
620 53 Julien Enselme
h2. Scripts Drupal 7
621 30 Florent Torregrosa
622 53 Julien Enselme
h3. d7-all-drush-logged.sh
623 53 Julien Enselme
624 1 Julien Enselme
<pre>
625 30 Florent Torregrosa
<code class="php">
626 30 Florent Torregrosa
#!/bin/sh
627 30 Florent Torregrosa
628 21 Florent Torregrosa
. scripts-config.sh
629 30 Florent Torregrosa
. scripts-utils.sh
630 30 Florent Torregrosa
631 21 Florent Torregrosa
# ARGS: drush_command
632 21 Florent Torregrosa
633 21 Florent Torregrosa
check_arguments $# 1
634 1 Julien Enselme
635 21 Florent Torregrosa
cd $d7_dir_sites
636 1 Julien Enselme
637 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
638 21 Florent Torregrosa
    cd $dir
639 21 Florent Torregrosa
    current_date=`date "+%Y-%m-%d_%Hh:%Mm"`
640 21 Florent Torregrosa
    echo "======$current_date======" >> $d7_dir_log/$dir.log
641 1 Julien Enselme
    echo "Arguments are: $* " >> $d7_dir_log/$dir.log
642 21 Florent Torregrosa
    drush $* >> $d7_dir_log/$dir.log
643 21 Florent Torregrosa
    #To have the same caracters limit we needed 'end' that have 4 caracters, we used the Croate language for this ! LOL 
644 21 Florent Torregrosa
    echo -e "=============KRAJ=============\n" >> $d7_dir_log/$dir.log
645 21 Florent Torregrosa
    cd -
646 21 Florent Torregrosa
done
647 21 Florent Torregrosa
</code>
648 21 Florent Torregrosa
</pre>
649 41 Florent Torregrosa
650 53 Julien Enselme
h3. d7-all-drush.sh
651 21 Florent Torregrosa
652 21 Florent Torregrosa
<pre>
653 21 Florent Torregrosa
<code class="php">
654 21 Florent Torregrosa
#!/bin/sh
655 21 Florent Torregrosa
656 21 Florent Torregrosa
. scripts-config.sh
657 1 Julien Enselme
. scripts-utils.sh
658 21 Florent Torregrosa
659 21 Florent Torregrosa
# ARGS: drush_command
660 21 Florent Torregrosa
661 1 Julien Enselme
check_arguments $# 1
662 21 Florent Torregrosa
663 21 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
664 21 Florent Torregrosa
    cd $dir
665 21 Florent Torregrosa
    echo $dir
666 21 Florent Torregrosa
    drush $*
667 21 Florent Torregrosa
done
668 21 Florent Torregrosa
</code>
669 21 Florent Torregrosa
</pre>
670 21 Florent Torregrosa
671 53 Julien Enselme
h3. d7-all-dump-full.sh
672 21 Florent Torregrosa
673 45 Florent Torregrosa
<pre>
674 21 Florent Torregrosa
<code class="php">
675 1 Julien Enselme
#!/bin/sh
676 21 Florent Torregrosa
677 21 Florent Torregrosa
. scripts-config.sh
678 21 Florent Torregrosa
679 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
680 21 Florent Torregrosa
681 21 Florent Torregrosa
# Dump D7 databases at once.
682 21 Florent Torregrosa
mysqldump -h $db_server -u $db_user -ppassword --all-databases > $d7_dir_full_backup/myassos/$current_date.d7_full.sql
683 41 Florent Torregrosa
</code>
684 41 Florent Torregrosa
</pre>
685 41 Florent Torregrosa
686 53 Julien Enselme
h3. d7-all-dump-individual.sh
687 21 Florent Torregrosa
688 21 Florent Torregrosa
<pre>
689 41 Florent Torregrosa
<code class="php">
690 41 Florent Torregrosa
#!/bin/sh
691 41 Florent Torregrosa
692 21 Florent Torregrosa
. scripts-config.sh
693 21 Florent Torregrosa
694 21 Florent Torregrosa
# ARGS: auto or manual
695 1 Julien Enselme
696 21 Florent Torregrosa
check_arguments $# 1
697 21 Florent Torregrosa
698 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
699 21 Florent Torregrosa
700 21 Florent Torregrosa
cd $d7_dir_sites
701 21 Florent Torregrosa
702 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | cut -c3-` ; do
703 1 Julien Enselme
    cd $dir
704 21 Florent Torregrosa
    drush cc all
705 21 Florent Torregrosa
    if [ $1 = 'auto' ] ; then
706 21 Florent Torregrosa
        drush sql-dump --result-file="$d7_dir_individual_auto_backup/$dir/$current_date.$dir.sql"
707 21 Florent Torregrosa
    else
708 1 Julien Enselme
        drush sql-dump --result-file="$d7_dir_individual_manual_backup/$dir/$current_date.$dir.sql"
709 21 Florent Torregrosa
    fi
710 21 Florent Torregrosa
    cd -
711 21 Florent Torregrosa
done
712 21 Florent Torregrosa
</code>
713 21 Florent Torregrosa
</pre>
714 21 Florent Torregrosa
715 53 Julien Enselme
h3. d7-all-releases-info.sh
716 21 Florent Torregrosa
717 21 Florent Torregrosa
<pre>
718 21 Florent Torregrosa
<code class="php">
719 21 Florent Torregrosa
#!/bin/sh
720 1 Julien Enselme
721 1 Julien Enselme
. scripts-config.sh
722 1 Julien Enselme
723 1 Julien Enselme
# List version of a module or theme that exists in sites/all/*
724 1 Julien Enselme
# and all versions that are available for same project on drupal.org
725 1 Julien Enselme
726 1 Julien Enselme
# modules
727 1 Julien Enselme
cd $d7_dir_sites/all/modules
728 1 Julien Enselme
for dir in `ls -1` ; do
729 1 Julien Enselme
    if [ -d $dir ] ; then
730 1 Julien Enselme
        drush pm-releases $dir
731 1 Julien Enselme
    fi
732 1 Julien Enselme
done
733 1 Julien Enselme
734 1 Julien Enselme
# themes
735 1 Julien Enselme
cd $d7_dir_sites/all/themes
736 1 Julien Enselme
for dir in `ls -1` ; do
737 1 Julien Enselme
    if [ -d $dir ] ; then
738 1 Julien Enselme
        drush pm-releases $dir
739 1 Julien Enselme
    fi
740 21 Florent Torregrosa
done
741 21 Florent Torregrosa
</code>
742 21 Florent Torregrosa
</pre>
743 41 Florent Torregrosa
744 53 Julien Enselme
h3. d7-all-reset-variables.sh
745 41 Florent Torregrosa
746 1 Julien Enselme
<pre>
747 41 Florent Torregrosa
<code class="php">
748 41 Florent Torregrosa
#!/bin/sh
749 41 Florent Torregrosa
750 41 Florent Torregrosa
. scripts-config.sh
751 41 Florent Torregrosa
752 41 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
753 41 Florent Torregrosa
    cd $dir
754 41 Florent Torregrosa
    echo $dir
755 41 Florent Torregrosa
    d7-reset-variables.sh
756 41 Florent Torregrosa
done
757 41 Florent Torregrosa
</code>
758 1 Julien Enselme
</pre>
759 41 Florent Torregrosa
760 53 Julien Enselme
h3. d7-all-security-review.sh
761 41 Florent Torregrosa
762 41 Florent Torregrosa
<pre>
763 41 Florent Torregrosa
<code class="php">
764 1 Julien Enselme
#!/bin/sh
765 21 Florent Torregrosa
766 21 Florent Torregrosa
. scripts-config.sh
767 21 Florent Torregrosa
768 21 Florent Torregrosa
# grep -v success to keep site_name and error lines.
769 21 Florent Torregrosa
bash -c 'd7-all-drush.sh security-review |& grep -v success | mail -s "Security review" $email_multi_assos'
770 21 Florent Torregrosa
</code>
771 21 Florent Torregrosa
</pre>
772 21 Florent Torregrosa
773 53 Julien Enselme
h3. d7-all-update-contrib.sh
774 21 Florent Torregrosa
775 21 Florent Torregrosa
<pre>
776 21 Florent Torregrosa
<code class="php">
777 21 Florent Torregrosa
#!/bin/sh
778 21 Florent Torregrosa
779 21 Florent Torregrosa
. scripts-config.sh
780 1 Julien Enselme
781 21 Florent Torregrosa
d7-all-drush.sh -y en update
782 21 Florent Torregrosa
# Launch cron to check for updates.
783 21 Florent Torregrosa
d7-all-drush.sh -q cron
784 21 Florent Torregrosa
785 21 Florent Torregrosa
d7-all-dump-individual.sh auto
786 21 Florent Torregrosa
787 1 Julien Enselme
d7-all-drush-logged.sh -y upc --no-core
788 21 Florent Torregrosa
d7-all-drush.sh -y updb
789 21 Florent Torregrosa
790 21 Florent Torregrosa
d7-all-drush.sh -y dis update
791 21 Florent Torregrosa
792 21 Florent Torregrosa
d7-all-drush.sh cron
793 21 Florent Torregrosa
</code>
794 1 Julien Enselme
</pre>
795 21 Florent Torregrosa
796 53 Julien Enselme
h3. d7-all-update-localisation.sh
797 21 Florent Torregrosa
798 21 Florent Torregrosa
<pre>
799 21 Florent Torregrosa
<code class="php">
800 21 Florent Torregrosa
#!/bin/sh
801 21 Florent Torregrosa
802 21 Florent Torregrosa
. scripts-config.sh
803 21 Florent Torregrosa
804 21 Florent Torregrosa
d7-all-drush.sh -y en l10n_update
805 21 Florent Torregrosa
d7-all-drush.sh l10n-update-refresh
806 21 Florent Torregrosa
d7-all-drush.sh l10n-update
807 21 Florent Torregrosa
d7-all-drush.sh -y dis l10n_update
808 21 Florent Torregrosa
</code>
809 21 Florent Torregrosa
</pre>
810 41 Florent Torregrosa
811 53 Julien Enselme
h3. d7-create-site.sh
812 1 Julien Enselme
813 21 Florent Torregrosa
<pre>
814 21 Florent Torregrosa
<code class="php">
815 21 Florent Torregrosa
#!/bin/sh
816 1 Julien Enselme
817 21 Florent Torregrosa
. scripts-config.sh
818 21 Florent Torregrosa
. scripts-config-site.sh $1
819 21 Florent Torregrosa
. scripts-utils.sh
820 21 Florent Torregrosa
821 21 Florent Torregrosa
# ARGS: site name
822 21 Florent Torregrosa
823 21 Florent Torregrosa
######## Exceptions
824 21 Florent Torregrosa
check_arguments $# 1
825 21 Florent Torregrosa
826 21 Florent Torregrosa
# "-" is forbidden because it provokes database error.
827 21 Florent Torregrosa
if [ `echo $1 | grep -` ] ; then
828 21 Florent Torregrosa
    echo '"-" is forbidden in the site name'
829 21 Florent Torregrosa
    exit 1
830 21 Florent Torregrosa
fi
831 21 Florent Torregrosa
832 21 Florent Torregrosa
# Site name length must be lower or equal to 16 due to database limitations.
833 21 Florent Torregrosa
if [`echo $1 | wc -c` -gt 16 ] ; then
834 41 Florent Torregrosa
    echo "site name can't have more than 16 characters"
835 21 Florent Torregrosa
    exit 1
836 21 Florent Torregrosa
fi
837 21 Florent Torregrosa
838 1 Julien Enselme
###### Initialisation
839 21 Florent Torregrosa
cd $d7_dir
840 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
841 21 Florent Torregrosa
site_password=`generate_password`
842 21 Florent Torregrosa
843 21 Florent Torregrosa
# Check if site database already exists.
844 21 Florent Torregrosa
if mysql -h $db_server -u $db_user -e "USE $d7_site_name" -p$db_password 2>/dev/null ; then
845 21 Florent Torregrosa
    echo "Database $d7_site_name already exists"
846 21 Florent Torregrosa
    exit 1
847 21 Florent Torregrosa
fi
848 21 Florent Torregrosa
849 21 Florent Torregrosa
# Check if site folder already exists.
850 21 Florent Torregrosa
if [ -d $d7_site_dir ] ; then
851 21 Florent Torregrosa
    echo "Folder $d7_site_dir already exists"
852 21 Florent Torregrosa
    exit 1
853 21 Florent Torregrosa
fi
854 21 Florent Torregrosa
855 21 Florent Torregrosa
###### Main
856 21 Florent Torregrosa
mkdir $d7_site_dir
857 21 Florent Torregrosa
dir_site_name="assos.centrale-marseille.fr.$d7_site_name"
858 21 Florent Torregrosa
859 21 Florent Torregrosa
# Backup requirements
860 1 Julien Enselme
mkdir $d7_dir_individual_auto_backup/$dir_site_name
861 21 Florent Torregrosa
mkdir $d7_dir_individual_manual_backup/$dir_site_name
862 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
863 21 Florent Torregrosa
864 21 Florent Torregrosa
# NB : ls sort by considering the 1st characters
865 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql
866 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql2
867 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql3
868 1 Julien Enselme
869 21 Florent Torregrosa
# Create and grant privileges on database
870 21 Florent Torregrosa
mysql -h $db_server -u $db_user -e "CREATE DATABASE $d7_site_name" -p$db_password
871 21 Florent Torregrosa
mysql -h $db_server -u $db_user -e "GRANT ALL PRIVILEGES ON $d7_site_name.* TO '$d7_site_name'@'%' IDENTIFIED BY '$site_password'" -p$db_password
872 21 Florent Torregrosa
873 21 Florent Torregrosa
# Create settings.php
874 21 Florent Torregrosa
sed "s/\%\%DBUSER\%\%/$d7_site_name/ ; s/\%\%DBNAME\%\%/$d7_site_name/ ; s/\%\%DBPASS\%\%/$site_password/ ; s/\%\%nomsite\%\%/$d7_site_name/" < $d7_settings_template > $d7_site_settings
875 21 Florent Torregrosa
876 21 Florent Torregrosa
# Create symbolic link
877 21 Florent Torregrosa
cd $d7_dir
878 21 Florent Torregrosa
ln -s . $d7_site_name
879 21 Florent Torregrosa
880 21 Florent Torregrosa
# Next Instructions
881 21 Florent Torregrosa
echo "Go to http://assos.centrale-marseille.fr/$d7_site_name/install.php to continue."
882 21 Florent Torregrosa
echo "Press enter when ready to go on."
883 1 Julien Enselme
read key
884 41 Florent Torregrosa
885 21 Florent Torregrosa
# Init variables
886 21 Florent Torregrosa
d7-reset-variables.sh $d7_site_name
887 21 Florent Torregrosa
888 21 Florent Torregrosa
# Permissions
889 21 Florent Torregrosa
chmod -R 755 $d7_site_dir
890 21 Florent Torregrosa
chmod 400 $d7_site_settings
891 21 Florent Torregrosa
892 21 Florent Torregrosa
# Last instructions
893 21 Florent Torregrosa
echo "Last instructions:"
894 21 Florent Torregrosa
echo "- Advice the webmaster to close account creation on the website"
895 21 Florent Torregrosa
echo "- Give the webmaster a link to the club Drupal's tutorials "
896 21 Florent Torregrosa
echo "- Create a node of type \"Site\" on default"
897 21 Florent Torregrosa
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
898 21 Florent Torregrosa
</code>
899 21 Florent Torregrosa
</pre>
900 21 Florent Torregrosa
901 53 Julien Enselme
h3. d7-delete-site.sh
902 21 Florent Torregrosa
903 21 Florent Torregrosa
<pre>
904 21 Florent Torregrosa
<code class="php">
905 21 Florent Torregrosa
#!/bin/sh
906 21 Florent Torregrosa
907 21 Florent Torregrosa
. scripts-config.sh
908 21 Florent Torregrosa
. scripts-config-site.sh $1
909 21 Florent Torregrosa
. scripts-utils.sh
910 21 Florent Torregrosa
911 21 Florent Torregrosa
# ARGS: site name.
912 21 Florent Torregrosa
913 21 Florent Torregrosa
check_arguments $# 1
914 21 Florent Torregrosa
915 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
916 21 Florent Torregrosa
917 21 Florent Torregrosa
# Delete database.
918 21 Florent Torregrosa
mysql -h $db_server -u $db_user -p$db_password -e "DROP DATABASE $d7_site_name"
919 21 Florent Torregrosa
920 21 Florent Torregrosa
# Delete MYSQL user.
921 1 Julien Enselme
mysql -h $db_server -u $db_user -p$db_password -e "DROP USER '$d7_site_name'@'%'"
922 21 Florent Torregrosa
923 21 Florent Torregrosa
# Delete site's folder.
924 21 Florent Torregrosa
chmod -R 700 $d7_site_dir
925 21 Florent Torregrosa
rm -r $d7_site_dir
926 21 Florent Torregrosa
927 1 Julien Enselme
# Delete symbolic link.
928 21 Florent Torregrosa
rm $d7_dir/$d7_site_name
929 21 Florent Torregrosa
930 21 Florent Torregrosa
# Delete database backups.
931 1 Julien Enselme
rm -r $d7_dir_individual_auto_backup/assos.centrale-marseille.fr.$d7_site_name
932 1 Julien Enselme
rm -r $d7_dir_individual_manual_backup/assos.centrale-marseille.fr.$d7_site_name
933 21 Florent Torregrosa
934 21 Florent Torregrosa
echo "Don't forget to:"
935 21 Florent Torregrosa
echo "- Refresh node site on default"
936 21 Florent Torregrosa
echo "- Check particular behavior (normally detailed on site node)"
937 21 Florent Torregrosa
</code>
938 21 Florent Torregrosa
</pre>
939 21 Florent Torregrosa
940 53 Julien Enselme
h3. d7-reset-variables.sh
941 1 Julien Enselme
942 21 Florent Torregrosa
<pre>
943 21 Florent Torregrosa
<code class="php">
944 21 Florent Torregrosa
#!/bin/sh
945 21 Florent Torregrosa
946 21 Florent Torregrosa
. scripts-config.sh
947 21 Florent Torregrosa
948 21 Florent Torregrosa
# ARGS: [site_name]
949 21 Florent Torregrosa
950 21 Florent Torregrosa
if [ ! -z $1 ] ; then
951 21 Florent Torregrosa
    . scripts-config-site.sh $1
952 21 Florent Torregrosa
    cd $d7_site_dir
953 21 Florent Torregrosa
fi
954 1 Julien Enselme
955 41 Florent Torregrosa
current_timestamp=`date "+%s"`
956 21 Florent Torregrosa
957 41 Florent Torregrosa
random_1=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
958 41 Florent Torregrosa
random_2=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
959 21 Florent Torregrosa
960 21 Florent Torregrosa
####### General variables
961 21 Florent Torregrosa
drush -y vset --always-set reverse_proxy TRUE
962 21 Florent Torregrosa
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
963 21 Florent Torregrosa
drush -y ev "variable_set('update_notify_emails', array('@email_multi_assos'));"
964 21 Florent Torregrosa
drush -y vset error_level 0
965 21 Florent Torregrosa
drush -y vset dblog_row_limit 1000
966 21 Florent Torregrosa
967 1 Julien Enselme
###### Hidden captcha
968 41 Florent Torregrosa
drush -y en hidden_captcha
969 21 Florent Torregrosa
# Log wrong answers.
970 21 Florent Torregrosa
drush -y vset captcha_log_wrong_responses 1
971 21 Florent Torregrosa
# Use hidden captcha for all forms.
972 21 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {captcha_points} SET module = 'hidden_captcha', captcha_type = 'Hidden CAPTCHA' WHERE module is NULL;"
973 21 Florent Torregrosa
# Flush captcha cache.
974 21 Florent Torregrosa
drush -y vdel captcha_placement_map_cache
975 21 Florent Torregrosa
# Randomely generate a math question as the label of the hidden captcha field.
976 21 Florent Torregrosa
drush -y vset hidden_captcha_label "$random_1 + $random_2"
977 21 Florent Torregrosa
978 21 Florent Torregrosa
979 21 Florent Torregrosa
####### Piwik
980 21 Florent Torregrosa
drush -y en piwik
981 21 Florent Torregrosa
drush -y vset piwik_site_id "101"
982 41 Florent Torregrosa
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/"
983 21 Florent Torregrosa
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/"
984 21 Florent Torregrosa
# Piwik cache.
985 21 Florent Torregrosa
drush -y vset piwik_cache 1
986 21 Florent Torregrosa
drush -y vset piwik_visibility_roles "1"
987 21 Florent Torregrosa
# Piwik is enable for everyone except the administrator
988 21 Florent Torregrosa
drush -y vset --format=json piwik_roles '[3]'
989 21 Florent Torregrosa
drush -y vset piwik_page_title_hierarchy 1
990 21 Florent Torregrosa
# Activate local search.
991 21 Florent Torregrosa
drush -y vset piwik_site_search 1
992 21 Florent Torregrosa
993 21 Florent Torregrosa
994 21 Florent Torregrosa
###### Security review
995 21 Florent Torregrosa
# For untrusted roles:
996 41 Florent Torregrosa
# 1: anonymous user
997 21 Florent Torregrosa
# 2: authenticated user
998 21 Florent Torregrosa
# 3: administrator
999 21 Florent Torregrosa
drush -y en security_review
1000 11 Julien Enselme
drush -y ev "variable_set('security_review_untrusted_roles', array('1'));"
1001 54 Florent Torregrosa
# Used to initialise entries in the database schema.
1002 54 Florent Torregrosa
drush security-review --store
1003 54 Florent Torregrosa
# Security review can't check for files permissions on multi_assos if launched within the web interface.
1004 54 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '1', skiptime = $current_timestamp, skipuid = '1' WHERE reviewcheck IN ('file_perms');"
1005 54 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '0', skiptime = '0', skipuid = NULL WHERE reviewcheck NOT IN ('file_perms');"
1006 1 Julien Enselme
</code>
1007 1 Julien Enselme
</pre>