Project

General

Profile

Scripts et taches planifiees » History » Version 64

Julien Enselme, 08/05/2013 06:50 PM
Configuration et utilitaires : inversion of h3. scripts-config-site.sh and h3. scripts-config.sh

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.sh
122 53 Julien Enselme
123 53 Julien Enselme
<pre>
124 53 Julien Enselme
<code class="php">
125 53 Julien Enselme
#!/bin/sh
126 53 Julien Enselme
127 53 Julien Enselme
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/users/guest/assos/bin
128 53 Julien Enselme
PATH=$PATH:/usr/guest/assos/bin
129 53 Julien Enselme
130 53 Julien Enselme
scripts_config='imported'
131 53 Julien Enselme
132 53 Julien Enselme
email_multi_assos="assos@centrale-marseille.fr"
133 53 Julien Enselme
134 53 Julien Enselme
dir_multi_assos='/users/guest/assos'
135 53 Julien Enselme
dir_scripts="$dir_multi_assos/bin"
136 53 Julien Enselme
dir_template="$dir_multi_assos/template"
137 53 Julien Enselme
138 53 Julien Enselme
###### Database
139 53 Julien Enselme
db_server="myassos.serv.int"
140 53 Julien Enselme
db_user="assos"
141 53 Julien Enselme
dir_log="$dir_multi_assos/log"
142 53 Julien Enselme
143 53 Julien Enselme
###### Backup
144 53 Julien Enselme
db_full_backup_number=3
145 63 Julien Enselme
db_individual_manual_backup_number=2
146 53 Julien Enselme
db_individual_auto_backup_number=3
147 53 Julien Enselme
148 53 Julien Enselme
dir_backup="$dir_multi_assos/backup"
149 53 Julien Enselme
dir_full_backup="$dir_backup/full"
150 53 Julien Enselme
dir_individual_backup="$dir_backup/individual"
151 1 Julien Enselme
dir_individual_manual_backup="$dir_individual_backup/manual"
152 1 Julien Enselme
dir_individual_auto_backup="$dir_individual_backup/auto"
153 1 Julien Enselme
154 1 Julien Enselme
155 1 Julien Enselme
###### D7 variables
156 1 Julien Enselme
d7_dir="$dir_multi_assos/htmltest"
157 1 Julien Enselme
d7_dir_sites="$d7_dir/sites"
158 1 Julien Enselme
159 1 Julien Enselme
### Log
160 1 Julien Enselme
d7_dir_log="$dir_log/d7"
161 1 Julien Enselme
162 1 Julien Enselme
### Backup
163 1 Julien Enselme
d7_dir_full_backup="$dir_full_backup/d7"
164 1 Julien Enselme
d7_dir_individual_manual_backup="$dir_individual_manual_backup/d7"
165 1 Julien Enselme
d7_dir_individual_auto_backup="$dir_individual_auto_backup/d7"
166 1 Julien Enselme
167 1 Julien Enselme
### Template
168 1 Julien Enselme
d7_settings_template_name="settings-D7-bddinde-template.php"
169 1 Julien Enselme
d7_settings_template="$dir_template/$d7_settings_template_name"
170 1 Julien Enselme
171 1 Julien Enselme
172 1 Julien Enselme
###### D6 variables
173 1 Julien Enselme
d6_dir="$dir_multi_assos/html"
174 1 Julien Enselme
d6_dir_sites="$d6_dir/sites"
175 1 Julien Enselme
176 1 Julien Enselme
### Backup
177 1 Julien Enselme
d6_dir_full_backup="$dir_full_backup/d6"
178 1 Julien Enselme
d6_dir_individual_manual_backup="$dir_individual_manual_backup/d6"
179 1 Julien Enselme
d6_dir_individual_auto_backup="$dir_individual_auto_backup/d6"
180 64 Julien Enselme
</code>
181 64 Julien Enselme
</pre>
182 64 Julien Enselme
183 64 Julien Enselme
h3. scripts-config-site.sh
184 64 Julien Enselme
185 64 Julien Enselme
<pre>
186 64 Julien Enselme
<code class="php">
187 64 Julien Enselme
#!/bin/sh
188 64 Julien Enselme
189 64 Julien Enselme
# Sets useful variables of a site.
190 64 Julien Enselme
# ARGS: site_name
191 64 Julien Enselme
# Requires scripts-config.sh
192 64 Julien Enselme
193 64 Julien Enselme
# Check if scripts-config.sh is imported.
194 64 Julien Enselme
if [ -z $scripts_config ] ; then
195 64 Julien Enselme
    echo "Import of scripts-config.sh required."
