From 6fff2720bc6abf99348d5be9fc29d40f583fd17e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 5 Nov 2017 14:39:32 +0000 Subject: [PATCH 01/36] Postgresql functions --- src/freedombone-utils-backup | 29 +++++-- src/freedombone-utils-postgresql | 139 +++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+), 6 deletions(-) create mode 100755 src/freedombone-utils-postgresql diff --git a/src/freedombone-utils-backup b/src/freedombone-utils-backup index c6eb5e2c..cb0b4643 100755 --- a/src/freedombone-utils-backup +++ b/src/freedombone-utils-backup @@ -235,9 +235,14 @@ function backup_database_local_usb { if [ ! -d ${local_database_dir} ]; then mkdir -p ${local_database_dir} fi - keep_database_running echo $"Obtaining ${1} database backup" - mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.sql + if [ ! $USE_POSTGRESQL ]; then + keep_database_running + mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.sql + else + USE_POSTGRESQL= + pg_dump ${1} > ${local_database_dir}/${1}.sql + fi if [ -f ${local_database_dir}/${1}.sql ]; then if [ ! -s ${local_database_dir}/${1}.sql ]; then echo $"${1} database could not be saved" @@ -545,9 +550,16 @@ function backup_database_remote { if [ ! -d ${local_database_dir} ]; then mkdir -p ${local_database_dir} fi - keep_database_running + echo "Obtaining ${1} database backup" - mysqldump --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.sql + if [ ! $USE_POSTGRESQL ]; then + keep_database_running + mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.sql + else + USE_POSTGRESQL= + pg_dump ${1} > ${local_database_dir}/${1}.sql + fi + if [ -f ${local_database_dir}/${1}.sql ]; then if [ ! -s ${local_database_dir}/${1}.sql ]; then echo $"${1} database could not be saved" @@ -642,8 +654,13 @@ function restore_database_from_friend { rm -rf ${local_database_dir} exit 503 fi - keep_database_running - mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${1} -o < ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql) + if [ ! $USE_POSTGRESQL ]; then + keep_database_running + mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${1} -o < ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql) + else + USE_POSTGRESQL= + mysqlsuccess=$(sudo -u postgres psql $database_name < ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql) + fi if [ ! "$?" = "0" ]; then echo "$mysqlsuccess" exit 964 diff --git a/src/freedombone-utils-postgresql b/src/freedombone-utils-postgresql new file mode 100755 index 00000000..6a02a814 --- /dev/null +++ b/src/freedombone-utils-postgresql @@ -0,0 +1,139 @@ +#!/bin/bash +# +# .---. . . +# | | | +# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. +# | | (.-' (.-' ( | ( )| | | | )( )| | (.-' +# ' ' --' --' -' - -' ' ' -' -' -' ' - --' +# +# Freedom in the Cloud +# +# postgresql database functions +# +# License +# ======= +# +# Copyright (C) 2017 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +# Set this when calling backup and restore commands +USE_POSTGRESQL= + +function get_postgresql_password { + POSTGRESQL_PASSWORD=$(${PROJECT_NAME}-pass -u root -a postgresql) + if [[ "$POSTGRESQL_PASSWORD" == *'failed'* ]]; then + echo $'Could not obtain postgresql password' + exit 7835272 + fi +} + +function install_postgresql { + if [[ $(is_completed $FUNCNAME) == "1" ]]; then + return + fi + + function_check get_postgresql_password + get_postgresql_password + if [ ! $POSTGRESQL_PASSWORD ]; then + if [ -f $IMAGE_PASSWORD_FILE ]; then + POSTGRESQL_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)" + else + POSTGRESQL_PASSWORD="$(openssl rand -base64 32 | cut -c1-${MINIMUM_PASSWORD_LENGTH})" + fi + fi + ${PROJECT_NAME}-pass -u root -a postgresql -p "$POSTGRESQL_PASSWORD" + + apt-get -yq install postgresql postgresql-contrib postgresql-client + apt-get -yq remove --purge apache2-bin* + if [ -d /etc/apache2 ]; then + rm -rf /etc/apache2 + echo $'Removed Apache installation after postgresql install' + fi + + if [ ! -d /etc/postgresql ]; then + echo $"ERROR: postgresql does not appear to have installed. $CHECK_MESSAGE" + exit 78352 + fi + + if [ ! -f /usr/bin/psql ]; then + echo $"ERROR: psql command does not appear to have installed. $CHECK_MESSAGE" + exit 835290 + fi + + mark_completed $FUNCNAME +} + +function add_postgresql_user { + postgresql_username=$1 + postgresql_password=$2 + sudo -u postgres psql -c "create user $postgresql_username password 'postgresql_password'" +} + +function remove_postgresql_user { + postgresql_username=$1 + sudo -u postgres psql -c "drop user $postgresql_username" +} + +function remove_database_postgresql { + database_name="$1" + sudo -u postgres psql -c "drop database $database_name" +} + +function run_query_postgresql { + database_name=$1 + database_query=$2 + sudo -u postgres psql -d $database_name -c "$database_query" +} + +function run_query_postgresql_with_output { + database_name=$1 + database_query=$2 + output=$(sudo -u postgres psql -d $database_name -c << EOF +use $database_name; +$database_query +EOF +) + echo "$output" +} + +function initialise_database_postgresql { + database_name=$1 + database_file=$2 + sudo -u postgres psql $database_name < $database_file + if [ ! "$?" = "0" ]; then + exit 7238525 + fi +} + +function create_database_postgresql { + app_name="$1" + app_admin_password="$2" + app_admin_username=$3 + if [ ! -d $INSTALL_DIR ]; then + mkdir $INSTALL_DIR + fi + if [ ! $app_admin_username ]; then + app_admin_username=${app_name}admin + fi + + echo "create database ${app_name}; +CREATE USER '$app_admin_username@localhost' IDENTIFIED BY '${app_admin_password}'; +GRANT ALL PRIVILEGES ON ${app_name}.* TO '$app_admin_username@localhost'; +flush privileges; +quit" > $INSTALL_DIR/batch.sql + chmod 600 $INSTALL_DIR/batch.sql + sudo -u postgres psql -d $database_name --file=$INSTALL_DIR/batch.sql + shred -zu $INSTALL_DIR/batch.sql +} From 5e5153eeaf1ef16259e0ab4ae3ef2764a4b222ff Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 5 Nov 2017 16:21:13 +0000 Subject: [PATCH 02/36] Backup and restore of postgresql --- src/freedombone-backup-local | 23 ++++++++++++++ src/freedombone-backup-remote | 23 ++++++++++++++ src/freedombone-restore-local | 54 ++++++++++++++++++++++++++++++++ src/freedombone-restore-remote | 51 ++++++++++++++++++++++++++++++ src/freedombone-utils-backup | 15 ++++++--- src/freedombone-utils-postgresql | 9 ++++++ 6 files changed, 170 insertions(+), 5 deletions(-) diff --git a/src/freedombone-backup-local b/src/freedombone-backup-local index 4bbcf7b8..59e12d85 100755 --- a/src/freedombone-backup-local +++ b/src/freedombone-backup-local @@ -337,6 +337,28 @@ function backup_mariadb { fi } +function backup_postgresql { + if [ ! -d /etc/postgresql ]; then + return + fi + + temp_backup_dir=/root/temppostgresql + if [ ! -d $temp_backup_dir ]; then + mkdir $temp_backup_dir + fi + sudo -u postgres pg_dumpall --roles-only > $temp_backup_dir/postgresql.sql + if [ ! -s $temp_backup_dir/postgresql.sql ]; then + echo $"Unable to backup postgresql settings" + rm -rf $temp_backup_dir + umount $USB_MOUNT + rm -rf $USB_MOUNT + exit 684365 + fi + echo "$DATABASE_PASSWORD" > $temp_backup_dir/db + chmod 400 $temp_backup_dir/db + backup_directory_to_usb $temp_backup_dir postgresql +} + # has the remove option been set ? remove_option=$2 if [[ $1 == "remove" ]]; then @@ -355,6 +377,7 @@ backup_configfiles backup_blocklist backup_admin_readme backup_mariadb +backup_postgresql backup_extra_directories local backup_unmount_drive $USB_DRIVE $USB_MOUNT echo $"Backup to USB drive is complete. You can now unplug it." diff --git a/src/freedombone-backup-remote b/src/freedombone-backup-remote index e3fc870a..6b582549 100755 --- a/src/freedombone-backup-remote +++ b/src/freedombone-backup-remote @@ -336,6 +336,28 @@ function backup_mariadb { fi } +function backup_postgresql { + if [ ! -d /etc/postgresql ]; then + return + fi + + temp_backup_dir=/root/temppostgresql + if [ ! -d $temp_backup_dir ]; then + mkdir $temp_backup_dir + fi + sudo -u postgres pg_dumpall --roles-only > $temp_backup_dir/postgresql.sql + if [ ! -s $temp_backup_dir/postgresql.sql ]; then + echo $"Unable to backup postgresql settings" + rm -rf $temp_backup_dir + umount $USB_MOUNT + rm -rf $USB_MOUNT + exit 684365 + fi + echo "$DATABASE_PASSWORD" > $temp_backup_dir/db + chmod 400 $temp_backup_dir/db + backup_directory_to_friend $temp_backup_dir postgresql +} + # Returns the filename of a key share function get_key_share { no_of_shares=$1 @@ -410,6 +432,7 @@ if [[ $TEST_MODE == "no" ]]; then backup_web_server backup_admin_readme backup_mariadb + backup_postgresql backup_certs backup_mailing_list backup_apps remote diff --git a/src/freedombone-restore-local b/src/freedombone-restore-local index e41ea027..75c40db8 100755 --- a/src/freedombone-restore-local +++ b/src/freedombone-restore-local @@ -289,6 +289,59 @@ function restore_mariadb { fi } +function restore_postgresql { + if [[ $RESTORE_APP != 'all' ]]; then + if [[ $RESTORE_APP != 'postgresql' ]]; then + return + fi + fi + + if [[ $(is_completed install_postgresql) == "0" ]]; then + function_check install_postgresql + install_postgresql + fi + + if [ -d $USB_MOUNT/backup/postgresql ]; then + echo $"Restoring postgresql settings" + temp_restore_dir=/root/temppostgresql + restore_directory_from_usb $temp_restore_dir postgresql + + store_original_postgresql_password + + echo $'Obtaining original postgresql password' + db_pass=$(cat /root/.postgresqloriginal) + if [ ${#db_pass} -gt 0 ]; then + echo $"Restore the postgresql user table" + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}${temp_restore_dir}/postgresql.sql) + else + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}/postgresql.sql) + fi + if [ ! "$?" = "0" ]; then + echo $"Try again using the password obtained from backup" + db_pass=$(${PROJECT_NAME}-pass -u root -a postgresql) + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}${temp_restore_dir}/postgresql.sql) + else + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}/postgresql.sql) + fi + fi + if [ ! "$?" = "0" ]; then + echo "$mysqlsuccess" + set_user_permissions + backup_unmount_drive + exit 73825 + fi + echo $"Restarting database" + systemctl restart postgresql + echo $"Ensure postgresql handles authentication" + POSTGRESQL_PASSWORD=$(${PROJECT_NAME}-pass -u root -a postgresql) + DATABASE_PASSWORD=$(${PROJECT_NAME}-pass -u root -a postgresql) + fi + rm -rf $temp_restore_dir + fi +} + function restore_letsencrypt { if [[ $RESTORE_APP != 'all' ]]; then if [[ $RESTORE_APP != 'letsencrypt' ]]; then @@ -865,6 +918,7 @@ restore_configfiles same_admin_user restore_passwordstore restore_mariadb +restore_postgresql restore_letsencrypt restore_tor restore_mutt_settings diff --git a/src/freedombone-restore-remote b/src/freedombone-restore-remote index d4b302b2..6cc18f3b 100755 --- a/src/freedombone-restore-remote +++ b/src/freedombone-restore-remote @@ -255,6 +255,56 @@ function restore_mariadb { fi } +function restore_postgresql { + if [[ $RESTORE_APP != 'all' ]]; then + if [[ $RESTORE_APP != 'postgresql' ]]; then + return + fi + fi + + if [[ $(is_completed install_postgresql) == "0" ]]; then + function_check install_postgresql + install_postgresql + fi + + if [ -d $SERVER_DIRECTORY/backup/postgresql ]; then + echo $"Restoring Postgresql settings" + temp_restore_dir=/root/temppostgresql + restore_directory_from_friend $temp_restore_dir postgresql + + store_original_postgresql_password + + echo $'Obtaining Postgresql password' + db_pass=$(cat /root/.postgresqloriginal) + if [ ${#db_pass} -gt 0 ]; then + echo $"Restore the Postgresql user table" + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}${temp_restore_dir}/postgresql.sql) + else + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}/postgresql.sql) + fi + if [ ! "$?" = "0" ]; then + echo $"Try again using the password obtained from backup" + db_pass=$(${PROJECT_NAME}-pass -u root -a postgresql) + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}${temp_restore_dir}/postgresql.sql) + else + mysqlsuccess=$(sudo -u postgres pg_restore ${temp_restore_dir}/postgresql.sql) + fi + fi + if [ ! "$?" = "0" ]; then + echo "$mysqlsuccess" + exit 962 + fi + echo $"Restarting database" + systemctl restart postgresql + echo $"Ensure postgresql handles authentication" + POSTGRESQL_PASSWORD=$(${PROJECT_NAME}-pass -u root -a postgresql) + fi + rm -rf ${temp_restore_dir} + fi +} + function restore_letsencrypt { if [[ $RESTORE_APP != 'all' ]]; then if [[ $RESTORE_APP != 'letsencrypt' ]]; then @@ -769,6 +819,7 @@ restore_blocklist restore_configfiles restore_passwordstore restore_mariadb +restore_postgresql restore_letsencrypt restore_mutt_settings restore_gpg diff --git a/src/freedombone-utils-backup b/src/freedombone-utils-backup index cb0b4643..a66a6480 100755 --- a/src/freedombone-utils-backup +++ b/src/freedombone-utils-backup @@ -241,7 +241,7 @@ function backup_database_local_usb { mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.sql else USE_POSTGRESQL= - pg_dump ${1} > ${local_database_dir}/${1}.sql + sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.sql fi if [ -f ${local_database_dir}/${1}.sql ]; then if [ ! -s ${local_database_dir}/${1}.sql ]; then @@ -557,7 +557,7 @@ function backup_database_remote { mysqldump --lock-tables --password="$DATABASE_PASSWORD" ${1} > ${local_database_dir}/${1}.sql else USE_POSTGRESQL= - pg_dump ${1} > ${local_database_dir}/${1}.sql + sudo -u postgres pg_dump ${1} > ${local_database_dir}/${1}.sql fi if [ -f ${local_database_dir}/${1}.sql ]; then @@ -659,7 +659,7 @@ function restore_database_from_friend { mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${1} -o < ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql) else USE_POSTGRESQL= - mysqlsuccess=$(sudo -u postgres psql $database_name < ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql) + mysqlsuccess=$(sudo -u postgres pg_restore ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql) fi if [ ! "$?" = "0" ]; then echo "$mysqlsuccess" @@ -738,8 +738,13 @@ function restore_database { backup_unmount_drive exit 503 fi - keep_database_running - mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < $database_file) + if [ ! $USE_POSTGRESQL ]; then + keep_database_running + mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < $database_file) + else + USE_POSTGRESQL= + mysqlsuccess=$(sudo -u postgres pg_restore $database_file) + fi if [ ! "$?" = "0" ]; then echo "$mysqlsuccess" function_check set_user_permissions diff --git a/src/freedombone-utils-postgresql b/src/freedombone-utils-postgresql index 6a02a814..ba1faccb 100755 --- a/src/freedombone-utils-postgresql +++ b/src/freedombone-utils-postgresql @@ -31,6 +31,15 @@ # Set this when calling backup and restore commands USE_POSTGRESQL= +function store_original_postgresql_password { + if [ ! -f /root/.postgresqloriginal ]; then + echo $'Storing original postgresql password' + ORIGINAL_POSTGRESQL_PASSWORD=$(${PROJECT_NAME}-pass -u root -a postgresql) + # We can store this in plaintext because it will soon be of historical interest only + echo -n "$ORIGINAL_POSTGRESQL_PASSWORD" > /root/.postgresqloriginal + fi +} + function get_postgresql_password { POSTGRESQL_PASSWORD=$(${PROJECT_NAME}-pass -u root -a postgresql) if [[ "$POSTGRESQL_PASSWORD" == *'failed'* ]]; then From 37ce2a1f9b333ef425d36e0d5b2f6838926d3678 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 5 Nov 2017 16:22:44 +0000 Subject: [PATCH 03/36] Add postgresql as a restore option --- src/freedombone-controlpanel | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-controlpanel b/src/freedombone-controlpanel index 10029e06..dcc71f06 100755 --- a/src/freedombone-controlpanel +++ b/src/freedombone-controlpanel @@ -1084,6 +1084,7 @@ function restore_data_from_storage { utils_installed=(configfiles blocklist mariadb + postgresql letsencrypt passwords mutt From 9bc6c8f4e5fb4d33a116f230f166ca1afeac6e93 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 11:29:20 +0000 Subject: [PATCH 04/36] Pleroma backend app --- src/freedombone-app-gnusocial | 2 +- src/freedombone-app-pleroma | 678 +++++++++++++++++++++++++++ src/freedombone-app-postactiv | 2 +- src/freedombone-image-customise | 3 +- src/freedombone-utils-gnusocialtools | 18 +- src/freedombone-utils-postgresql | 14 +- 6 files changed, 703 insertions(+), 14 deletions(-) create mode 100755 src/freedombone-app-pleroma diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index 08fd5244..e1806cfa 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -363,7 +363,7 @@ function upgrade_gnusocial { gnusocial_hourly_script gnusocial $GNUSOCIAL_DOMAIN_NAME if [ -d $INSTALL_DIR/pleroma ]; then - upgrade_pleroma "$GNUSOCIAL_DOMAIN_NAME" "gnusocial" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE" + upgrade_pleroma_frontend "$GNUSOCIAL_DOMAIN_NAME" "gnusocial" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE" fi install_gnusocial_default_background "gnusocial" "$GNUSOCIAL_DOMAIN_NAME" chown -R www-data:www-data /var/www/${GNUSOCIAL_DOMAIN_NAME}/htdocs diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma new file mode 100755 index 00000000..a45626b8 --- /dev/null +++ b/src/freedombone-app-pleroma @@ -0,0 +1,678 @@ +#!/bin/bash +# +# .---. . . +# | | | +# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. +# | | (.-' (.-' ( | ( )| | | | )( )| | (.-' +# ' ' --' --' -' - -' ' ' -' -' -' ' - --' +# +# Freedom in the Cloud +# +# Pleroma backend application +# +# License +# ======= +# +# Copyright (C) 2017 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +VARIANTS='full full-vim social' + +IN_DEFAULT_INSTALL=0 +SHOW_ON_ABOUT=1 + +PLEROMA_DOMAIN_NAME= +PLEROMA_CODE= +PLEROMA_PORT=4000 +PLEROMA_ONION_PORT=8011 +PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git" +PLEROMA_COMMIT='7252f6b054dfdfac1f9bac77c442c5a1ebd898af' +PLEROMA_ADMIN_PASSWORD= + +PLEROMA_BACKGROUND_IMAGE_URL= + +PLEROMA_TITLE='Pleroma Server' + +# Number of months after which posts expire +PLEROMA_EXPIRE_MONTHS=3 + +pleroma_variables=(ONION_ONLY + PLEROMA_DOMAIN_NAME + PLEROMA_CODE + PLEROMA_WELCOME_MESSAGE + PLEROMA_BACKGROUND_IMAGE_URL + DDNS_PROVIDER + PLEROMA_TITLE + PLEROMA_EXPIRE_MONTHS + MY_EMAIL_ADDRESS + MY_USERNAME) + +function logging_on_pleroma { + echo -n '' +} + +function logging_off_pleroma { + echo -n '' +} + +function remove_user_pleroma { + remove_username="$1" + + ${PROJECT_NAME}-pass -u $remove_username --rmapp pleroma + + function_check get_completion_param + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + if [ -d /var/www/$PLEROMA_DOMAIN_NAME ]; then + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + php scripts/deleteprofile.php -n $remove_username -y + fi +} + +function add_user_pleroma { + new_username="$1" + new_user_password="$2" + + ${PROJECT_NAME}-pass -u $new_username -a pleroma -p "$new_user_password" + + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + if [ -d /var/www/${PLEROMA_DOMAIN_NAME}/htdocs ]; then + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + php scripts/registeruser.php -n $new_username -w "$new_user_password" -e "$new_username@$HOSTNAME" + ${PROJECT_NAME}-addemail -u $new_username -e "noreply@$PLEROMA_DOMAIN_NAME" -g pleroma --public no + echo '0' + else + echo '1' + fi +} + +function install_interactive_pleroma { + if [ ! $ONION_ONLY ]; then + ONION_ONLY='no' + fi + + if [[ $ONION_ONLY != "no" ]]; then + PLEROMA_DOMAIN_NAME='pleroma.local' + else + PLEROMA_DETAILS_COMPLETE= + while [ ! $PLEROMA_DETAILS_COMPLETE ] + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + dialog --backtitle $"Freedombone Configuration" \ + --title $"Pleroma Configuration" \ + --form $"\nPlease enter your Pleroma details. The background image URL can be left blank.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \ + $"Domain:" 1 1 "$(grep 'PLEROMA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \ + $"Title:" 2 1 "$(grep '$PLEROMA_TITLE' temp.cfg | awk -F '=' '{print $2}')" 2 25 255 255 \ + $"Background image URL:" 3 1 "$(grep '$PLEROMA_BACKGROUND_IMAGE_URL' temp.cfg | awk -F '=' '{print $2}')" 3 25 255 255 \ + $"Code:" 4 1 "$(grep 'PLEROMA_CODE' temp.cfg | awk -F '=' '{print $2}')" 4 25 33 255 \ + 2> $data + else + dialog --backtitle $"Freedombone Configuration" \ + --title $"Pleroma Configuration" \ + --form $"\nPlease enter your Pleroma details. The background image URL can be left blank.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 16 65 4 \ + $"Domain:" 1 1 "$(grep 'PLEROMA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \ + $"Title:" 2 1 "$(grep '$PLEROMA_TITLE' temp.cfg | awk -F '=' '{print $2}')" 2 25 255 255 \ + $"Background image URL:" 3 1 "$(grep '$PLEROMA_BACKGROUND_IMAGE_URL' temp.cfg | awk -F '=' '{print $2}')" 3 25 255 255 \ + 2> $data + fi + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + PLEROMA_DOMAIN_NAME=$(cat $data | sed -n 1p) + title=$(cat $data | sed -n 2p) + if [ ${#title} -gt 1 ]; then + PLEROMA_TITLE=$welcome_msg + fi + img_url=$(cat $data | sed -n 3p) + if [ ${#img_url} -gt 1 ]; then + PLEROMA_BACKGROUND_IMAGE_URL=$img_url + fi + if [ $PLEROMA_DOMAIN_NAME ]; then + if [[ $PLEROMA_DOMAIN_NAME == "$HUBZILLA_DOMAIN_NAME" ]]; then + PLEROMA_DOMAIN_NAME="" + fi + TEST_DOMAIN_NAME=$PLEROMA_DOMAIN_NAME + validate_domain_name + if [[ $TEST_DOMAIN_NAME != $PLEROMA_DOMAIN_NAME ]]; then + PLEROMA_DOMAIN_NAME= + dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 + else + if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + PLEROMA_CODE=$(cat $data | sed -n 4p) + validate_freedns_code "$PLEROMA_CODE" + if [ ! $VALID_CODE ]; then + PLEROMA_DOMAIN_NAME= + fi + fi + fi + fi + if [ $PLEROMA_DOMAIN_NAME ]; then + PLEROMA_DETAILS_COMPLETE="yes" + fi + done + + # remove any invalid characters + if [ ${#PLEROMA_TITLE} -gt 0 ]; then + new_title=$(echo "$PLEROMA_TITLE" | sed "s|'||g") + PLEROMA_TITLE="$new_title" + fi + + # save the results in the config file + write_config_param "PLEROMA_CODE" "$PLEROMA_CODE" + write_config_param "PLEROMA_TITLE" "$PLEROMA_TITLE" + write_config_param "PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_BACKGROUND_IMAGE_URL" + fi + write_config_param "PLEROMA_DOMAIN_NAME" "$PLEROMA_DOMAIN_NAME" + APP_INSTALLED=1 +} + +function change_password_pleroma { + curr_username="$1" + new_user_password="$2" + + #${PROJECT_NAME}-pass -u "$curr_username" -a pleroma -p "$new_user_password" +} + +function pleroma_create_database { + if [ -f $IMAGE_PASSWORD_FILE ]; then + PLEROMA_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)" + else + if [ ! $PLEROMA_ADMIN_PASSWORD ]; then + PLEROMA_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})" + fi + fi + if [ ! $PLEROMA_ADMIN_PASSWORD ]; then + return + fi + + add_postgresql_user pleroma "$PLEROMA_ADMIN_PASSWORD" encrypted + run_system_query_postgresql "GRANT ALL ON ALL tables IN SCHEMA public TO pleroma;" + run_system_query_postgresql "GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;" + + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + mix ecto.create + mix ecto.migrate +} + +function reconfigure_pleroma { + echo -n '' +} + +function pleroma_set_background_image { + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --title $"Pleroma" \ + --backtitle $"Freedombone Control Panel" \ + --inputbox $'Set a background image URL' 10 60 2>$data + sel=$? + case $sel in + 0) + temp_background=$(<$data) + if [ ${#temp_background} -gt 0 ]; then + PLEROMA_BACKGROUND_IMAGE_URL="$temp_background" + write_config_param "PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_BACKGROUND_IMAGE_URL" + if [[ $(pleroma_set_background_image_from_url "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" | tail -n 1) == "0" ]]; then + dialog --title $"Set Pleroma login background" \ + --msgbox $"The background image has been set" 6 60 + fi + fi + ;; + esac + rm $data +} + +function pleroma_set_title { + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --title $"Pleroma" \ + --backtitle $"Freedombone Control Panel" \ + --inputbox $'Set a title' 10 60 2>$data + sel=$? + case $sel in + 0) + new_title=$(<$data) + if [ ${#new_title} -gt 0 ]; then + PLEROMA_TITLE="$new_title" + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + write_config_param "PLEROMA_TITLE" "$PLEROMA_TITLE" + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs/static + sed -i "s|\"name\":.*|\"name\": \"${PLEROMA_TITLE}\",|g" config.json + dialog --title $"Set Pleroma title" \ + --msgbox $"The title has been set" 6 60 + fi + ;; + esac + rm $data +} + +function pleroma_set_expire_months { + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + read_config_param "PLEROMA_EXPIRE_MONTHS" + + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --title $"Pleroma" \ + --backtitle $"Freedombone Control Panel" \ + --inputbox $'Set an expiry period for posts in months. Anything older will be deleted. Lower values help to keep the database size small and as fast as possible.' 12 60 "$PLEROMA_EXPIRE_MONTHS" 2>$data + sel=$? + case $sel in + 0) + new_expiry_months=$(<$data) + if [ ${#new_expiry_months} -gt 0 ]; then + # should contain no spaces + if [[ "$new_expiry_months" == *" "* ]]; then + return + fi + # should be a number + re='^[0-9]+$' + if ! [[ $new_expiry_months =~ $re ]] ; then + return + fi + # set the new value + PLEROMA_EXPIRE_MONTHS=$new_expiry_months + write_config_param "PLEROMA_EXPIRE_MONTHS" "$PLEROMA_EXPIRE_MONTHS" + + # TODO + + dialog --title $"Set Pleroma post expiry period" \ + --msgbox $"Expiry period set to $PLEROMA_EXPIRE_MONTHS months" 6 60 + fi + ;; + esac + rm $data +} + +function configure_interactive_pleroma { + read_config_param PLEROMA_EXPIRE_MONTHS + while true + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Control Panel" \ + --title $"Pleroma" \ + --radiolist $"Choose an operation:" 13 70 4 \ + 1 $"Set a background image" off \ + 2 $"Set the title" off \ + 3 $"Set post expiry period (currently $PLEROMA_EXPIRE_MONTHS months)" off \ + 4 $"Exit" on 2> $data + sel=$? + case $sel in + 1) return;; + 255) return;; + esac + case $(cat $data) in + 1) pleroma_set_background_image;; + 2) pleroma_set_title;; + 3) pleroma_set_expire_months;; + 4) break;; + esac + rm $data + done +} + +function upgrade_pleroma { + echo -n '' +} + + +function backup_local_pleroma { + PLEROMA_DOMAIN_NAME='pleroma' + if grep -q "pleroma domain" $COMPLETION_FILE; then + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + fi + + function_check suspend_site + suspend_site ${PLEROMA_DOMAIN_NAME} + + source_directory=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + dest_directory=pleroma + backup_directory_to_usb $source_directory $dest_directory + + USE_POSTGRESQL=1 + function_check backup_database_to_usb + backup_database_to_usb pleroma + + function_check restart_site + restart_site +} + +function restore_local_pleroma { + if ! grep -q "pleroma domain" $COMPLETION_FILE; then + return + fi + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + if [ $PLEROMA_DOMAIN_NAME ]; then + echo $"Restoring pleroma" + temp_restore_dir=/root/temppleroma + pleroma_dir=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + + function_check pleroma_create_database + pleroma_create_database + + USE_POSTGRESQL=1 + restore_database pleroma + if [ -d $temp_restore_dir ]; then + rm -rf $temp_restore_dir + fi + + function_check restore_directory_from_usb + restore_directory_from_usb $temp_restore_dir pleroma + if [ -d $temp_restore_dir ]; then + chown -R www-data:www-data $pleroma_dir/static + rm -rf $temp_restore_dir + fi + + echo $"Restore of pleroma complete" + fi +} + +function backup_remote_pleroma { + PLEROMA_DOMAIN_NAME='pleroma' + if grep -q "pleroma domain" $COMPLETION_FILE; then + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + fi + + function_check suspend_site + suspend_site ${PLEROMA_DOMAIN_NAME} + + source_directory=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + dest_directory=pleroma + backup_directory_to_friend $source_directory $dest_directory + + USE_POSTGRESQL=1 + function_check backup_database_to_friend + backup_database_to_friend pleroma + + function_check restart_site + restart_site +} + +function restore_remote_pleroma { + if ! grep -q "pleroma domain" $COMPLETION_FILE; then + return + fi + PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") + if [ $PLEROMA_DOMAIN_NAME ]; then + echo $"Restoring pleroma" + temp_restore_dir=/root/temppleroma + pleroma_dir=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + + function_check pleroma_create_database + pleroma_create_database + + USE_POSTGRESQL=1 + function_check restore_database_from_friend + restore_database_from_friend pleroma + if [ -d $temp_restore_dir ]; then + rm -rf $temp_restore_dir + fi + + function_check restore_directory_from_friend + restore_directory_from_friend $temp_restore_dir pleroma + if [ -d $temp_restore_dir ]; then + chown -R www-data:www-data $pleroma_dir/static + rm -rf $temp_restore_dir + fi + + pleroma_update_after_restore pleroma ${PLEROMA_DOMAIN_NAME} + + echo $"Restore of pleroma complete" + fi +} + +function remove_pleroma { + if [ ${#PLEROMA_DOMAIN_NAME} -eq 0 ]; then + return + fi + systemctl stop pleroma + systemctl disable pleroma + rm /etc/systemd/system/pleroma.service + + function_check remove_nodejs + remove_nodejs pleroma-backend + + read_config_param "PLEROMA_DOMAIN_NAME" + read_config_param "MY_USERNAME" + echo "Removing $PLEROMA_DOMAIN_NAME" + nginx_dissite $PLEROMA_DOMAIN_NAME + remove_certs $PLEROMA_DOMAIN_NAME + + if [ -d /var/www/$PLEROMA_DOMAIN_NAME ]; then + rm -rf /var/www/$PLEROMA_DOMAIN_NAME + fi + if [ -f /etc/nginx/sites-available/$PLEROMA_DOMAIN_NAME ]; then + rm /etc/nginx/sites-available/$PLEROMA_DOMAIN_NAME + fi + function_check drop_database_postgresql + drop_database_postgresql + function_check remove_onion_service + remove_onion_service pleroma ${PLEROMA_ONION_PORT} + remove_app pleroma + remove_completion_param install_pleroma + sed -i '/pleroma/d' $COMPLETION_FILE + + function_check remove_ddns_domain + remove_ddns_domain $PLEROMA_DOMAIN_NAME +} + +function install_elixir { + apt-get -yq install wget build-essential + + if [ ! -d $INSTALL_DIR ]; then + mkdir -p $INSTALL_DIR + fi + + cd $INSTALL_DIR + erlang_package=erlang-solutions_1.0_all.deb + wget https://packages.erlang-solutions.com/$erlang_package + if [ ! -f $INSTALL_DIR/$erlang_package ]; then + exit 72853 + fi + dpkg -i $erlang_package + apt-get -yq update + apt-get -yq install esl-erlang + apt-get -yq install elixir + + if [ ! -f /usr/bin/mix ]; then + echo $'/usr/bin/mix not found after elixir installation' + exit 629352 + fi +} + +function install_pleroma { + if [ ! $ONION_ONLY ]; then + ONION_ONLY='no' + fi + + # We need elixir 1.4+ here, so the debian repo package won't do + install_elixir + + function_check install_nodejs + install_nodejs pleroma-backend + install_postgresql + + # get the repo + if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME ]; then + mkdir /var/www/$PLEROMA_DOMAIN_NAME + fi + if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME/htdocs ]; then + + if [ -d /repos/pleroma ]; then + mkdir /var/www/$PLEROMA_DOMAIN_NAME/htdocs + cp -r -p /repos/pleroma/. /var/www/$PLEROMA_DOMAIN_NAME/htdocs + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + git pull + else + function_check git_clone + git_clone $PLEROMA_REPO /var/www/$PLEROMA_DOMAIN_NAME/htdocs + fi + + if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME/htdocs ]; then + echo $'Unable to clone pleroma repo' + exit 783523 + fi + fi + + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + git checkout $PLEROMA_COMMIT -b $PLEROMA_COMMIT + set_completion_param "pleroma commit" "$PLEROMA_COMMIT" + chown -R www-data:www-data /var/www/$PLEROMA_DOMAIN_NAME/htdocs + + + # web config + function_check add_ddns_domain + add_ddns_domain $PLEROMA_DOMAIN_NAME + + PLEROMA_ONION_HOSTNAME=$(add_onion_service pleroma 80 ${PLEROMA_ONION_PORT}) + + pleroma_nginx_site=/etc/nginx/sites-available/$PLEROMA_DOMAIN_NAME + if [[ $ONION_ONLY == "no" ]]; then + function_check nginx_http_redirect + nginx_http_redirect $PLEROMA_DOMAIN_NAME "index index.html" + echo 'server {' >> $pleroma_nginx_site + echo ' listen 443 ssl;' >> $pleroma_nginx_site + echo ' listen [::]:443 ssl;' >> $pleroma_nginx_site + echo " server_name $PLEROMA_DOMAIN_NAME;" >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + function_check nginx_compress + nginx_compress $PLEROMA_DOMAIN_NAME + echo '' >> $pleroma_nginx_site + echo ' # Security' >> $pleroma_nginx_site + function_check nginx_ssl + nginx_ssl $PLEROMA_DOMAIN_NAME + + function_check nginx_disable_sniffing + nginx_disable_sniffing $PLEROMA_DOMAIN_NAME + + echo ' add_header Strict-Transport-Security max-age=15768000;' >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + echo ' # Logs' >> $pleroma_nginx_site + echo ' access_log /dev/null;' >> $pleroma_nginx_site + echo ' error_log /dev/null;' >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + echo " root /var/www/$PLEROMA_DOMAIN_NAME/htdocs;" >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + echo ' index index.html;' >> $pleroma_nginx_site + echo ' location / {' >> $pleroma_nginx_site + function_check nginx_limits + nginx_limits $PLEROMA_DOMAIN_NAME '15m' + echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site + echo ' }' >> $pleroma_nginx_site + echo ' include snippets/well-known.conf;' >> $pleroma_nginx_site + echo '}' >> $pleroma_nginx_site + else + echo -n '' > $pleroma_nginx_site + fi + echo 'server {' >> $pleroma_nginx_site + echo " listen 127.0.0.1:$PLEROMA_ONION_PORT default_server;" >> $pleroma_nginx_site + echo " server_name $PLEROMA_ONION_HOSTNAME;" >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + function_check nginx_compress + nginx_compress $PLEROMA_DOMAIN_NAME + echo '' >> $pleroma_nginx_site + function_check nginx_disable_sniffing + nginx_disable_sniffing $PLEROMA_DOMAIN_NAME + echo '' >> $pleroma_nginx_site + echo ' # Logs' >> $pleroma_nginx_site + echo ' access_log /dev/null;' >> $pleroma_nginx_site + echo ' error_log /dev/null;' >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + echo ' # Root' >> $pleroma_nginx_site + echo " root /var/www/$PLEROMA_DOMAIN_NAME/htdocs;" >> $pleroma_nginx_site + echo '' >> $pleroma_nginx_site + echo ' index index.html;' >> $pleroma_nginx_site + echo ' location / {' >> $pleroma_nginx_site + function_check nginx_limits + nginx_limits $PLEROMA_DOMAIN_NAME '15m' + echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site + echo ' }' >> $pleroma_nginx_site + echo ' include snippets/well-known.conf;' >> $pleroma_nginx_site + echo '}' >> $pleroma_nginx_site + + function_check create_site_certificate + create_site_certificate $PLEROMA_DOMAIN_NAME 'yes' + + function_check nginx_ensite + nginx_ensite $PLEROMA_DOMAIN_NAME + + systemctl restart postgresql + systemctl restart nginx + + ${PROJECT_NAME}-pass -u $MY_USERNAME -a pleroma -p "$PLEROMA_ADMIN_PASSWORD" + + set_completion_param "pleroma domain" "$PLEROMA_DOMAIN_NAME" + + + # back end + useradd -d /var/www/$PLEROMA_DOMAIN_NAME/htdocs/ -s /bin/false pleroma + adduser pleroma www-data + + cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + mix deps.get + + function_check pleroma_create_database + pleroma_create_database + + pleroma_secret=config/dev.secret.exs + cp config/dev.exs $pleroma_secret + sed -i "s|username:.*|username: \"pleroma\",|g" $pleroma_secret + sed -i "s|password:.*|password: \"$PLEROMA_ADMIN_PASSWORD\",|g" $pleroma_secret + sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret + sed -i "/config :pleroma, Pleroma.Web.Endpoint/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]," $pleroma_secret + + pleroma_config=/var/www/$PLEROMA_DOMAIN_NAME/htdocs/config/config.exs + sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config + sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config + + # front end + install_pleroma_front_end "pleroma" "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" + install_gnusocial_default_background "gnusocial" "$PLEROMA_DOMAIN_NAME" + sed -i 's|"theme":.*|"theme": "base16-apathy.css",|g' /var/www/${PLEROMA_DOMAIN_NAME}/htdocs/static/config.json + + if [ $PLEROMA_BACKGROUND_IMAGE_URL ]; then + pleroma_set_background_image_from_url "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" + fi + + + # daemon + echo '[Unit]' > /etc/systemd/system/pleroma.service + echo 'Description=Pleroma social network' >> /etc/systemd/system/pleroma.service + echo 'After=network.target postgresql.service' >> /etc/systemd/system/pleroma.service + echo '' >> /etc/systemd/system/pleroma.service + echo '[Service]' >> /etc/systemd/system/pleroma.service + echo 'User=pleroma' >> /etc/systemd/system/pleroma.service + echo "WorkingDirectory=/var/www/$PLEROMA_DOMAIN_NAME/htdocs/pleroma" + echo "Environment=\"HOME=/var/www/$PLEROMA_DOMAIN_NAME/htdocs\"" >> /etc/systemd/system/pleroma.service + echo 'ExecStart=/usr/bin/mix phx.server' >> /etc/systemd/system/pleroma.service + echo 'ExecReload=/bin/kill $MAINPID' >> /etc/systemd/system/pleroma.service + echo 'KillMode=process' >> /etc/systemd/system/pleroma.service + echo 'Restart=on-failure' >> /etc/systemd/system/pleroma.service + echo '' >> /etc/systemd/system/pleroma.service + echo '[Install]' >> /etc/systemd/system/pleroma.service + echo 'WantedBy=multi-user.target' >> /etc/systemd/system/pleroma.service + echo 'Alias=pleroma.service' >> /etc/systemd/system/pleroma.service + systemctl daemon-reload + systemctl enable pleroma + systemctl start pleroma + + APP_INSTALLED=1 +} + +# NOTE: deliberately there is no "exit 0" diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv index 86bb8736..6e69845d 100755 --- a/src/freedombone-app-postactiv +++ b/src/freedombone-app-postactiv @@ -378,7 +378,7 @@ function upgrade_postactiv { gnusocial_block_user_script gnusocial_block_domain_script postactiv "$POSTACTIV_DOMAIN_NAME" - upgrade_pleroma "$POSTACTIV_DOMAIN_NAME" "postactiv" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE" + upgrade_pleroma_frontend "$POSTACTIV_DOMAIN_NAME" "postactiv" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE" postactiv_customise_logo install_gnusocial_default_background "postactiv" "$POSTACTIV_DOMAIN_NAME" chown -R www-data:www-data /var/www/${POSTACTIV_DOMAIN_NAME}/htdocs diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 41fae403..0eebf973 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1574,9 +1574,10 @@ function image_preinstall_repos { git clone $ETHERPAD_REPO $rootdir/repos/etherpad git clone $FRIENDICA_REPO $rootdir/repos/friendica git clone $GNUSOCIAL_REPO $rootdir/repos/gnusocial + git clone $PLEROMA_REPO $rootdir/repos/pleroma git clone $GNUSOCIAL_MARKDOWN_REPO $rootdir/repos/gnusocial-markdown #git clone $QVITTER_THEME_REPO $rootdir/repos/qvitter - git clone $PLEROMA_REPO $rootdir/repos/pleroma + git clone $PLEROMA_FRONTEND_REPO $rootdir/repos/pleroma-fe #git clone $POSTACTIV_REPO $rootdir/repos/postactiv git clone $SHARINGS_REPO $rootdir/repos/sharings git clone $HTMLY_REPO $rootdir/repos/htmly diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index 231238a4..7a2ac329 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -32,8 +32,8 @@ QVITTER_THEME_REPO="https://github.com/bashrc/Qvitter" QVITTER_THEME_COMMIT='c6f09bda4e45be4290cf7409fa5efb4420538032' -PLEROMA_REPO="https://gitgud.io/lambadalambda/pleroma-fe" -PLEROMA_COMMIT='cbe652f2d94d81fa54a37378b7ff014c4391ca5e' +PLEROMA_FRONTEND_REPO="https://gitgud.io/lambadalambda/pleroma-fe" +PLEROMA_FRONTEND_COMMIT='cbe652f2d94d81fa54a37378b7ff014c4391ca5e' SHARINGS_REPO="http://github.com/bashrc/Sharings" SHARINGS_COMMIT='0d30fe7d153c7ab44e8459970b8f2b5dec06e43c' @@ -284,14 +284,14 @@ function install_pleroma_front_end { if [ ! -d $INSTALL_DIR/pleroma ]; then - if [ -d /repos/pleroma ]; then + if [ -d /repos/pleroma-fe ]; then mkdir -p $INSTALL_DIR/pleroma - cp -r -p /repos/pleroma/. $INSTALL_DIR/pleroma + cp -r -p /repos/pleroma-fe/. $INSTALL_DIR/pleroma cd $INSTALL_DIR/pleroma git pull else function_check git_clone - git_clone $PLEROMA_REPO $INSTALL_DIR/pleroma + git_clone $PLEROMA_FRONTEND_REPO $INSTALL_DIR/pleroma fi if [ ! -d $INSTALL_DIR/pleroma ]; then @@ -301,8 +301,8 @@ function install_pleroma_front_end { fi cd $INSTALL_DIR/pleroma - git checkout $PLEROMA_COMMIT -b $PLEROMA_COMMIT - set_completion_param "${app_name} pleroma commit" "$PLEROMA_COMMIT" + git checkout $PLEROMA_FRONTEND_COMMIT -b $PLEROMA_FRONTEND_COMMIT + set_completion_param "${app_name} pleroma commit" "$PLEROMA_FRONTEND_COMMIT" if [ -d $INSTALL_DIR/pleroma/node_modules ]; then rm -rf $INSTALL_DIR/pleroma/node_modules @@ -348,14 +348,14 @@ function install_pleroma_front_end { chown -R www-data:www-data /var/www/${pleroma_domain}/htdocs } -function upgrade_pleroma { +function upgrade_pleroma_frontend { domain_name="$1" app_name="$2" background_url="$3" title="$4" if [ -d $INSTALL_DIR/pleroma ]; then - set_repo_commit $INSTALL_DIR/pleroma "${app_name} pleroma commit" "$PLEROMA_COMMIT" $PLEROMA_REPO + set_repo_commit $INSTALL_DIR/pleroma "${app_name} pleroma commit" "$PLEROMA_FRONTEND_COMMIT" $PLEROMA_FRONTEND_REPO cd $INSTALL_DIR/pleroma yarn npm run build diff --git a/src/freedombone-utils-postgresql b/src/freedombone-utils-postgresql index ba1faccb..b92993c8 100755 --- a/src/freedombone-utils-postgresql +++ b/src/freedombone-utils-postgresql @@ -87,7 +87,12 @@ function install_postgresql { function add_postgresql_user { postgresql_username=$1 postgresql_password=$2 - sudo -u postgres psql -c "create user $postgresql_username password 'postgresql_password'" + if [[ "$3" != 'encrypt'* ]]; then + sudo -u postgres psql -c "create user $postgresql_username password '$postgresql_password';" + else + sudo -u postgres psql -c "create user $postgresql_username;" + sudo -u postgres psql -c "ALTER user $postgresql_username with encrypted password '$postgresql_password';" + fi } function remove_postgresql_user { @@ -95,11 +100,16 @@ function remove_postgresql_user { sudo -u postgres psql -c "drop user $postgresql_username" } -function remove_database_postgresql { +function drop_database_postgresql { database_name="$1" sudo -u postgres psql -c "drop database $database_name" } +function run_system_query_postgresql { + query=$1 + sudo -u postgres psql -c "$query" +} + function run_query_postgresql { database_name=$1 database_query=$2 From 0c78e12bf188508d96b2429840757f9f91211dbc Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 11:38:58 +0000 Subject: [PATCH 05/36] mix is local --- src/freedombone-app-pleroma | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index a45626b8..1a3e2425 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -490,8 +490,8 @@ function install_elixir { apt-get -yq install esl-erlang apt-get -yq install elixir - if [ ! -f /usr/bin/mix ]; then - echo $'/usr/bin/mix not found after elixir installation' + if [ ! -f /usr/local/bin/mix ]; then + echo $'/usr/local/bin/mix not found after elixir installation' exit 629352 fi } @@ -660,7 +660,7 @@ function install_pleroma { echo 'User=pleroma' >> /etc/systemd/system/pleroma.service echo "WorkingDirectory=/var/www/$PLEROMA_DOMAIN_NAME/htdocs/pleroma" echo "Environment=\"HOME=/var/www/$PLEROMA_DOMAIN_NAME/htdocs\"" >> /etc/systemd/system/pleroma.service - echo 'ExecStart=/usr/bin/mix phx.server' >> /etc/systemd/system/pleroma.service + echo 'ExecStart=/usr/local/bin/mix phx.server' >> /etc/systemd/system/pleroma.service echo 'ExecReload=/bin/kill $MAINPID' >> /etc/systemd/system/pleroma.service echo 'KillMode=process' >> /etc/systemd/system/pleroma.service echo 'Restart=on-failure' >> /etc/systemd/system/pleroma.service From ecac6e9e7f3e6432f805b58ebf103850e7c703bb Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 12:15:56 +0000 Subject: [PATCH 06/36] Pleroma social type --- src/freedombone-image-customise | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 0eebf973..d34aa9b3 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1553,18 +1553,25 @@ function image_preinstall_repos { git clone $INADYN_REPO $rootdir/repos/inadyn git clone $TOMB_REPO $rootdir/repos/tomb + if [[ $SOCIALINSTANCE == "pleroma" ]]; then + git clone $PLEROMA_REPO $rootdir/repos/pleroma + #git clone $QVITTER_THEME_REPO $rootdir/repos/qvitter + git clone $PLEROMA_FRONTEND_REPO $rootdir/repos/pleroma-fe + return + fi + if [[ $SOCIALINSTANCE == "gnusocial" ]]; then git clone $GNUSOCIAL_REPO $rootdir/repos/gnusocial git clone $GNUSOCIAL_MARKDOWN_REPO $rootdir/repos/gnusocial-markdown #git clone $QVITTER_THEME_REPO $rootdir/repos/qvitter - git clone $PLEROMA_REPO $rootdir/repos/pleroma + git clone $PLEROMA_FRONTEND_REPO $rootdir/repos/pleroma-fe return fi if [[ $SOCIALINSTANCE == "postactiv" ]]; then git clone $GNUSOCIAL_MARKDOWN_REPO $rootdir/repos/gnusocial-markdown #git clone $QVITTER_THEME_REPO $rootdir/repos/qvitter - git clone $PLEROMA_REPO $rootdir/repos/pleroma + git clone $PLEROMA_FRONTEND_REPO $rootdir/repos/pleroma-fe #git clone $POSTACTIV_REPO $rootdir/repos/postactiv return fi From b424e8899e8ad66fca70d1467d4eb24dadaa708b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 12:41:26 +0000 Subject: [PATCH 07/36] Change pleroma directory --- src/freedombone-app-pleroma | 98 ++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 51 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 1a3e2425..124e11bd 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -40,6 +40,7 @@ PLEROMA_ONION_PORT=8011 PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git" PLEROMA_COMMIT='7252f6b054dfdfac1f9bac77c442c5a1ebd898af' PLEROMA_ADMIN_PASSWORD= +PLEROMA_DIR=/etc/pleroma PLEROMA_BACKGROUND_IMAGE_URL= @@ -71,13 +72,6 @@ function remove_user_pleroma { remove_username="$1" ${PROJECT_NAME}-pass -u $remove_username --rmapp pleroma - - function_check get_completion_param - PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") - if [ -d /var/www/$PLEROMA_DOMAIN_NAME ]; then - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs - php scripts/deleteprofile.php -n $remove_username -y - fi } function add_user_pleroma { @@ -86,15 +80,7 @@ function add_user_pleroma { ${PROJECT_NAME}-pass -u $new_username -a pleroma -p "$new_user_password" - PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") - if [ -d /var/www/${PLEROMA_DOMAIN_NAME}/htdocs ]; then - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs - php scripts/registeruser.php -n $new_username -w "$new_user_password" -e "$new_username@$HOSTNAME" - ${PROJECT_NAME}-addemail -u $new_username -e "noreply@$PLEROMA_DOMAIN_NAME" -g pleroma --public no - echo '0' - else - echo '1' - fi + echo '0' } function install_interactive_pleroma { @@ -204,7 +190,7 @@ function pleroma_create_database { run_system_query_postgresql "GRANT ALL ON ALL tables IN SCHEMA public TO pleroma;" run_system_query_postgresql "GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;" - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + cd $PLEROMA_DIR mix ecto.create mix ecto.migrate } @@ -341,7 +327,7 @@ function backup_local_pleroma { function_check suspend_site suspend_site ${PLEROMA_DOMAIN_NAME} - source_directory=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + source_directory=$PLEROMA_DIR dest_directory=pleroma backup_directory_to_usb $source_directory $dest_directory @@ -361,7 +347,7 @@ function restore_local_pleroma { if [ $PLEROMA_DOMAIN_NAME ]; then echo $"Restoring pleroma" temp_restore_dir=/root/temppleroma - pleroma_dir=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + pleroma_dir=$PLEROMA_DIR function_check pleroma_create_database pleroma_create_database @@ -392,7 +378,7 @@ function backup_remote_pleroma { function_check suspend_site suspend_site ${PLEROMA_DOMAIN_NAME} - source_directory=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + source_directory=$PLEROMA_DIR dest_directory=pleroma backup_directory_to_friend $source_directory $dest_directory @@ -412,7 +398,7 @@ function restore_remote_pleroma { if [ $PLEROMA_DOMAIN_NAME ]; then echo $"Restoring pleroma" temp_restore_dir=/root/temppleroma - pleroma_dir=/var/www/${PLEROMA_DOMAIN_NAME}/htdocs + pleroma_dir=$PLEROMA_DIR function_check pleroma_create_database pleroma_create_database @@ -445,6 +431,8 @@ function remove_pleroma { systemctl disable pleroma rm /etc/systemd/system/pleroma.service + apt-get -yq remove esl-erlang elixir + function_check remove_nodejs remove_nodejs pleroma-backend @@ -460,13 +448,17 @@ function remove_pleroma { if [ -f /etc/nginx/sites-available/$PLEROMA_DOMAIN_NAME ]; then rm /etc/nginx/sites-available/$PLEROMA_DOMAIN_NAME fi + if [ -d $PLEROMA_DIR ]; then + rm -rf $PLEROMA_DIR + fi function_check drop_database_postgresql drop_database_postgresql function_check remove_onion_service remove_onion_service pleroma ${PLEROMA_ONION_PORT} remove_app pleroma remove_completion_param install_pleroma - sed -i '/pleroma/d' $COMPLETION_FILE + sed -i '/pleroma domain/d' $COMPLETION_FILE + sed -i '/pleroma commit/d' $COMPLETION_FILE function_check remove_ddns_domain remove_ddns_domain $PLEROMA_DOMAIN_NAME @@ -508,32 +500,40 @@ function install_pleroma { install_nodejs pleroma-backend install_postgresql - # get the repo if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME ]; then mkdir /var/www/$PLEROMA_DOMAIN_NAME fi - if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME/htdocs ]; then - - if [ -d /repos/pleroma ]; then - mkdir /var/www/$PLEROMA_DOMAIN_NAME/htdocs - cp -r -p /repos/pleroma/. /var/www/$PLEROMA_DOMAIN_NAME/htdocs - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs - git pull - else - function_check git_clone - git_clone $PLEROMA_REPO /var/www/$PLEROMA_DOMAIN_NAME/htdocs - fi - - if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME/htdocs ]; then - echo $'Unable to clone pleroma repo' - exit 783523 - fi + if [ -d $PLEROMA_DIR ]; then + rm -rf $PLEROMA_DIR fi - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + + # create user + useradd -d $PLEROMA_DIR -s /bin/false pleroma + adduser pleroma www-data + + # get the repo + if [ -d /repos/pleroma ]; then + mkdir -p $PLEROMA_DIR + cp -r -p /repos/pleroma/. $PLEROMA_DIR + cd $PLEROMA_DIR + git pull + else + function_check git_clone + git_clone $PLEROMA_REPO $PLEROMA_DIR + fi + + if [ ! -d $PLEROMA_DIR ]; then + echo $'Unable to clone pleroma backend repo' + exit 783523 + fi + + + # checkout the commit + cd $PLEROMA_DIR git checkout $PLEROMA_COMMIT -b $PLEROMA_COMMIT set_completion_param "pleroma commit" "$PLEROMA_COMMIT" - chown -R www-data:www-data /var/www/$PLEROMA_DOMAIN_NAME/htdocs + chown -R pleroma:pleroma $PLEROMA_DIR # web config @@ -567,7 +567,7 @@ function install_pleroma { echo ' access_log /dev/null;' >> $pleroma_nginx_site echo ' error_log /dev/null;' >> $pleroma_nginx_site echo '' >> $pleroma_nginx_site - echo " root /var/www/$PLEROMA_DOMAIN_NAME/htdocs;" >> $pleroma_nginx_site + echo " root $PLEROMA_DIR;" >> $pleroma_nginx_site echo '' >> $pleroma_nginx_site echo ' index index.html;' >> $pleroma_nginx_site echo ' location / {' >> $pleroma_nginx_site @@ -594,8 +594,7 @@ function install_pleroma { echo ' access_log /dev/null;' >> $pleroma_nginx_site echo ' error_log /dev/null;' >> $pleroma_nginx_site echo '' >> $pleroma_nginx_site - echo ' # Root' >> $pleroma_nginx_site - echo " root /var/www/$PLEROMA_DOMAIN_NAME/htdocs;" >> $pleroma_nginx_site + echo " root $PLEROMA_DIR;" >> $pleroma_nginx_site echo '' >> $pleroma_nginx_site echo ' index index.html;' >> $pleroma_nginx_site echo ' location / {' >> $pleroma_nginx_site @@ -621,10 +620,7 @@ function install_pleroma { # back end - useradd -d /var/www/$PLEROMA_DOMAIN_NAME/htdocs/ -s /bin/false pleroma - adduser pleroma www-data - - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs + cd $PLEROMA_DIR mix deps.get function_check pleroma_create_database @@ -637,7 +633,7 @@ function install_pleroma { sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret sed -i "/config :pleroma, Pleroma.Web.Endpoint/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]," $pleroma_secret - pleroma_config=/var/www/$PLEROMA_DOMAIN_NAME/htdocs/config/config.exs + pleroma_config=config/config.exs sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config @@ -658,8 +654,8 @@ function install_pleroma { echo '' >> /etc/systemd/system/pleroma.service echo '[Service]' >> /etc/systemd/system/pleroma.service echo 'User=pleroma' >> /etc/systemd/system/pleroma.service - echo "WorkingDirectory=/var/www/$PLEROMA_DOMAIN_NAME/htdocs/pleroma" - echo "Environment=\"HOME=/var/www/$PLEROMA_DOMAIN_NAME/htdocs\"" >> /etc/systemd/system/pleroma.service + echo "WorkingDirectory=$PLEROMA_DIR" + echo "Environment=\"HOME=$PLEROMA_DIR\"" >> /etc/systemd/system/pleroma.service echo 'ExecStart=/usr/local/bin/mix phx.server' >> /etc/systemd/system/pleroma.service echo 'ExecReload=/bin/kill $MAINPID' >> /etc/systemd/system/pleroma.service echo 'KillMode=process' >> /etc/systemd/system/pleroma.service From 7994cf979a711031806c8fea100f1ffc3f605ca4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 13:10:09 +0000 Subject: [PATCH 08/36] Remove pleroma user --- src/freedombone-app-pleroma | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 124e11bd..908de921 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -361,7 +361,7 @@ function restore_local_pleroma { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir pleroma if [ -d $temp_restore_dir ]; then - chown -R www-data:www-data $pleroma_dir/static + chown -R pleroma:pleroma $pleroma_dir rm -rf $temp_restore_dir fi @@ -413,7 +413,7 @@ function restore_remote_pleroma { function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir pleroma if [ -d $temp_restore_dir ]; then - chown -R www-data:www-data $pleroma_dir/static + chown -R pleroma:pleroma $pleroma_dir rm -rf $temp_restore_dir fi @@ -431,6 +431,7 @@ function remove_pleroma { systemctl disable pleroma rm /etc/systemd/system/pleroma.service + userdel pleroma apt-get -yq remove esl-erlang elixir function_check remove_nodejs @@ -510,7 +511,6 @@ function install_pleroma { # create user useradd -d $PLEROMA_DIR -s /bin/false pleroma - adduser pleroma www-data # get the repo if [ -d /repos/pleroma ]; then From 5ae8b62849d1a1e62f7ddccfbac47bc6eb38c60f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 13:19:19 +0000 Subject: [PATCH 09/36] Add pleroma user after directory creation --- src/freedombone-app-pleroma | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 908de921..4379295b 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -509,9 +509,6 @@ function install_pleroma { fi - # create user - useradd -d $PLEROMA_DIR -s /bin/false pleroma - # get the repo if [ -d /repos/pleroma ]; then mkdir -p $PLEROMA_DIR @@ -529,6 +526,10 @@ function install_pleroma { fi + # create user + useradd -d $PLEROMA_DIR -s /bin/false pleroma + + # checkout the commit cd $PLEROMA_DIR git checkout $PLEROMA_COMMIT -b $PLEROMA_COMMIT From f449878573ee1e6c2bdbf78959d1f5362c9cf0a1 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 13:36:51 +0000 Subject: [PATCH 10/36] Setting title --- src/freedombone-app-pleroma | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 4379295b..6178e31f 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -240,6 +240,8 @@ function pleroma_set_title { write_config_param "PLEROMA_TITLE" "$PLEROMA_TITLE" cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs/static sed -i "s|\"name\":.*|\"name\": \"${PLEROMA_TITLE}\",|g" config.json + sed -i "s|name: .*|name: \"${PLEROMA_TITLE}\",|g" $PLEROMA_DIR/config/config.exs + systemctl restart pleroma dialog --title $"Set Pleroma title" \ --msgbox $"The title has been set" 6 60 fi From b783cf465d9511152794b5bda303797c3f902a47 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 13:52:00 +0000 Subject: [PATCH 11/36] Move repo if needed --- src/freedombone-app-pleroma | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 6178e31f..1918ab6b 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -512,6 +512,9 @@ function install_pleroma { # get the repo + if [ -f /repos/pleroma/index.html ]; then + mv /repos/pleroma /repos/pleroma-fe + fi if [ -d /repos/pleroma ]; then mkdir -p $PLEROMA_DIR cp -r -p /repos/pleroma/. $PLEROMA_DIR @@ -578,7 +581,7 @@ function install_pleroma { nginx_limits $PLEROMA_DOMAIN_NAME '15m' echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site echo ' }' >> $pleroma_nginx_site - echo ' include snippets/well-known.conf;' >> $pleroma_nginx_site + echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site echo '}' >> $pleroma_nginx_site else echo -n '' > $pleroma_nginx_site @@ -605,7 +608,7 @@ function install_pleroma { nginx_limits $PLEROMA_DOMAIN_NAME '15m' echo " proxy_pass http://localhost:$PLEROMA_PORT;" >> $pleroma_nginx_site echo ' }' >> $pleroma_nginx_site - echo ' include snippets/well-known.conf;' >> $pleroma_nginx_site + echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site echo '}' >> $pleroma_nginx_site function_check create_site_certificate From 19428773accc578fc103d09ec899682b0dd34102 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 14:15:33 +0000 Subject: [PATCH 12/36] Set pleroma password --- src/freedombone-app-pleroma | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 1918ab6b..d771eeb1 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -190,9 +190,21 @@ function pleroma_create_database { run_system_query_postgresql "GRANT ALL ON ALL tables IN SCHEMA public TO pleroma;" run_system_query_postgresql "GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;" + pleroma_secret=config/dev.secret.exs + cp config/dev.exs $pleroma_secret + sed -i "s|username:.*|username: \"pleroma\",|g" $pleroma_secret + sed -i "s|password:.*|password: \"$PLEROMA_ADMIN_PASSWORD\",|g" $pleroma_secret + sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret + sed -i "/config :pleroma, Pleroma.Web.Endpoint/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]," $pleroma_secret + + pleroma_config=config/config.exs + sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config + sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config + cd $PLEROMA_DIR - mix ecto.create - mix ecto.migrate + mix local.rebar --force + mix ecto.create --force + mix ecto.migrate --force } function reconfigure_pleroma { @@ -620,28 +632,18 @@ function install_pleroma { systemctl restart postgresql systemctl restart nginx - ${PROJECT_NAME}-pass -u $MY_USERNAME -a pleroma -p "$PLEROMA_ADMIN_PASSWORD" - set_completion_param "pleroma domain" "$PLEROMA_DOMAIN_NAME" # back end cd $PLEROMA_DIR - mix deps.get + mix local.hex --force + mix deps.get --force function_check pleroma_create_database pleroma_create_database - pleroma_secret=config/dev.secret.exs - cp config/dev.exs $pleroma_secret - sed -i "s|username:.*|username: \"pleroma\",|g" $pleroma_secret - sed -i "s|password:.*|password: \"$PLEROMA_ADMIN_PASSWORD\",|g" $pleroma_secret - sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret - sed -i "/config :pleroma, Pleroma.Web.Endpoint/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]," $pleroma_secret - - pleroma_config=config/config.exs - sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config - sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config + ${PROJECT_NAME}-pass -u $MY_USERNAME -a pleroma -p "$PLEROMA_ADMIN_PASSWORD" # front end install_pleroma_front_end "pleroma" "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" From 9a734bcd98289449f66472c9209f4137bfab8546 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 14:20:56 +0000 Subject: [PATCH 13/36] Tests for failure --- src/freedombone-app-pleroma | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index d771eeb1..3d10df97 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -203,8 +203,20 @@ function pleroma_create_database { cd $PLEROMA_DIR mix local.rebar --force + if [ ! "$?" = "0" ]; then + echo $'mix local.rebar failed' + exit 73528562 + fi mix ecto.create --force + if [ ! "$?" = "0" ]; then + echo $'mix ecto.create failed' + exit 83653582 + fi mix ecto.migrate --force + if [ ! "$?" = "0" ]; then + echo $'mix ecto.migrate failed' + exit 73752573 + fi } function reconfigure_pleroma { @@ -638,7 +650,15 @@ function install_pleroma { # back end cd $PLEROMA_DIR mix local.hex --force + if [ ! "$?" = "0" ]; then + echo $'mix local.hex failed' + exit 1745673 + fi mix deps.get --force + if [ ! "$?" = "0" ]; then + echo $'mix deps.get failed' + exit 7325733 + fi function_check pleroma_create_database pleroma_create_database From 35bd3d34a50b1dd071a54e58ae10c37776157c79 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 14:43:38 +0000 Subject: [PATCH 14/36] Move pleroma frontend to backend directory --- src/freedombone-app-gnusocial | 4 +-- src/freedombone-app-pleroma | 46 +++++++++++++++++----------- src/freedombone-app-postactiv | 4 +-- src/freedombone-utils-gnusocialtools | 40 +++++++++++++++--------- 4 files changed, 58 insertions(+), 36 deletions(-) diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index e1806cfa..78717c23 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -232,7 +232,7 @@ function gnusocial_set_background_image { if [ ${#temp_background} -gt 0 ]; then GNUSOCIAL_BACKGROUND_IMAGE_URL="$temp_background" write_config_param "GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" - if [[ $(pleroma_set_background_image_from_url "$GNUSOCIAL_DOMAIN_NAME" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE" | tail -n 1) == "0" ]]; then + if [[ $(pleroma_set_background_image_from_url /var/www/$GNUSOCIAL_DOMAIN_NAME/htdocs "$GNUSOCIAL_DOMAIN_NAME" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE" | tail -n 1) == "0" ]]; then dialog --title $"Set GNU Social login background" \ --msgbox $"The background image has been set" 6 60 fi @@ -924,7 +924,7 @@ function install_gnusocial { gnusocial_use_qvitter gnusocial if [ $GNUSOCIAL_BACKGROUND_IMAGE_URL ]; then - pleroma_set_background_image_from_url "$GNUSOCIAL_DOMAIN_NAME" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE" + pleroma_set_background_image_from_url /var/www/$GNUSOCIAL_DOMAIN_NAME/htdocs "$GNUSOCIAL_DOMAIN_NAME" "$GNUSOCIAL_BACKGROUND_IMAGE_URL" "$GNUSOCIAL_TITLE" fi APP_INSTALLED=1 diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 3d10df97..246eb40b 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -238,7 +238,7 @@ function pleroma_set_background_image { if [ ${#temp_background} -gt 0 ]; then PLEROMA_BACKGROUND_IMAGE_URL="$temp_background" write_config_param "PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_BACKGROUND_IMAGE_URL" - if [[ $(pleroma_set_background_image_from_url "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" | tail -n 1) == "0" ]]; then + if [[ $(pleroma_set_background_image_from_url $PLEROMA_DIR "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" | tail -n 1) == "0" ]]; then dialog --title $"Set Pleroma login background" \ --msgbox $"The background image has been set" 6 60 fi @@ -262,8 +262,7 @@ function pleroma_set_title { PLEROMA_TITLE="$new_title" PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") write_config_param "PLEROMA_TITLE" "$PLEROMA_TITLE" - cd /var/www/$PLEROMA_DOMAIN_NAME/htdocs/static - sed -i "s|\"name\":.*|\"name\": \"${PLEROMA_TITLE}\",|g" config.json + sed -i "s|\"name\":.*|\"name\": \"${PLEROMA_TITLE}\",|g" $PLEROMA_DIR/static/config.json sed -i "s|name: .*|name: \"${PLEROMA_TITLE}\",|g" $PLEROMA_DIR/config/config.exs systemctl restart pleroma dialog --title $"Set Pleroma title" \ @@ -527,8 +526,8 @@ function install_pleroma { install_nodejs pleroma-backend install_postgresql - if [ ! -d /var/www/$PLEROMA_DOMAIN_NAME ]; then - mkdir /var/www/$PLEROMA_DOMAIN_NAME + if [ ! -d /var/www/${PLEROMA_DOMAIN_NAME}/htdocs ]; then + mkdir -p /var/www/${PLEROMA_DOMAIN_NAME}/htdocs fi if [ -d $PLEROMA_DIR ]; then rm -rf $PLEROMA_DIR @@ -635,17 +634,6 @@ function install_pleroma { echo ' # include snippets/well-known.conf;' >> $pleroma_nginx_site echo '}' >> $pleroma_nginx_site - function_check create_site_certificate - create_site_certificate $PLEROMA_DOMAIN_NAME 'yes' - - function_check nginx_ensite - nginx_ensite $PLEROMA_DOMAIN_NAME - - systemctl restart postgresql - systemctl restart nginx - - set_completion_param "pleroma domain" "$PLEROMA_DOMAIN_NAME" - # back end cd $PLEROMA_DIR @@ -668,12 +656,34 @@ function install_pleroma { # front end install_pleroma_front_end "pleroma" "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" install_gnusocial_default_background "gnusocial" "$PLEROMA_DOMAIN_NAME" - sed -i 's|"theme":.*|"theme": "base16-apathy.css",|g' /var/www/${PLEROMA_DOMAIN_NAME}/htdocs/static/config.json + if [ ! -f $PLEROMA_DIR/static/config.json ]; then + echo $"$PLEROMA_DIR/static/config.json file missing" + exit 323689 + fi + sed -i 's|"theme":.*|"theme": "base16-apathy.css",|g' $PLEROMA_DIR/static/config.json if [ $PLEROMA_BACKGROUND_IMAGE_URL ]; then - pleroma_set_background_image_from_url "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" + pleroma_set_background_image_from_url $PLEROMA_DIR "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" fi + if [ ! -f $PLEROMA_DIR/index.html ]; then + echo $'Pleroma index file missing' + exit 7825393 + fi + + + # Get certificate + function_check create_site_certificate + create_site_certificate $PLEROMA_DOMAIN_NAME 'yes' + + function_check nginx_ensite + nginx_ensite $PLEROMA_DOMAIN_NAME + + systemctl restart postgresql + systemctl restart nginx + + set_completion_param "pleroma domain" "$PLEROMA_DOMAIN_NAME" + # daemon echo '[Unit]' > /etc/systemd/system/pleroma.service diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv index 6e69845d..5eaefcee 100755 --- a/src/freedombone-app-postactiv +++ b/src/freedombone-app-postactiv @@ -248,7 +248,7 @@ function postactiv_set_background_image { POSTACTIV_BACKGROUND_IMAGE_URL="$temp_background" write_config_param "POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_BACKGROUND_IMAGE_URL" - if [[ $(pleroma_set_background_image_from_url "$POSTACTIV_DOMAIN_NAME" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE" | tail -n 1) == "0" ]]; then + if [[ $(pleroma_set_background_image_from_url /var/www/$POSTACTIV_DOMAIN_NAME/htdocs "$POSTACTIV_DOMAIN_NAME" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE" | tail -n 1) == "0" ]]; then dialog --title $"Set PostActiv background" \ --msgbox $"The background image has been set" 6 60 fi @@ -945,7 +945,7 @@ function install_postactiv { gnusocial_use_qvitter postactiv if [ $POSTACTIV_BACKGROUND_IMAGE_URL ]; then - pleroma_set_background_image_from_url "$POSTACTIV_DOMAIN_NAME" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE" + pleroma_set_background_image_from_url /var/www/$POSTACTIV_DOMAIN_NAME/htdocs "$POSTACTIV_DOMAIN_NAME" "$POSTACTIV_BACKGROUND_IMAGE_URL" "$POSTACTIV_TITLE" fi APP_INSTALLED=1 diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index 7a2ac329..63cb243b 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -88,9 +88,10 @@ function qvitter_update_background { } function pleroma_set_background_image_from_url { - domain_name="$1" - url="$2" - title="$3" + basedir="$1" + domain_name="$2" + url="$3" + title="$4" if [ ${#domain_name} -eq 0 ]; then echo "1" @@ -111,7 +112,7 @@ function pleroma_set_background_image_from_url { fi if [ ${#ext} -gt 0 ]; then - cd /var/www/${domain_name}/htdocs + cd $basedir # remove any existing image if [ -f bg_custom.${ext} ]; then @@ -127,13 +128,15 @@ function pleroma_set_background_image_from_url { return fi - if [ -d /var/www/${domain_name}/htdocs/static ]; then + if [ -d $basedir/static ]; then cp bg_custom.${ext} static/bg_custom.${ext} chown www-data:www-data static/bg_custom.${ext} sed -i "s|\"background\":.*|\"background\": \"/static/bg_custom.${ext}\",|g" static/config.json fi - qvitter_update_background ${domain_name} ${ext} + if [[ "$basedir" != $PLEROMA_DIR ]]; then + qvitter_update_background ${domain_name} ${ext} + fi rm bg_custom.${ext} else @@ -142,19 +145,19 @@ function pleroma_set_background_image_from_url { fi # customise the logo - if [ -f /var/www/${domain_name}/htdocs/static/logo.png ]; then + if [ -f $basedir/static/logo.png ]; then if [ -f ~/freedombone/img/logo_fbone3.png ]; then - cp ~/freedombone/img/logo_fbone3.png /var/www/${domain_name}/htdocs/static/logo.png + cp ~/freedombone/img/logo_fbone3.png $basedir/static/logo.png else if [ -f /home/$MY_USERNAME/freedombone/img/logo_fbone3.png ]; then - cp /home/$MY_USERNAME/freedombone/img/logo_fbone3.png /var/www/${domain_name}/htdocs/static/logo.png + cp /home/$MY_USERNAME/freedombone/img/logo_fbone3.png $basedir/static/logo.png fi fi fi # customise the title - if [ -f /var/www/${domain_name}/htdocs/static/config.json ]; then - sed -i "s|\"name\":.*|\"name\": \"${title}\",|g" /var/www/${domain_name}/htdocs/static/config.json + if [ -f $basedir/static/config.json ]; then + sed -i "s|\"name\":.*|\"name\": \"${title}\",|g" $basedir/static/config.json fi echo "0" @@ -328,9 +331,14 @@ function install_pleroma_front_end { exit 5282682 fi - cp -r $INSTALL_DIR/pleroma/dist/* /var/www/${pleroma_domain}/htdocs/ + if [[ "$app_name" != 'pleroma' ]]; then + cp -r $INSTALL_DIR/pleroma/dist/* /var/www/${pleroma_domain}/htdocs/ + pleroma_set_background_image_from_url /var/www/${pleroma_domain}/htdocs "$pleroma_domain" "$background_url" "$title" + else + cp -r $INSTALL_DIR/pleroma/dist/* $PLEROMA_DIR + pleroma_set_background_image_from_url $PLEROMA_DIR "$pleroma_domain" "$background_url" "$title" + fi - pleroma_set_background_image_from_url "$pleroma_domain" "$background_url" "$title" nginx_site=/etc/nginx/sites-available/${pleroma_domain} sed -i 's|index index.php;|index index.html;|g' $nginx_site @@ -345,7 +353,11 @@ function install_pleroma_front_end { rm -rf /root/.cache/yarn fi - chown -R www-data:www-data /var/www/${pleroma_domain}/htdocs + if [[ "$app_name" != 'pleroma' ]]; then + chown -R www-data:www-data /var/www/${pleroma_domain}/htdocs + else + chown -R pleroma:pleroma $PLEROMA_DIR + fi } function upgrade_pleroma_frontend { From cb1b654c7ccca5b21e3148c1d4f68f3d11901e99 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 15:34:46 +0000 Subject: [PATCH 15/36] Change permissionf for pleroma user during database creation --- src/freedombone-app-pleroma | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 246eb40b..a72c3632 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -187,6 +187,10 @@ function pleroma_create_database { fi add_postgresql_user pleroma "$PLEROMA_ADMIN_PASSWORD" encrypted + run_system_query_postgresql "create database pleroma;" + # temporarily allow the user to create databases + run_system_query_postgresql "ALTER USER pleroma CREATEDB;" + run_system_query_postgresql "ALTER USER pleroma SUPERUSER;" run_system_query_postgresql "GRANT ALL ON ALL tables IN SCHEMA public TO pleroma;" run_system_query_postgresql "GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;" @@ -202,21 +206,28 @@ function pleroma_create_database { sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config cd $PLEROMA_DIR - mix local.rebar --force + chown -R pleroma:pleroma * + sudo -u pleroma mix local.rebar --force if [ ! "$?" = "0" ]; then echo $'mix local.rebar failed' exit 73528562 fi - mix ecto.create --force + sudo -u pleroma mix local.hex --force + sudo -u pleroma mix deps.compile mimerl + sudo -u pleroma mix ecto.create --force if [ ! "$?" = "0" ]; then echo $'mix ecto.create failed' exit 83653582 fi - mix ecto.migrate --force + sudo -u pleroma mix ecto.migrate --force if [ ! "$?" = "0" ]; then echo $'mix ecto.migrate failed' exit 73752573 fi + + # revoke the ability to create databases for this user + run_system_query_postgresql "ALTER USER pleroma NOSUPERUSER;" + run_system_query_postgresql "ALTER USER pleroma NOCREATEDB;" } function reconfigure_pleroma { @@ -637,12 +648,13 @@ function install_pleroma { # back end cd $PLEROMA_DIR - mix local.hex --force + chown -R pleroma:pleroma * + sudo -u pleroma mix local.hex --force if [ ! "$?" = "0" ]; then echo $'mix local.hex failed' exit 1745673 fi - mix deps.get --force + sudo -u pleroma mix deps.get --force if [ ! "$?" = "0" ]; then echo $'mix deps.get failed' exit 7325733 From 1351d72a722eb030a6b84c1b7397286a52f966d8 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 15:56:36 +0000 Subject: [PATCH 16/36] create extension --- src/freedombone-app-pleroma | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index a72c3632..58c752b0 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -193,6 +193,7 @@ function pleroma_create_database { run_system_query_postgresql "ALTER USER pleroma SUPERUSER;" run_system_query_postgresql "GRANT ALL ON ALL tables IN SCHEMA public TO pleroma;" run_system_query_postgresql "GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;" + run_system_query_postgresql "CREATE EXTENSION citext;" pleroma_secret=config/dev.secret.exs cp config/dev.exs $pleroma_secret @@ -517,7 +518,7 @@ function install_elixir { dpkg -i $erlang_package apt-get -yq update apt-get -yq install esl-erlang - apt-get -yq install elixir + apt-get -yq install elixir erlang-xmerl if [ ! -f /usr/local/bin/mix ]; then echo $'/usr/local/bin/mix not found after elixir installation' From f7d5d0c94f0a6e6953cbf6a6e4975086fe9018d0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 17:06:25 +0000 Subject: [PATCH 17/36] Additional pleroma configuration changes --- src/freedombone-app-pleroma | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 58c752b0..cc338dfe 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -9,6 +9,7 @@ # Freedom in the Cloud # # Pleroma backend application +# https://git.pleroma.social/pleroma/pleroma/wikis/Installing-on-Debian-Based-Distributions # # License # ======= @@ -200,11 +201,13 @@ function pleroma_create_database { sed -i "s|username:.*|username: \"pleroma\",|g" $pleroma_secret sed -i "s|password:.*|password: \"$PLEROMA_ADMIN_PASSWORD\",|g" $pleroma_secret sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret - sed -i "/config :pleroma, Pleroma.Web.Endpoint/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]," $pleroma_secret + sed -i 's|watchers: []|watchers: [],|g' $pleroma_secret + sed -i "/watchers: []/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]" $pleroma_secret + sed -i 's|url: | url: |g' $pleroma_secret - pleroma_config=config/config.exs - sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config - sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config + #pleroma_config=config/config.exs + #sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config + #sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config cd $PLEROMA_DIR chown -R pleroma:pleroma * @@ -518,7 +521,7 @@ function install_elixir { dpkg -i $erlang_package apt-get -yq update apt-get -yq install esl-erlang - apt-get -yq install elixir erlang-xmerl + apt-get -yq install elixir erlang-xmerl erlang-dev erlang-parsetools if [ ! -f /usr/local/bin/mix ]; then echo $'/usr/local/bin/mix not found after elixir installation' From ad80a2b9d3c1c474ba225ead2918f0a3cd8b911e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 17:27:05 +0000 Subject: [PATCH 18/36] Fix for pleroma pubsub error --- src/freedombone-app-pleroma | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index cc338dfe..5dbb73ab 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -201,6 +201,8 @@ function pleroma_create_database { sed -i "s|username:.*|username: \"pleroma\",|g" $pleroma_secret sed -i "s|password:.*|password: \"$PLEROMA_ADMIN_PASSWORD\",|g" $pleroma_secret sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret + sed -i "/Pleroma.Web.Endpoint/a pubsub: [name: Pleroma.Web.PubSub, adapter: Phoenix.PubSub.PG2]," $pleroma_secret + sed -i 's|pubsub: | pubsub: |g' $pleroma_secret sed -i 's|watchers: []|watchers: [],|g' $pleroma_secret sed -i "/watchers: []/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]" $pleroma_secret sed -i 's|url: | url: |g' $pleroma_secret From 77f9da0a56b9f663c1a17002334d0e3d17b82826 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 17:55:20 +0000 Subject: [PATCH 19/36] Missing redirect --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 5dbb73ab..8e661ffb 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -710,7 +710,7 @@ function install_pleroma { echo '' >> /etc/systemd/system/pleroma.service echo '[Service]' >> /etc/systemd/system/pleroma.service echo 'User=pleroma' >> /etc/systemd/system/pleroma.service - echo "WorkingDirectory=$PLEROMA_DIR" + echo "WorkingDirectory=$PLEROMA_DIR" >> /etc/systemd/system/pleroma.service echo "Environment=\"HOME=$PLEROMA_DIR\"" >> /etc/systemd/system/pleroma.service echo 'ExecStart=/usr/local/bin/mix phx.server' >> /etc/systemd/system/pleroma.service echo 'ExecReload=/bin/kill $MAINPID' >> /etc/systemd/system/pleroma.service From 5a6669c033c1b532a5d2cbd8a1929b76a3f08f94 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 18:49:35 +0000 Subject: [PATCH 20/36] Generate secret key for pleroma server --- src/freedombone-app-pleroma | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 8e661ffb..af52c8e9 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -42,6 +42,7 @@ PLEROMA_REPO="https://git.pleroma.social/pleroma/pleroma.git" PLEROMA_COMMIT='7252f6b054dfdfac1f9bac77c442c5a1ebd898af' PLEROMA_ADMIN_PASSWORD= PLEROMA_DIR=/etc/pleroma +PLEROMA_SECRET_KEY="" PLEROMA_BACKGROUND_IMAGE_URL= @@ -196,21 +197,29 @@ function pleroma_create_database { run_system_query_postgresql "GRANT ALL ON ALL sequences IN SCHEMA public TO pleroma;" run_system_query_postgresql "CREATE EXTENSION citext;" + read_config_param "PLEROMA_SECRET_KEY" + if [ ${#PLEROMA_SECRET_KEY} -lt 50 ]; then + PLEROMA_SECRET_KEY="$(create_password 30)$(create_password 30)" + if [ ${#PLEROMA_SECRET_KEY} -lt 50 ]; then + echo $'Pleroma secret key not created' + exit 6782352 + fi + write_config_param "PLEROMA_SECRET_KEY" "$PLEROMA_SECRET_KEY" + fi + pleroma_secret=config/dev.secret.exs cp config/dev.exs $pleroma_secret sed -i "s|username:.*|username: \"pleroma\",|g" $pleroma_secret sed -i "s|password:.*|password: \"$PLEROMA_ADMIN_PASSWORD\",|g" $pleroma_secret sed -i "s|database:.*|database: \"pleroma\",|g" $pleroma_secret + sed -i "/Pleroma.Web.Endpoint/a secret_key_base: \"$PLEROMA_SECRET_KEY\"," $pleroma_secret + sed -i 's|secret_key_base: | secret_key_base: |g' $pleroma_secret sed -i "/Pleroma.Web.Endpoint/a pubsub: [name: Pleroma.Web.PubSub, adapter: Phoenix.PubSub.PG2]," $pleroma_secret sed -i 's|pubsub: | pubsub: |g' $pleroma_secret sed -i 's|watchers: []|watchers: [],|g' $pleroma_secret sed -i "/watchers: []/a url: [host: \"$PLEROMA_DOMAIN_NAME\", scheme: \"https\", port: 443]" $pleroma_secret sed -i 's|url: | url: |g' $pleroma_secret - #pleroma_config=config/config.exs - #sed -i "s|name: .*|name: \"$PLEROMA_TITLE\",|g" $pleroma_config - #sed -i "s|email: .*|email: \"$MY_EMAIL_ADDRESS\",|g" $pleroma_config - cd $PLEROMA_DIR chown -R pleroma:pleroma * sudo -u pleroma mix local.rebar --force From 99fddf5f2104824f3e9fda4c642177f0ef1d2eab Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 18:52:19 +0000 Subject: [PATCH 21/36] Revert pleroma user permissions if an error occurs --- src/freedombone-app-pleroma | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index af52c8e9..2c804a5c 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -201,6 +201,8 @@ function pleroma_create_database { if [ ${#PLEROMA_SECRET_KEY} -lt 50 ]; then PLEROMA_SECRET_KEY="$(create_password 30)$(create_password 30)" if [ ${#PLEROMA_SECRET_KEY} -lt 50 ]; then + run_system_query_postgresql "ALTER USER pleroma NOSUPERUSER;" + run_system_query_postgresql "ALTER USER pleroma NOCREATEDB;" echo $'Pleroma secret key not created' exit 6782352 fi @@ -224,6 +226,8 @@ function pleroma_create_database { chown -R pleroma:pleroma * sudo -u pleroma mix local.rebar --force if [ ! "$?" = "0" ]; then + run_system_query_postgresql "ALTER USER pleroma NOSUPERUSER;" + run_system_query_postgresql "ALTER USER pleroma NOCREATEDB;" echo $'mix local.rebar failed' exit 73528562 fi @@ -231,11 +235,15 @@ function pleroma_create_database { sudo -u pleroma mix deps.compile mimerl sudo -u pleroma mix ecto.create --force if [ ! "$?" = "0" ]; then + run_system_query_postgresql "ALTER USER pleroma NOSUPERUSER;" + run_system_query_postgresql "ALTER USER pleroma NOCREATEDB;" echo $'mix ecto.create failed' exit 83653582 fi sudo -u pleroma mix ecto.migrate --force if [ ! "$?" = "0" ]; then + run_system_query_postgresql "ALTER USER pleroma NOSUPERUSER;" + run_system_query_postgresql "ALTER USER pleroma NOCREATEDB;" echo $'mix ecto.migrate failed' exit 73752573 fi From c1ef4567bf0ee74d0a45df794b5aa990bb7f94e9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 19:41:06 +0000 Subject: [PATCH 22/36] Enable or disable pleroma registrations --- src/freedombone-app-pleroma | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 2c804a5c..9c199f41 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -62,6 +62,17 @@ pleroma_variables=(ONION_ONLY MY_EMAIL_ADDRESS MY_USERNAME) +function pleroma_recompile { + # necessary after parameter changes + sudo -u pleroma mix clean + sudo -u pleroma mix deps.compile + sudo -u pleroma mix compile + + if [ -f /etc/systemd/system/pleroma.service ]; then + systemctl restart pleroma + fi +} + function logging_on_pleroma { echo -n '' } @@ -344,6 +355,19 @@ function pleroma_set_expire_months { rm $data } +function pleroma_disable_registrations { + dialog --title $"Disable new Pleroma user registrations" \ + --backtitle $"Freedombone Control Panel" \ + --yesno $"\nDo you wish to disable new registrations?" 10 60 + sel=$? + case $sel in + 0) sed -i 's|registrations_open:.*|registrations_open: false|g' $PLEROMA_DIR/config/config.exs;; + 1) sed -i 's|registrations_open:.*|registrations_open: true|g' $PLEROMA_DIR/config/config.exs;; + 255) return;; + esac + pleroma_recompile +} + function configure_interactive_pleroma { read_config_param PLEROMA_EXPIRE_MONTHS while true @@ -352,11 +376,12 @@ function configure_interactive_pleroma { trap "rm -f $data" 0 1 2 5 15 dialog --backtitle $"Freedombone Control Panel" \ --title $"Pleroma" \ - --radiolist $"Choose an operation:" 13 70 4 \ + --radiolist $"Choose an operation:" 14 70 5 \ 1 $"Set a background image" off \ 2 $"Set the title" off \ - 3 $"Set post expiry period (currently $PLEROMA_EXPIRE_MONTHS months)" off \ - 4 $"Exit" on 2> $data + 3 $"Disable new account registrations" off \ + 4 $"Set post expiry period (currently $PLEROMA_EXPIRE_MONTHS months)" off \ + 5 $"Exit" on 2> $data sel=$? case $sel in 1) return;; @@ -365,8 +390,9 @@ function configure_interactive_pleroma { case $(cat $data) in 1) pleroma_set_background_image;; 2) pleroma_set_title;; - 3) pleroma_set_expire_months;; - 4) break;; + 3) pleroma_disable_registrations;; + 4) pleroma_set_expire_months;; + 5) break;; esac rm $data done From ef7c88d310053075b5a1881fa72da69b30cbef46 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 20:03:42 +0000 Subject: [PATCH 23/36] Pleroma upgrades --- src/freedombone-app-pleroma | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 9c199f41..2ad78b96 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -399,9 +399,16 @@ function configure_interactive_pleroma { } function upgrade_pleroma { - echo -n '' -} + CURR_PLEROMA_COMMIT=$(get_completion_param "pleroma commit") + if [[ "$CURR_PLEROMA_COMMIT" == "$PLEROMA_COMMIT" ]]; then + return + fi + function_check set_repo_commit + set_repo_commit $PLEROMA_DIR "pleroma commit" "$PLEROMA_COMMIT" $PLEROMA_REPO + chown -R pleroma:pleroma $PLEROMA_DIR + pleroma_recompile +} function backup_local_pleroma { PLEROMA_DOMAIN_NAME='pleroma' From 0b47e814e77b6641bd41c5a70e5bf2167417a5f3 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 20:37:15 +0000 Subject: [PATCH 24/36] Recompile after background change --- src/freedombone-app-pleroma | 1 + 1 file changed, 1 insertion(+) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 2ad78b96..138fa84d 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -284,6 +284,7 @@ function pleroma_set_background_image { PLEROMA_BACKGROUND_IMAGE_URL="$temp_background" write_config_param "PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_BACKGROUND_IMAGE_URL" if [[ $(pleroma_set_background_image_from_url $PLEROMA_DIR "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" | tail -n 1) == "0" ]]; then + pleroma_recompile dialog --title $"Set Pleroma login background" \ --msgbox $"The background image has been set" 6 60 fi From aa5feabc517e692d10e6ecb135b973b35b39a43a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 21:35:20 +0000 Subject: [PATCH 25/36] Also change pleroma background image in a separate static subdirectory --- src/freedombone-app-pleroma | 1 + src/freedombone-utils-gnusocialtools | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 138fa84d..bc713a3b 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -309,6 +309,7 @@ function pleroma_set_title { PLEROMA_DOMAIN_NAME=$(get_completion_param "pleroma domain") write_config_param "PLEROMA_TITLE" "$PLEROMA_TITLE" sed -i "s|\"name\":.*|\"name\": \"${PLEROMA_TITLE}\",|g" $PLEROMA_DIR/static/config.json + sed -i "s|\"name\":.*|\"name\": \"${PLEROMA_TITLE}\",|g" $PLEROMA_DIR/priv/static/static/config.json sed -i "s|name: .*|name: \"${PLEROMA_TITLE}\",|g" $PLEROMA_DIR/config/config.exs systemctl restart pleroma dialog --title $"Set Pleroma title" \ diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index 63cb243b..1536a0f8 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -133,6 +133,11 @@ function pleroma_set_background_image_from_url { chown www-data:www-data static/bg_custom.${ext} sed -i "s|\"background\":.*|\"background\": \"/static/bg_custom.${ext}\",|g" static/config.json fi + if [ -d priv/static/static ]; then + cp bg_custom.${ext} priv/static/static/bg_custom.${ext} + chown www-data:www-data priv/static/static/bg_custom.${ext} + sed -i "s|\"background\":.*|\"background\": \"/static/bg_custom.${ext}\",|g" priv/static/static/config.json + fi if [[ "$basedir" != $PLEROMA_DIR ]]; then qvitter_update_background ${domain_name} ${ext} @@ -148,9 +153,15 @@ function pleroma_set_background_image_from_url { if [ -f $basedir/static/logo.png ]; then if [ -f ~/freedombone/img/logo_fbone3.png ]; then cp ~/freedombone/img/logo_fbone3.png $basedir/static/logo.png + if [ -d $basedir/priv/static/static ]; then + cp ~/freedombone/img/logo_fbone3.png $basedir/priv/static/static/logo.png + fi else if [ -f /home/$MY_USERNAME/freedombone/img/logo_fbone3.png ]; then cp /home/$MY_USERNAME/freedombone/img/logo_fbone3.png $basedir/static/logo.png + if [ -d $basedir/priv/static/static ]; then + cp /home/$MY_USERNAME/freedombone/img/logo_fbone3.png $basedir/priv/static/static/logo.png + fi fi fi fi @@ -159,6 +170,9 @@ function pleroma_set_background_image_from_url { if [ -f $basedir/static/config.json ]; then sed -i "s|\"name\":.*|\"name\": \"${title}\",|g" $basedir/static/config.json fi + if [ -f $basedir/priv/static/static/config.json ]; then + sed -i "s|\"name\":.*|\"name\": \"${title}\",|g" $basedir/priv/static/static/config.json + fi echo "0" } From ea0af2d1e1b94e84b105e5d491f87c396e09f08e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 6 Nov 2017 22:10:54 +0000 Subject: [PATCH 26/36] Disable or enable registration within the pleroma frontend --- src/freedombone-app-pleroma | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index bc713a3b..9699f4a3 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -363,8 +363,12 @@ function pleroma_disable_registrations { --yesno $"\nDo you wish to disable new registrations?" 10 60 sel=$? case $sel in - 0) sed -i 's|registrations_open:.*|registrations_open: false|g' $PLEROMA_DIR/config/config.exs;; - 1) sed -i 's|registrations_open:.*|registrations_open: true|g' $PLEROMA_DIR/config/config.exs;; + 0) sed -i 's|registrations_open:.*|registrations_open: false|g' $PLEROMA_DIR/config/config.exs + sed -i 's|"registrationOpen":.*|"registrationOpen": false|g' $PLEROMA_DIR/priv/static/static/config.json + ;; + 1) sed -i 's|registrations_open:.*|registrations_open: true|g' $PLEROMA_DIR/config/config.exs + sed -i 's|"registrationOpen":.*|"registrationOpen": true|g' $PLEROMA_DIR/priv/static/static/config.json + ;; 255) return;; esac pleroma_recompile From 10b3c5cff9d68db10b157779dc05929fbdf7c31b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:12:23 +0000 Subject: [PATCH 27/36] Upgrade of pleroma front end handles pure pleroma install --- src/freedombone-utils-gnusocialtools | 39 ++++++++++++++++------------ 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index 1536a0f8..f6ba3768 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -389,31 +389,36 @@ function upgrade_pleroma_frontend { echo 'Unable to build pleroma' exit 268362 fi - if [ -f /var/www/${domain_name}/htdocs/static/logo.png ]; then - cp /var/www/${domain_name}/htdocs/static/logo.png /var/www/${domain_name}/htdocs/static/logo.png.old + + basedir=/var/www/${domain_name}/htdocs + if [[ "$app_name" != 'pleroma' ]]; then + basedir=$PLEROMA_DIR/priv/static fi - if [ -f /var/www/${domain_name}/htdocs/static/bg.jpg ]; then - cp /var/www/${domain_name}/htdocs/static/bg.jpg /var/www/${domain_name}/htdocs/static/bg.jpg.old + if [ -f $basedir/static/logo.png ]; then + cp $basedir/static/logo.png $basedir/static/logo.png.old fi - if [ -f /var/www/${domain_name}/htdocs/static/config.json ]; then - cp /var/www/${domain_name}/htdocs/static/config.json /var/www/${domain_name}/htdocs/static/config.json.old + if [ -f $basedir/static/bg.jpg ]; then + cp $basedir/static/bg.jpg $basedir/static/bg.jpg.old fi - cp -r $INSTALL_DIR/pleroma/dist/* /var/www/${domain_name}/htdocs/ - if [ -f /var/www/${domain_name}/htdocs/static/config.json.old ]; then - mv /var/www/${domain_name}/htdocs/static/config.json.old /var/www/${domain_name}/htdocs/static/config.json + if [ -f $basedir/static/config.json ]; then + cp $basedir/static/config.json $basedir/static/config.json.old fi - sed -i "s|\"name\":.*|\"name\": \"${title}\",|g" /var/www/${domain_name}/htdocs/static/config.json - if [ -f /var/www/${domain_name}/htdocs/static/logo.png.old ]; then - cp /var/www/${domain_name}/htdocs/static/logo.png.old /var/www/${domain_name}/htdocs/static/logo.png + cp -r $INSTALL_DIR/pleroma/dist/* $basedir/ + if [ -f $basedir/static/config.json.old ]; then + mv $basedir/static/config.json.old $basedir/static/config.json fi - if [ -f /var/www/${domain_name}/htdocs/static/bg.jpg.old ]; then - cp /var/www/${domain_name}/htdocs/static/bg.jpg.old /var/www/${domain_name}/htdocs/static/bg.jpg + sed -i "s|\"name\":.*|\"name\": \"${title}\",|g" $basedir/static/config.json + if [ -f $basedir/static/logo.png.old ]; then + cp $basedir/static/logo.png.old $basedir/static/logo.png + fi + if [ -f $basedir/static/bg.jpg.old ]; then + cp $basedir/static/bg.jpg.old $basedir/static/bg.jpg fi - if [ -f /var/www/${domain_name}/htdocs/index.php ]; then - mv /var/www/${domain_name}/htdocs/index.php /var/www/${domain_name}/htdocs/index_qvitter.php + if [ -f $basedir/index.php ]; then + mv $basedir/index.php $basedir/index_qvitter.php fi - chown -R www-data:www-data /var/www/${domain_name}/htdocs + chown -R www-data:www-data $basedir else install_pleroma_front_end "${app_name}" "${domain_name}" "${background_url}" "${title}" fi From 3510d7aa3cfec195111dac0a829cba76f1ca39c9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:12:56 +0000 Subject: [PATCH 28/36] logic --- src/freedombone-utils-gnusocialtools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index f6ba3768..b387b69b 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -391,7 +391,7 @@ function upgrade_pleroma_frontend { fi basedir=/var/www/${domain_name}/htdocs - if [[ "$app_name" != 'pleroma' ]]; then + if [[ "$app_name" == 'pleroma' ]]; then basedir=$PLEROMA_DIR/priv/static fi if [ -f $basedir/static/logo.png ]; then From 4e8a9bb393cb80aa03334d1b2b7488fb9dc8c06e Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:20:55 +0000 Subject: [PATCH 29/36] Installing frontend with pleroma app --- src/freedombone-utils-gnusocialtools | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index b387b69b..bd9a7235 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -349,8 +349,8 @@ function install_pleroma_front_end { cp -r $INSTALL_DIR/pleroma/dist/* /var/www/${pleroma_domain}/htdocs/ pleroma_set_background_image_from_url /var/www/${pleroma_domain}/htdocs "$pleroma_domain" "$background_url" "$title" else - cp -r $INSTALL_DIR/pleroma/dist/* $PLEROMA_DIR - pleroma_set_background_image_from_url $PLEROMA_DIR "$pleroma_domain" "$background_url" "$title" + cp -r $INSTALL_DIR/pleroma/dist/* $PLEROMA_DIR/priv/static + pleroma_set_background_image_from_url $PLEROMA_DIR/priv/static "$pleroma_domain" "$background_url" "$title" fi From 98e2865f3369befda60c9e62b0e1c623a93eb2da Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:31:49 +0000 Subject: [PATCH 30/36] Setting pleroma initial background --- src/freedombone-app-pleroma | 18 +++++++----------- src/freedombone-utils-gnusocialtools | 17 +++++++++++------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 9699f4a3..60f5f365 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -727,22 +727,18 @@ function install_pleroma { ${PROJECT_NAME}-pass -u $MY_USERNAME -a pleroma -p "$PLEROMA_ADMIN_PASSWORD" - # front end - install_pleroma_front_end "pleroma" "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" - install_gnusocial_default_background "gnusocial" "$PLEROMA_DOMAIN_NAME" - if [ ! -f $PLEROMA_DIR/static/config.json ]; then + # NOTE: we don't need to install the frontend separately, + # since the backend contains a precompiled version of it + + install_gnusocial_default_background "pleroma" "$PLEROMA_DOMAIN_NAME" + if [ ! -f $PLEROMA_DIR/priv/static/static/config.json ]; then echo $"$PLEROMA_DIR/static/config.json file missing" exit 323689 fi - sed -i 's|"theme":.*|"theme": "base16-apathy.css",|g' $PLEROMA_DIR/static/config.json + sed -i 's|"theme":.*|"theme": "base16-apathy.css",|g' $PLEROMA_DIR/priv/static/static/config.json if [ $PLEROMA_BACKGROUND_IMAGE_URL ]; then - pleroma_set_background_image_from_url $PLEROMA_DIR "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" - fi - - if [ ! -f $PLEROMA_DIR/index.html ]; then - echo $'Pleroma index file missing' - exit 7825393 + pleroma_set_background_image_from_url $PLEROMA_DIR/priv/static "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" fi diff --git a/src/freedombone-utils-gnusocialtools b/src/freedombone-utils-gnusocialtools index bd9a7235..dbc34b3f 100755 --- a/src/freedombone-utils-gnusocialtools +++ b/src/freedombone-utils-gnusocialtools @@ -268,26 +268,31 @@ function install_gnusocial_default_background { gnusocial_type=$1 domain_name=$2 + basedir=/var/www/${domain_name}/htdocs + if [[ "$gnusocial_type" == 'pleroma' ]]; then + basedir=$PLEROMA_DIR/priv/static + fi + # customise the logo - if [ -f /var/www/${domain_name}/htdocs/static/logo.png ]; then + if [ -f $basedir/static/logo.png ]; then if [ -f ~/freedombone/img/logo_fbone3.png ]; then - cp ~/freedombone/img/logo_fbone3.png /var/www/${domain_name}/htdocs/static/logo.png + cp ~/freedombone/img/logo_fbone3.png $basedir/static/logo.png else if [ -f /home/$MY_USERNAME/freedombone/img/logo_fbone3.png ]; then - cp /home/$MY_USERNAME/freedombone/img/logo_fbone3.png /var/www/${domain_name}/htdocs/static/logo.png + cp /home/$MY_USERNAME/freedombone/img/logo_fbone3.png $basedir/static/logo.png fi fi fi - if [ ! -f /var/www/${domain_name}/htdocs/static/bg.jpg ]; then + if [ ! -f $basedir/static/bg.jpg ]; then return fi if [ -f ~/freedombone/img/backgrounds/${gnusocial_type}.jpg ]; then - cp ~/freedombone/img/backgrounds/${gnusocial_type}.jpg /var/www/${domain_name}/htdocs/static/bg.jpg + cp ~/freedombone/img/backgrounds/${gnusocial_type}.jpg $basedir/static/bg.jpg else if [ -f /home/$MY_USERNAME/freedombone/img/backgrounds/${gnusocial_type}.jpg ]; then - cp /home/$MY_USERNAME/freedombone/img/backgrounds/${gnusocial_type}.jpg /var/www/${domain_name}/htdocs/static/bg.jpg + cp /home/$MY_USERNAME/freedombone/img/backgrounds/${gnusocial_type}.jpg $basedir/static/bg.jpg fi fi } From 217f182f548a82fc18fc000e9e6db655fba9979a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:52:23 +0000 Subject: [PATCH 31/36] Background image for pleroma app --- img/backgrounds/pleroma.jpg | Bin 0 -> 22277 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/backgrounds/pleroma.jpg diff --git a/img/backgrounds/pleroma.jpg b/img/backgrounds/pleroma.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cfeb6d8e9c0115663204f3a809aac2636e2c0689 GIT binary patch literal 22277 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 literal 0 HcmV?d00001 From 5c8e3ae6227e3bd74eccc92faa9b3b66571abad0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:57:15 +0000 Subject: [PATCH 32/36] Default pleroma theme --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 60f5f365..a2c74681 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -735,7 +735,7 @@ function install_pleroma { echo $"$PLEROMA_DIR/static/config.json file missing" exit 323689 fi - sed -i 's|"theme":.*|"theme": "base16-apathy.css",|g' $PLEROMA_DIR/priv/static/static/config.json + sed -i 's|"theme":.*|"theme": "base16-summerfruit-dark.css",|g' $PLEROMA_DIR/priv/static/static/config.json if [ $PLEROMA_BACKGROUND_IMAGE_URL ]; then pleroma_set_background_image_from_url $PLEROMA_DIR/priv/static "$PLEROMA_DOMAIN_NAME" "$PLEROMA_BACKGROUND_IMAGE_URL" "$PLEROMA_TITLE" From e2f532e0589dae58ac111c9eda3b6d546f853383 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 10:58:10 +0000 Subject: [PATCH 33/36] Path --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index a2c74681..d2311cb4 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -732,7 +732,7 @@ function install_pleroma { install_gnusocial_default_background "pleroma" "$PLEROMA_DOMAIN_NAME" if [ ! -f $PLEROMA_DIR/priv/static/static/config.json ]; then - echo $"$PLEROMA_DIR/static/config.json file missing" + echo $"$PLEROMA_DIR/priv/static/static/config.json file missing" exit 323689 fi sed -i 's|"theme":.*|"theme": "base16-summerfruit-dark.css",|g' $PLEROMA_DIR/priv/static/static/config.json From b2984bcc00d834b82800175b22aa25ce18a9ad77 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 11:44:34 +0000 Subject: [PATCH 34/36] Database name --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index d2311cb4..d92e110f 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -551,7 +551,7 @@ function remove_pleroma { rm -rf $PLEROMA_DIR fi function_check drop_database_postgresql - drop_database_postgresql + drop_database_postgresql pleroma function_check remove_onion_service remove_onion_service pleroma ${PLEROMA_ONION_PORT} remove_app pleroma From 5ce7c214d64e9fb24eb9a91649432b28a0cf5b77 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 12:06:37 +0000 Subject: [PATCH 35/36] Remove additional packages --- src/freedombone-app-pleroma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index d92e110f..a4bbc8a2 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -530,7 +530,7 @@ function remove_pleroma { rm /etc/systemd/system/pleroma.service userdel pleroma - apt-get -yq remove esl-erlang elixir + apt-get -yq remove esl-erlang elixir erlang-xmerl erlang-dev erlang-parsetools function_check remove_nodejs remove_nodejs pleroma-backend From 7e25a5303e6ca536a1f809047d1dd738c590eb38 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Tue, 7 Nov 2017 15:40:00 +0000 Subject: [PATCH 36/36] Don't restart openvpn if it's not installed --- src/freedombone-app-vpn | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/freedombone-app-vpn b/src/freedombone-app-vpn index d64e6119..94af1810 100755 --- a/src/freedombone-app-vpn +++ b/src/freedombone-app-vpn @@ -59,11 +59,17 @@ vpn_variables=(MY_EMAIL_ADDRESS VPN_TLS_PORT) function logging_on_vpn { + if [ ! -f /etc/openvpn/server.conf ]; then + return + fi sed -i 's|status .*|status /var/log/openvpn.log|g' /etc/openvpn/server.conf systemctl restart openvpn } function logging_off_vpn { + if [ ! -f /etc/openvpn/server.conf ]; then + return + fi sed -i 's|status .*|status /dev/null|g' /etc/openvpn/server.conf systemctl restart openvpn }