Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 61

Julien Enselme, 05/08/2013 18:45
flush-individual-databases-backups.sh : code after validation

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 60 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 60 Julien Enselme
check_arguments $# 1
436 53 Julien Enselme
437 53 Julien Enselme
backups_number=`ls | wc -l`
438 60 Julien Enselme
let "number_of_backups_to_delete = backups_number - $1" > /dev/null
439 53 Julien Enselme
440 1 Julien Enselme
if [ $number_of_backups_to_delete -gt 0 ] ; then
441 1 Julien Enselme
    ls | head -$number_of_backups_to_delete | xargs rm
442 53 Julien Enselme
else
443 60 Julien Enselme
    if [ ! -z $2 ] ; then
444 60 Julien Enselme
        dir=`pwd`
445 60 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
446 60 Julien Enselme
    fi
447 53 Julien Enselme
fi
448 53 Julien Enselme
</code>
449 53 Julien Enselme
</pre>
450 53 Julien Enselme
451 53 Julien Enselme
h3. flush-full-databases-backups.sh
452 53 Julien Enselme
453 53 Julien Enselme
<pre>
454 53 Julien Enselme
<code class="php">
455 53 Julien Enselme
#!/bin/sh
456 53 Julien Enselme
457 53 Julien Enselme
. scripts-config.sh
458 53 Julien Enselme
459 53 Julien Enselme
# ARGS: Drupal version
460 53 Julien Enselme
461 53 Julien Enselme
cd $dir_full_backup/$1
462 53 Julien Enselme
463 53 Julien Enselme
for dir in `ls` ; do
464 53 Julien Enselme
    cd $dir
465 53 Julien Enselme
    flush-files.sh $db_full_backup_number $email_multi_assos
466 53 Julien Enselme
    cd -
467 53 Julien Enselme
done
468 53 Julien Enselme
</code>
469 53 Julien Enselme
</pre>
470 53 Julien Enselme
471 53 Julien Enselme
h3. flush-individual-databases-backups.sh
472 53 Julien Enselme
473 53 Julien Enselme
<pre>
474 53 Julien Enselme
<code class="php">
475 53 Julien Enselme
#!/bin/sh
476 53 Julien Enselme
477 53 Julien Enselme
. scripts-config.sh
478 53 Julien Enselme
479 53 Julien Enselme
# ARGS: manual or auto, Drupal version
480 53 Julien Enselme
481 53 Julien Enselme
cd $dir_individual_backup/$1/$2
482 53 Julien Enselme
483 53 Julien Enselme
for dir in `ls` ; do
484 53 Julien Enselme
    cd $dir
485 53 Julien Enselme
    if [ $1 = 'auto' ] ; then
486 53 Julien Enselme
        flush-files.sh $db_individual_auto_backup_number $email_multi_assos
487 53 Julien Enselme
    else
488 61 Julien Enselme
        flush-files.sh $db_individual_manual_backup_number
489 53 Julien Enselme
    fi
490 53 Julien Enselme
    cd -
491 53 Julien Enselme
done
492 53 Julien Enselme
</code>
493 53 Julien Enselme
</pre>
494 53 Julien Enselme
495 53 Julien Enselme
h2. Scripts Drupal 6
496 53 Julien Enselme
497 53 Julien Enselme
h3. d6-all-drush.sh
498 53 Julien Enselme
499 53 Julien Enselme
<pre>
500 53 Julien Enselme
<code class="php">
501 53 Julien Enselme
#!/bin/sh
502 53 Julien Enselme
503 53 Julien Enselme
. scripts-config.sh
504 21 Florent Torregrosa
. scripts-utils.sh
505 21 Florent Torregrosa
506 21 Florent Torregrosa
# ARGS: drush_command
507 21 Florent Torregrosa
508 21 Florent Torregrosa
check_arguments $# 1
509 21 Florent Torregrosa
510 21 Florent Torregrosa
for dir in `find $d6_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all ! -name languages ! -name images | sort` ; do
511 21 Florent Torregrosa
    cd $dir
512 21 Florent Torregrosa
    echo $dir