196 64 Julien Enselme
    exit 1
197 64 Julien Enselme
fi
198 64 Julien Enselme
199 64 Julien Enselme
if [ -z $1 ] ; then
200 64 Julien Enselme
    echo "This script needs a site name as argument."
201 64 Julien Enselme
    exit 1
202 64 Julien Enselme
fi
203 64 Julien Enselme
204 64 Julien Enselme
scripts_config_site='imported'
205 64 Julien Enselme
206 64 Julien Enselme
d7_site_name=$1
207 64 Julien Enselme
d7_site_dir="$d7_dir_sites/assos.centrale-marseille.fr.$d7_site_name"
208 64 Julien Enselme
d7_site_settings="$d7_site_dir/settings.php"
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 62 Julien Enselme
. scripts-utils.sh
696 21 Florent Torregrosa
697 21 Florent Torregrosa
# ARGS: auto or manual
698 1 Julien Enselme
699 21 Florent Torregrosa
check_arguments $# 1
700 21 Florent Torregrosa
701 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
702 21 Florent Torregrosa
703 21 Florent Torregrosa
cd $d7_dir_sites
704 21 Florent Torregrosa
705 21 Florent Torregrosa
for dir in `find . -maxdepth 1 -mindepth 1 -type d ! -name all | cut -c3-` ; do
706 1 Julien Enselme
    cd $dir
707 21 Florent Torregrosa
    drush cc all
708 21 Florent Torregrosa
    if [ $1 = 'auto' ] ; then
709 21 Florent Torregrosa
        drush sql-dump --result-file="$d7_dir_individual_auto_backup/$dir/$current_date.$dir.sql"
710 21 Florent Torregrosa
    else
711 1 Julien Enselme
        drush sql-dump --result-file="$d7_dir_individual_manual_backup/$dir/$current_date.$dir.sql"
712 21 Florent Torregrosa
    fi
713 21 Florent Torregrosa
    cd -
714 21 Florent Torregrosa
done
715 21 Florent Torregrosa
</code>
716 21 Florent Torregrosa
</pre>
717 21 Florent Torregrosa
718 53 Julien Enselme
h3. d7-all-releases-info.sh
719 21 Florent Torregrosa
720 21 Florent Torregrosa
<pre>
721 21 Florent Torregrosa
<code class="php">
722 21 Florent Torregrosa
#!/bin/sh
723 1 Julien Enselme
724 1 Julien Enselme
. scripts-config.sh
725 1 Julien Enselme
726 1 Julien Enselme
# List version of a module or theme that exists in sites/all/*
727 1 Julien Enselme
# and all versions that are available for same project on drupal.org
728 1 Julien Enselme
729 1 Julien Enselme
# modules
730 1 Julien Enselme
cd $d7_dir_sites/all/modules
731 1 Julien Enselme
for dir in `ls -1` ; do
732 1 Julien Enselme
    if [ -d $dir ] ; then
733 1 Julien Enselme
        drush pm-releases $dir
734 1 Julien Enselme
    fi
735 1 Julien Enselme
done
736 1 Julien Enselme
737 1 Julien Enselme
# themes
738 1 Julien Enselme
cd $d7_dir_sites/all/themes
739 1 Julien Enselme
for dir in `ls -1` ; do
740 1 Julien Enselme
    if [ -d $dir ] ; then
741 1 Julien Enselme
        drush pm-releases $dir
742 1 Julien Enselme
    fi
