Reorganise database handling. Add seperate configuration file.

This commit is contained in:
Christoph 2017-10-16 20:53:32 +02:00
parent d90475e785
commit 4e0732aaa5
3 changed files with 423 additions and 238 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
/BAK/*
/log_*
/conf/*.conf
/sympa*
/whitelist*
*.log

View File

@ -0,0 +1,136 @@
# ---------------------------------------
# - Configuration for sympa install script
# ----------------------------------------
# - PREFIX
# -
# - Sympa Installation directory
# -
# - Defaults to: "/usr/local/sympa"
# -
#PREFIX="/usr/local/sympa"
# - SYMPA_USER
# -
# - User under which Sympa services are running
# -
# - Defaults to: "sympa"
# -
#SYMPA_USER="sympa"
# - SYMPA_MAIN_CONF_DIR
# -
# - Sympas main configuration directory
# -
# - Defaults to: "/etc/sympa"
# -
#SYMPA_MAIN_CONF_DIR="/etc/sympa"
# - SYMPA_LIST_DATA_DIR
# -
# - Data directory for sympa lists
# -
# - defaults to: "/data/sympa/list_data"
# -
#SYMPA_LIST_DATA_DIR=/data/sympa/list_data
# - SYMPA_DOMAIN
# -
# - Note: if sympa will be configured to support multidomains
# - this (SYMPA_DOMAIN) should not contain list definitions
# -
# -
SYMPA_DOMAIN="sympa.oopen.de"
# - START_AT_BOOTTIME
# -
# - Defaults to: "yes"
# -
#START_AT_BOOTTIME="yes"
# - SYMPA_LISTMASTER
# -
# -
# - Defaults to "postmaster@$SYMPA_DOMAIN"
# -
#SYMPA_LISTMASTER="postmaster@$SYMPA_DOMAIN"
# - SYMPA_DB_TYPE
# -
# - Database type of sympas database
# -
# - If database is SQLite, then this parameter is not in use.
# -
# - Possible values are 'mysql' (MySQL) or 'Pg' (PostgeSQL), 'Sybase', 'Oracle'
# -
# - Defaults to: SYMPA_DB_TYPE="mysql"
# -
#SYMPA_DB_TYPE="mysql"
# - SYMPA_DB_HOST
# -
# - Defaults to: SYMPA_DB_HOST="127.0.0.1"
# -
#SYMPA_DB_HOST="127.0.0.1"
# - SYMPA_DB_PORT
# -
# - Defaults to:
# - 3306 - if SYMPA_DB_TYPE=mysql
# - 5432 - if SYMPA_DB_TYPE=Pg
# - 2638 - if SYMPA_DB_TYPE=Sybase
# - 1575 - if SYMPA_DB_TYPE=Oracle
# -
# -
#SYMPA_DB_PORT="3306"
# - SYMPA_DB_NAME
# -
# - Defaults to: SYMPA_DB_NAME="sympa"
# -
#SYMPA_DB_NAME="sympa"
# - SYMPA_DB_USER
# -
# - Defaults to: SYMPA_DB_USER="sympa"
# -
#SYMPA_DB_USER="sympa"
# - SYMPA_DB_PASSWD
# -
# - Password for Sympa's database.
# -
SYMPA_DB_PASSWD="nw7FMhzRJPjcTHvm"
# - mysql_credential_args (root access to MySQL Database)
# -
# - Example
# - mysql_credential_args="--login-path=local"
# - mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf" (Debian default)
# - mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf"
# -
# - Defaults to:
# - '/etc/mysql/debian.cnf' if MySQL is installed from debian package system
# - '/usr/local/mysql/sys-maint.cnf' otherwise
# -
MYSQL_CREDENTIALS="--login-path=local"
# - VSERVER_GUEST
# -
# - Is this a Linux Vserver guest system?
# -
# - Possible values: yes/no
# -
# - Defaults to 'VSERVER_GUEST=no'
# -
#VSERVER_GUEST=no

View File

@ -1,30 +1,11 @@
#!/usr/bin/env bash
## - Pre-defined Parameters
## -
_VSERVER_GUEST=no
_src_base_dir=/usr/local/src/sympa
conf_file="${_src_base_dir}/conf/install_sympa.conf"
#_SYMPA_VERSION=6.2.16
backup_date="$(date +%Y-%m-%d-%H%M)"
_SYMPA_USER=sympa
#_PREFIX=/home/sympa
_PREFIX=/usr/local/sympa
_SYMPA_LIST_DATA_DIR=/data/sympa/list_data
_SYMPA_MAIN_CONF_DIR=/etc/sympa
_START_AT_BOOTTIME=yes
_SYMLINK_INSTALL_DIR=no
_SYMPA_DOMAIN=sympa.oopen.de
_SYMPA_LISTMASTER=support@oopen.de
_SYMPA_DB_TYPE=mysql
_SYMPA_DB_HOST=127.0.0.1
## -
## - End: pre-defined Parameters
_srcdir=/usr/local/src/sympa
err_log="$(mktemp)"
_required_debian_packages="
libauthcas-perl
@ -91,6 +72,13 @@ _required_debian_packages="
## --- some functions
## ---
clean_up() {
# Perform program exit housekeeping
rm -f "$err_log"
exit $1
}
echononl(){
echo X\\c > /tmp/shprompt$$
if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then
@ -107,7 +95,7 @@ fatal(){
echo ""
echo -e "\t\033[31m\033[1mInstalllation is canceled\033[m\033[m"
echo ""
exit 1
clean_up 1
}
warn (){
@ -146,6 +134,83 @@ echo_skipped() {
## ---
## --- END: functions
trap clean_up SIGHUP SIGINT SIGTERM
# - Support systemd ?
# -
if [[ "X$(which systemd)" = "X" ]]; then
SYSTEMD_EXISTS=false
else
SYSTEMD_EXISTS=true
fi
DEFAULT_PREFIX="/usr/local/sympa"
DEFAULT_SYMPA_USER="sympa"
DEFAULT_SYMPA_MAIN_CONF_DIR="/etc/sympa"
DEFAULT_SYMPA_LIST_DATA_DIR="/data/sympa/list_data"
DEFAULT_START_AT_BOOTTIME="yes"
DEFAULT_SYMPA_DB_TYPE="mysql"
DEFAULT_SYMPA_DB_HOST="127.0.0.1"
DEFAULT_SYMPA_DB_NAME="sympa"
DEFAULT_SYMPA_DB_USER="sympa"
# - DEFAULT_SYMPA_DB_PORT will be determined later
DEFAULT_VSERVER_GUEST="no"
echo
echononl "\tInclude Configuration file.."
if [[ ! -f $conf_file ]]; then
echo_failed
fatal "Missing configuration file '$conf_file'"
else
source $conf_file
echo_ok
fi
if [[ -z "$SYMPA_DOMAIN" ]]; then
fatal "Missing value for the sympa domain (SYMPA_DOMAIN)"
else
DEFAULT_SYMPA_DOMAIN="$SYMPA_DOMAIN"
fi
DEFAULT_SYMPA_WEB_URL="https://$SYMPA_DOMAIN/wws"
[[ -n "$PREFIX" ]] && DEFAULT_PREFIX="$PREFIX"
[[ -n "$SYMPA_USER" ]] && DEFAULT_SYMPA_USER="$SYMPA_USER"
[[ -n "$SYMPA_MAIN_CONF_DIR" ]] && DEFAULT_SYMPA_MAIN_CONF_DIR="$SYMPA_MAIN_CONF_DIR"
[[ -n "$SYMPA_LISTMASTER" ]] && DEFAULT_SYMPA_LISTMASTER="$SYMPA_LISTMASTER"
[[ -n "$SYMPA_LIST_DATA_DIR" ]] && DEFAULT_SYMPA_LIST_DATA_DIR="$SYMPA_LIST_DATA_DIR"
[[ -n "$START_AT_BOOTTIME" ]] && DEFAULT_START_AT_BOOTTIME="$START_AT_BOOTTIME"
[[ -n "$SYMPA_DB_NAME" ]] && DEFAULT_SYMPA_DB_NAME="$SYMPA_DB_NAME"
[[ -n "$SYMPA_DB_PORT" ]] && DEFAULT_SYMPA_DB_PORT="$SYMPA_DB_PORT"
[[ -n "$SYMPA_DB_USER" ]] && DEFAULT_SYMPA_DB_USER="$SYMPA_DB_USER"
[[ -n "$VSERVER_GUEST" ]] && DEFAULT_VSERVER_GUEST="$VSERVER_GUEST"
[[ -n "$SYMPA_DB_PASSWD" ]] && DEFAULT_SYMPA_DB_PASSWD="$SYMPA_DB_PASSWD"
if [[ -n "$SYMPA_LISTMASTER" ]] ; then
DEFAULT_SYMPA_LISTMASTER="$SYMPA_LISTMASTER"
else
DEFAULT_SYMPA_LISTMASTER="postmaster@$SYMPA_DOMAIN"
fi
if [[ -z "$MYSQL_CREDENTIALS" ]] ; then
if [ -f "/usr/local/mysql/sys-maint.cnf" ]; then
mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf"
elif [ -f "/etc/mysql/debian.cnf" ]; then
mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf"
fi
else
mysql_credential_args="$MYSQL_CREDENTIALS"
fi
APACHE_INIT_SCRIPT=""
if [ -x "/etc/init.d/apache2" ]; then
@ -156,6 +221,7 @@ else
fatal 'Cannot find init-script for Apache web server!'
fi
## - Determin the IP-Addresses
## -
__ipv4="`ifconfig | grep -e \"^\s*inet Adresse\" | grep -v \"127.0.0.1\" | awk '{print$2}' | cut -d\":\" -f2 | sort | head -1`"
@ -294,7 +360,7 @@ if [ "$DISTRIBUTION" == "other" ]; then
info "Distributions other than Debian are not supported by that script."
echo -e "\n\t \033[31m\033[1mInstallation is canceled\033[m\033[m .."
echo ""
exit 2
clean_up 2
elif [ "$DISTRIBUTION" == "Debian" ]; then
SYMPA_INIT_DIR=/etc/init.d
else
@ -349,8 +415,8 @@ while [ "X$SYMPA_VERSION" = "X" ]; do
fi
done
_builddir=${_srcdir}/sympa-$SYMPA_VERSION
_logdir=${_srcdir}/log_sympa-$SYMPA_VERSION
_builddir=${_src_base_dir}/sympa-$SYMPA_VERSION
_logdir=${_src_base_dir}/log_sympa-$SYMPA_VERSION
if $UPDATE_SYMPA ; then
_log_file=${_logdir}/sympa_update.log
else
@ -425,10 +491,10 @@ if ! $UPDATE_SYMPA ; then
SYMPA_USER=
while [ "X$SYMPA_USER" = "X" ]
do
echononl "Sympa user [${_SYMPA_USER}]: "
echononl "Sympa user [${DEFAULT_SYMPA_USER}]: "
read SYMPA_USER
if [ "X$SYMPA_USER" = "X" ]; then
SYMPA_USER=$_SYMPA_USER
SYMPA_USER=$DEFAULT_SYMPA_USER
fi
done
SYMPA_GROUP=
@ -448,10 +514,10 @@ echo ""
echo "Specify Sympa's installation directory."
echo ""
PREFIX=
echononl "Sympa installation directory [${_PREFIX}]: "
echononl "Sympa installation directory [${DEFAULT_PREFIX}]: "
read PREFIX
if [ "X$PREFIX" = "X" ]; then
PREFIX=$_PREFIX
PREFIX=$DEFAULT_PREFIX
fi
SYMPA_MANPATH=${PREFIX}/share/man
SYMPA_BIN_DIR=${PREFIX}/bin
@ -481,11 +547,11 @@ echo "--"
echo ""
echo "Specify directory of Sympa main configuration file (sympa.conf)."
echo ""
SYMPA_MAIN_CONF_DIR=$_SYMPA_MAIN_CONF_DIR
echononl "Sympa main configuration directory [${_SYMPA_MAIN_CONF_DIR}]: "
SYMPA_MAIN_CONF_DIR=
echononl "Sympa main configuration directory [${DEFAULT_SYMPA_MAIN_CONF_DIR}]: "
read SYMPA_MAIN_CONF_DIR
if [ "X$SYMPA_MAIN_CONF_DIR" = "X" ]; then
SYMPA_MAIN_CONF_DIR=$_SYMPA_MAIN_CONF_DIR
SYMPA_MAIN_CONF_DIR=$DEFAULT_SYMPA_MAIN_CONF_DIR
fi
if $UPDATE_SYMPA ; then
@ -508,8 +574,8 @@ else
done
_empty_conf_file=`echo "$_empty_conf_file" | tr '[:upper:]' '[:lower:]'`
if [ "$_empty_conf_file" = "yes" ]; then
mv ${SYMPA_MAIN_CONF_DIR}/sympa.conf ${SYMPA_MAIN_CONF_DIR}/sympa.conf.`date +%Y%m%d-%H%M`
ok "Saved ${SYMPA_MAIN_CONF_DIR}/sympa.conf to ${SYMPA_MAIN_CONF_DIR}/sympa.conf.`date +%Y%m%d-%H%M`"
mv ${SYMPA_MAIN_CONF_DIR}/sympa.conf ${SYMPA_MAIN_CONF_DIR}/sympa.conf.$backup_date
ok "Saved ${SYMPA_MAIN_CONF_DIR}/sympa.conf to ${SYMPA_MAIN_CONF_DIR}/sympa.conf.$backup_date"
fi
fi
fi
@ -523,11 +589,11 @@ if $UPDATE_SYMPA ; then
echo ""
echo "Specify Sympa's list data directory."
echo ""
SYMPA_LIST_DATA_DIR=$_SYMPA_LIST_DATA_DIR
echononl "Sympa's list data directory [${_SYMPA_LIST_DATA_DIR}]: "
SYMPA_LIST_DATA_DIR=
echononl "Sympa's list data directory [${DEFAULT_SYMPA_LIST_DATA_DIR}]: "
read SYMPA_LIST_DATA_DIR
if [ "X$SYMPA_LIST_DATA_DIR" = "X" ]; then
SYMPA_LIST_DATA_DIR=$_SYMPA_LIST_DATA_DIR
SYMPA_LIST_DATA_DIR=$DEFAULT_SYMPA_LIST_DATA_DIR
fi
fi
else
@ -536,11 +602,11 @@ else
echo ""
echo "Specify Sympa's list data directory."
echo ""
SYMPA_LIST_DATA_DIR=$_SYMPA_LIST_DATA_DIR
echononl "Sympa's list data directory [${_SYMPA_LIST_DATA_DIR}]: "
SYMPA_LIST_DATA_DIR=
echononl "Sympa's list data directory [${DEFAULT_SYMPA_LIST_DATA_DIR}]: "
read SYMPA_LIST_DATA_DIR
if [ "X$SYMPA_LIST_DATA_DIR" = "X" ]; then
SYMPA_LIST_DATA_DIR=$_SYMPA_LIST_DATA_DIR
SYMPA_LIST_DATA_DIR=$DEFAULT_SYMPA_LIST_DATA_DIR
fi
fi
if $UPDATE_SYMPA ; then
@ -692,7 +758,6 @@ else
fi
if ! $UPDATE_SYMPA ; then
echo ""
@ -705,10 +770,10 @@ if ! $UPDATE_SYMPA ; then
echo "Default domain for the mailing lists"
echo ""
SYMPA_DOMAIN=
echononl "domain [${_SYMPA_DOMAIN}]: "
echononl "domain [${DEFAULT_SYMPA_DOMAIN}]: "
read SYMPA_DOMAIN
if [ "X$SYMPA_DOMAIN" = "X" ]; then
SYMPA_DOMAIN=$_SYMPA_DOMAIN
SYMPA_DOMAIN=$DEFAULT_SYMPA_DOMAIN
fi
echo ""
@ -717,10 +782,10 @@ if ! $UPDATE_SYMPA ; then
echo " - Comma seperated list of email addresses"
echo ""
SYMPA_LISTMASTER=
echononl "listmaster [${_SYMPA_LISTMASTER}]: "
echononl "listmaster [${DEFAULT_SYMPA_LISTMASTER}]: "
read SYMPA_LISTMASTER
if [ "X$SYMPA_LISTMASTER" = "X" ]; then
SYMPA_LISTMASTER=$_SYMPA_LISTMASTER
SYMPA_LISTMASTER=$DEFAULT_SYMPA_LISTMASTER
fi
echo ""
@ -728,11 +793,10 @@ if ! $UPDATE_SYMPA ; then
echo "URL for the Sympa web interface"
echo ""
SYMPA_WEB_URL=
_SYMPA_WEB_URL="https://$SYMPA_DOMAIN/wws"
echononl "wwsympa_url [${_SYMPA_WEB_URL}]: "
echononl "wwsympa_url [${DEFAULT_SYMPA_WEB_URL}]: "
read SYMPA_WEB_URL
if [ "X$SYMPA_WEB_URL" = "X" ]; then
SYMPA_WEB_URL=$_SYMPA_WEB_URL
SYMPA_WEB_URL=$DEFAULT_SYMPA_WEB_URL
fi
echo ""
@ -781,12 +845,13 @@ if ! $UPDATE_SYMPA ; then
echo ""
SYMPA_DB_NAME=
while [ "X$SYMPA_DB_NAME" = "X" ]; do
echononl "db_name: "
echononl "db_name [$DEFAULT_SYMPA_DB_NAME]: "
read SYMPA_DB_NAME
if [ "X$SYMPA_DB_NAME" = "X" ]; then
echo ""
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
continue
#echo ""
#echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
#continue
SYMPA_DB_NAME="$DEFAULT_SYMPA_DB_NAME"
fi
done
@ -795,34 +860,38 @@ if ! $UPDATE_SYMPA ; then
echo "Database host name."
echo ""
SYMPA_DB_HOST=
echononl "db_host [$_SYMPA_DB_HOST]: "
echononl "db_host [$DEFAULT_SYMPA_DB_HOST]: "
read SYMPA_DB_HOST
if [ "X$SYMPA_DB_HOST" == "X" ]; then
SYMPA_DB_HOST=$_SYMPA_DB_HOST
SYMPA_DB_HOST=$DEFAULT_SYMPA_DB_HOST
fi
if [ "$SYMPA_DB_HOST" == "localhost" ]; then
if [ "$SYMPA_DB_HOST" = "localhost" ]; then
SYMPA_DB_HOST=127.0.0.1
fi
if [ "$SYMPA_DB_TYPE" == "mysql" ]; then
_SYMPA_DB_PORT=3306
elif [ "$SYMPA_DB_TYPE" == "Pg" ]; then
_SYMPA_DB_PORT=5432
elif [ "$SYMPA_DB_TYPE" == "Sybase" ]; then
_SYMPA_DB_PORT=2638
elif [ "$SYMPA_DB_TYPE" == "Oracle" ]; then
_SYMPA_DB_PORT=1575
if [[ -z "$SYMPA_DB_PORT" ]]; then
if [[ "$SYMPA_DB_TYPE" = "mysql" ]]; then
DEFAULT_SYMPA_DB_PORT=3306
elif [[ "$SYMPA_DB_TYPE" = "Pg" ]]; then
DEFAULT_SYMPA_DB_PORT=5432
elif [[ "$SYMPA_DB_TYPE" = "Sybase" ]]; then
DEFAULT_SYMPA_DB_PORT=2638
elif [[ "$SYMPA_DB_TYPE" = "Oracle" ]]; then
DEFAULT_SYMPA_DB_PORT=1575
fi
fi
if [ "$SYMPA_DB_TYPE" != "SQLite" ]; then
echo ""
echo ""
echo "Database port."
echo ""
SYMPA_DB_PORT=
echononl "db_port [$_SYMPA_DB_PORT]: "
echononl "db_port [$DEFAULT_SYMPA_DB_PORT]: "
read SYMPA_DB_PORT
if [ "X$SYMPA_DB_PORT" == "X" ]; then
SYMPA_DB_PORT=$_SYMPA_DB_PORT
SYMPA_DB_PORT=$DEFAULT_SYMPA_DB_PORT
fi
fi
@ -832,29 +901,38 @@ if ! $UPDATE_SYMPA ; then
echo ""
SYMPA_DB_USER=
while [ "X$SYMPA_DB_USER" = "X" ]; do
echononl "db_user: "
echononl "db_user [$DEFAULT_SYMPA_DB_USER]: "
read SYMPA_DB_USER
if [ "X$SYMPA_DB_USER" = "X" ]; then
echo ""
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
continue
#echo ""
#echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
#continue
SYMPA_DB_USER="$DEFAULT_SYMPA_DB_USER"
fi
done
echo ""
echo ""
echo "Password for database user."
echo "Password for database user $SYMPA_DB_USER."
echo ""
SYMPA_DB_PASSWD=
while [ "X$SYMPA_DB_PASSWD" = "X" ]; do
echononl "db_passwd: "
if [[ -n "$DEFAULT_SYMPA_DB_PASSWD" ]]; then
echononl "db_passwd [$DEFAULT_SYMPA_DB_PASSWD]: "
read SYMPA_DB_PASSWD
if [ "X$SYMPA_DB_PASSWD" = "X" ]; then
echo ""
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
continue
if [[ "X$SYMPA_DB_PASSWD" ]] ; then
SYMPA_DB_PASSWD="$DEFAULT_SYMPA_DB_PASSWD"
fi
done
else
while [ "X$SYMPA_DB_PASSWD" = "X" ]; do
echononl "db_passwd: "
read SYMPA_DB_PASSWD
if [ "X$SYMPA_DB_PASSWD" = "X" ]; then
echo ""
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
continue
fi
done
fi
else
@ -871,101 +949,124 @@ fi
_wwsympa_dir="$(echo $SYMPA_WEB_URL | grep / | cut -d/ -f4-)"
## - Test if NySQL connection is available
## -
if [ "$SYMPA_DB_TYPE" == "mysql" ]; then
mysql -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p"$SYMPA_DB_PASSWD" $SYMPA_DB_NAME -N -s -e "show databases" > /dev/null 2>&1
if [ "$?" != "0" ]; then
if $UPDATE_SYMPA ; then
if [[ "$SYMPA_DB_TYPE" = "mysql" ]]; then
if $UPDATE_SYMPA ; then
mysql -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p"$SYMPA_DB_PASSWD" $SYMPA_DB_NAME -N -s -e \
"SHOW DATABASES LIKE '$SYMPA_DB_NAME'" > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
fatal "Cannot connect to database witg given credentials"
else
warn "Cannot connect to database. Try to create a new one with the given credentials"
if [ -f "/usr/local/mysql/sys-maint.cnf" ]; then
mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf"
elif [ -f "/etc/mysql/debian.cnf" ]; then
mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf"
else
fatal "Cannot create new database \"$SYMPA_DB_NAME\""
fi
mysql $mysql_credential_args -N -s -e \
"CREATE DATABASE IF NOT EXISTS $SYMPA_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci"
if [ "$?" != "0" ]; then
fatal "Cannot create Database \"$SYMPA_DB_NAME\""
fi
mysql $mysql_credential_args -N -s -e \
"GRANT ALL ON ${SYMPA_DB_NAME}.* TO '${SYMPA_DB_USER}'@'localhost' IDENTIFIED BY '${SYMPA_DB_PASSWD}'"
if [ "$?" != "0" ]; then
fatal "Cannot set credentials to db-user \"$SYMPA_DB_USER\" on Database \"$SYMPA_DB_NAME\"!"
fi
mysql $mysql_credential_args -N -s -e \
"GRANT ALL ON ${SYMPA_DB_NAME}.* TO '${SYMPA_DB_USER}'@'`hostname -f`' IDENTIFIED BY '${SYMPA_DB_PASSWD}'"
if [ "$?" != "0" ]; then
fatal "Cannot set credentials to db-user \"$SYMPA_DB_USER\" on Database \"$SYMPA_DB_NAME\"!"
fi
mysql $mysql_credential_args -N -s -e \
"USE mysql; UPDATE user SET Super_priv = 'Y' WHERE User = '$SYMPA_DB_USER'"
if [ "$?" != "0" ]; then
fatal "Cannot set \"Super_priv\" to user \"$SYMPA_DB_USER\"!"
fi
mysql $mysql_credential_args -N -s -e "FLUSH PRIVILEGES"
if [ "$?" != "0" ]; then
fatal "\"FLUSH PRIVILEGES\" failed!"
fi
mysql -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p"$SYMPA_DB_PASSWD" $SYMPA_DB_NAME -N -s -e "show tables" > /dev/null 2>&1
if [ "$?" != "0" ]; then
fatal "Creation of Database \"$SYMPA_DB_NAME\" or setting credentials to db-user \"$SYMPA_DB_USER\" failed!"
fi
echo "$SYMPA_DB_NAME $SYMPA_DB_USER $SYMPA_DB_PASSWD" > /root/databases.txt.$SYMPA_DB_NAME
ok "Creation of Database \"$SYMPA_DB_NAME\" was successfully."
fi
else
if ! $UPDATE_SYMPA ; then
_tables=$(mysql -u$SYMPA_DB_USER -p$SYMPA_DB_PASSWD $SYMPA_DB_NAME -N -s -e \
'SHOW TABLES' 2>/dev/null)
if [ -n "$_tables" ]; then
warn "Database \"$SYMPA_DB_NAME\" contains tables, but this is an initial installation!"
_empty_db=""
echononl "Empty database \"$SYMPA_DB_NAME\" now? (yes/no) [yes]: "
read _empty_db
if [ "X$_empty_db" = "X" ]; then
_empty_db=yes
fi
while [ "X$_empty_db" != "Xyes" -a "X$_empty_db" != "XYes" -a "X$_empty_db" != "XNo" -a "X$_empty_db" != "Xno" ]; do
echo ""
echononl "\twrong entry! [yes/no]: "
read OK
done
_empty_db=`echo "$_empty_db" | tr '[:upper:]' '[:lower:]'`
if [ "$_empty_db" = "yes" ]; then
_failed=false
for _table in $_tables ; do
mysql -u$SYMPA_DB_USER -p$SYMPA_DB_PASSWD $SYMPA_DB_NAME -N -s -e "DROP TABLE $_table" 2> /dev/null
if [ "$?" != "0" ]; then
_failed=true
if [[ -z "$mysql_credential_args" ]]; then
fatal "No root access to MySQL database given (See Parameter MYSQL_CREDENTIALS)!"
else
if echo "$(mysql $mysql_credential_args -N -s -e "SHOW DATABASES";)" | grep -q "$SYMPA_DB_NAME" ; then
mysql -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p"$SYMPA_DB_PASSWD" $SYMPA_DB_NAME -N -s -e \
"SHOW DATABASES LIKE '$SYMPA_DB_NAME'" > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
fatal "Database '$SYMPA_DB_NAME'exists, but is not accessable by the given credentials for user '$SYMPA_DB_USER'!"
else
_tables=$(mysql $mysql_credential_args $SYMPA_DB_NAME -N -s -e 'SHOW TABLES' 2>/dev/null)
if [[ -n "$_tables" ]]; then
warn "Database \"$SYMPA_DB_NAME\" exists AND contains tables, but this is an initial installation!"
_empty_db=""
echononl "Empty database \"$SYMPA_DB_NAME\" now? (yes/no) [yes]: "
read _empty_db
if [ "X$_empty_db" = "X" ]; then
_empty_db=yes
fi
while [ "X$_empty_db" != "Xyes" -a "X$_empty_db" != "XYes" -a "X$_empty_db" != "XNo" -a "X$_empty_db" != "Xno" ]; do
echo ""
echononl "\twrong entry! [yes/no]: "
read OK
done
_empty_db=`echo "$_empty_db" | tr '[:upper:]' '[:lower:]'`
if [[ "$_empty_db" = "yes" ]]; then
echo ""
echononl "\tBackup database '$SYMPA_DB_NAME'.."
mysqldump $mysql_credential_args --opt $SYMPA_DB_NAME > ${_src_base_dir}/${SYMPA_DB_NAME}-${backup_date}.sql 2> $err_log
if [[ $? -eq 0 ]]; then
echo_ok
else
echo_failed
fatal "$(cat $err_log)"
fi
_failed=false
for _table in $_tables ; do
mysql $mysql_credential_args $SYMPA_DB_NAME -N -s -e "DROP TABLE $_table" 2> /dev/null
if [ "$?" != "0" ]; then
_failed=true
fi
done
if $_failed ; then
error "Cleaning up database \"$SYMPA_DB_NAME\" failed!"
else
ok "Cleaning up database \"$SYMPA_DB_NAME\" was successful."
fi
else
fatal "Clean up database '$SYMPA_DB_NAME' or use another one."
fi
done
if $_failed ; then
error "Cleaning up database \"$SYMPA_DB_NAME\" failed!"
else
ok "Cleaning up database \"$SYMPA_DB_NAME\" was successful."
fi
fi
else
mysql $mysql_credential_args -N -s -e \
"CREATE DATABASE IF NOT EXISTS $SYMPA_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci"
if [[ $? -ne 0 ]]; then
fatal "Cannot create Database \"$SYMPA_DB_NAME\""
fi
mysql $mysql_credential_args -N -s -e \
"GRANT ALL ON ${SYMPA_DB_NAME}.* TO '${SYMPA_DB_USER}'@'localhost' IDENTIFIED BY '${SYMPA_DB_PASSWD}'"
if [[ $? -ne 0 ]]; then
fatal "Cannot set credentials to db-user \"$SYMPA_DB_USER\" on Database \"$SYMPA_DB_NAME\"!"
fi
mysql $mysql_credential_args -N -s -e \
"GRANT ALL ON ${SYMPA_DB_NAME}.* TO '${SYMPA_DB_USER}'@'`hostname -f`' IDENTIFIED BY '${SYMPA_DB_PASSWD}'"
if [[ $? -ne 0 ]]; then
fatal "Cannot set credentials to db-user \"$SYMPA_DB_USER\" on Database \"$SYMPA_DB_NAME\"!"
fi
mysql $mysql_credential_args -N -s -e \
"USE mysql; UPDATE user SET Super_priv = 'Y' WHERE User = '$SYMPA_DB_USER'"
if [[ $? -ne 0 ]]; then
fatal "Cannot set \"Super_priv\" to user \"$SYMPA_DB_USER\"!"
fi
mysql $mysql_credential_args -N -s -e "FLUSH PRIVILEGES"
if [[ $? -ne 0 ]]; then
fatal "\"FLUSH PRIVILEGES\" failed!"
fi
mysql -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p"$SYMPA_DB_PASSWD" $SYMPA_DB_NAME -N -s -e "show tables" > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
fatal "Creation of Database \"$SYMPA_DB_NAME\" or setting credentials to db-user \"$SYMPA_DB_USER\" failed!"
fi
echo "$SYMPA_DB_NAME $SYMPA_DB_USER $SYMPA_DB_PASSWD" > /root/databases.txt.$SYMPA_DB_NAME
ok "Creation of Database \"$SYMPA_DB_NAME\" was successfully."
fi
fi
fi
elif [[ "$SYMPA_DB_TYPE" = "Pg" ]] || [[ "$SYMPA_DB_TYPE" = "Oracle" ]] || [[ "$SYMPA_DB_TYPE" = "Sybase" ]]; then
if $UPDATE_SYMPA ; then
warn "Databasetype is not fully supported by this script.\n\n\t Take care, database '$SYMPA_DB_NAME' is accessible."
else
warn "Databasetype is not fully supported by this script.\n\n\t Take care, an empty database '$SYMPA_DB_NAME' exists and is accessible"
fi
fi
if ! $UPDATE_SYMPA ; then
echo ""
echo "--"
echo ""
__START_AT_BOOTTIME=
echononl "Start at boot time (yes/no) [${_START_AT_BOOTTIME}]: "
echononl "Start at boot time (yes/no) [${DEFAULT_START_AT_BOOTTIME}]: "
read __START_AT_BOOTTIME
if [ "X$__START_AT_BOOTTIME" = "X" ]; then
__START_AT_BOOTTIME=$_START_AT_BOOTTIME
__START_AT_BOOTTIME=$DEFAULT_START_AT_BOOTTIME
fi
__START_AT_BOOTTIME=`echo $__START_AT_BOOTTIME | tr '[:upper:]' '[:lower:]'`
if [ "$__START_AT_BOOTTIME" = "yes" ] ; then
@ -975,21 +1076,6 @@ if ! $UPDATE_SYMPA ; then
fi
fi
#echo ""
#echo "--"
#echo ""
#__SYMLINK_INSTALL_DIR=
#echononl "Set sysmlink for installation directory (yes/no) [${_SYMLINK_INSTALL_DIR}]: "
#read __SYMLINK_INSTALL_DIR
#if [ "X$__SYMLINK_INSTALL_DIR" = "X" ]; then
# __SYMLINK_INSTALL_DIR=$_SYMLINK_INSTALL_DIR
#fi
#__SYMLINK_INSTALL_DIR=`echo $__SYMLINK_INSTALL_DIR | tr '[:upper:]' '[:lower:]'`
#if [ "$__SYMLINK_INSTALL_DIR" = "yes" ] ; then
# SYMLINK_INSTALL_DIR=true
#else
# SYMLINK_INSTALL_DIR=false
#fi
if $UPDATE_SYMPA ; then
SYMPA_UID=`grep -e "^$SYMPA_USER" /etc/passwd | cut -d":" -f3`
@ -1028,10 +1114,10 @@ echo -e "\033[32m--\033[m"
echo ""
echo "Are you installing on a VServer guest system?"
echo ""
echononl "VServer Gastsystem (yes/no) [$_VSERVER_GUEST]: "
echononl "VServer Gastsystem (yes/no) [$DEFAULT_VSERVER_GUEST]: "
read OK
if [ "X$OK" = "X" ]; then
OK=$_VSERVER_GUEST
OK=$DEFAULT_VSERVER_GUEST
fi
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do
@ -1042,12 +1128,6 @@ while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do
done
if [ "$OK" = "yes" ]; then
SYSTEMD_EXISTS=false
else
if [ "X`which systemd`" = "X" ]; then
SYSTEMD_EXISTS=false
else
SYSTEMD_EXISTS=true
fi
fi
if $UPDATE_SYMPA ;then
@ -1147,8 +1227,8 @@ echo ""
echo ""
echononl "\tCreate base source directory"
if [ ! -d "$_srcdir" ]; then
mkdir -p $_srcdir
if [ ! -d "$_src_base_dir" ]; then
mkdir -p $_src_base_dir
if [ "$?" = "0" ]; then
echo_ok
else
@ -1162,7 +1242,7 @@ fi
if [ -d "$_logdir" ];then
echononl "\tBackup existing log directory \"`basename ${_logdir}`\" .. .."
mv $_logdir $_logdir.`date +%Y%m%d-%H%M`
mv $_logdir $_logdir.$backup_date
if [ "$?" = "0" ]; then
echo_ok
else
@ -1303,7 +1383,7 @@ echo "" >> $_log_file
echo "SYSTEMD_EXISTS=$SYSTEMD_EXISTS" >> $_log_file
echo "" >> $_log_file
echo "_srcdir=$_srcdir" >> $_log_file
echo "_src_base_dir=$_src_base_dir" >> $_log_file
echo "_builddir=$_builddir" >> $_log_file
echo "_logdir=$_logdir" >> $_log_file
@ -1311,10 +1391,10 @@ echo ""
## -
echo "" >> $_log_file
echo "## - Change into base source directory \"$_srcdir\" .." >> $_log_file
echo "## - Change into base source directory \"$_src_base_dir\" .." >> $_log_file
echo "## -" >> $_log_file
echo "cd $_srcdir" >> $_log_file
cd $_srcdir >> $_log_file 2>&1 || fatal "Changing Directory (cd) to \"${_srcdir}\" failed!"
echo "cd $_src_base_dir" >> $_log_file
cd $_src_base_dir >> $_log_file 2>&1 || fatal "Changing Directory (cd) to \"${_src_base_dir}\" failed!"
echononl "\tGet source sympa-${SYMPA_VERSION}.tar.gz .."
@ -1687,13 +1767,12 @@ else
done
fi
_date=`date +%Y%m%d-%H%M`
echononl "\tBackup existing installation directory ($PREFIX) .."
echo "" >> $_log_file
echo "## - Backup existing installation directory ($PREFIX) .." >> $_log_file
echo "## -" >> $_log_file
echo "cp -a $PREFIX ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.$_date" >> $_log_file
cp -a $PREFIX ${PREFIX}.${SYMPA_OLD_VERSION}.$_date >> $_log_file 2>&1
echo "cp -a $PREFIX ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.$backup_date" >> $_log_file
cp -a $PREFIX ${PREFIX}.${SYMPA_OLD_VERSION}.$backup_date >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
@ -1710,8 +1789,8 @@ else
echo "" >> $_log_file
echo "## - Backup existing list directory ($SYMPA_LIST_DATA_DIR) .." >> $_log_file
echo "## -" >> $_log_file
echo "cp -a $SYMPA_LIST_DATA_DIR ${SYMPA_LIST_DATA_DIR}.$_date" >> $_log_file
cp -a $SYMPA_LIST_DATA_DIR ${SYMPA_LIST_DATA_DIR}.$_date >> $_log_file 2>&1
echo "cp -a $SYMPA_LIST_DATA_DIR ${SYMPA_LIST_DATA_DIR}.$backup_date" >> $_log_file
cp -a $SYMPA_LIST_DATA_DIR ${SYMPA_LIST_DATA_DIR}.$backup_date >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
@ -1729,9 +1808,9 @@ else
echo "" >> $_log_file
echo "## - Dump Database \"$SYMPA_DB_NAME\" .." >> $_log_file
echo "## -" >> $_log_file
echo "mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.${_date}/${SYMPA_DB_NAME}-${_date}.sql" >> $_log_file
#mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.${_date}/${SYMPA_DB_NAME}-${_date}.sql 2>> $_log_file
mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > `dirname ${PREFIX}`/${SYMPA_DB_NAME}.${SYMPA_OLD_VERSION}.${_date}.sql 2>> $_log_file
echo "mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.${backup_date}/${SYMPA_DB_NAME}-${_date}.sql" >> $_log_file
#mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.${_date}/${SYMPA_DB_NAME}-${backup_date}.sql 2>> $_log_file
mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > `dirname ${PREFIX}`/${SYMPA_DB_NAME}.${SYMPA_OLD_VERSION}.${backup_date}.sql 2>> $_log_file
if [ "$?" = "0" ]; then
echo_ok
else
@ -1755,8 +1834,8 @@ else
echo "" >> $_log_file
echo "## - Backup existing init script .." >> $_log_file
echo "## -" >> $_log_file
echo "cp -a ${SYMPA_INIT_DIR}/sympa ${SYMPA_INIT_DIR}/sympa.$_date" >> $_log_file
cp -a ${SYMPA_INIT_DIR}/sympa ${SYMPA_INIT_DIR}/sympa.$_date >> $_log_file 2>&1
echo "cp -a ${SYMPA_INIT_DIR}/sympa ${SYMPA_INIT_DIR}/sympa.$backup_date" >> $_log_file
cp -a ${SYMPA_INIT_DIR}/sympa ${SYMPA_INIT_DIR}/sympa.$backup_date >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
@ -1790,8 +1869,8 @@ if [ -d "$_builddir" ];then
echo "" >> $_log_file
echo "## - Move (backup) existing source directory ..." >> $_log_file
echo "## -" >> $_log_file
echo "mv $_builddir $_builddir.`date +%Y%m%d-%H%M`" >> $_log_file
mv $_builddir $_builddir.`date +%Y%m%d-%H%M` >> $_log_file 2>&1
echo "mv $_builddir $_builddir.$backup_date" >> $_log_file
mv $_builddir $_builddir.$backup_date >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
@ -1805,10 +1884,10 @@ fi
## - Unpack source archive
## -
echo "" >> $_log_file
echo "## - Change into base source directory \"$_srcdir\" .." >> $_log_file
echo "## - Change into base source directory \"$_src_base_dir\" .." >> $_log_file
echo "## -" >> $_log_file
echo "cd $_srcdir" >> $_log_file
cd $_srcdir
echo "cd $_src_base_dir" >> $_log_file
cd $_src_base_dir
echo "" >> $_log_file
echo "## - Unpack sympa-${SYMPA_VERSION}.tar.gz .." >> $_log_file
@ -1888,8 +1967,8 @@ if ! $UPDATE_SYMPA ; then
echo "" >> $_log_file
echo "## - Backup existing installation directory.." >> $_log_file
echo "## -" >> $_log_file
echo "mv $PREFIX $PREFIX.`date +%Y%m%d-%H%M`" >> $_log_file
mv $PREFIX $PREFIX.`date +%Y%m%d-%H%M` >> $_log_file 2>&1
echo "mv $PREFIX $PREFIX.$backup_date" >> $_log_file
mv $PREFIX $PREFIX.$backup_date >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
@ -1977,37 +2056,6 @@ else
fi
fi
#if $SYMLINK_INSTALL_DIR ; then
#
# if [ -h "/usr/local/sympa" ]; then
# echo "" >> $_log_file
# echo "## - Remove existing symlink /usr/local/sympa .." >> $_log_file
# echo "## -" >> $_log_file
# echo "rm /usr/local/sympa" >> $_log_file
# echononl "\tRemove existing symlink /usr/local/sympa .."
# rm /usr/local/sympa >> $_log_file 2>&1
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# warn "Remove existing symlink /usr/local/sympa failed!"
# fi
# fi
#
# echo "" >> $_log_file
# echo "## - Set Symlink /usr/local/sympa .." >> $_log_file
# echo "## - ln -s `basename $PREFIX` /usr/local/sympa" >> $_log_file
# echo "" >> $_log_file
# echononl "\tSet Symlink /usr/local/sympa .."
# ln -s `basename $PREFIX` /usr/local/sympa >> $_log_file 2>&1
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# warn "Setting symlink /usr/local/sympa failed"
# fi
#fi
echo ""
echo -e "\t---"
echo -e "\t--- Configure Sympa mailing list manager (base configuration)"
@ -3502,4 +3550,4 @@ if [ -n "$msg_postfix" ]; then
fi
echo ""
exit
clean_up 0