513 21 Florent Torregrosa
    drush $*
514 1 Julien Enselme
done
515 21 Florent Torregrosa
</code>
516 45 Florent Torregrosa
</pre>
517 21 Florent Torregrosa
518 53 Julien Enselme
h3. d6-all-dump-full.sh
519 45 Florent Torregrosa
520 37 Florent Torregrosa
<pre>
521 37 Florent Torregrosa
<code class="php">
522 37 Florent Torregrosa
#!/bin/sh
523 37 Florent Torregrosa
524 37 Florent Torregrosa
. scripts-config.sh
525 37 Florent Torregrosa
526 37 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
527 37 Florent Torregrosa
528 37 Florent Torregrosa
# Dump D6 database with webassos user.
529 37 Florent Torregrosa
mysqldump --single-transaction webassos -h myweb.serv.int -u webassos --password=password > $d6_dir_full_backup/webassos/$current_date.webassos.sql
530 41 Florent Torregrosa
531 1 Julien Enselme
# Dump D6 form database with forum user.
532 37 Florent Torregrosa
mysqldump forum -h myweb.serv.int -u forum --password=password > $d6_dir_full_backup/forum/$current_date.forum.sql
533 37 Florent Torregrosa
</code>
534 39 Florent Torregrosa
</pre>
535 1 Julien Enselme
536 53 Julien Enselme
h3. d6-all-reset-variables.sh
537 21 Florent Torregrosa
538 21 Florent Torregrosa
<pre>
539 21 Florent Torregrosa
<code class="php">
540 21 Florent Torregrosa
#!/bin/sh
541 21 Florent Torregrosa
542 21 Florent Torregrosa
. scripts-config.sh
543 21 Florent Torregrosa
544 21 Florent Torregrosa
cd $d6_dir_sites
545 1 Julien Enselme
d6-all-drush.sh vset --always-set reverse_proxy TRUE
546 21 Florent Torregrosa
d6-all-drush.sh vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
547 21 Florent Torregrosa
drush @sites -y ev "variable_set('update_notify_emails', array('@email_multi_assos'));"
548 21 Florent Torregrosa
</code>
549 21 Florent Torregrosa
</pre>
550 21 Florent Torregrosa
551 53 Julien Enselme
h3. d6-all-update-contrib.sh
552 21 Florent Torregrosa
553 21 Florent Torregrosa
<pre>
554 21 Florent Torregrosa
<code class="php">
555 21 Florent Torregrosa
#!/bin/sh
556 21 Florent Torregrosa
557 21 Florent Torregrosa
. scripts-config.sh
558 21 Florent Torregrosa
559 21 Florent Torregrosa
d6-all-drush.sh -y en update
560 1 Julien Enselme
# Launch cron to check for updates.
561 21 Florent Torregrosa
d6-all-drush.sh -q cron
562 21 Florent Torregrosa
563 21 Florent Torregrosa
d6-all-drush.sh cc all
564 21 Florent Torregrosa
d6-all-dump-full.sh
565 21 Florent Torregrosa
566 21 Florent Torregrosa
d6-all-drush.sh -y upc --no-core
567 1 Julien Enselme
d6-all-drush.sh -y updb
568 1 Julien Enselme
569 1 Julien Enselme
d6-all-drush.sh -y dis update
570 1 Julien Enselme
571 1 Julien Enselme
d6-all-drush.sh cron
572 1 Julien Enselme
</code>
573 1 Julien Enselme
</pre>
574 41 Florent Torregrosa
575 53 Julien Enselme
h3. d6-dump-individual.sh
576 41 Florent Torregrosa
577 41 Florent Torregrosa
<pre>
578 41 Florent Torregrosa
<code class="php">
579 41 Florent Torregrosa
#!/bin/sh
580 41 Florent Torregrosa
581 41 Florent Torregrosa
. scripts-config.sh
582 21 Florent Torregrosa
583 21 Florent Torregrosa
# ARGS: auto or manual, site_prefix
584 21 Florent Torregrosa
# WARNING : backup are regularly flushed, put your backup in a safe place.
585 21 Florent Torregrosa
586 21 Florent Torregrosa
cd $dir_individual_backup
587 1 Julien Enselme
588 1 Julien Enselme
#!/bin/sh
589 1 Julien Enselme
590 1 Julien Enselme
. scripts-config.sh
591 21 Florent Torregrosa
592 1 Julien Enselme
# ARGS: auto or manual, site_prefix
593 21 Florent Torregrosa
# WARNING : backup are regularly flushed, put your backup in a safe place.
594 21 Florent Torregrosa
595 21 Florent Torregrosa
cd $dir_individual_backup
596 21 Florent Torregrosa
597 41 Florent Torregrosa
#récupération des tables du site dans le fichier liste_tables.temp
598 41 Florent Torregrosa
tables='_%'
599 41 Florent Torregrosa
liste="$1$tables"
600 41 Florent Torregrosa
601 21 Florent Torregrosa
mysql -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY -BNe "show tables like '"$liste"'" webassos | tr '\r\n' ' ' > liste_tables.temp
602 21 Florent Torregrosa
603 21 Florent Torregrosa
#transformation de cette liste en une variable
604 21 Florent Torregrosa
var=$(cat liste_tables.temp)
605 21 Florent Torregrosa
606 1 Julien Enselme
#sauvegarde de toutes ces tables
607 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
608 21 Florent Torregrosa
suffixe="_dump$current_date.sql"
609 21 Florent Torregrosa
fichier="$1$suffixe"
610 21 Florent Torregrosa
611 1 Julien Enselme
if [ $1 = 'auto' ] ; then
612 21 Florent Torregrosa
    mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_auto_backup/$fichier