743 21 Florent Torregrosa
done
744 21 Florent Torregrosa
</code>
745 21 Florent Torregrosa
</pre>
746 41 Florent Torregrosa
747 53 Julien Enselme
h3. d7-all-reset-variables.sh
748 41 Florent Torregrosa
749 1 Julien Enselme
<pre>
750 41 Florent Torregrosa
<code class="php">
751 41 Florent Torregrosa
#!/bin/sh
752 41 Florent Torregrosa
753 41 Florent Torregrosa
. scripts-config.sh
754 41 Florent Torregrosa
755 41 Florent Torregrosa
for dir in `find $d7_dir_sites -maxdepth 1 -mindepth 1 -type d ! -name all | sort` ; do
756 41 Florent Torregrosa
    cd $dir
757 41 Florent Torregrosa
    echo $dir
758 41 Florent Torregrosa
    d7-reset-variables.sh
759 41 Florent Torregrosa
done
760 41 Florent Torregrosa
</code>
761 1 Julien Enselme
</pre>
762 41 Florent Torregrosa
763 53 Julien Enselme
h3. d7-all-security-review.sh
764 41 Florent Torregrosa
765 41 Florent Torregrosa
<pre>
766 41 Florent Torregrosa
<code class="php">
767 1 Julien Enselme
#!/bin/sh
768 21 Florent Torregrosa
769 21 Florent Torregrosa
. scripts-config.sh
770 21 Florent Torregrosa
771 21 Florent Torregrosa
# grep -v success to keep site_name and error lines.
772 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"
773 21 Florent Torregrosa
</code>
774 21 Florent Torregrosa
</pre>
775 21 Florent Torregrosa
776 53 Julien Enselme
h3. d7-all-update-contrib.sh
777 21 Florent Torregrosa
778 21 Florent Torregrosa
<pre>
779 21 Florent Torregrosa
<code class="php">
780 21 Florent Torregrosa
#!/bin/sh
781 21 Florent Torregrosa
782 21 Florent Torregrosa
. scripts-config.sh
783 1 Julien Enselme
784 21 Florent Torregrosa
d7-all-drush.sh -y en update
785 21 Florent Torregrosa
# Launch cron to check for updates.
786 21 Florent Torregrosa
d7-all-drush.sh -q cron
787 21 Florent Torregrosa
788 21 Florent Torregrosa
d7-all-dump-individual.sh auto
789 21 Florent Torregrosa
790 1 Julien Enselme
d7-all-drush-logged.sh -y upc --no-core
791 21 Florent Torregrosa
d7-all-drush.sh -y updb
792 21 Florent Torregrosa
793 21 Florent Torregrosa
d7-all-drush.sh -y dis update
794 21 Florent Torregrosa
795 21 Florent Torregrosa
d7-all-drush.sh cron
796 21 Florent Torregrosa
</code>
797 1 Julien Enselme
</pre>
798 21 Florent Torregrosa
799 53 Julien Enselme
h3. d7-all-update-localisation.sh
800 21 Florent Torregrosa
801 21 Florent Torregrosa
<pre>
802 21 Florent Torregrosa
<code class="php">
803 21 Florent Torregrosa
#!/bin/sh
804 21 Florent Torregrosa
805 21 Florent Torregrosa
. scripts-config.sh
806 21 Florent Torregrosa
807 21 Florent Torregrosa
d7-all-drush.sh -y en l10n_update
808 21 Florent Torregrosa
d7-all-drush.sh l10n-update-refresh
809 21 Florent Torregrosa
d7-all-drush.sh l10n-update
810 21 Florent Torregrosa
d7-all-drush.sh -y dis l10n_update
811 21 Florent Torregrosa
</code>
812 21 Florent Torregrosa
</pre>
813 41 Florent Torregrosa
814 53 Julien Enselme
h3. d7-create-site.sh
815 1 Julien Enselme
816 21 Florent Torregrosa
<pre>
817 21 Florent Torregrosa
<code class="php">
818 21 Florent Torregrosa
#!/bin/sh
819 1 Julien Enselme
820 21 Florent Torregrosa
. scripts-config.sh
821 21 Florent Torregrosa
. scripts-config-site.sh $1
822 21 Florent Torregrosa
. scripts-utils.sh
823 21 Florent Torregrosa
824 21 Florent Torregrosa
# ARGS: site name
825 21 Florent Torregrosa
826 21 Florent Torregrosa
######## Exceptions
827 21 Florent Torregrosa
check_arguments $# 1
828 21 Florent Torregrosa
829 21 Florent Torregrosa
# "-" is forbidden because it provokes database error.
830 21 Florent Torregrosa
if [ `echo $1 | grep -` ] ; then
831 21 Florent Torregrosa
    echo '"-" is forbidden in the site name'
