Projet

Général

Profil

Scripts et taches planifiees » Historique » Version 73

Julien Enselme, 06/08/2013 13:12
La sauvegarde des bases de données : correction d'une phrase

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