613 21 Florent Torregrosa
else
614 1 Julien Enselme
    mysqldump webassos -h myweb.serv.int -u webassos --password=HBVH2ljgyZCA0AP251DY $var > $d6_dir_individual_manual_backup/$fichier
615 21 Florent Torregrosa
fi
616 1 Julien Enselme
617 1 Julien Enselme
#suppression du fichier temporaire utilisé
618 21 Florent Torregrosa
rm liste_tables.temp
619 21 Florent Torregrosa
</code>
620 21 Florent Torregrosa
</pre>
621 21 Florent Torregrosa
622 53 Julien Enselme
h2. Scripts Drupal 7
623 30 Florent Torregrosa
624 53 Julien Enselme
h3. d7-all-drush-logged.sh
625 53 Julien Enselme
626 1 Julien Enselme
<pre>
627 30 Florent Torregrosa
<code class="php">
628 30 Florent Torregrosa
#!/bin/sh
629 30 Florent Torregrosa
630 21 Florent Torregrosa
. scripts-config.sh
631 30 Florent Torregrosa
. scripts-utils.sh
632 30 Florent Torregrosa
633 21 Florent Torregrosa
# ARGS: drush_command
634 21 Florent Torregrosa
635 21 Florent Torregrosa
check_arguments $# 1
636 1 Julien Enselme
637 21 Florent Torregrosa
cd $d7_dir_sites
638 1 Julien Enselme
639 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
640 21 Florent Torregrosa
    cd $dir
641 21 Florent Torregrosa
    current_date=`date "+%Y-%m-%d_%Hh:%Mm"`
642 21 Florent Torregrosa
    echo "======$current_date======" >> $d7_dir_log/$dir.log
643 1 Julien Enselme
    echo "Arguments are: $* " >> $d7_dir_log/$dir.log
644 21 Florent Torregrosa
    drush $* >> $d7_dir_log/$dir.log
645 21 Florent Torregrosa
    #To have the same caracters limit we needed 'end' that have 4 caracters, we used the Croate language for this ! LOL 
646 21 Florent Torregrosa
    echo -e "=============KRAJ=============\n" >> $d7_dir_log/$dir.log
647 21 Florent Torregrosa
    cd -