832 21 Florent Torregrosa
    exit 1
833 21 Florent Torregrosa
fi
834 21 Florent Torregrosa
835 21 Florent Torregrosa
# Site name length must be lower or equal to 16 due to database limitations.
836 21 Florent Torregrosa
if [`echo $1 | wc -c` -gt 16 ] ; then
837 41 Florent Torregrosa
    echo "site name can't have more than 16 characters"
838 21 Florent Torregrosa
    exit 1
839 21 Florent Torregrosa
fi
840 21 Florent Torregrosa
841 1 Julien Enselme
###### Initialisation
842 21 Florent Torregrosa
cd $d7_dir
843 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
844 21 Florent Torregrosa
site_password=`generate_password`
845 21 Florent Torregrosa
846 21 Florent Torregrosa
# Check if site database already exists.
847 21 Florent Torregrosa
if mysql -h $db_server -u $db_user -e "USE $d7_site_name" -p$db_password 2>/dev/null ; then
848 21 Florent Torregrosa
    echo "Database $d7_site_name already exists"
849 21 Florent Torregrosa
    exit 1
850 21 Florent Torregrosa
fi
851 21 Florent Torregrosa
852 21 Florent Torregrosa
# Check if site folder already exists.
853 21 Florent Torregrosa
if [ -d $d7_site_dir ] ; then
854 21 Florent Torregrosa
    echo "Folder $d7_site_dir already exists"
855 21 Florent Torregrosa
    exit 1
