浏览代码

Separate out database functions into their own script

Bob Mottram 9 年前
父节点
当前提交
78f200db88
没有帐户链接到提交者的电子邮件
共有 2 个文件被更改,包括 301 次插入268 次删除
  1. 2
    268
      src/freedombone
  2. 299
    0
      src/freedombone-utils-database

+ 2
- 268
src/freedombone 查看文件

@@ -38,8 +38,10 @@ export TEXTDOMAINDIR="/usr/share/locale"
38 38
 DEFAULT_LANGUAGE=$(echo $LANG)
39 39
 
40 40
 source /usr/local/bin/${PROJECT_NAME}-utils-git
41
+source /usr/local/bin/${PROJECT_NAME}-utils-database
41 42
 if [ -f /usr/bin/${PROJECT_NAME}-utils-git ]; then
42 43
 	source /usr/bin/${PROJECT_NAME}-utils-git
44
+	source /usr/bin/${PROJECT_NAME}-utils-database
43 45
 fi
44 46
 
45 47
 # username created by default within a debian image
@@ -623,37 +625,6 @@ function show_help {
623 625
 	exit 0
624 626
 }
625 627
 
626
-function remove_database {
627
-	app_name="$1"
628
-	if [ ! -d $INSTALL_DIR ]; then
629
-		mkdir $INSTALL_DIR
630
-	fi
631
-	echo "drop database ${app_name};
632
-						quit" > $INSTALL_DIR/batch.sql
633
-	chmod 600 $INSTALL_DIR/batch.sql
634
-	mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
635
-	shred -zu $INSTALL_DIR/batch.sql
636
-}
637
-
638
-function create_database {
639
-	app_name="$1"
640
-	app_admin_password="$2"
641
-	app_admin_username=$3
642
-	if [ ! -d $INSTALL_DIR ]; then
643
-		mkdir $INSTALL_DIR
644
-	fi
645
-	if [ ! $app_admin_username ]; then
646
-		app_admin_username=${app_name}admin
647
-	fi
648
-	echo "create database ${app_name};
649
-						CREATE USER '$app_admin_username@localhost' IDENTIFIED BY '${app_admin_password}';
650
-						GRANT ALL PRIVILEGES ON ${app_name}.* TO '$app_admin_username@localhost';
651
-						quit" > $INSTALL_DIR/batch.sql
652
-	chmod 600 $INSTALL_DIR/batch.sql
653
-	mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
654
-	shred -zu $INSTALL_DIR/batch.sql
655
-}
656
-
657 628
 function locale_setup {
658 629
 	if grep -Fxq "locale_setup" $COMPLETION_FILE; then
659 630
 		return
@@ -2045,70 +2016,6 @@ function create_site_certificate {
2045 2016
 	fi
2046 2017
 }
2047 2018
 
2048
-function backup_database_local {
2049
-	# Makes local backups of databases which can then be automatically rolled
2050
-	# back if corruption is detected
2051
-	database_name=$1
2052
-
2053
-	backup_databases_script=/usr/bin/backupdatabases
2054
-	echo '' >> $backup_databases_script
2055
-	echo "# Backup the ${database_name} database" >> $backup_databases_script
2056
-	echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
2057
-	echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
2058
-	echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
2059
-	echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
2060
-	echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
2061
-	echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
2062
-	echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
2063
-	echo '' >> $backup_databases_script
2064
-	echo '        # try to restore yesterdays database' >> $backup_databases_script
2065
-	echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
2066
-	echo '' >> $backup_databases_script
2067
-	echo '        # Send a warning email' >> $backup_databases_script
2068
-	echo "        echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
2069
-	echo '    else' >> $backup_databases_script
2070
-	echo '        # Send a warning email' >> $backup_databases_script
2071
-	echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
2072
-	echo '    fi' >> $backup_databases_script
2073
-	echo 'else' >> $backup_databases_script
2074
-	echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
2075
-	echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
2076
-	echo '' >> $backup_databases_script
2077
-	echo '    # Make the backup readable only by root' >> $backup_databases_script
2078
-	echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
2079
-	echo 'fi' >> $backup_databases_script
2080
-
2081
-	weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
2082
-	if ! grep -q "${database_name}" ${weekly_backup_script}; then
2083
-		echo '' >> ${weekly_backup_script}
2084
-		echo "# ${database_name}" >> ${weekly_backup_script}
2085
-		echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
2086
-		echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
2087
-		echo 'fi' >> ${weekly_backup_script}
2088
-		echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
2089
-		echo "  cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
2090
-		echo 'fi' >> ${weekly_backup_script}
2091
-	fi
2092
-
2093
-	monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
2094
-	if ! grep -q "${database_name}" ${monthly_backup_script}; then
2095
-		echo '' >> ${monthly_backup_script}
2096
-		echo "# ${database_name}" >> ${monthly_backup_script}
2097
-		echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
2098
-		echo "  cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
2099
-		echo 'fi' >> ${monthly_backup_script}
2100
-		echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
2101
-		echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
2102
-		echo 'fi' >> ${monthly_backup_script}
2103
-	fi
2104
-
2105
-	if ! grep -q "${database_name}" /etc/cron.hourly/repair; then
2106
-		echo "${PROJECT_NAME}-repair-database ${database_name}" >> /etc/cron.hourly/repair
2107
-		# remove legacy stuff
2108
-		sed -i 's|/usr/bin/repairdatabase redmatrix||g' /etc/cron.hourly/repair
2109
-	fi
2110
-}
2111
-
2112 2019
 function install_not_on_BBB {
2113 2020
 	if grep -Fxq "install_not_on_BBB" $COMPLETION_FILE; then
2114 2021
 		return
@@ -3247,71 +3154,6 @@ function check_hwrng {
3247 3154
 	#check_onerng_verification
3248 3155
 }
3249 3156
 
3250
-function get_mariadb_password {
3251
-	if [ -f /home/$MY_USERNAME/README ]; then
3252
-		if grep -q "MariaDB password" /home/$MY_USERNAME/README; then
3253
-			if [ -f $DATABASE_PASSWORD_FILE ]; then
3254
-				MARIADB_PASSWORD=$(cat $DATABASE_PASSWORD_FILE)
3255
-			else
3256
-				MARIADB_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3257
-				echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
3258
-				chmod 600 $DATABASE_PASSWORD_FILE
3259
-			fi
3260
-		fi
3261
-	fi
3262
-}
3263
-
3264
-function get_mariadb_media_server_admin_password {
3265
-	if [ -f /home/$MY_USERNAME/README ]; then
3266
-		if grep -q "Media server administrator password" /home/$MY_USERNAME/README; then
3267
-			MEDIA_SERVER_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Media server administrator password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3268
-		fi
3269
-	fi
3270
-}
3271
-
3272
-function get_mariadb_gnusocial_admin_password {
3273
-	if [ -f /home/$MY_USERNAME/README ]; then
3274
-		if grep -q "MariaDB gnusocial admin password" /home/$MY_USERNAME/README; then
3275
-			MICROBLOG_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB gnusocial admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3276
-		fi
3277
-		if grep -q "Microblog administrator password" /home/$MY_USERNAME/README; then
3278
-			MICROBLOG_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Microblog administrator password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3279
-		fi
3280
-	fi
3281
-}
3282
-
3283
-function get_mariadb_webmail_admin_password {
3284
-	if [ -f /home/$MY_USERNAME/README ]; then
3285
-		if grep -q "MariaDB webmail admin password" /home/$MY_USERNAME/README; then
3286
-			WEBMAIL_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB webmail admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3287
-		fi
3288
-	fi
3289
-}
3290
-
3291
-function get_mariadb_rss_reader_admin_password {
3292
-	if [ -f /home/$MY_USERNAME/README ]; then
3293
-		if grep -q "RSS reader admin password" /home/$MY_USERNAME/README; then
3294
-			RSS_READER_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "RSS reader admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3295
-		fi
3296
-	fi
3297
-}
3298
-
3299
-function get_mariadb_git_admin_password {
3300
-	if [ -f /home/$MY_USERNAME/README ]; then
3301
-		if grep -q "Gogs admin user password" /home/$MY_USERNAME/README; then
3302
-			GIT_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Gogs admin user password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3303
-		fi
3304
-	fi
3305
-}
3306
-
3307
-function get_mariadb_hubzilla_admin_password {
3308
-	if [ -f /home/$MY_USERNAME/README ]; then
3309
-		if grep -q "MariaDB Hubzilla admin password" /home/$MY_USERNAME/README; then
3310
-			HUBZILLA_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB Hubzilla admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
3311
-		fi
3312
-	fi
3313
-}
3314
-
3315 3157
 function create_freedns_updater {
3316 3158
 	if [[ $ONION_ONLY != "no" ]]; then
3317 3159
 		return
@@ -6235,114 +6077,6 @@ function configure_php {
6235 6077
 	sed -i "s/post_max_size = 8M/post_max_size = 50M/g" /etc/php5/fpm/php.ini
6236 6078
 }
6237 6079
 
6238
-function install_mariadb {
6239
-	if grep -Fxq "install_mariadb" $COMPLETION_FILE; then
6240
-		return
6241
-	fi
6242
-	apt-get -y install python-software-properties debconf-utils
6243
-	apt-get -y install software-properties-common
6244
-	apt-get -y update
6245
-
6246
-	get_mariadb_password
6247
-	if [ ! $MARIADB_PASSWORD ]; then
6248
-		if [ -f $IMAGE_PASSWORD_FILE ]; then
6249
-			MARIADB_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
6250
-		else
6251
-			MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
6252
-		fi
6253
-		echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
6254
-		chmod 600 $DATABASE_PASSWORD_FILE
6255
-
6256
-		echo '' >> /home/$MY_USERNAME/README
6257
-		echo '' >> /home/$MY_USERNAME/README
6258
-		echo 'MariaDB / MySql' >> /home/$MY_USERNAME/README
6259
-		echo '===============' >> /home/$MY_USERNAME/README
6260
-		echo $"Your MariaDB password is: $MARIADB_PASSWORD" >> /home/$MY_USERNAME/README
6261
-		echo '' >> /home/$MY_USERNAME/README
6262
-		chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
6263
-		chmod 600 /home/$MY_USERNAME/README
6264
-	fi
6265
-
6266
-	debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
6267
-	debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password $MARIADB_PASSWORD"
6268
-	apt-get -y install mariadb-server
6269
-	apt-get -y remove --purge apache*
6270
-	if [ -d /etc/apache2 ]; then
6271
-		rm -rf /etc/apache2
6272
-		echo $'Removed Apache installation after MariaDB install'
6273
-	fi
6274
-
6275
-	if [ ! -d /etc/mysql ]; then
6276
-		echo $"ERROR: mariadb-server does not appear to have installed. $CHECK_MESSAGE"
6277
-		exit 54
6278
-	fi
6279
-
6280
-	mysqladmin -u root password "$MARIADB_PASSWORD"
6281
-	echo 'install_mariadb' >> $COMPLETION_FILE
6282
-}
6283
-
6284
-function backup_databases_script_header {
6285
-	if [ ! -f /usr/bin/backupdatabases ]; then
6286
-		# daily
6287
-		echo '#!/bin/sh' > /usr/bin/backupdatabases
6288
-		echo '' >> /usr/bin/backupdatabases
6289
-		echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
6290
-		echo '' >> /usr/bin/backupdatabases
6291
-		echo -n 'MYSQL_PASSWORD=$(cat ' >> /usr/bin/backupdatabases
6292
-		echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/backupdatabases
6293
-		echo 'umask 0077' >> /usr/bin/backupdatabases
6294
-		echo '' >> /usr/bin/backupdatabases
6295
-		echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
6296
-		echo "if [ -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backupdatabases
6297
-		echo '  exit 1' >> /usr/bin/backupdatabases
6298
-		echo 'fi' >> /usr/bin/backupdatabases
6299
-		chmod 600 /usr/bin/backupdatabases
6300
-		chmod +x /usr/bin/backupdatabases
6301
-
6302
-		echo '#!/bin/sh' > /etc/cron.daily/backupdatabasesdaily
6303
-		echo '/usr/bin/backupdatabases' >> /etc/cron.daily/backupdatabasesdaily
6304
-		chmod 600 /etc/cron.daily/backupdatabasesdaily
6305
-		chmod +x /etc/cron.daily/backupdatabasesdaily
6306
-
6307
-		# weekly
6308
-		echo '#!/bin/sh' > /etc/cron.weekly/backupdatabasesweekly
6309
-		echo '' >> /etc/cron.weekly/backupdatabasesweekly
6310
-		echo 'umask 0077' >> /etc/cron.weekly/backupdatabasesweekly
6311
-
6312
-		chmod 600 /etc/cron.weekly/backupdatabasesweekly
6313
-		chmod +x /etc/cron.weekly/backupdatabasesweekly
6314
-
6315
-		# monthly
6316
-		echo '#!/bin/sh' > /etc/cron.monthly/backupdatabasesmonthly
6317
-		echo '' >> /etc/cron.monthly/backupdatabasesmonthly
6318
-		echo 'umask 0077' >> /etc/cron.monthly/backupdatabasesmonthly
6319
-
6320
-		chmod 600 /etc/cron.monthly/backupdatabasesmonthly
6321
-		chmod +x /etc/cron.monthly/backupdatabasesmonthly
6322
-	fi
6323
-}
6324
-
6325
-function repair_databases_script {
6326
-	if [ -f /etc/cron.hourly/repair ]; then
6327
-		sed -i "s|/usr/bin/repairdatabase|${PROJECT_NAME}-repair-database|g" /etc/cron.hourly/repair
6328
-	fi
6329
-
6330
-	if grep -Fxq "repair_databases_script" $COMPLETION_FILE; then
6331
-		return
6332
-	fi
6333
-
6334
-	if [ ! -f $DATABASE_PASSWORD_FILE ]; then
6335
-		return
6336
-	fi
6337
-
6338
-	echo '#!/bin/bash' > /etc/cron.hourly/repair
6339
-	echo '' >> /etc/cron.hourly/repair
6340
-	chmod 600 /etc/cron.hourly/repair
6341
-	chmod +x /etc/cron.hourly/repair
6342
-
6343
-	echo 'repair_databases_script' >> $COMPLETION_FILE
6344
-}
6345
-
6346 6080
 function add_ddns_domain {
6347 6081
 	if [ ! $1 ]; then
6348 6082
 		echo $'ddns domain not specified'

+ 299
- 0
src/freedombone-utils-database 查看文件

@@ -0,0 +1,299 @@
1
+#!/bin/bash
2
+#
3
+# .---.                  .              .
4
+# |                      |              |
5
+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
6
+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
7
+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
8
+#
9
+#                    Freedom in the Cloud
10
+#
11
+# Database functions
12
+#
13
+# License
14
+# =======
15
+#
16
+# Copyright (C) 2014-2016 Bob Mottram <bob@robotics.uk.to>
17
+#
18
+# This program is free software: you can redistribute it and/or modify
19
+# it under the terms of the GNU Affero General Public License as published by
20
+# the Free Software Foundation, either version 3 of the License, or
21
+# (at your option) any later version.
22
+#
23
+# This program is distributed in the hope that it will be useful,
24
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26
+# GNU Affero General Public License for more details.
27
+#
28
+# You should have received a copy of the GNU Affero General Public License
29
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
30
+
31
+function backup_database_local {
32
+# Makes local backups of databases which can then be automatically rolled
33
+# back if corruption is detected
34
+database_name=$1
35
+
36
+backup_databases_script=/usr/bin/backupdatabases
37
+echo '' >> $backup_databases_script
38
+echo "# Backup the ${database_name} database" >> $backup_databases_script
39
+echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
40
+echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
41
+echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
42
+echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
43
+echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
44
+echo '    if [ -f $DAILYFILE ]; then' >> $backup_databases_script
45
+echo '        cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
46
+echo '' >> $backup_databases_script
47
+echo '        # try to restore yesterdays database' >> $backup_databases_script
48
+echo "        mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
49
+echo '' >> $backup_databases_script
50
+echo '        # Send a warning email' >> $backup_databases_script
51
+echo "        echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
52
+echo '    else' >> $backup_databases_script
53
+echo '        # Send a warning email' >> $backup_databases_script
54
+echo "        echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
55
+echo '    fi' >> $backup_databases_script
56
+echo 'else' >> $backup_databases_script
57
+echo '    chmod 600 $TEMPFILE' >> $backup_databases_script
58
+echo '    mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
59
+echo '' >> $backup_databases_script
60
+echo '    # Make the backup readable only by root' >> $backup_databases_script
61
+echo '    chmod 600 $DAILYFILE' >> $backup_databases_script
62
+echo 'fi' >> $backup_databases_script
63
+
64
+weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
65
+if ! grep -q "${database_name}" ${weekly_backup_script}; then
66
+echo '' >> ${weekly_backup_script}
67
+echo "# ${database_name}" >> ${weekly_backup_script}
68
+echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
69
+echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
70
+echo 'fi' >> ${weekly_backup_script}
71
+echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
72
+echo "  cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
73
+echo 'fi' >> ${weekly_backup_script}
74
+fi
75
+
76
+monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
77
+if ! grep -q "${database_name}" ${monthly_backup_script}; then
78
+echo '' >> ${monthly_backup_script}
79
+echo "# ${database_name}" >> ${monthly_backup_script}
80
+echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
81
+echo "  cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
82
+echo 'fi' >> ${monthly_backup_script}
83
+echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
84
+echo "  cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
85
+echo 'fi' >> ${monthly_backup_script}
86
+fi
87
+
88
+if ! grep -q "${database_name}" /etc/cron.hourly/repair; then
89
+echo "${PROJECT_NAME}-repair-database ${database_name}" >> /etc/cron.hourly/repair
90
+# remove legacy stuff
91
+sed -i 's|/usr/bin/repairdatabase redmatrix||g' /etc/cron.hourly/repair
92
+fi
93
+}
94
+
95
+function get_mariadb_password {
96
+if [ -f /home/$MY_USERNAME/README ]; then
97
+if grep -q "MariaDB password" /home/$MY_USERNAME/README; then
98
+if [ -f $DATABASE_PASSWORD_FILE ]; then
99
+MARIADB_PASSWORD=$(cat $DATABASE_PASSWORD_FILE)
100
+else
101
+MARIADB_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB password" | awk -F ':' '{print $2}' | sed 's/^ *//')
102
+echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
103
+chmod 600 $DATABASE_PASSWORD_FILE
104
+fi
105
+fi
106
+fi
107
+}
108
+
109
+function get_mariadb_media_server_admin_password {
110
+if [ -f /home/$MY_USERNAME/README ]; then
111
+if grep -q "Media server administrator password" /home/$MY_USERNAME/README; then
112
+MEDIA_SERVER_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Media server administrator password" | awk -F ':' '{print $2}' | sed 's/^ *//')
113
+fi
114
+fi
115
+}
116
+
117
+function get_mariadb_gnusocial_admin_password {
118
+if [ -f /home/$MY_USERNAME/README ]; then
119
+if grep -q "MariaDB gnusocial admin password" /home/$MY_USERNAME/README; then
120
+MICROBLOG_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB gnusocial admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
121
+fi
122
+if grep -q "Microblog administrator password" /home/$MY_USERNAME/README; then
123
+MICROBLOG_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Microblog administrator password" | awk -F ':' '{print $2}' | sed 's/^ *//')
124
+fi
125
+fi
126
+}
127
+
128
+function get_mariadb_webmail_admin_password {
129
+if [ -f /home/$MY_USERNAME/README ]; then
130
+if grep -q "MariaDB webmail admin password" /home/$MY_USERNAME/README; then
131
+WEBMAIL_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB webmail admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
132
+fi
133
+fi
134
+}
135
+
136
+function get_mariadb_rss_reader_admin_password {
137
+if [ -f /home/$MY_USERNAME/README ]; then
138
+if grep -q "RSS reader admin password" /home/$MY_USERNAME/README; then
139
+RSS_READER_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "RSS reader admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
140
+fi
141
+fi
142
+}
143
+
144
+function get_mariadb_git_admin_password {
145
+if [ -f /home/$MY_USERNAME/README ]; then
146
+if grep -q "Gogs admin user password" /home/$MY_USERNAME/README; then
147
+GIT_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Gogs admin user password" | awk -F ':' '{print $2}' | sed 's/^ *//')
148
+fi
149
+fi
150
+}
151
+
152
+function get_mariadb_hubzilla_admin_password {
153
+if [ -f /home/$MY_USERNAME/README ]; then
154
+if grep -q "MariaDB Hubzilla admin password" /home/$MY_USERNAME/README; then
155
+HUBZILLA_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "MariaDB Hubzilla admin password" | awk -F ':' '{print $2}' | sed 's/^ *//')
156
+fi
157
+fi
158
+}
159
+
160
+function install_mariadb {
161
+if grep -Fxq "install_mariadb" $COMPLETION_FILE; then
162
+return
163
+fi
164
+apt-get -y install python-software-properties debconf-utils
165
+apt-get -y install software-properties-common
166
+apt-get -y update
167
+
168
+get_mariadb_password
169
+if [ ! $MARIADB_PASSWORD ]; then
170
+if [ -f $IMAGE_PASSWORD_FILE ]; then
171
+MARIADB_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
172
+else
173
+MARIADB_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
174
+fi
175
+echo "$MARIADB_PASSWORD" > $DATABASE_PASSWORD_FILE
176
+chmod 600 $DATABASE_PASSWORD_FILE
177
+
178
+echo '' >> /home/$MY_USERNAME/README
179
+echo '' >> /home/$MY_USERNAME/README
180
+echo 'MariaDB / MySql' >> /home/$MY_USERNAME/README
181
+echo '===============' >> /home/$MY_USERNAME/README
182
+echo $"Your MariaDB password is: $MARIADB_PASSWORD" >> /home/$MY_USERNAME/README
183
+echo '' >> /home/$MY_USERNAME/README
184
+chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
185
+chmod 600 /home/$MY_USERNAME/README
186
+fi
187
+
188
+debconf-set-selections <<< "mariadb-server mariadb-server/root_password password $MARIADB_PASSWORD"
189
+debconf-set-selections <<< "mariadb-server mariadb-server/root_password_again password $MARIADB_PASSWORD"
190
+apt-get -y install mariadb-server
191
+apt-get -y remove --purge apache*
192
+if [ -d /etc/apache2 ]; then
193
+rm -rf /etc/apache2
194
+echo $'Removed Apache installation after MariaDB install'
195
+fi
196
+
197
+if [ ! -d /etc/mysql ]; then
198
+echo $"ERROR: mariadb-server does not appear to have installed. $CHECK_MESSAGE"
199
+exit 54
200
+fi
201
+
202
+mysqladmin -u root password "$MARIADB_PASSWORD"
203
+echo 'install_mariadb' >> $COMPLETION_FILE
204
+}
205
+
206
+function backup_databases_script_header {
207
+if [ ! -f /usr/bin/backupdatabases ]; then
208
+# daily
209
+echo '#!/bin/sh' > /usr/bin/backupdatabases
210
+echo '' >> /usr/bin/backupdatabases
211
+echo "EMAIL='$MY_EMAIL_ADDRESS'" >> /usr/bin/backupdatabases
212
+echo '' >> /usr/bin/backupdatabases
213
+echo -n 'MYSQL_PASSWORD=$(cat ' >> /usr/bin/backupdatabases
214
+echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/backupdatabases
215
+echo 'umask 0077' >> /usr/bin/backupdatabases
216
+echo '' >> /usr/bin/backupdatabases
217
+echo '# exit if we are backing up to friends servers' >> /usr/bin/backupdatabases
218
+echo "if [ -f $FRIENDS_SERVERS_LIST ]; then" >> /usr/bin/backupdatabases
219
+echo '  exit 1' >> /usr/bin/backupdatabases
220
+echo 'fi' >> /usr/bin/backupdatabases
221
+chmod 600 /usr/bin/backupdatabases
222
+chmod +x /usr/bin/backupdatabases
223
+
224
+echo '#!/bin/sh' > /etc/cron.daily/backupdatabasesdaily
225
+echo '/usr/bin/backupdatabases' >> /etc/cron.daily/backupdatabasesdaily
226
+chmod 600 /etc/cron.daily/backupdatabasesdaily
227
+chmod +x /etc/cron.daily/backupdatabasesdaily
228
+
229
+# weekly
230
+echo '#!/bin/sh' > /etc/cron.weekly/backupdatabasesweekly
231
+echo '' >> /etc/cron.weekly/backupdatabasesweekly
232
+echo 'umask 0077' >> /etc/cron.weekly/backupdatabasesweekly
233
+
234
+chmod 600 /etc/cron.weekly/backupdatabasesweekly
235
+chmod +x /etc/cron.weekly/backupdatabasesweekly
236
+
237
+# monthly
238
+echo '#!/bin/sh' > /etc/cron.monthly/backupdatabasesmonthly
239
+echo '' >> /etc/cron.monthly/backupdatabasesmonthly
240
+echo 'umask 0077' >> /etc/cron.monthly/backupdatabasesmonthly
241
+
242
+chmod 600 /etc/cron.monthly/backupdatabasesmonthly
243
+chmod +x /etc/cron.monthly/backupdatabasesmonthly
244
+fi
245
+}
246
+
247
+function repair_databases_script {
248
+if [ -f /etc/cron.hourly/repair ]; then
249
+sed -i "s|/usr/bin/repairdatabase|${PROJECT_NAME}-repair-database|g" /etc/cron.hourly/repair
250
+fi
251
+
252
+if grep -Fxq "repair_databases_script" $COMPLETION_FILE; then
253
+return
254
+fi
255
+
256
+if [ ! -f $DATABASE_PASSWORD_FILE ]; then
257
+return
258
+fi
259
+
260
+echo '#!/bin/bash' > /etc/cron.hourly/repair
261
+echo '' >> /etc/cron.hourly/repair
262
+chmod 600 /etc/cron.hourly/repair
263
+chmod +x /etc/cron.hourly/repair
264
+
265
+echo 'repair_databases_script' >> $COMPLETION_FILE
266
+}
267
+
268
+function remove_database {
269
+app_name="$1"
270
+if [ ! -d $INSTALL_DIR ]; then
271
+mkdir $INSTALL_DIR
272
+fi
273
+echo "drop database ${app_name};
274
+quit" > $INSTALL_DIR/batch.sql
275
+chmod 600 $INSTALL_DIR/batch.sql
276
+mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
277
+shred -zu $INSTALL_DIR/batch.sql
278
+}
279
+
280
+function create_database {
281
+app_name="$1"
282
+app_admin_password="$2"
283
+app_admin_username=$3
284
+if [ ! -d $INSTALL_DIR ]; then
285
+mkdir $INSTALL_DIR
286
+fi
287
+if [ ! $app_admin_username ]; then
288
+app_admin_username=${app_name}admin
289
+fi
290
+echo "create database ${app_name};
291
+CREATE USER '$app_admin_username@localhost' IDENTIFIED BY '${app_admin_password}';
292
+GRANT ALL PRIVILEGES ON ${app_name}.* TO '$app_admin_username@localhost';
293
+quit" > $INSTALL_DIR/batch.sql
294
+chmod 600 $INSTALL_DIR/batch.sql
295
+mysql -u root --password="$MARIADB_PASSWORD" < $INSTALL_DIR/batch.sql
296
+shred -zu $INSTALL_DIR/batch.sql
297
+}
298
+
299
+# NOTE: deliberately there is no "exit 0"