648 21 Florent Torregrosa
done
649 21 Florent Torregrosa
</code>
650 21 Florent Torregrosa
</pre>
651 41 Florent Torregrosa
652 53 Julien Enselme
h3. d7-all-drush.sh
653 21 Florent Torregrosa
654 21 Florent Torregrosa
<pre>
655 21 Florent Torregrosa
<code class="php">
656 21 Florent Torregrosa
#!/bin/sh
657 21 Florent Torregrosa
658 21 Florent Torregrosa
. scripts-config.sh
659 1 Julien Enselme
. scripts-utils.sh
660 21 Florent Torregrosa
661 21 Florent Torregrosa
# ARGS: drush_command
662 21 Florent Torregrosa
663 1 Julien Enselme
check_arguments $# 1
664 21 Florent Torregrosa
665 21 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
666 21 Florent Torregrosa
    cd $dir
667 21 Florent Torregrosa
    echo $dir
668 21 Florent Torregrosa
    drush $*
669 21 Florent Torregrosa
done
670 21 Florent Torregrosa
</code>
671 21 Florent Torregrosa
</pre>
672 21 Florent Torregrosa
673 53 Julien Enselme
h3. d7-all-dump-full.sh
674 21 Florent Torregrosa
675 45 Florent Torregrosa
<pre>
676 21 Florent Torregrosa
<code class="php">
677 1 Julien Enselme
#!/bin/sh
678 21 Florent Torregrosa
679 21 Florent Torregrosa
. scripts-config.sh
680 21 Florent Torregrosa
681 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
682 21 Florent Torregrosa
683 21 Florent Torregrosa
# Dump D7 databases at once.
684 21 Florent Torregrosa
mysqldump -h $db_server -u $db_user -ppassword --all-databases > $d7_dir_full_backup/myassos/$current_date.d7_full.sql
685 41 Florent Torregrosa
</code>
686 41 Florent Torregrosa
</pre>
687 41 Florent Torregrosa
688 53 Julien Enselme
h3. d7-all-dump-individual.sh
689 21 Florent Torregrosa
690 21 Florent Torregrosa
<pre>
691 41 Florent Torregrosa
<code class="php">
692 41 Florent Torregrosa
#!/bin/sh
693 41 Florent Torregrosa
694 21 Florent Torregrosa
. scripts-config.sh
695 21 Florent Torregrosa
696 21 Florent Torregrosa
# ARGS: auto or manual
697 1 Julien Enselme
698 21 Florent Torregrosa
check_arguments $# 1
699 21 Florent Torregrosa
700 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
701 21 Florent Torregrosa
702 21 Florent Torregrosa
cd $d7_dir_sites
703 21 Florent Torregrosa
704 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | cut -c3-` ; do
705 1 Julien Enselme
    cd $dir
706 21 Florent Torregrosa
    drush cc all
707 21 Florent Torregrosa
    if [ $1 = 'auto' ] ; then
708 21 Florent Torregrosa
        drush sql-dump --result-file="$d7_dir_individual_auto_backup/$dir/$current_date.$dir.sql"
709 21 Florent Torregrosa
    else
710 1 Julien Enselme
        drush sql-dump --result-file="$d7_dir_individual_manual_backup/$dir/$current_date.$dir.sql"
711 21 Florent Torregrosa
    fi
712 21 Florent Torregrosa
    cd -
713 21 Florent Torregrosa
done
714 21 Florent Torregrosa
</code>
715 21 Florent Torregrosa
</pre>
716 21 Florent Torregrosa
717 53 Julien Enselme
h3. d7-all-releases-info.sh
718 21 Florent Torregrosa
719 21 Florent Torregrosa
<pre>
720 21 Florent Torregrosa
<code class="php">
721 21 Florent Torregrosa
#!/bin/sh
722 1 Julien Enselme
723 1 Julien Enselme
. scripts-config.sh
724 1 Julien Enselme
725 1 Julien Enselme
# List version of a module or theme that exists in sites/all/*
726 1 Julien Enselme
# and all versions that are available for same project on drupal.org
727 1 Julien Enselme
728 1 Julien Enselme
# modules
729 1 Julien Enselme
cd $d7_dir_sites/all/modules
730 1 Julien Enselme
for dir in `ls -1` ; do
731 1 Julien Enselme
    if [ -d $dir ] ; then
732 1 Julien Enselme
        drush pm-releases $dir
733 1 Julien Enselme
    fi
734 1 Julien Enselme
done
735 1 Julien Enselme
736 1 Julien Enselme
# themes
737 1 Julien Enselme
cd $d7_dir_sites/all/themes
738 1 Julien Enselme
for dir in `ls -1` ; do
739 1 Julien Enselme
    if [ -d $dir ] ; then
740 1 Julien Enselme
        drush pm-releases $dir
741 1 Julien Enselme
    fi
742 21 Florent Torregrosa
done
743 21 Florent Torregrosa
</code>
744 21 Florent Torregrosa
</pre>
745 41 Florent Torregrosa
746 53 Julien Enselme
h3. d7-all-reset-variables.sh
747 41 Florent Torregrosa
748 1 Julien Enselme
<pre>
749 41 Florent Torregrosa
<code class="php">
750 41 Florent Torregrosa
#!/bin/sh
751 41 Florent Torregrosa
752 41 Florent Torregrosa
. scripts-config.sh
753 41 Florent Torregrosa
754 41 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
755 41 Florent Torregrosa
    cd $dir
756 41 Florent Torregrosa
    echo $dir
757 41 Florent Torregrosa
    d7-reset-variables.sh
758 41 Florent Torregrosa
done
759 41 Florent Torregrosa
</code>
760 1 Julien Enselme
</pre>
761 41 Florent Torregrosa
762 53 Julien Enselme
h3. d7-all-security-review.sh
763 41 Florent Torregrosa
764 41 Florent Torregrosa
<pre>
765 41 Florent Torregrosa
<code class="php">
766 1 Julien Enselme
#!/bin/sh
767 21 Florent Torregrosa
768 21 Florent Torregrosa
. scripts-config.sh
769 21 Florent Torregrosa
770 21 Florent Torregrosa
# grep -v success to keep site_name and error lines.
771 59 Florent Torregrosa
bash -c "d7-all-drush.sh security-review --store |& grep -v success | mail -s d7-all-security-review.sh $email_multi_assos"
772 21 Florent Torregrosa
</code>
773 21 Florent Torregrosa
</pre>
774 21 Florent Torregrosa
775 53 Julien Enselme
h3. d7-all-update-contrib.sh
776 21 Florent Torregrosa
777 21 Florent Torregrosa
<pre>
778 21 Florent Torregrosa
<code class="php">
779 21 Florent Torregrosa
#!/bin/sh
780 21 Florent Torregrosa
781 21 Florent Torregrosa
. scripts-config.sh
782 1 Julien Enselme
783 21 Florent Torregrosa
d7-all-drush.sh -y en update
784 21 Florent Torregrosa
# Launch cron to check for updates.
785 21 Florent Torregrosa
d7-all-drush.sh -q cron
786 21 Florent Torregrosa
787 21 Florent Torregrosa
d7-all-dump-individual.sh auto
788 21 Florent Torregrosa
789 1 Julien Enselme
d7-all-drush-logged.sh -y upc --no-core
790 21 Florent Torregrosa
d7-all-drush.sh -y updb
791 21 Florent Torregrosa
792 21 Florent Torregrosa
d7-all-drush.sh -y dis update
793 21 Florent Torregrosa
794 21 Florent Torregrosa
d7-all-drush.sh cron
795 21 Florent Torregrosa
</code>
796 1 Julien Enselme
</pre>
797 21 Florent Torregrosa
798 53 Julien Enselme
h3. d7-all-update-localisation.sh
799 21 Florent Torregrosa
800 21 Florent Torregrosa
<pre>
801 21 Florent Torregrosa
<code class="php">
802 21 Florent Torregrosa
#!/bin/sh
803 21 Florent Torregrosa
804 21 Florent Torregrosa
. scripts-config.sh
805 21 Florent Torregrosa
806 21 Florent Torregrosa
d7-all-drush.sh -y en l10n_update
807 21 Florent Torregrosa
d7-all-drush.sh l10n-update-refresh
808 21 Florent Torregrosa
d7-all-drush.sh l10n-update
809 21 Florent Torregrosa
d7-all-drush.sh -y dis l10n_update
810 21 Florent Torregrosa
</code>
811 21 Florent Torregrosa
</pre>
812 41 Florent Torregrosa
813 53 Julien Enselme
h3. d7-create-site.sh
814 1 Julien Enselme
815 21 Florent Torregrosa
<pre>
816 21 Florent Torregrosa
<code class="php">
817 21 Florent Torregrosa
#!/bin/sh
818 1 Julien Enselme
819 21 Florent Torregrosa
. scripts-config.sh
820 21 Florent Torregrosa
. scripts-config-site.sh $1
821 21 Florent Torregrosa
. scripts-utils.sh
822 21 Florent Torregrosa
823 21 Florent Torregrosa
# ARGS: site name
824 21 Florent Torregrosa
825 21 Florent Torregrosa
######## Exceptions
826 21 Florent Torregrosa
check_arguments $# 1
827 21 Florent Torregrosa
828 21 Florent Torregrosa
# "-" is forbidden because it provokes database error.
829 21 Florent Torregrosa
if [ `echo $1 | grep -` ] ; then
830 21 Florent Torregrosa
    echo '"-" is forbidden in the site name'
831 21 Florent Torregrosa
    exit 1
832 21 Florent Torregrosa
fi
833 21 Florent Torregrosa
834 21 Florent Torregrosa
# Site name length must be lower or equal to 16 due to database limitations.
835 21 Florent Torregrosa
if [`echo $1 | wc -c` -gt 16 ] ; then
836 41 Florent Torregrosa
    echo "site name can't have more than 16 characters"
837 21 Florent Torregrosa
    exit 1
838 21 Florent Torregrosa
fi
839 21 Florent Torregrosa
840 1 Julien Enselme
###### Initialisation
841 21 Florent Torregrosa
cd $d7_dir
842 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
843 21 Florent Torregrosa
site_password=`generate_password`
844 21 Florent Torregrosa
845 21 Florent Torregrosa
# Check if site database already exists.
846 21 Florent Torregrosa
if mysql -h $db_server -u $db_user -e "USE $d7_site_name" -p$db_password 2>/dev/null ; then
847 21 Florent Torregrosa
    echo "Database $d7_site_name already exists"
848 21 Florent Torregrosa
    exit 1
849 21 Florent Torregrosa
fi
850 21 Florent Torregrosa
851 21 Florent Torregrosa
# Check if site folder already exists.
852 21 Florent Torregrosa
if [ -d $d7_site_dir ] ; then
853 21 Florent Torregrosa
    echo "Folder $d7_site_dir already exists"
854 21 Florent Torregrosa
    exit 1
855 21 Florent Torregrosa
fi
856 21 Florent Torregrosa
857 21 Florent Torregrosa
###### Main
858 21 Florent Torregrosa
mkdir $d7_site_dir
859 21 Florent Torregrosa
dir_site_name="assos.centrale-marseille.fr.$d7_site_name"
860 21 Florent Torregrosa
861 21 Florent Torregrosa
# Backup requirements
862 1 Julien Enselme
mkdir $d7_dir_individual_auto_backup/$dir_site_name
863 21 Florent Torregrosa
mkdir $d7_dir_individual_manual_backup/$dir_site_name
864 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
865 21 Florent Torregrosa
866 21 Florent Torregrosa
# NB : ls sort by considering the 1st characters
867 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql
868 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql2
869 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql3
870 1 Julien Enselme
871 21 Florent Torregrosa
# Create and grant privileges on database
872 21 Florent Torregrosa
mysql -h $db_server -u $db_user -e "CREATE DATABASE $d7_site_name" -p$db_password
873 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
874 21 Florent Torregrosa
875 21 Florent Torregrosa
# Create settings.php
876 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
877 21 Florent Torregrosa
878 21 Florent Torregrosa
# Create symbolic link
879 21 Florent Torregrosa
cd $d7_dir
880 21 Florent Torregrosa
ln -s . $d7_site_name
881 21 Florent Torregrosa
882 21 Florent Torregrosa
# Next Instructions
883 21 Florent Torregrosa
echo "Go to http://assos.centrale-marseille.fr/$d7_site_name/install.php to continue."
884 21 Florent Torregrosa
echo "Press enter when ready to go on."
885 1 Julien Enselme
read key
886 41 Florent Torregrosa
887 21 Florent Torregrosa
# Init variables
888 21 Florent Torregrosa
d7-reset-variables.sh $d7_site_name
889 21 Florent Torregrosa
890 21 Florent Torregrosa
# Permissions
891 21 Florent Torregrosa
chmod -R 755 $d7_site_dir
892 21 Florent Torregrosa
chmod 400 $d7_site_settings
893 21 Florent Torregrosa
894 21 Florent Torregrosa
# Last instructions
895 21 Florent Torregrosa
echo "Last instructions:"
896 21 Florent Torregrosa
echo "- Advice the webmaster to close account creation on the website"
897 21 Florent Torregrosa
echo "- Give the webmaster a link to the club Drupal's tutorials "
898 21 Florent Torregrosa
echo "- Create a node of type \"Site\" on default"
899 21 Florent Torregrosa
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
900 21 Florent Torregrosa
</code>
901 21 Florent Torregrosa
</pre>
902 21 Florent Torregrosa
903 53 Julien Enselme
h3. d7-delete-site.sh
904 21 Florent Torregrosa
905 21 Florent Torregrosa
<pre>
906 21 Florent Torregrosa
<code class="php">
907 21 Florent Torregrosa
#!/bin/sh
908 21 Florent Torregrosa
909 21 Florent Torregrosa
. scripts-config.sh
910 21 Florent Torregrosa
. scripts-config-site.sh $1
911 21 Florent Torregrosa
. scripts-utils.sh
912 21 Florent Torregrosa
913 21 Florent Torregrosa
# ARGS: site name.
914 21 Florent Torregrosa
915 21 Florent Torregrosa
check_arguments $# 1
916 21 Florent Torregrosa
917 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
918 21 Florent Torregrosa
919 21 Florent Torregrosa
# Delete database.
920 21 Florent Torregrosa
mysql -h $db_server -u $db_user -p$db_password -e "DROP DATABASE $d7_site_name"
921 21 Florent Torregrosa
922 21 Florent Torregrosa
# Delete MYSQL user.
923 1 Julien Enselme
mysql -h $db_server -u $db_user -p$db_password -e "DROP USER '$d7_site_name'@'%'"
924 21 Florent Torregrosa
925 21 Florent Torregrosa
# Delete site's folder.
926 21 Florent Torregrosa
chmod -R 700 $d7_site_dir
927 21 Florent Torregrosa
rm -r $d7_site_dir
928 21 Florent Torregrosa
929 1 Julien Enselme
# Delete symbolic link.
930 21 Florent Torregrosa
rm $d7_dir/$d7_site_name
931 21 Florent Torregrosa
932 21 Florent Torregrosa
# Delete database backups.
933 1 Julien Enselme
rm -r $d7_dir_individual_auto_backup/assos.centrale-marseille.fr.$d7_site_name
934 1 Julien Enselme
rm -r $d7_dir_individual_manual_backup/assos.centrale-marseille.fr.$d7_site_name
935 21 Florent Torregrosa
936 21 Florent Torregrosa
echo "Don't forget to:"
937 21 Florent Torregrosa
echo "- Refresh node site on default"
938 21 Florent Torregrosa
echo "- Check particular behavior (normally detailed on site node)"
939 21 Florent Torregrosa
</code>
940 21 Florent Torregrosa
</pre>
941 21 Florent Torregrosa
942 53 Julien Enselme
h3. d7-reset-variables.sh
943 1 Julien Enselme
944 21 Florent Torregrosa
<pre>
945 21 Florent Torregrosa
<code class="php">
946 21 Florent Torregrosa
#!/bin/sh
947 21 Florent Torregrosa
948 21 Florent Torregrosa
. scripts-config.sh
949 21 Florent Torregrosa
950 21 Florent Torregrosa
# ARGS: [site_name]
951 21 Florent Torregrosa
952 21 Florent Torregrosa
if [ ! -z $1 ] ; then
953 21 Florent Torregrosa
    . scripts-config-site.sh $1
954 21 Florent Torregrosa
    cd $d7_site_dir
955 21 Florent Torregrosa
fi
956 1 Julien Enselme
957 41 Florent Torregrosa
current_timestamp=`date "+%s"`
958 21 Florent Torregrosa
959 41 Florent Torregrosa
random_1=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
960 41 Florent Torregrosa
random_2=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
961 21 Florent Torregrosa
962 21 Florent Torregrosa
####### General variables
963 21 Florent Torregrosa
drush -y vset --always-set reverse_proxy TRUE
964 21 Florent Torregrosa
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
965 21 Florent Torregrosa
drush -y ev "variable_set('update_notify_emails', array('@email_multi_assos'));"
966 21 Florent Torregrosa
drush -y vset error_level 0
967 21 Florent Torregrosa
drush -y vset dblog_row_limit 1000
968 21 Florent Torregrosa
969 1 Julien Enselme
###### Hidden captcha
970 41 Florent Torregrosa
drush -y en hidden_captcha
971 21 Florent Torregrosa
# Log wrong answers.
972 21 Florent Torregrosa
drush -y vset captcha_log_wrong_responses 1
973 21 Florent Torregrosa
# Use hidden captcha for all forms.
974 21 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {captcha_points} SET module = 'hidden_captcha', captcha_type = 'Hidden CAPTCHA' WHERE module is NULL;"
975 21 Florent Torregrosa
# Flush captcha cache.
976 21 Florent Torregrosa
drush -y vdel captcha_placement_map_cache
977 21 Florent Torregrosa
# Randomely generate a math question as the label of the hidden captcha field.
978 21 Florent Torregrosa
drush -y vset hidden_captcha_label "$random_1 + $random_2"
979 21 Florent Torregrosa
980 21 Florent Torregrosa
981 21 Florent Torregrosa
####### Piwik
982 21 Florent Torregrosa
drush -y en piwik
983 21 Florent Torregrosa
drush -y vset piwik_site_id "101"
984 41 Florent Torregrosa
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/"
985 21 Florent Torregrosa
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/"
986 21 Florent Torregrosa
# Piwik cache.
987 21 Florent Torregrosa
drush -y vset piwik_cache 1
988 21 Florent Torregrosa
drush -y vset piwik_visibility_roles "1"
989 21 Florent Torregrosa
# Piwik is enable for everyone except the administrator
990 21 Florent Torregrosa
drush -y vset --format=json piwik_roles '[3]'
991 21 Florent Torregrosa
drush -y vset piwik_page_title_hierarchy 1
992 21 Florent Torregrosa
# Activate local search.
993 21 Florent Torregrosa
drush -y vset piwik_site_search 1
994 21 Florent Torregrosa
995 21 Florent Torregrosa
996 21 Florent Torregrosa
###### Security review
997 21 Florent Torregrosa
# For untrusted roles:
998 41 Florent Torregrosa
# 1: anonymous user
999 21 Florent Torregrosa
# 2: authenticated user
1000 21 Florent Torregrosa
# 3: administrator
1001 21 Florent Torregrosa
drush -y en security_review
1002 11 Julien Enselme
drush -y ev "variable_set('security_review_untrusted_roles', array('1'));"
1003 54 Florent Torregrosa
# Used to initialise entries in the database schema.
1004 54 Florent Torregrosa
drush security-review --store
1005 54 Florent Torregrosa
# Security review can't check for files permissions on multi_assos if launched within the web interface.
1006 54 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '1', skiptime = $current_timestamp, skipuid = '1' WHERE reviewcheck IN ('file_perms');"
1007 54 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '0', skiptime = '0', skipuid = NULL WHERE reviewcheck NOT IN ('file_perms');"
1008 1 Julien Enselme
</code>
1009 1 Julien Enselme
</pre>