856 21 Florent Torregrosa
fi
857 21 Florent Torregrosa
858 21 Florent Torregrosa
###### Main
859 21 Florent Torregrosa
mkdir $d7_site_dir
860 21 Florent Torregrosa
dir_site_name="assos.centrale-marseille.fr.$d7_site_name"
861 21 Florent Torregrosa
862 21 Florent Torregrosa
# Backup requirements
863 1 Julien Enselme
mkdir $d7_dir_individual_auto_backup/$dir_site_name
864 21 Florent Torregrosa
mkdir $d7_dir_individual_manual_backup/$dir_site_name
865 21 Florent Torregrosa
current_date=`date "+%Y-%m-%d-%Hh%Mm%Ss"`
866 21 Florent Torregrosa
867 21 Florent Torregrosa
# NB : ls sort by considering the 1st characters
868 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql
869 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql2
870 21 Florent Torregrosa
touch $d7_dir_individual_auto_backup/$dir_site_name/$current_date.$dir_site_name.sql3
871 1 Julien Enselme
872 21 Florent Torregrosa
# Create and grant privileges on database
873 21 Florent Torregrosa
mysql -h $db_server -u $db_user -e "CREATE DATABASE $d7_site_name" -p$db_password
874 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
875 21 Florent Torregrosa
876 21 Florent Torregrosa
# Create settings.php
877 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
878 21 Florent Torregrosa
879 21 Florent Torregrosa
# Create symbolic link
880 21 Florent Torregrosa
cd $d7_dir
881 21 Florent Torregrosa
ln -s . $d7_site_name
882 21 Florent Torregrosa
883 21 Florent Torregrosa
# Next Instructions
884 21 Florent Torregrosa
echo "Go to http://assos.centrale-marseille.fr/$d7_site_name/install.php to continue."
885 21 Florent Torregrosa
echo "Press enter when ready to go on."
886 1 Julien Enselme
read key
887 41 Florent Torregrosa
888 21 Florent Torregrosa
# Init variables
889 21 Florent Torregrosa
d7-reset-variables.sh $d7_site_name
890 21 Florent Torregrosa
891 21 Florent Torregrosa
# Permissions
892 21 Florent Torregrosa
chmod -R 755 $d7_site_dir
893 21 Florent Torregrosa
chmod 400 $d7_site_settings
894 21 Florent Torregrosa
895 21 Florent Torregrosa
# Last instructions
896 21 Florent Torregrosa
echo "Last instructions:"
897 21 Florent Torregrosa
echo "- Advice the webmaster to close account creation on the website"
898 21 Florent Torregrosa
echo "- Give the webmaster a link to the club Drupal's tutorials "
899 21 Florent Torregrosa
echo "- Create a node of type \"Site\" on default"
900 21 Florent Torregrosa
echo "- Register the webmaster on webmasters@listes.centrale-marseille.fr"
901 21 Florent Torregrosa
</code>
902 21 Florent Torregrosa
</pre>
903 21 Florent Torregrosa
904 53 Julien Enselme
h3. d7-delete-site.sh
905 21 Florent Torregrosa
906 21 Florent Torregrosa
<pre>
907 21 Florent Torregrosa
<code class="php">
908 21 Florent Torregrosa
#!/bin/sh
909 21 Florent Torregrosa
910 21 Florent Torregrosa
. scripts-config.sh
911 21 Florent Torregrosa
. scripts-config-site.sh $1
912 21 Florent Torregrosa
. scripts-utils.sh
913 21 Florent Torregrosa
914 21 Florent Torregrosa
# ARGS: site name.
915 21 Florent Torregrosa
916 21 Florent Torregrosa
check_arguments $# 1
917 21 Florent Torregrosa
918 21 Florent Torregrosa
db_password=`ask_password_db $db_server $db_user`
919 21 Florent Torregrosa
920 21 Florent Torregrosa
# Delete database.
921 21 Florent Torregrosa
mysql -h $db_server -u $db_user -p$db_password -e "DROP DATABASE $d7_site_name"
922 21 Florent Torregrosa
923 21 Florent Torregrosa
# Delete MYSQL user.
924 1 Julien Enselme
mysql -h $db_server -u $db_user -p$db_password -e "DROP USER '$d7_site_name'@'%'"
925 21 Florent Torregrosa
926 21 Florent Torregrosa
# Delete site's folder.
927 21 Florent Torregrosa
chmod -R 700 $d7_site_dir
928 21 Florent Torregrosa
rm -r $d7_site_dir
929 21 Florent Torregrosa
930 1 Julien Enselme
# Delete symbolic link.
931 21 Florent Torregrosa
rm $d7_dir/$d7_site_name
932 21 Florent Torregrosa
933 21 Florent Torregrosa
# Delete database backups.
934 1 Julien Enselme
rm -r $d7_dir_individual_auto_backup/assos.centrale-marseille.fr.$d7_site_name
935 1 Julien Enselme
rm -r $d7_dir_individual_manual_backup/assos.centrale-marseille.fr.$d7_site_name
936 21 Florent Torregrosa
937 21 Florent Torregrosa
echo "Don't forget to:"
938 21 Florent Torregrosa
echo "- Refresh node site on default"
939 21 Florent Torregrosa
echo "- Check particular behavior (normally detailed on site node)"
940 21 Florent Torregrosa
</code>
941 21 Florent Torregrosa
</pre>
942 21 Florent Torregrosa
943 53 Julien Enselme
h3. d7-reset-variables.sh
944 1 Julien Enselme
945 21 Florent Torregrosa
<pre>
946 21 Florent Torregrosa
<code class="php">
947 21 Florent Torregrosa
#!/bin/sh
948 21 Florent Torregrosa
949 21 Florent Torregrosa
. scripts-config.sh
950 21 Florent Torregrosa
951 21 Florent Torregrosa
# ARGS: [site_name]
952 21 Florent Torregrosa
953 21 Florent Torregrosa
if [ ! -z $1 ] ; then
954 21 Florent Torregrosa
    . scripts-config-site.sh $1
955 21 Florent Torregrosa
    cd $d7_site_dir
956 21 Florent Torregrosa
fi
957 1 Julien Enselme
958 41 Florent Torregrosa
current_timestamp=`date "+%s"`
959 21 Florent Torregrosa
960 41 Florent Torregrosa
random_1=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
961 41 Florent Torregrosa
random_2=`dd if=/dev/urandom count=1 2> /dev/null | cksum | cut -f1 -d" "`
962 21 Florent Torregrosa
963 21 Florent Torregrosa
####### General variables
964 21 Florent Torregrosa
drush -y vset --always-set reverse_proxy TRUE
965 21 Florent Torregrosa
drush -y vset --always-set --format=json reverse_proxy_addresses '["147.94.19.16","147.94.19.17"]'
966 21 Florent Torregrosa
drush -y ev "variable_set('update_notify_emails', array('@email_multi_assos'));"
967 21 Florent Torregrosa
drush -y vset error_level 0
968 21 Florent Torregrosa
drush -y vset dblog_row_limit 1000
969 21 Florent Torregrosa
970 1 Julien Enselme
###### Hidden captcha
971 41 Florent Torregrosa
drush -y en hidden_captcha
972 21 Florent Torregrosa
# Log wrong answers.
973 21 Florent Torregrosa
drush -y vset captcha_log_wrong_responses 1
974 21 Florent Torregrosa
# Use hidden captcha for all forms.
975 21 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {captcha_points} SET module = 'hidden_captcha', captcha_type = 'Hidden CAPTCHA' WHERE module is NULL;"
976 21 Florent Torregrosa
# Flush captcha cache.
977 21 Florent Torregrosa
drush -y vdel captcha_placement_map_cache
978 21 Florent Torregrosa
# Randomely generate a math question as the label of the hidden captcha field.
979 21 Florent Torregrosa
drush -y vset hidden_captcha_label "$random_1 + $random_2"
980 21 Florent Torregrosa
981 21 Florent Torregrosa
982 21 Florent Torregrosa
####### Piwik
983 21 Florent Torregrosa
drush -y en piwik
984 21 Florent Torregrosa
drush -y vset piwik_site_id "101"
985 41 Florent Torregrosa
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/"
986 21 Florent Torregrosa
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/"
987 21 Florent Torregrosa
# Piwik cache.
988 21 Florent Torregrosa
drush -y vset piwik_cache 1
989 21 Florent Torregrosa
drush -y vset piwik_visibility_roles "1"
990 21 Florent Torregrosa
# Piwik is enable for everyone except the administrator
991 21 Florent Torregrosa
drush -y vset --format=json piwik_roles '[3]'
992 21 Florent Torregrosa
drush -y vset piwik_page_title_hierarchy 1
993 21 Florent Torregrosa
# Activate local search.
994 21 Florent Torregrosa
drush -y vset piwik_site_search 1
995 21 Florent Torregrosa
996 21 Florent Torregrosa
997 21 Florent Torregrosa
###### Security review
998 21 Florent Torregrosa
# For untrusted roles:
999 41 Florent Torregrosa
# 1: anonymous user
1000 21 Florent Torregrosa
# 2: authenticated user
1001 21 Florent Torregrosa
# 3: administrator
1002 21 Florent Torregrosa
drush -y en security_review
1003 11 Julien Enselme
drush -y ev "variable_set('security_review_untrusted_roles', array('1'));"
1004 54 Florent Torregrosa
# Used to initialise entries in the database schema.
1005 54 Florent Torregrosa
drush security-review --store
1006 54 Florent Torregrosa
# Security review can't check for files permissions on multi_assos if launched within the web interface.
1007 54 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '1', skiptime = $current_timestamp, skipuid = '1' WHERE reviewcheck IN ('file_perms');"
1008 54 Florent Torregrosa
drush -y sqlq --db-prefix "UPDATE {security_review} SET skip = '0', skiptime = '0', skipuid = NULL WHERE reviewcheck NOT IN ('file_perms');"
1009 1 Julien Enselme
</code>
1010 1 Julien Enselme
</pre>