sympa/install_sympa.sh

4843 lines
163 KiB
Bash
Executable File

#!/usr/bin/env bash
working_dir="$(dirname $(realpath $0))"
script_name="$(basename $(realpath $0))"
conf_file="${working_dir}/conf/${script_name%%.*}.conf"
_src_base_dir="$working_dir"
#conf_file="${_src_base_dir}/conf/install_sympa.conf"
backup_date="$(date +%Y-%m-%d-%H%M)"
err_log="$(mktemp)"
_required_debian_packages="
libauthcas-perl
libclass-singleton-perl
libdatetime-timezone-perl
libdatetime-format-mail-perl
libdbd-csv-perl
libdbd-odbc-perl
libdbd-mysql-perl
libdbd-odbc-perl
libdbd-sybase-perl
libdbd-pg-perl
libdbd-sqlite3-perl
libfile-nfslock-perl
libutf8-all-perl
libmime-base64-perl
libmime-charset-perl
libcrypt-openssl-x509-perl
libcrypt-smime-perl
libdata-password-perl
libproc-processtable-perl
libdbi-perl
libdbi-test-perl
libarchive-zip-perl
libmailtools-perl
libmsgcat-perl
libmime-tools-perl
libio-stringy-perl
libnet-ldap-perl
libcgi-fast-perl
libintl-perl
libmime-charset-perl
libmime-encwords-perl
libtemplate-perl
libxml-libxml-perl
perl-modules
libcgi-pm-perl
libhtml-stripscripts-parser-perl
libhtml-tree-perl
libhtml-format-perl
mhonarc
libregexp-common-perl
ca-certificates
lsb-base
libdbd-mysql-perl
libfcgi-perl
libfile-copy-recursive-perl
libnet-netmask-perl
libterm-progressbar-perl
libmime-lite-html-perl
libunicode-linebreak-perl
libio-socket-ssl-perl
libsoap-lite-perl
libmail-sendmail-perl
libmail-dkim-perl
cpanminus
spawn-fcgi
"
_needed_cpan_modules="
CPAN
Archive::Zip
CGI
Class::Singleton
DBD::mysql
DBI
DateTime::Format::Mail
DateTime::TimeZone
Digest::MD5
Encode
File::Copy::Recursive
File::NFSLock
File::Path
HTML::FormatText
HTML::StripScripts::Parser
HTML::TreeBuilder
IO::File
IO::Scalar
LWP::UserAgent
List::Util::XS
Locale::Messages
MHonArc::UTF8
MIME::Base64
MIME::Charset
MIME::EncWords
MIME::Lite::HTML
MIME::Tools
Mail::Address
Net::CIDR
Net::DNS
Sys::Syslog
Template
Term::ProgressBar
Text::LineFold
Time::HiRes
URI::Escape
XML::LibXML
AuthCAS
CGI::Fast
Clone
Crypt::CipherSaber
Crypt::OpenSSL::X509
Crypt::SMIME
DBD::CSV
DBD::ODBC
DBD::Pg
DBD::SQLite
DBD::Sybase
Data::Password
Encode::Locale
FCGI
IO::Socket::SSL
Mail::DKIM::Verifier
Net::DNS
Net::LDAP
Net::SMTP
SOAP::Lite
"
## --- 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
echo -e -n "$*\\c" 1>&2
else
echo -e -n "$*" 1>&2
fi
rm /tmp/shprompt$$
}
fatal(){
echo ""
echo -e "\t[ \033[31m\033[1mError\033[m ]: $*"
echo ""
echo -e "\t\033[31m\033[1mInstalllation is canceled\033[m\033[m"
echo ""
clean_up 1
}
warn (){
echo ""
echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*"
echo ""
}
info (){
echo ""
echo -e "\t[ \033[33m\033[1mInfo\033[m ]: $*"
echo ""
}
ok (){
echo ""
echo -e "\t[ \033[36m\033[1mOk\033[m ]: $*"
echo ""
}
error(){
echo ""
echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*"
echo ""
}
echo_ok() {
echo -e "\033[75G[ \033[32mok\033[m ]"
}
echo_failed(){
echo -e "\033[75G[ \033[1;31mfailed\033[m ]"
}
echo_skipped() {
echo -e "\033[75G[ \033[33m\033[1mskipped\033[m ]"
}
echo_wait(){
echo -en "\033[75G[ \033[5m\033[1mwait\033[m ]"
}
## ---
## --- END: functions
trap clean_up SIGHUP SIGINT SIGTERM
# - Support systemd ?
# -
_systemd="$(which systemd)"
_systemctl="$(which systemctl)"
if [[ -z "$_systemd" ]] && [[ -z "$_systemctl" ]]; then
SYSTEMD_SUPPORTED=false
else
SYSTEMD_SUPPORTED=true
fi
## ---
## --- Variable Settings
## ---
_CRONTAB_BAKUP_FILE=/tmp/crontab_root.sympa-install
SYMPA_BASE_PATH="/usr/local/sympa"
SYMPA_MANPATH="${SYMPA_BASE_PATH}/share/man"
ENABLE_FHS=no
if [[ "$ENABLE_FHS" = "no" ]]; then
SYMPA_STATIC_DIR="/usr/local/sympa/static_content"
SYMPA_PID_DIR="/usr/local/sympa"
SYMPA_BIN_DIR="/usr/local/sympa/bin"
SYMPA_CGI_DIR="$SYMPA_BIN_DIR"
SYMPA_LIBEXEC_DIR="$SYMPA_BIN_DIR"
else
SYMPA_STATIC_DIR="/usr/local/sympa/var/lib/sympa/static_content"
SYMPA_PID_DIR="/usr/local/sympa/var/run/sympa"
SYMPA_BIN_DIR="/usr/local/sympa/sbin"
SYMPA_CGI_DIR="/usr/local/sympa/lib/sympa/cgi"
SYMPA_LIBEXEC_DIR="/usr/local/sympa/libexec"
fi
DEFAULT_SYMPA_USER="sympa"
DEFAULT_SYMPA_MAIN_CONF_DIR="/etc/sympa"
DEFAULT_SYMPA_LIST_DATA_ROOT_DIR="/data"
DEFAULT_START_AT_BOOTTIME="yes"
DEFAULT_SYMPA_DB_TYPE="mysql"
DEFAULT_SYMPA_DB_HOST="localhost"
DEFAULT_SYMPA_DB_NAME="sympa"
DEFAULT_SYMPA_DB_USER="sympa"
DEFAULT_SYMPA_SYSTEMD_DIR="/etc/systemd/system"
# - 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 "$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_ROOT_DIR" ]] && DEFAULT_SYMPA_LIST_DATA_ROOT_DIR="$SYMPA_LIST_DATA_ROOT_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"
# -
[[ -n "$SYMPA_SYSTEMD_DIR" ]] && DEFAULT_SYMPA_SYSTEMD_DIR="$SYMPA_SYSTEMD_DIR"
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=""
APACHE_SERVICE_FILE=""
if $SYSTEMD_SUPPORTED ; then
# - Is Service exclusive controlled by systemd
# -
if systemctl -t service list-unit-files \
| grep -e "^apache2" \
| grep -q -E "(enabled|disabled|generated)" 2> /devnull ; then
APACHE_SERVICE_FILE=$(systemctl -t service list-unit-files \
| grep -E "^apache2\.service" \
| awk '{print$1}' \
| head -1 )
fi
fi
if [[ -z "$APACHE_SERVICE_FILE" ]] ; then
if [ -x "$(realpath /etc/init.d/apache2)" ]; then
APACHE_INIT_SCRIPT="/etc/init.d/apache2"
elif [ -x "$(realpath /etc/init.d/apachectl)" ]; then
APACHE_INIT_SCRIPT="/etc/init.d/apachectl"
fi
fi
if [[ -z "$APACHE_INIT_SCRIPT" ]] && [[ -z $APACHE_SERVICE_FILE ]]; then
fatal 'Neither an init-script nor a service file for apache2 found!'
fi
## - Determin the IP-Addresses
## -
#__ipv4="`ifconfig | grep -e \"^\s*inet\" | grep -v \"127.0.0.1\" | awk '{print$2}' | cut -d\":\" -f2 | sort | head -1`"
#__ipv6="`ifconfig | grep -e \"^\s*inet6\" | awk '{print$2}' | grep -v -e \"^::1/\" | grep -v -e \"^fe80\" | cut -d\"/\" -f1 | sort | head -1`"
_hostname="$(hostname -f)"
if [[ -n "$_hostname" ]] ; then
__ipv4="$(dig +short "$_hostname")"
__ipv6="$(dig +short "$_hostname" AAAA)"
fi
_debian_apache_installation=false
_base_webserver_info_needed=false
_apache_vhost_dir=""
apache_log_dir=""
apache_conf_dir=""
apache_vhost_dir=""
## - Determin VHost Configuration Directory
## -
if dpkg -l apache2 2> /dev/null | grep -e "^ii" > /dev/null 2>&1 ; then
_debian_apache_installation=true
if [ -d "/etc/apache2" -a -d "/etc/apache2/sites-available" ]; then
apache_vhost_dir=/etc/apache2/sites-available
apache_conf_dir=/etc/apache2
if [ -d "/var/log/apache2" ]; then
apache_log_dir=/var/log/apache2
else
error "Found Debian Apache Installation, but no Log Directory found!"
fatal "Something went wron with your Apache Installation"
fi
else
error "Found Debian Apache Installation, but no Configuration Directory for vhosts!"
fatal "Something went wron with your Apache Installation"
fi
source /etc/apache2/envvars
_httpd_binary=/usr/sbin/apache2
HTTPD_USER="$($_httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^User" | awk '{print$2}' | cut -d"=" -f2 | tr -d '"')"
else
## - Determin httpd binary
## -
_httpd_binary="`which httpd`"
if [ -z "$_httpd_binary" ]; then
_httpd_binary="$(ps -axu | grep httpd | grep -e "^root" | grep -v grep | awk '{print$11}')"
if [ -z "$_httpd_binary" ]; then
if [ -x "/usr/local/apache2/bin/httpd" ]; then
_httpd_binary="/usr/local/apache2/bin/httpd"
fi
fi
fi
## - Determin websever user
## -
web_user="`$_httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^User" | awk '{print$2}' | cut -d\"=\" -f2 | tr -d '"'`"
web_group="`$_httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^Group" | awk '{print$2}' | cut -d\"=\" -f2 | tr -d '"'`"
if [ -z "$web_user" -o -z "$web_group" ]; then
HTTPD_USER=www-data
HTTPD_GROUP=www-data
else
HTTPD_USER=$web_user
HTTPD_GROUP=$web_group
fi
## - Determin ServerRoot Directory
## -
apache_base_dir_found=false
_pass_apache_base_dir=false
apache_base_dir=`$_httpd_binary -t -D DUMP_RUN_CFG | grep ServerRoot | awk '{print$2}' | tr -d '"'`
if [ "`realpath /usr/local/apache2`" = "$apache_base_dir" ]; then
apache_base_dir="/usr/local/apache2"
_apache_base_dir_realpath="`realpath $apache_base_dir`"
elif [ -z "$apache_base_dir" ]; then
if [ -d "`realpath /usr/local/apache2`" ];then
apache_base_dir="/usr/local/apache2"
_apache_base_dir_realpath="`realpath $apache_base_dir`"
fi
else
_apache_base_dir_realpath=$apache_base_dir
fi
if [ -z "$apache_base_dir" ];then
_base_webserver_info_needed=true
apache_base_dir_found=true
else
_pass_apache_base_dir=true
fi
## - Determin Apache Configuration Directory
## -
apache_conf_dir_found=false
if [ -n "$apache_base_dir" ];then
if [ -d "${apache_base_dir}/conf" ]; then
apache_conf_dir=${apache_base_dir}/conf
apache_conf_dir_found=true
else
_base_webserver_info_needed=true
fi
else
_base_webserver_info_needed=true
fi
## - Determin Apache Log Directory
## -
_apache_errorlog_dir=`$_httpd_binary -t -D DUMP_RUN_CFG | grep "Main ErrorLog:" | awk '{print$3}' | tr -d '"'`
if [ -d "`dirname $_apache_errorlog_dir`" ]; then
apache_log_dir=`dirname $_apache_errorlog_dir`
fi
## - Determin VHost Configuration Directory
## -
if [ -d "${apache_conf_dir}/vhosts" ]; then
_apache_vhost_dir=${apache_conf_dir}/vhosts
apache_vhost_dir=${apache_conf_dir}/vhosts
fi
fi
if $_base_webserver_info_needed ; then
fatal "Apache Webserver not found!"
fi
clear
echo
echo -e "\033[21G\033[32mInstallation script for Sympa mailing list server \033[m"
echo
echo
echo
DISTRIBUTION=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Which (linux) distribution is installed?"
echo ""
echo "[1] Debian"
echo "[2] andere"
echo ""
echononl "Eingabe: "
while [ "$DISTRIBUTION" != "Debian" -a "$DISTRIBUTION" != "other" ];do
read OPTION
case $OPTION in
1) DISTRIBUTION="Debian"
;;
2) DISTRIBUTION="other"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Debian ; 2 = andere ]"
echo ""
echononl "Eingabe:"
;;
esac
done
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 ""
clean_up 2
elif [ "$DISTRIBUTION" == "Debian" ]; then
SYMPA_INIT_DIR=/etc/init.d
else
SYMPA_INIT_DIR=/etc/rc.d/init.d
fi
_UPDATE_SYMPA=""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Are you going to update an existing Installation?"
echo ""
echo "[1] New initial Installation"
echo "[2] Update existing Installation"
echo ""
echononl "Eingabe: "
while [ "$_UPDATE_SYMPA" != "update" -a "$_UPDATE_SYMPA" != "new" ];do
read OPTION
case $OPTION in
1) _UPDATE_SYMPA="new"
;;
2) _UPDATE_SYMPA="update"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Neuinstallation ; 2 = Update ]"
echo ""
echononl "Eingabe:"
;;
esac
done
if [ "$_UPDATE_SYMPA" = "update" ];then
UPDATE_SYMPA=true
else
UPDATE_SYMPA=false
fi
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert version number for Sympa mailing list server."
echo ""
echo ""
SYMPA_VERSION=
while [ "X$SYMPA_VERSION" = "X" ]; do
echononl "Sympa version : "
read SYMPA_VERSION
if [ "X$SYMPA_VERSION" = "X" ]; then
echo -e "\n\t\033[33m\033[1mA version number is required!\033[m\n"
fi
done
SYMPA_MAIN_VERSION=`echo $SYMPA_VERSION | cut -d '.' -f1,2`
SYMPA_MAJOR_VERSION=`echo $SYMPA_VERSION | cut -d '.' -f1`
SYMPA_MINOR_VERSION=`echo $SYMPA_VERSION | cut -d '.' -f2`
SYMPA_PATCH_LEVEL=`echo $SYMPA_VERSION | cut -d '.' -f3`
SYMPA_INSTALL_DIR="${SYMPA_BASE_PATH}-$SYMPA_VERSION"
## - Determin old (current) installation directory
## -
if $UPDATE_SYMPA ; then
if [[ -h "$SYMPA_BASE_PATH" ]]; then
CURRENT_INSTALL_DIR="$(realpath "$SYMPA_BASE_PATH")"
CURRENT_INSTALL_SYMLINK="$SYMPA_BASE_PATH"
elif [[ -d "$SYMPA_BASE_PATH" ]]; then
CURRENT_INSTALL_DIR="$SYMPA_BASE_PATH"
elif [[ -h "/usr/local/sympa" ]]; then
CURRENT_INSTALL_DIR="$(realpath "/usr/local/sympa")"
CURRENT_INSTALL_SYMLINK="/usr/local/sympa"
elif [[ -d "/usr/local/sympa" ]]; then
CURRENT_INSTALL_DIR="/usr/local/sympa"
elif [[ -h "/opt/sympa" ]]; then
CURRENT_INSTALL_DIR="$(realpath "/opt/sympa")"
CURRENT_INSTALL_SYMLINK="/opt/sympa"
elif [[ -d "/opt/sympa" ]]; then
CURRENT_INSTALL_DIR="/opt/sympa"
else
fatal "No current installtion of Sympa found! "
fi
fi
_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
_log_file=${_logdir}/sympa_install.log
fi
if ! $UPDATE_SYMPA ; then
SYMPA_SUPPORT_MULTIDOMAINS=true
echo ""
echo "--"
echo ""
echo "Should Sympa support multidomains?"
echo ""
OK=""
echononl "Support Multidomains? (yes/no) [yes]: "
read OK
if [ "X$OK" = "X" ]; then
OK=yes
fi
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]; do
echo ""
echononl "\twrong entry! [yes/no]: "
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || SYMPA_SUPPORT_MULTIDOMAINS=false
POSTFIX_CONF_DIR=
POSTFIX_CONF_FILES_FOUND=false
if [ "$DISTRIBUTION" = "Debian" ]; then
if dpkg -l postfix | grep -q -e "^ii" 2> /dev/null ; then
if [ -f "/etc/postfix/main.cf" -a -f "/etc/postfix/master.cf" ]; then
POSTFIX_CONF_DIR=/etc/postfix
POSTFIX_CONF_FILES_FOUND=true
fi
fi
fi
if ! $POSTFIX_CONF_FILES_FOUND ; then
info "Only Postfix is suported by this installation script."
echo ""
echo "--"
echo ""
echo "Specify Directory includes postfix files \"main.cf\" and \"master.cf\"."
echo ""
echo " Type \"^C\" to abort if postfix isn't installed on this system."
while [ "X$POSTFIX_CONF_DIR" = "X" ]; do
echo ""
echononl "Postfix Config Directory: "
read POSTFIX_CONF_DIR
if [ "X$POSTFIX_CONF_DIR" = "X" ]; then
echo ""
echo -e "\t\033[33mDeclaration is mandatory!\033[m"
else
if [ ! -f "${POSTFIX_CONF_DIR}/main.cf" -a ! -f "${POSTFIX_CONF_DIR}/master.cf" ]; then
echo ""
echo -e "\t\033[33mPostfix confuguration not found at that location!\033[m retry.."
POSTFIX_CONF_DIR=""
fi
fi
done
fi
echo ""
echo "--"
echo ""
echo "Specify Sympa's user and group."
echo ""
SYMPA_USER=
while [ "X$SYMPA_USER" = "X" ]
do
echononl "Sympa user [${DEFAULT_SYMPA_USER}]: "
read SYMPA_USER
if [ "X$SYMPA_USER" = "X" ]; then
SYMPA_USER=$DEFAULT_SYMPA_USER
fi
done
SYMPA_GROUP=
while [ "X$SYMPA_GROUP" = "X" ]
do
echononl "Sympa group [$SYMPA_USER]: "
read SYMPA_GROUP
if [ "X$SYMPA_GROUP" = "X" ]; then
SYMPA_GROUP=$SYMPA_USER
fi
done
fi
if $UPDATE_SYMPA ; then
if [ ! -f "${SYMPA_BASE_PATH}/bin/sympa.pl" ] && [ ! -f "${SYMPA_BASE_PATH}/sbin/sympa.pl" ]; then
fatal "You are in update mode, but i can't find existing installation at $SYMPA_BASE_PATH"
fi
SYMPA_HOME="$(realpath "$(echo ~sympa)")"
if [ ! -d "$SYMPA_HOME" ]; then
fatal "Cannot find Sympas Home (Installation) Directory"
fi
SYMPA_USER=`stat -c '%U' $SYMPA_HOME`
SYMPA_GROUP=`stat -c '%G' $SYMPA_HOME`
fi
if $UPDATE_SYMPA ; then
SYMPA_OLD_VERSION=""
_sympa_perlscript="$(which sympa.pl)"
if [[ -n "$_sympa_perlscript" ]]; then
SYMPA_OLD_VERSION="$($_sympa_perlscript --version 2> /dev/null | cut -d' ' -f2)"
fi
if [[ -z "$SYMPA_OLD_VERSION" ]]; then
SYMPA_OLD_VERSION=`egrep -v '^s*$|^#' /usr/local/sympa/etc/data_structure.version 2> /dev/null | head -1`
fi
if [ -n "$SYMPA_OLD_VERSION" -a "$SYMPA_OLD_VERSION" == "$SYMPA_VERSION" ]; then
warn "You are in update mode, but the old version ($SYMPA_OLD_VERSION) is the same as the new one ($SYMPA_VERSION)!"
echononl "Type uppercase \"yes\" to proceed with upgrading: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
fi
echo ""
echo "--"
echo ""
echo "Specify directory of Sympa main configuration file (sympa.conf)."
echo ""
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=$DEFAULT_SYMPA_MAIN_CONF_DIR
fi
if $UPDATE_SYMPA ; then
if [ ! -f "${SYMPA_MAIN_CONF_DIR}/sympa.conf" ]; then
fatal "You are in update mode, but i can't find existing main configuration at $SYMPA_MAIN_CONF_DIR"
fi
fi
SYMPA_LIST_DATA_DIR=
if $UPDATE_SYMPA ; then
CURRENT_SYMPA_LIST_DATA_DIR="$(realpath "$(grep -e "^home" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}')")"
if [ ! -d "$CURRENT_SYMPA_LIST_DATA_DIR" ]; then
fatal "You are in update mode, but i can't find existing list data dir at $CURRENT_SYMPA_LIST_DATA_DIR"
fi
CURRENT_SYMPA_LIST_DATA_BASE_PATH="$(dirname "$CURRENT_SYMPA_LIST_DATA_DIR")"
CURRENT_SYMPA_LIST_DATA_ROOT_DIR="$(dirname "$CURRENT_SYMPA_LIST_DATA_BASE_PATH")"
if [[ -h "${CURRENT_SYMPA_LIST_DATA_ROOT_DIR}/sympa" ]]; then
CURRENT_SYMPA_LIST_DATA_BASE_SYMLINK="${CURRENT_SYMPA_LIST_DATA_ROOT_DIR}/sympa"
CURRENT_SYMPA_LIST_DATA_SYMLINK="${CURRENT_SYMPA_LIST_DATA_ROOT_DIR}/sympa/list_data"
fi
SYMPA_LIST_DATA_DIR="${CURRENT_SYMPA_LIST_DATA_ROOT_DIR}/sympa-${SYMPA_VERSION}/list_data"
SYMPA_LIST_DATA_BASE_PATH="$(dirname "$SYMPA_LIST_DATA_DIR")"
SYMPA_LIST_DATA_ROOT_DIR="$(dirname "$SYMPA_LIST_DATA_BASE_PATH")"
SYMPA_LIST_DATA_BASE_SYMLINK="${CURRENT_SYMPA_LIST_DATA_ROOT_DIR}/sympa"
SYMPA_LIST_DATA_SYMLINK="${CURRENT_SYMPA_LIST_DATA_ROOT_DIR}/sympa/list_data"
else
echo ""
echo "--"
echo ""
echo "Specify root directory containing Sympa's list data and archive directories."
echo ""
SYMPA_LIST_DATA_ROOT_DIR=
echononl "Sympa's list data directory [${DEFAULT_SYMPA_LIST_DATA_ROOT_DIR}]: "
read SYMPA_LIST_DATA_ROOT_DIR
if [ "X$SYMPA_LIST_DATA_ROOT_DIR" = "X" ]; then
SYMPA_LIST_DATA_ROOT_DIR=$DEFAULT_SYMPA_LIST_DATA_ROOT_DIR
fi
SYMPA_LIST_DATA_DIR="${SYMPA_LIST_DATA_ROOT_DIR}/sympa-${SYMPA_VERSION}/list_data"
SYMPA_LIST_DATA_BASE_PATH="$(dirname "$SYMPA_LIST_DATA_DIR")"
SYMPA_LIST_DATA_BASE_SYMLINK="${SYMPA_LIST_DATA_ROOT_DIR}/sympa"
SYMPA_LIST_DATA_SYMLINK="${SYMPA_LIST_DATA_ROOT_DIR}/sympa/list_data"
fi
# - Want list 'archive path' parallel to 'list data' path
# -
SYMPA_LIST_ARC_PATH="${SYMPA_LIST_DATA_BASE_PATH}/arc"
SYMPA_LIST_ARC_SYMLINK="$(dirname "$SYMPA_LIST_DATA_SYMLINK")/arc"
if $SYSTEMD_SUPPORTED ; then
echo ""
echo "--"
echo ""
echo "Specify directory where Systemd unit files should be installed."
echo ""
SYMPA_SYSTEMD_DIR=
echononl "Sympa Systemd directory [${DEFAULT_SYMPA_SYSTEMD_DIR}]: "
read SYMPA_SYSTEMD_DIR
if [ "X$SYMPA_SYSTEMD_DIR" = "X" ]; then
SYMPA_SYSTEMD_DIR=$DEFAULT_SYMPA_SYSTEMD_DIR
fi
fi
## - Apache webserver related
## -
if ! $UPDATE_SYMPA ; then
if ! $_debian_apache_installation ; then
echo ""
echo ""
echo -e "\033[32m-- Apache Webserver related\033[m"
echo ""
echo "Insert Directory where the vhost configuration file should stay.."
echo ""
apache_vhost_dir=
while [ "X$apache_vhost_dir" = "X" ] ; do
if [ -n "$_apache_vhost_dir" ];then
echononl "VHost Base Directory [$_apache_vhost_dir]: "
read apache_vhost_dir
if [ "X$apache_vhost_dir" = "X" ]; then
apache_vhost_dir=$_apache_vhost_dir
fi
else
echononl "VHost Base Directory: "
read apache_vhost_dir
if [ ! -d "$read apache_vhost_dir" ];then
echo -e "\n\t\033[1;33mDirectory \"${apache_vhost_dir}\" not found! Try again..\033[m\n"
apache_vhost_dir=""
fi
fi
done
if [ -z "$apache_log_dir" ]; then
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert Directory where the log files should stay.."
echo ""
while [ "X$apache_log_dir" = "X" ] ; do
echononl "Apache Log Directory: "
read apache_log_dir
if [ -z "$apache_log_dir" ]; then
echo -e "\n\t\033[1;33mDeclaration is mandatory!\033[m Try again..\n"
elif [ ! -d "$apache_log_dir" ];then
echo -e "\n\t\033[1;33mDirectory \"${apache_log_dir}\" not found!\033[m Try again..\n"
apache_log_dir=""
fi
done
fi
fi
fi
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Insert the IP-Addresses where the webserver should listen for that site."
echo ""
IPv4=
while [ "X$IPv4" = "X" ];do
if [ -z "$__ipv4" ]; then
echononl "IPv4 address: "
read IPv4
if [ "X$IPv4" = "X" ]; then
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
fi
else
echononl "IPv4 address [$__ipv4]: "
read IPv4
if [ "X$IPv4" = "X" ]; then
IPv4=$__ipv4
fi
fi
done
IPv6=
while [ "X$IPv6" = "X" ];do
if [ -z "$__ipv6" ]; then
echononl "IPv6 address: "
read IPv6
if [ "X$IPv6" = "X" ]; then
echo -e "\n\t\033[33m\033[1mEingabe erforderlich!\033[m\n"
fi
else
echononl "IPv6 address [$__ipv6]: "
read IPv6
if [ "X$IPv6" = "X" ]; then
IPv6=$__ipv6
fi
fi
done
SYMPA_ALIAS_FILE=
if $UPDATE_SYMPA ; then
if [ -f "/etc/postfix/sympa_aliases" ]; then
SYMPA_ALIAS_FILE=/etc/postfix/sympa_aliases
else
echo "--"
echo ""
echo "Set aliases file."
echo ""
echononl "Sympa aliases file: "
read SYMPA_ALIAS_FILE
while [ "X$SYMPA_ALIAS_FILE" = "X" ]; do
echo ""
echo -e "\tInput is required!"
echo ""
echononl "Sympa aliases file: "
read SYMPA_ALIAS_FILE
done
fi
if [ ! -f "$SYMPA_ALIAS_FILE" ]; then
fatal "You are in update mode, but i cannot find aliases file $SYMPA_ALIAS_FILE."
fi
else
echo "--"
echo ""
echo "Set aliases file."
echo ""
if [ -d "/etc/postfix" ]; then
_SYMPA_ALIAS_FILE=/etc/postfix/sympa_aliases
echononl "Sympa aliases file [$_SYMPA_ALIAS_FILE]: "
read SYMPA_ALIAS_FILE
if [ "X$SYMPA_ALIAS_FILE" == "X" ]; then
SYMPA_ALIAS_FILE=$_SYMPA_ALIAS_FILE
fi
else
echononl "Sympa aliases file: "
read SYMPA_ALIAS_FILE
while [ "X$SYMPA_ALIAS_FILE" = "X" ]; do
echo ""
echo -e "\tFalsche Eingabe ! [ 1 = Debian ; 2 = andere ]"
echo ""
echononl "Sympa aliases file: "
read SYMPA_ALIAS_FILE
done
fi
fi
if ! $UPDATE_SYMPA ; then
echo ""
echo ""
echo -e "\033[32m--\033[m"
echo -e "\033[32m--\033[m Some parameters for server configuration"
echo -e "\033[32m--\033[m"
echo ""
echo ""
echo "Default domain for the mailing lists"
echo ""
SYMPA_DOMAIN=
echononl "domain [${DEFAULT_SYMPA_DOMAIN}]: "
read SYMPA_DOMAIN
if [ "X$SYMPA_DOMAIN" = "X" ]; then
SYMPA_DOMAIN=$DEFAULT_SYMPA_DOMAIN
fi
echo ""
echo ""
echo "Listmaster"
echo " - Comma seperated list of email addresses"
echo ""
SYMPA_LISTMASTER=
echononl "listmaster [${DEFAULT_SYMPA_LISTMASTER}]: "
read SYMPA_LISTMASTER
if [ "X$SYMPA_LISTMASTER" = "X" ]; then
SYMPA_LISTMASTER=$DEFAULT_SYMPA_LISTMASTER
fi
echo ""
echo ""
echo "URL for the Sympa web interface"
echo ""
SYMPA_WEB_URL=
echononl "wwsympa_url [${DEFAULT_SYMPA_WEB_URL}]: "
read SYMPA_WEB_URL
if [ "X$SYMPA_WEB_URL" = "X" ]; then
SYMPA_WEB_URL=$DEFAULT_SYMPA_WEB_URL
fi
echo ""
echo "-- Database related Parameters"
echo ""
echo "Database management system"
echo ""
echo "[1] MySQL"
echo "[2] SQLite"
echo "[3] Postgres"
echo "[4] ORACLE"
echo "[5] Sybase"
echo ""
SYMPA_DB_TYPE=""
echononl "Eingabe: "
while [ "$SYMPA_DB_TYPE" != "mysql" \
-a "$SYMPA_DB_TYPE" != "SQLite" \
-a "$SYMPA_DB_TYPE" != "Pg" \
-a "$SYMPA_DB_TYPE" != "Oracle" \
-a "$SYMPA_DB_TYPE" != "Sybase" ]; do
read OPTION
case $OPTION in
1) SYMPA_DB_TYPE="mysql"
;;
2) SYMPA_DB_TYPE="SQLite"
;;
3) SYMPA_DB_TYPE="Pg"
;;
4) SYMPA_DB_TYPE="Oracle"
;;
5) SYMPA_DB_TYPE="Sybase"
;;
*) echo ""
echo -e "\tFalsche Eingabe ! [ 1 = MySQL | 2 = SQLite | 3 = Postgres | 4 = Oracle | 5 = Sybase ]"
echo ""
echononl "Eingabe:"
;;
esac
done
echo ""
echo ""
echo "Name of the database containing user information."
echo ""
echo "If you are using SQLite, then this parameter is the DB file name."
echo ""
SYMPA_DB_NAME=
while [ "X$SYMPA_DB_NAME" = "X" ]; do
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
SYMPA_DB_NAME="$DEFAULT_SYMPA_DB_NAME"
fi
done
echo ""
echo ""
echo "Database host name."
echo ""
SYMPA_DB_HOST=
echononl "db_host [$DEFAULT_SYMPA_DB_HOST]: "
read SYMPA_DB_HOST
if [ "X$SYMPA_DB_HOST" == "X" ]; then
SYMPA_DB_HOST=$DEFAULT_SYMPA_DB_HOST
fi
#if [ "$SYMPA_DB_HOST" = "localhost" ]; then
# SYMPA_DB_HOST=127.0.0.1
#fi
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 [$DEFAULT_SYMPA_DB_PORT]: "
read SYMPA_DB_PORT
if [ "X$SYMPA_DB_PORT" == "X" ]; then
SYMPA_DB_PORT=$DEFAULT_SYMPA_DB_PORT
fi
fi
echo ""
echo ""
echo "Database user."
echo ""
SYMPA_DB_USER=
while [ "X$SYMPA_DB_USER" = "X" ]; do
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
SYMPA_DB_USER="$DEFAULT_SYMPA_DB_USER"
fi
done
echo ""
echo ""
echo "Password for database user $SYMPA_DB_USER."
echo ""
SYMPA_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" ]] ; then
SYMPA_DB_PASSWD="$DEFAULT_SYMPA_DB_PASSWD"
fi
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
SYMPA_DOMAIN=`grep -e "^domain" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_LISTMASTER=`grep -e "^listmaster" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_WEB_URL=`grep -e "^wwsympa_url" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_DB_TYPE=`grep -e "^db_type" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_DB_NAME=`grep -e "^db_name" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_DB_HOST=`grep -e "^db_host" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_DB_PORT=`grep -e "^db_port" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_DB_USER=`grep -e "^db_user" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
SYMPA_DB_PASSWD=`grep -e "^db_passwd" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'`
fi
_wwsympa_dir="$(echo $SYMPA_WEB_URL | grep / | cut -d/ -f4-)"
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 '$SYMPA_DB_NAME' with given credentials"
fi
else
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'!"
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
echo ""
echo "--"
echo ""
__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=$DEFAULT_START_AT_BOOTTIME
fi
__START_AT_BOOTTIME=`echo $__START_AT_BOOTTIME | tr '[:upper:]' '[:lower:]'`
if [ "$__START_AT_BOOTTIME" = "yes" ] ; then
START_AT_BOOTTIME=true
else
START_AT_BOOTTIME=false
fi
if $UPDATE_SYMPA ; then
SYMPA_UID=`grep -e "^$SYMPA_USER" /etc/passwd | cut -d":" -f3`
SYMPA_GID=`grep -e "^$SYMPA_USER" /etc/passwd | cut -d":" -f4`
else
declare -i _start_gid=1000
found=false
while ! $found ; do
if cat /etc/group | cut -d ":" -f3 | grep -w "$_start_gid" > /dev/null ; then
let _start_gid++
else
found=true
fi
done
SYMPA_GID=$_start_gid
declare -i _start_uid=1000
found=false
while ! $found ; do
if cat /etc/passwd | cut -d ":" -f3 | grep -w "$_start_uid" > /dev/null ; then
let _start_uid++
else
found=true
fi
done
SYMPA_UID=$_start_uid
fi
OK=
echo ""
echo -e "\033[32m--\033[m"
echo ""
echo "Are you installing on a VServer guest system?"
echo ""
echononl "VServer Gastsystem (yes/no) [$DEFAULT_VSERVER_GUEST]: "
read OK
if [ "X$OK" = "X" ]; then
OK=$DEFAULT_VSERVER_GUEST
fi
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
while [ "X$OK" != "Xyes" -a "X$OK" != "Xno" ]; do
echo ""
echononl "\twrong entry! [yes/no]: "
read OK
OK=`echo "$OK" | tr '[:upper:]' '[:lower:]'`
done
if [ "$OK" = "yes" ]; then
SYSTEMD_SUPPORTED=false
fi
if $UPDATE_SYMPA ;then
_new=false;
_update=true
else
_new=true;
_update=false
fi
clear
echo ""
if $UPDATE_SYMPA ; then
echo -e "\033[21G\033[32mStart Sympa Update with the following Parameters \033[m"
echo ""
echo -e "-- \033[33m\033[1mUpdate (Replace an existing installation)\033[m --"
else
echo -e "\033[21G\033[32mStart Sympa Installation with the following Parameters \033[m"
echo ""
echo -e "-- \033[33m\033[1mNew (initial) installation\033[m --"
fi
if $UPDATE_SYMPA ; then
echo ""
echo "Old (current) sympa version.....: $SYMPA_OLD_VERSION"
echo " Current Installation dir.....: $CURRENT_INSTALL_DIR"
if [[ -z "$CURRENT_INSTALL_SYMLINK" ]]; then
echo " Current Install dir symlink..: - not in use -"
else
echo " Current Install dir symlink..: $CURRENT_INSTALL_SYMLINK"
fi
echo " Current Data base directory..: $CURRENT_SYMPA_LIST_DATA_BASE_PATH"
if [[ -z "$CURRENT_SYMPA_LIST_DATA_SYMLINK" ]]; then
echo " Current Data dir symlink.....: - not in use -"
else
echo " Current Data dir symlink.....: $CURRENT_SYMPA_LIST_DATA_SYMLINK"
fi
echo ""
fi
echo ""
echo -e "\033[1mSympa new version\033[m...............: \033[1m$SYMPA_VERSION\033[m"
echo " First (initial) Install......: $_new"
echo " Update ......................: $_update"
echo ""
if ! $UPDATE_SYMPA ; then
echo "Sympa support for multidomains..: $SYMPA_SUPPORT_MULTIDOMAINS"
fi
echo "Sympa user......................: $SYMPA_USER (id: ${SYMPA_UID})"
echo "Sympa group.....................: $SYMPA_GROUP (id: ${SYMPA_GID})"
echo ""
echo "Installation directory..........: $SYMPA_INSTALL_DIR"
echo "Sympa's bin directory...........: $SYMPA_BIN_DIR"
echo "Sympa's pid directory...........: $SYMPA_PID_DIR"
echo "Sympa's cgi directory...........: $SYMPA_CGI_DIR"
echo "Sympa's libexec directory.......: $SYMPA_LIBEXEC_DIR"
echo "Sympa's static directory........: $SYMPA_STATIC_DIR"
echo "Sympa's manpages directory......: $SYMPA_MANPATH"
echo "Sympa's main conf directory.....: $SYMPA_MAIN_CONF_DIR"
echo ""
echo "Sympa's Data directory..........: $SYMPA_LIST_DATA_DIR"
echo "Sympa's Data base path..........: $SYMPA_LIST_DATA_BASE_PATH"
echo "Sympa's Data root dirctory......: $SYMPA_LIST_DATA_ROOT_DIR"
echo "Sympa's Data directory symlink..: $SYMPA_LIST_DATA_SYMLINK"
echo ""
echo "Sympa's list archive path.......: $SYMPA_LIST_ARC_PATH"
echo "Sympa's list archive symlink....: $SYMPA_LIST_ARC_SYMLINK"
echo ""
echo "Sympa's aliases file............: $SYMPA_ALIAS_FILE"
if ! $UPDATE_SYMPA ; then
echo ""
echo "(default) domain................: $SYMPA_DOMAIN"
echo "Listmaster......................: $SYMPA_LISTMASTER"
echo "URL for web interface...........: $SYMPA_WEB_URL"
echo "SctiptAlias Directory...........: $_wwsympa_dir"
echo ""
echo "Database management system......: $SYMPA_DB_TYPE"
echo "Database host...................: $SYMPA_DB_HOST"
echo "Database port...................: $SYMPA_DB_PORT"
echo "Database name...................: $SYMPA_DB_NAME"
echo "Database user...................: $SYMPA_DB_USER"
echo "Database password...............: $SYMPA_DB_PASSWD"
echo ""
fi
echo "Start at boot time..............: $START_AT_BOOTTIME"
echo ""
echo "Directory for init scripts......: $SYMPA_INIT_DIR"
echo ""
echo "Use systemd.....................: $SYSTEMD_SUPPORTED"
if $SYSTEMD_SUPPORTED ; then
echo "Directory Systemd unit files....: $SYMPA_SYSTEMD_DIR"
fi
echo ""
echo "IPv4 Address....................: $IPv4"
echo "IPv6 Address....................: $IPv6"
echo ""
echo "Apache User.....................: $HTTPD_USER"
if ! $UPDATE_SYMPA ; then
echo "Apache VHost directory..........: $apache_vhost_dir"
echo "Apache Log Directory............: $apache_log_dir"
echo ""
echo "Postfix Configuration Directory.: $POSTFIX_CONF_DIR"
fi
if $UPDATE_SYMPA ; then
echo ""
echo -e "-- \033[34m\033[1mSome determined defines of the installed Sympa System\033[m --"
echo ""
echo " Apache VHost directory..........: $apache_vhost_dir"
echo " Apache Log Directory............: $apache_log_dir"
echo ""
echo " (default) domain..................: $SYMPA_DOMAIN"
echo " Listmaster........................: $SYMPA_LISTMASTER"
echo " URL for web interface.............: $SYMPA_WEB_URL"
echo " SctiptAlias Directory.............: $_wwsympa_dir"
echo ""
echo " Database management system........: $SYMPA_DB_TYPE"
echo " Database host.....................: $SYMPA_DB_HOST"
echo " Database port.....................: $SYMPA_DB_PORT"
echo " Database name.....................: $SYMPA_DB_NAME"
echo " Database user.....................: $SYMPA_DB_USER"
echo " Database password.................: $SYMPA_DB_PASSWD"
echo ""
fi
echo ""
echononl "Start with that configuration? [yes/no]: "
read OK
while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]
do
echononl "wrong entry! [yes/no] :"
read OK
done
[ $OK = "Yes" -o $OK = "yes" ] || fatal "Change parameters and restart script: `basename $0`"
echo ""
echo ""
echononl "\tCreate base source directory"
if [ ! -d "$_src_base_dir" ]; then
mkdir -p $_src_base_dir
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot create base source directory"
fi
else
echo_skipped
fi
if [ -d "$_logdir" ];then
echononl "\tBackup existing log directory \"`basename ${_logdir}`\" .. .."
mv $_logdir $_logdir.$backup_date
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move log directory \"${_logdir}\"!"
fi
fi
echononl "\tCreate log directory \"`basename ${_logdir}`\".."
mkdir -p $_logdir > /dev/null 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot create log directory \"${_logdir}\"!"
fi
touch $_log_file
echo "## -----------" >> $_log_file
if $UPDATE_SYMPA ; then
echo "## - Start of Sympa Update with the following Parameters" >> $_log_file
else
echo "## - Start of Sympa Installation with the following Parameters" >> $_log_file
fi
echo "## -----------" >> $_log_file
if $UPDATE_SYMPA ; then
echo "## -" >> $_log_file
echo "## - Old (current) sympa version.......: $SYMPA_OLD_VERSION" >> $_log_file
echo "## - Current Installation dir.......: $CURRENT_INSTALL_DIR" >> $_log_file
if [[ -z "$CURRENT_INSTALL_SYMLINK" ]]; then
echo "## - Current Install dir symlink....: - not in use -" >> $_log_file
else
echo "## - Current Install dir symlink....: $CURRENT_INSTALL_SYMLINK" >> $_log_file
fi
echo "## - Current Data base directory.......: $CURRENT_SYMPA_LIST_DATA_BASE_PATH" >> $_log_file
if [[ -z "$CURRENT_SYMPA_LIST_DATA_SYMLINK" ]]; then
echo "## - Current Data dir symlink.....: - not in use -" >> $_log_file
else
echo "## - Current Data dir symlink.....: $CURRENT_SYMPA_LIST_DATA_SYMLINK" >> $_log_file
fi
echo "## -" >> $_log_file
fi
echo "## -" >> $_log_file
echo "## - Sympa version.....................: $SYMPA_VERSION" >> $_log_file
echo "## - First (initial) Install........: $_new" >> $_log_file
echo "## - Update ........................: $_update" >> $_log_file
echo ""
if ! $UPDATE_SYMPA ; then
echo "## - Sympa support for multidomains....: $SYMPA_SUPPORT_MULTIDOMAINS" >> $_log_file
fi
echo "## -" >> $_log_file
echo "## - Sympa user........................: $SYMPA_USER" >> $_log_file
echo "## - Sympa group.......................: $SYMPA_GROUP" >> $_log_file
echo "## -" >> $_log_file
echo "## - Installation directory............: $SYMPA_INSTALL_DIR" >> $_log_file
echo "## - Sympa's bin directory.............: $SYMPA_BIN_DIR" >> $_log_file
echo "## - Sympa's pid directory.............: $SYMPA_PID_DIR" >> $_log_file
echo "## - Sympa's cgi directory.............: $SYMPA_CGI_DIR" >> $_log_file
echo "## - Sympa's libexec directory.........: $SYMPA_LIBEXEC_DIR" >> $_log_file
echo "## - Sympa's static directory..........: $SYMPA_STATIC_DIR" >> $_log_file
echo "## - Sympa's manpages directory........: $SYMPA_MANPATH" >> $_log_file
echo "## - Sympa's main conf directory.......: $SYMPA_MAIN_CONF_DIR" >> $_log_file
echo "## -" >> $_log_file
echo "## - Sympa's Data directory............: $SYMPA_LIST_DATA_DIR" >> $_log_file
echo "## - Sympa's Data base path............: $SYMPA_LIST_DATA_BASE_PATH" >> $_log_file
echo "## - Sympa's Data root dirctory........: $SYMPA_LIST_DATA_ROOT_DIR" >> $_log_file
echo "## - Sympa's Data directory symlink....: $SYMPA_LIST_DATA_SYMLINK" >> $_log_file
echo "## -" >> $_log_file
echo "## - Sympa's list archive path.........: $SYMPA_LIST_ARC_PATH" >> $_log_file
echo "## - Sympa's list archive symlink......: $SYMPA_LIST_ARC_SYMLINK" >> $_log_file
echo "## -" >> $_log_file
echo "## - Sympa's aliases file..............: $SYMPA_ALIAS_FILE" >> $_log_file
echo "## -" >> $_log_file
if ! $UPDATE_SYMPA ; then
echo "## -" >> $_log_file
echo "## - (default) domain..................: $SYMPA_DOMAIN" >> $_log_file
echo "## - Listmaster........................: $SYMPA_LISTMASTER" >> $_log_file
echo "## - URL for web interface.............: $SYMPA_WEB_URL" >> $_log_file
echo "## - SctiptAlias Directory.............: $_wwsympa_dir" >> $_log_file
echo "## -" >> $_log_file
echo "## - Database management system........: $SYMPA_DB_TYPE" >> $_log_file
echo "## - Database host.....................: $SYMPA_DB_HOST" >> $_log_file
echo "## - Database port.....................: $SYMPA_DB_PORT" >> $_log_file
echo "## - Database name.....................: $SYMPA_DB_NAME" >> $_log_file
echo "## - Database user.....................: $SYMPA_DB_USER" >> $_log_file
echo "## - Database password.................: $SYMPA_DB_PASSWD" >> $_log_file
fi
echo "## -" >> $_log_file
echo "## - Start at boot time................: $START_AT_BOOTTIME" >> $_log_file
echo "## - Directory for init scripts........: $SYMPA_INIT_DIR" >> $_log_file
echo "## -" >> $_log_file
echo "## - Use systemd.......................: $SYSTEMD_SUPPORTED" >> $_log_file
if $SYSTEMD_SUPPORTED ; then
echo "## - Directory Systemd unit files......: $SYMPA_SYSTEMD_DIR" >> $_log_file
fi
echo "## -" >> $_log_file
echo "## - IPv4 Address....................: $IPv4" >> $_log_file
echo "## - IPv6 Address....................: $IPv6" >> $_log_file
echo "## - " >> $_log_file
echo "## - Apache User.....................: $HTTPD_USER" >> $_log_file
if ! $UPDATE_SYMPA ; then
echo "## - Apache VHost directory............: $apache_vhost_dir" >> $_log_file
echo "## - Apache Log Directory..............: $apache_log_dir" >> $_log_file
echo "## -" >> $_log_file
echo "## - Postfix Configuration Directory...: $POSTFIX_CONF_DIR" >> $_log_file
fi
if $UPDATE_SYMPA ; then
echo "## --- Some determined defines of the installed Sympa System" >> $_log_file
echo "## -" >> $_log_file
echo "## - Apache VHost directory.........: $apache_vhost_dir" >> $_log_file
echo "## - Apache Log Directory...........: $apache_log_dir" >> $_log_file
echo "## -" >> $_log_file
echo "## - (default) domain...............: $SYMPA_DOMAIN" >> $_log_file
echo "## - Listmaster.....................: $SYMPA_LISTMASTER" >> $_log_file
echo "## - URL for web interface..........: $SYMPA_WEB_URL" >> $_log_file
echo "## - SctiptAlias Directory..........: $_wwsympa_dir" >> $_log_file
echo "## -" >> $_log_file
echo "## - Database management system.....: $SYMPA_DB_TYPE" >> $_log_file
echo "## - Database host..................: $SYMPA_DB_HOST" >> $_log_file
echo "## - Database port..................: $SYMPA_DB_PORT" >> $_log_file
echo "## - Database name..................: $SYMPA_DB_NAME" >> $_log_file
echo "## - Database user..................: $SYMPA_DB_USER" >> $_log_file
echo "## - Database password..............: $SYMPA_DB_PASSWD" >> $_log_file
echo "## -" >> $_log_file
fi
echo "## -" >> $_log_file
echo "" >> $_log_file
if $UPDATE_SYMPA ; then
echo "SYMPA_OLD_VERSION=$SYMPA_OLD_VERSION" >> $_log_file
echo "CURRENT_INSTALL_DIR=$CURRENT_INSTALL_DIR" >> $_log_file
echo "CURRENT_INSTALL_SYMLINK=$CURRENT_INSTALL_SYMLINK" >> $_log_file
echo "CURRENT_SYMPA_LIST_DATA_DIR=$CURRENT_SYMPA_LIST_DATA_DIR" >> $_log_file
echo "CURRENT_SYMPA_LIST_DATA_BASE_PATH=$CURRENT_SYMPA_LIST_DATA_BASE_PATH" >> $_log_file
echo "CURRENT_SYMPA_LIST_DATA_ROOT_DIR=$CURRENT_SYMPA_LIST_DATA_ROOT_DIR" >> $_log_file
echo "CURRENT_SYMPA_LIST_DATA_BASE_SYMLINK=$CURRENT_SYMPA_LIST_DATA_BASE_SYMLINK" >> $_log_file
echo "CURRENT_SYMPA_LIST_DATA_SYMLINK=$CURRENT_SYMPA_LIST_DATA_SYMLINK" >> $_log_file
fi
echo "SYMPA_VERSION=$SYMPA_VERSION" >> $_log_file
echo "" >> $_log_file
echo "UPDATE_SYMPA=$UPDATE_SYMPA" >> $_log_file
echo "" >> $_log_file
if ! $UPDATE_SYMPA ; then
echo "SYMPA_SUPPORT_MULTIDOMAINS=$SYMPA_SUPPORT_MULTIDOMAINS" >> $_log_file
fi
echo "SYMPA_USER=$SYMPA_USER" >> $_log_file
echo "SYMPA_GROUP=$SYMPA_GROUP" >> $_log_file
echo "" >> $_log_file
echo "ENABLE_FHS=$ENABLE_FHS" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_INSTALL_DIR=$SYMPA_INSTALL_DIR" >> $_log_file
echo "SYMPA_MAIN_CONF_DIR=$SYMPA_MAIN_CONF_DIR" >> $_log_file
echo "SYMPA_BIN_DIR=$SYMPA_BIN_DIR" >> $_log_file
echo "SYMPA_PID_DIR=$SYMPA_PID_DIR" >> $_log_file
echo "SYMPA_CGI_DIR=$SYMPA_CGI_DIR" >> $_log_file
echo "SYMPA_LIBEXEC_DIR=$SYMPA_LIBEXEC_DIR" >> $_log_file
echo "SYMPA_STATIC_DIR=$SYMPA_STATIC_DIR" >> $_log_file
echo "SYMPA_MANPATH=$SYMPA_MANPATH" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_LIST_DATA_DIR=$SYMPA_LIST_DATA_DIR" >> $_log_file
echo "SYMPA_LIST_DATA_BASE_PATH=$SYMPA_LIST_DATA_BASE_PATH" >> $_log_file
echo "SYMPA_LIST_DATA_ROOT_DIR=$SYMPA_LIST_DATA_ROOT_DIR" >> $_log_file
echo "SYMPA_LIST_DATA_BASE_SYMLINK=$SYMPA_LIST_DATA_BASE_SYMLINK" >> $_log_file
echo "SYMPA_LIST_DATA_SYMLINK=$SYMPA_LIST_DATA_SYMLINK" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_LIST_ARC_PATH=$SYMPA_LIST_ARC_PATH" >> $_log_file
echo "SYMPA_LIST_ARC_SYMLINK=$SYMPA_LIST_ARC_SYMLINK" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_ALIAS_FILE=$SYMPA_ALIAS_FILE" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_DOMAIN=$SYMPA_DOMAIN" >> $_log_file
echo "SYMPA_LISTMASTER=$SYMPA_LISTMASTER" >> $_log_file
echo "SYMPA_WEB_URL=$SYMPA_WEB_URL" >> $_log_file
echo "_wwsympa_dir=$_wwsympa_dir" >> $_log_file
echo "" >> $_log_file
echo "SYMPA_DB_TYPE=$SYMPA_DB_TYPE" >> $_log_file
echo "SYMPA_DB_HOST=$SYMPA_DB_HOST" >> $_log_file
echo "SYMPA_DB_PORT=$SYMPA_DB_PORT" >> $_log_file
echo "SYMPA_DB_NAME=$SYMPA_DB_NAME" >> $_log_file
echo "SYMPA_DB_USER=$SYMPA_DB_USER" >> $_log_file
echo "SYMPA_DB_PASSWD=$SYMPA_DB_PASSWD" >> $_log_file
echo "START_AT_BOOTTIME=$START_AT_BOOTTIME" >> $_log_file
echo "SYMPA_INIT_DIR=$SYMPA_INIT_DIR" >> $_log_file
if $SYSTEMD_SUPPORTED ; then
echo "SYMPA_SYSTEMD_DIR=$SYMPA_SYSTEMD_DIR" >> $_log_file
fi
echo "" >> $_log_file
echo "apache_vhost_dir=$apache_vhost_dir" >> $_log_file
echo "apache_log_dir=$apache_log_dir" >> $_log_file
echo "HTTPD_USER=$HTTPD_USER" >> $_log_file
echo "" >> $_log_file
echo "IPv4=$IPv4" >> $_log_file
echo "IPv6=$IPv6" >> $_log_file
echo "" >> $_log_file
if ! $UPDATE_SYMPA ; then
echo "POSTFIX_CONF_DIR=$POSTFIX_CONF_DIR" >> $_log_file
fi
echo "" >> $_log_file
echo "SYSTEMD_SUPPORTED=$SYSTEMD_SUPPORTED" >> $_log_file
echo "APACHE_INIT_SCRIPT=$APACHE_INIT_SCRIPT" >> $_log_file
echo "APACHE_SERVICE_FILE=$APACHE_SERVICE_FILE" >> $_log_file
echo "" >> $_log_file
echo "_src_base_dir=$_src_base_dir" >> $_log_file
echo "_builddir=$_builddir" >> $_log_file
echo "_logdir=$_logdir" >> $_log_file
echo ""
if ! $UPDATE_SYMPA ; then
## - In case of a new fresh installation sympa main configuration file should
## - not exists. But if so, backup existing configuration file
## -
if [ -s "${SYMPA_MAIN_CONF_DIR}/sympa.conf" ]; then
warn "File \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\" is not empty, but this is an initial installation!"
echo "" >> $_log_file
echo "## - Backup configuration file '${SYMPA_MAIN_CONF_DIR}/sympa.conf now'.." >> $_log_file
echo "## -" >> $_log_file
echo "mv ${SYMPA_MAIN_CONF_DIR}/sympa.conf ${SYMPA_MAIN_CONF_DIR}/sympa.conf.$backup_date" >> $_log_file
echononl "\tBackup configuration file '${SYMPA_MAIN_CONF_DIR}/sympa.conf now'.."
mv "${SYMPA_MAIN_CONF_DIR}/sympa.conf" "${SYMPA_MAIN_CONF_DIR}/sympa.conf.$backup_date"
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Backup configuration file '${SYMPA_MAIN_CONF_DIR}/sympa.conf now' failed! \n
See '$_log_file' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
fi
if [[ -f "${SYMPA_MAIN_CONF_DIR}/sympa.conf.bin" ]] ; then
echo "" >> $_log_file
echo "## - Remove file '${SYMPA_MAIN_CONF_DIR}/sympa.conf.bin'.." >> $_log_file
echo "## -" >> $_log_file
echo "rm ${SYMPA_MAIN_CONF_DIR}/sympa.conf.bin" >> $_log_file
echononl "\tRemove file '${SYMPA_MAIN_CONF_DIR}/sympa.conf.bin'.."
rm ${SYMPA_MAIN_CONF_DIR}/sympa.conf.bin
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Removing file '${SYMPA_MAIN_CONF_DIR}/sympa.conf.bin' failed! \n
See '$_log_file' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
fi
## - Also the database should be empty (created above). If not, backup the database
## - and then empty it
## -
if echo "$(mysql $mysql_credential_args -N -s -e "SHOW DATABASES";)" | grep -q "$SYMPA_DB_NAME" ; then
_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!"
echo "" >> $_log_file
echo "## - Backup database non empty database '$SYMPA_DB_NAME'.." >> $_log_file
echo "## -" >> $_log_file
echo "mysqldump $mysql_credential_args --opt $SYMPA_DB_NAME > ${_src_base_dir}/${SYMPA_DB_NAME}-${backup_date}.sql" >> $_log_file
echononl "\tBackup database non empty 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
echo "" >> $_log_file
echo "## - Cleaning up (empty) database '$SYMPA_DB_NAME'.." >> $_log_file
echo "## -" >> $_log_file
cat <<EOF >> $_log_file
for _table in $_tables ; do
mysql $mysql_credential_args $SYMPA_DB_NAME -N -s -e \"DROP TABLE \$_table\" 2> /dev/null
done
EOF
echononl "\tCleaning up (empty) database '$SYMPA_DB_NAME'.."
_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
echo_failed
fatal "Cleaning up (empty)database \"$SYMPA_DB_NAME\" failed!"
else
echo_ok
fi
fi
fi
fi
## - Download Sympa sources..
## -
echo "" >> $_log_file
echo "## - Change into base source directory \"$_src_base_dir\" .." >> $_log_file
echo "## -" >> $_log_file
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 .."
if [ ! -f sympa-${SYMPA_VERSION}.tar.gz ]; then
echo "" >> $_log_file
echo "## - Get source sympa-${SYMPA_VERSION}.tar.gz .." >> $_log_file
echo "## -" >> $_log_file
echo "wget https://github.com/sympa-community/sympa/releases/download/${SYMPA_VERSION}/sympa-${SYMPA_VERSION}.tar.gz" >> $_log_file
wget https://github.com/sympa-community/sympa/releases/download/${SYMPA_VERSION}/sympa-${SYMPA_VERSION}.tar.gz >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Download of \"sympa-${SYMPA_VERSION}.tar.gz\" failed! \n
See '$_log_file' for further informations."
fi
else
echo_skipped
fi
echo ""
if ! $UPDATE_SYMPA ; then
echononl "\tAdding Group \"$SYMPA_GROUP\".."
if ! grep $SYMPA_GROUP /etc/group > /dev/null ; then
echo "" >> $_log_file
echo "## - Adding Group \"$SYMPA_GROUP\".." >> $_log_file
echo "## -" >> $_log_file
echo "addgroup --gid $SYMPA_GID $SYMPA_GROUP" >> $_log_file
addgroup --gid $SYMPA_GID $SYMPA_GROUP >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Adding group '$SYMPA_GROUP' failed! \n
See '$_log_file' for further informations."
fi
else
echo_skipped
fi
echononl "\tAdding User \"$SYMPA_USER\".."
if ! grep $SYMPA_USER /etc/passwd > /dev/null ; then
echo "" >> $_log_file
echo "## - Adding User \"$SYMPA_USER\".." >> $_log_file
echo "## -" >> $_log_file
echo "adduser --uid $SYMPA_UID --gid $SYMPA_GID --home $SYMPA_BASE_PATH --disabled-password \\" >> $_log_file
echo " --gecos \"Sympa mailing list manager\" $SYMPA_USER" >> $_log_file
adduser --uid $SYMPA_UID --gid $SYMPA_GID --home $SYMPA_BASE_PATH --disabled-password \
--gecos "Sympa mailing list manager" $SYMPA_USER >> $_log_file
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Adding user '$SYMPA_USER' failed! \n
See '$_log_file' for further informations."
fi
else
echo_skipped
fi
echo ""
## - Sympa alias file
## -
if [ -n "$SYMPA_ALIAS_FILE" ]; then
_dir=`dirname $SYMPA_ALIAS_FILE`
_create_dir=true
echononl "\tCreate directory \"$_dir\".."
echo "" >> $_log_file
echo "## - Create directory \"$_dir\" (contains sympa alias file).." >> $_log_file
echo "## -" >> $_log_file
if [ ! -d "$_dir" ]; then
echo "mkdir -p $_dir" $_log_file
mkdir -p $_dir >> $_log_file
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Creation of dir \"$_dir\" failed! \n
See '$_log_file' for further informations."
_create_dir=false
fi
else
echo_skipped
echo "## - \"$_dir\" alredy exists" >> $_log_file
echo "## -" >> $_log_file
fi
echononl "\tCreate alias file \"$SYMPA_ALIAS_FILE\".."
echo "" >> $_log_file
echo "## - Create alias file \"$SYMPA_ALIAS_FILE\".." >> $_log_file
echo "## -" >> $_log_file
if [ ! -f "$SYMPA_ALIAS_FILE" ]; then
echo "touch $SYMPA_ALIAS_FILE" >> $_log_file
touch $SYMPA_ALIAS_FILE >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Creation of alias file \"$SYMPA_ALIAS_FILE\" failed! \n
See '$_log_file' for further informations."
fi
else
echo_skipped
echo "## - Alias file \"$SYMPA_ALIAS_FILE\" alredy exists" >> $_log_file
echo "## -" >> $_log_file
fi
fi
echononl "\tChange group for \"$SYMPA_ALIAS_FILE\".."
echo "" >> $_log_file
echo "## - Change group for \"$SYMPA_ALIAS_FILE\".." >> $_log_file
echo "## -" >> $_log_file
echo "chgrp $SYMPA_GROUP $SYMPA_ALIAS_FILE" >> $_log_file
chgrp $SYMPA_GROUP $SYMPA_ALIAS_FILE >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set ownerchip ($SYMPA_USER:$SYMPA_GROUP) to \"$SYMPA_ALIAS_FILE\"! \n
See '$_log_file' for further informations."
fi
echononl "\tSet permissions on \"$SYMPA_ALIAS_FILE\".."
echo "" >> $_log_file
echo "## - Set permissions on \"$SYMPA_ALIAS_FILE\".." >> $_log_file
echo "## -" >> $_log_file
echo "chmod 664 $SYMPA_ALIAS_FILE" >> $_log_file
chmod 664 $SYMPA_ALIAS_FILE >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set ownerchip ($SYMPA_USER:$SYMPA_GROUP) to \"$SYMPA_ALIAS_FILE\"! \n
See '$_log_file' for further informations."
fi
## - Install reqired debian packages
## -
declare -a required_debian_packages_arr
for _debian_pkg in $_required_debian_packages ; do
required_debian_packages_arr+=("$_debian_pkg")
done
> ${_logdir}/debian-install.log
echo ""
echo -e "\tInstalling required debian packages .."
for _debian_pkg in ${required_debian_packages_arr[@]} ; do
echononl "\t Installing $_debian_pkg .."
if ! dpkg -l $_debian_pkg 2> /dev/null | grep -e "^ii" > /dev/null 2>&1 ; then
echo "" >> $_log_file
echo "## - Installing Debian Package \"$_debian_pkg\" .." >> $_log_file
echo "## -" >> $_log_file
echo "## - See ${_logdir}/debian-install.log for details" >> $_log_file
echo "## -" >> $_log_file
echo "apt-get install -q -y $_debian_pkg >> ${_logdir}/debian-install.log 2>&1" >> $_log_file
echo "" >> ${_logdir}/debian-install.log
echo "## - Install $_debian_pkg" >> ${_logdir}/debian-install.log
apt-get install -q -y $_debian_pkg >> ${_logdir}/debian-install.log 2>&1
if [ "$?" = 0 ]; then
echo_ok
else
echo_failed
fatal "Installing debian package \"$_debian_pkg\" failed! \n
See '${_logdir}/debian-install.log' for further informations."
fi
else
echo_skipped
fi
done
## - Install required/optional perl modules
## -
declare -a cpan_modules_arr
for _module in $_needed_cpan_modules ; do
cpan_modules_arr+=("$_module")
done
> ${_logdir}/cp_modul-install.log
echo ""
echo -e "\tInstalling cpan modules .."
for _cpan_module in ${cpan_modules_arr[@]} ; do
echononl "\t Installing $_cpan_module .."
cpanm -q --skip-installed $_module > "${_logdir}/cp_modul-install.log" 2>&1
if [[ "$?" -ne 0 ]] ; then
echo_failed
error "$(cat "${_logdir}/cp_modul-install.log")"
else
echo_ok
fi
done
info "After Installation finished, check presens of required perl modules"
## - Generate some locales
##
echononl "\tConfigure locales used by the system (/etc/locale.gen)"
echo "" >> $_log_file
echo "## - Configure locales used by the system (/etc/locale.gen) ..." >> $_log_file
echo "## -" >> $_log_file
cat <<EOF >> $_log_file
cat <<END > /etc/locale.gen
bg_BG CP1251
cs_CZ ISO-8859-2
de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
el_GR ISO-8859-7
en_US.UTF-8 UTF-8
en_US ISO-8859-1
es_ES ISO-8859-1
et_EE ISO-8859-1
eu_ES ISO-8859-1
fi_FI ISO-8859-1
fr_FR ISO-8859-1
hu_HU ISO-8859-2
it_IT ISO-8859-1
ja_JP.EUC-JP EUC-JP
nb_NO ISO-8859-1
nl_NL ISO-8859-1
oc_FR ISO-8859-1
pl_PL ISO-8859-2
pt_BR ISO-8859-1
pt_PT ISO-8859-1
ro_RO ISO-8859-2
ru_RU ISO-8859-5
sv_SE ISO-8859-1
tr_TR ISO-8859-9
zh_TW BIG5
zh_CN GB2312
END
EOF
cat <<EOF > /etc/locale.gen
bg_BG CP1251
cs_CZ ISO-8859-2
de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
el_GR ISO-8859-7
en_US.UTF-8 UTF-8
en_US ISO-8859-1
es_ES ISO-8859-1
et_EE ISO-8859-1
eu_ES ISO-8859-1
fi_FI ISO-8859-1
fr_FR ISO-8859-1
hu_HU ISO-8859-2
it_IT ISO-8859-1
ja_JP.EUC-JP EUC-JP
nb_NO ISO-8859-1
nl_NL ISO-8859-1
oc_FR ISO-8859-1
pl_PL ISO-8859-2
pt_BR ISO-8859-1
pt_PT ISO-8859-1
ro_RO ISO-8859-2
ru_RU ISO-8859-5
sv_SE ISO-8859-1
tr_TR ISO-8859-9
zh_TW BIG5
zh_CN GB2312
EOF
if [ "$?" = 0 ]; then
echo_ok
else
echo_failed
error "Setting locales definition in file \"/etc/locale.gen\" failed!"
fi
echononl "\tGenerating locales from /etc/locale.gen"
echo "" >> $_log_file
echo "## - Generating locales from /etc/locale.gen .." >> $_log_file
echo "## -" >> $_log_file
echo "locale-gen" >> $_log_file
locale-gen >> $_log_file 2>&1
if [ "$?" = 0 ]; then
echo_ok
else
echo_failed
error "Generating locales from \"/etc/locale.gen\" failed! \n
See '${_logdir}/debian-install.log' for further informations."
fi
echononl "\tAdd Environment Variable \"PERL5LIB\" to /etc/profile .."
if ! grep PERL5LIB /etc/profile > /dev/null 2>&1 ; then
echo "" >> $_log_file
echo "## - Add Environment Variable \"PERL5LIB\" to /etc/profile .." >> $_log_file
echo "## -" >> $_log_file
echo "echo \"export PERL5LIB=/usr/share/mhonarc\" >> /etc/profile" >> $_log_file
echo "export PERL5LIB=/usr/share/mhonarc" >> /etc/profile 2>> $_log_file
if [ "$?" = 0 ]; then
echo_ok
else
echo_failed
error "Adding Environment Variable \"PERL5LIB\" to /etc/profile failed! \n
See '${_logdir}/debian-install.log' for further informations."
fi
else
echo_skipped
fi
## - Make PERL5LIB also present in that shell
## -
export PERL5LIB=/usr/share/mhonarc
else
## - Disable crontab for user root
## -
_crontab_found=false
echononl "\tBackup crontab (user root)"
echo "" >> $_log_file
echo "## - Backup crontab (user root)" >> $_log_file
echo "## - " >> $_log_file
echo "crontab -u root -l > $_CRONTAB_BAKUP_FILE" >> $_log_file
crontab -u root -l >> $_CRONTAB_BAKUP_FILE 2>> $_log_file
if [ "$?" = "0" ]; then
echo_ok
_crontab_found=true
else
if [[ ! -s "$_CRONTAB_BAKUP_FILE" ]] ; then
echo_skipped
warn "No crontab for user 'root'found."
else
echo_failed
error "Backup crontab failed"
fi
fi
if $_crontab_found ; then
echononl "\tDisable crontab for user root"
echo "" >> $_log_file
echo "## - Disable crontab for user root" >> $_log_file
echo "## -" >> $_log_file
echo "crontab -r -u root" >> $_log_file
crontab -r -u root >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
## - Stop apache webservice
## -
HTTPD=`realpath $(which httpd) 2>/dev/null`
if [ -z "$HTTPD" ]; then
if [ -x "/usr/local/apache2/bin/httpd" ]; then
HTTPD=`realpath "/usr/local/apache2/bin/httpd"`
else
HTTPD=`realpath $(which apache2) 2>/dev/null`
if [ -z "$HTTPD" ]; then
fatal 'Command \"httpd\"/\"apache2\" not found!'
fi
fi
fi
echononl "\tStopping Apache Webserver .."
_PID=`ps aux | grep "$HTTPD " | grep -e "^root" | grep -v grep | awk '{print$2}'`
if [ -n "$_PID" ];then
echo "" >> $_log_file
echo "## - Stopping Apache Webserver .." >> $_log_file
echo "## -" >> $_log_file
if [[ -n "$APACHE_SERVICE_FILE" ]] ; then
echo "systemctl stop $APACHE_SERVICE_FILE" >> $_log_file
systemctl stop $APACHE_SERVICE_FILE >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Apache Webserver (systemd service) failed! \n
See '${_log_file}' for further informations."
fi
else
echo "$APACHE_INIT_SCRIPT stop" >> $_log_file
$APACHE_INIT_SCRIPT stop >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Apache Webserver (SysV Initscript) failed! \n
See '${_log_file}' for further informations."
fi
fi
else
echo_skipped
fi
sleep 2
_PIDS=`ps aux | grep "$HTTPD " |grep -v grep | awk '{print$2}'`
if [ -n "$_PIDS" ]; then
warn "Found running webserver processes. Going to kill them.."
for _pid in $_PIDS ; do
kill -9 $_pid > /dev/null 2>&1
done
fi
## - Stop Sympa list manager
## -
echononl "\tStopping Sympa mailing list manager .."
if ps -e f | grep -E "${SYMPA_BASE_PATH}/s?bin/sympa" 2>/dev/null | grep -v grep > /dev/null 2>&1 ; then
echo "" >> $_log_file
echo "## - Stopping Sympa mailing list manager .." >> $_log_file
echo "## -" >> $_log_file
if $SYSTEMD_SUPPORTED ; then
echo "systemctl stop sympa" >> $_log_file
systemctl stop sympa >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Sympa mailing list manager (systemd service) failed! \n
See '${_log_file}' for further informations."
fi
else
echo "${SYMPA_INIT_DIR}/sympa stop" >> $_log_file
${SYMPA_INIT_DIR}/sympa stop >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Sympa mailing list manager (SysV Initscript) failed! \n
See '${_log_file}' for further informations."
fi
fi
else
echo_skipped
fi
sleep 5
_PIDS=`ps -e f | grep -E "${SYMPA_BASE_PATH}/s?bin/sympa" 2>/dev/null | grep -v grep | awk '{print$1}'`
if [ -n "$_PIDS" ]; then
warn "Found running sympa processes. Going to kill them.."
for _pid in $_PIDS ; do
kill -9 $_pid > /dev/null 2>&1
done
fi
## - Stop Sympa's wwsympa.fcgi processes
## -
echononl "\tStopping Sympa's wwsympa.fcgi processes .."
if ps -e f | grep -E "${SYMPA_BASE_PATH}/s?bin/wwsympa.fcgi" 2>/dev/null | grep -v grep > /dev/null 2>&1 ; then
echo "" >> $_log_file
echo "## - Stopping Sympa's wwsympa.fcgi processes.." >> $_log_file
echo "## -" >> $_log_file
if $SYSTEMD_SUPPORTED ; then
echo "systemctl stop "wwsympa.service >> $_log_file
systemctl stop wwsympa.service >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Sympa's wwsympa.fcgi processes (systemd service) failed! \n
See '${_log_file}' for further informations."
fi
else
if [[ -x "${SYMPA_INIT_DIR}/wwsympa" ]]; then
echo "${SYMPA_INIT_DIR}/wwsympa stop" >> $_log_file
${SYMPA_INIT_DIR}/wwsympa stop >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Stopping Sympai's wwsympa.fcgi processes (SysV Initscript) failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
fi
else
echo_skipped
fi
sleep 5
_PIDS=`ps -e f | grep -E "${SYMPA_BASE_PATH}/s?bin/wwsympa.fcgi" 2>/dev/null | grep -v grep | awk '{print$1}'`
if [ -n "$_PIDS" ]; then
warn "Found running wwsympa.fcgi processes. Going to kill them.."
for _pid in $_PIDS ; do
kill -9 $_pid > /dev/null 2>&1
done
fi
## ---
## --- Handle Sympa's Installation Directory
## ---
if [[ "$CURRENT_INSTALL_DIR" = "$SYMPA_BASE_PATH" ]]; then
echo -e "\tMove current Installation ($CURRENT_INSTALL_DIR) to directory"
echononl "\t '${CURRENT_INSTALL_DIR}-${SYMPA_OLD_VERSION}' .."
echo "## - Move current Installation ($CURRENT_INSTALL_DIR) to directory" >> $_log_file
echo "## - '${CURRENT_INSTALL_DIR}-${SYMPA_OLD_VERSION}'.." >> $_log_file
echo "## -" >> $_log_file
echo "mv \"$CURRENT_INSTALL_DIR\" \"${CURRENT_INSTALL_DIR}-${SYMPA_OLD_VERSION}'\"" >> $_log_file
mv "$CURRENT_INSTALL_DIR" "${CURRENT_INSTALL_DIR}-${SYMPA_OLD_VERSION}" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot move directory \"$CURRENT_INSTALL_DIR\" to \"${CURRENT_INSTALL_DIR}-${SYMPA_OLD_VERSION}\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
CURRENT_INSTALL_DIR="${CURRENT_INSTALL_DIR}-${SYMPA_OLD_VERSION}"
fi
if [[ "$SYMPA_OLD_VERSION" = "$SYMPA_VERSION" ]]; then
echononl "\tBackup current Installation ($CURRENT_INSTALL_DIR).."
echo "## - Backup current Installation ($CURRENT_INSTALL_DIR).." >> $_log_file
echo "## -" >> $_log_file
echo "cp -a \"${CURRENT_INSTALL_DIR}\" \"${CURRENT_INSTALL_DIR}.$backup_date\"" >> $_log_file
cp -a "${CURRENT_INSTALL_DIR}" "${CURRENT_INSTALL_DIR}.$backup_date" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Backup current Installation \"$CURRENT_INSTALL_DIR\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
fi
# - Copy (hardlink) old Installation directory into tne new one
# -
echo -e "\tCopy (hardlink) '${CURRENT_INSTALL_DIR}' to directory"
echononl "\t '$SYMPA_INSTALL_DIR'.."
if [[ "$CURRENT_INSTALL_DIR" = "$SYMPA_INSTALL_DIR" ]]; then
echo_skipped
else
echo "## - Copy (hardlink) '${CURRENT_INSTALL_DIR}' to directory" >> $_log_file
echo "## - '$SYMPA_INSTALL_DIR'.." >> $_log_file
echo "## -" >> $_log_file
echo "cp -al \"${CURRENT_INSTALL_DIR}\" \"$SYMPA_INSTALL_DIR\"" >> $_log_file
cp -al "${CURRENT_INSTALL_DIR}" "$SYMPA_INSTALL_DIR" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot copy (hardlink) \"$CURRENT_INSTALL_DIR\" to \"${SYMPA_INSTALL_DIR}'\"! \n
See '${_log_file}' for further informations."
echo ""
echononl "\tType \"yes\" to proceed anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
echo ""
fi
fi
echo ""
## ---
## --- Handle Sympa's List Data Directory
## ---
if [[ "$CURRENT_SYMPA_LIST_DATA_BASE_PATH" = "$SYMPA_LIST_DATA_BASE_SYMLINK" ]]; then
echo -e "\tMove current data base directory ($CURRENT_SYMPA_LIST_DATA_BASE_PATH) to directory"
echononl "\t '${CURRENT_SYMPA_LIST_DATA_BASE_PATH}-${SYMPA_OLD_VERSION}' .."
echo "## - Move current data base directory ($CURRENT_SYMPA_LIST_DATA_BASE_PATH) to directory" >> $_log_file
echo "## - '${CURRENT_SYMPA_LIST_DATA_BASE_PATH}-${SYMPA_OLD_VERSION}'.." >> $_log_file
echo "## -" >> $_log_file
echo "mv \"$CURRENT_SYMPA_LIST_DATA_BASE_PATH\" \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}-${SYMPA_OLD_VERSION}'\"" >> $_log_file
mv "$CURRENT_SYMPA_LIST_DATA_BASE_PATH" "${CURRENT_SYMPA_LIST_DATA_BASE_PATH}-${SYMPA_OLD_VERSION}" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot move data base directory \"$CURRENT_SYMPA_LIST_DATA_BASE_PATH\" to \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}-${SYMPA_OLD_VERSION}\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "\tType uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
echo ""
fi
CURRENT_SYMPA_LIST_DATA_BASE_PATH="${CURRENT_SYMPA_LIST_DATA_BASE_PATH}-${SYMPA_OLD_VERSION}"
fi
if [[ "$SYMPA_OLD_VERSION" = "$SYMPA_VERSION" ]]; then
echononl "\tBackup current data base directory ($CURRENT_SYMPA_LIST_DATA_BASE_PATH).."
echo "## - Backup current data base directory ($CURRENT_SYMPA_LIST_DATA_BASE_PATH).." >> $_log_file
echo "## -" >> $_log_file
echo "cp -a \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}\" \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}.$backup_date\"" >> $_log_file
cp -a "${CURRENT_SYMPA_LIST_DATA_BASE_PATH}" "${CURRENT_SYMPA_LIST_DATA_BASE_PATH}.$backup_date" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Backup current data base directory \"$CURRENT_SYMPA_LIST_DATA_BASE_PATH\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "\tType uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
echo ""
fi
fi
# - Copy (hardlink) old Data directory into tne new one
# -
echo -e "\tCopy (hardlink) '${CURRENT_SYMPA_LIST_DATA_BASE_PATH}' to directory"
echononl "\t '$SYMPA_LIST_DATA_BASE_PATH'.."
if [[ "${CURRENT_SYMPA_LIST_DATA_BASE_PATH}" = "$SYMPA_LIST_DATA_BASE_PATH" ]]; then
echo_skipped
else
echo "## - Copy (hardlink) '${CURRENT_SYMPA_LIST_DATA_BASE_PATH}' to directory" >> $_log_file
echo "## - '$SYMPA_LIST_DATA_BASE_PATH'.." >> $_log_file
echo "## -" >> $_log_file
echo "cp -al \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}\" \"$SYMPA_LIST_DATA_BASE_PATH\"" >> $_log_file
cp -al "${CURRENT_SYMPA_LIST_DATA_BASE_PATH}" "$SYMPA_LIST_DATA_BASE_PATH" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot copy (hardlink) \"$CURRENT_SYMPA_LIST_DATA_BASE_PATH\" to \"${SYMPA_LIST_DATA_BASE_PATH}'\"! \n
See '${_log_file}' for further informations."
echo ""
echononl "\tType \"yes\" to proceed anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
echo ""
fi
fi
echo ""
## ---
## --- Handle Sympa's Database
## ---
# - Backup Sympa's database
# -
if [ "$SYMPA_DB_TYPE" == "mysql" ]; then
echononl "\tDump Database \"$SYMPA_DB_NAME\" .."
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 > $(dirname ${SYMPA_BASE_PATH})/${SYMPA_DB_NAME}.${SYMPA_OLD_VERSION}.${backup_date}.sql" >> $_log_file
mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > $(dirname ${SYMPA_BASE_PATH})/${SYMPA_DB_NAME}.${SYMPA_OLD_VERSION}.${backup_date}.sql 2>> $_log_file
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot Backup existing database \"$SYMPA_DB_NAME\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
else
warn "No Backup for database type "$SYMPA_DB_TYPE" implemented."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
echo ""
## ---
## --- Handle Sympa's SysV init script
## ---
# - Backup init script if exists
# -
echononl "\tBackup existing init script .."
if [[ -f "${SYMPA_INIT_DIR}/sympa" ]]; then
echo "" >> $_log_file
echo "## - Backup existing init script .." >> $_log_file
echo "## -" >> $_log_file
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
echo_failed
error "Cannot Backup existing init script \"${SYMPA_INIT_DIR}/sympa\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
else
echo_skipped
fi
# - Disable init script
# -
echononl "\tDisable init script.."
if [[ -f "${SYMPA_INIT_DIR}/sympa" ]]; then
echo "" >> $_log_file
echo "## - Disable init script '${SYMPA_INIT_DIR}/sympa'.." >> $_log_file
echo "## -" >> $_log_file
echo "update-rc.d -f sympa remove" >> $_log_file
update-rc.d -f sympa remove >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot disable init script \"${SYMPA_INIT_DIR}/sympa\"! \n
See '${_log_file}' for further informations."
_proceed=""
echononl "Type uppercase \"yes\" to proceed anyway: "
read _proceed
[[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.."
fi
else
echo_skipped
fi
# - Delete existing init script
# -
echononl "\tRemove init script if exists"
if [[ -f "${SYMPA_INIT_DIR}/sympa" ]]; then
echo "" >> $_log_file
echo "## - Remove init script '${SYMPA_INIT_DIR}/sympa'.." >> $_log_file
echo "## -" >> $_log_file
echo "rm ${SYMPA_INIT_DIR}/sympa" >> $_log_file
rm "${SYMPA_INIT_DIR}/sympa" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot remove init script \"${SYMPA_INIT_DIR}/sympa\"! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
echo ""
## ---
## --- Handle Sympa's Systemd unit files
## ---
# - Disable Services
# -
_service_files="sympa.service wwsympa.service"
for _service_file in $_service_files ; do
echononl "\tDisable unit file '$_service_file'.."
if [[ -f "${SYMPA_SYSTEMD_DIR}/$_service_file" ]]; then
echo "" >> $_log_file
echo "## - Disable unit file '$_service_file'.." >> $_log_file
echo "## -" >> $_log_file
echo "systemctl disable $_service_file" >> $_log_file
systemctl disable $_service_file >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
echononl "\tRemove unit file '$_service_file'.."
echo "" >> $_log_file
echo "## - Remove unit file '$_service_file'.." >> $_log_file
echo "## -" >> $_log_file
echo "rm ${SYMPA_SYSTEMD_DIR}/$_service_file" >> $_log_file
rm ${SYMPA_SYSTEMD_DIR}/$_service_file >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot remove unit file \"${SYMPA_INIT_DIR}/$_service_file\"! \n
See '${_log_file}' for further informations."
fi
else
echo_failed
error "Cannot disable unit file '$_service_file'! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
done
# - Delete Systemd unit files
# -
if ls ${SYMPA_SYSTEMD_DIR}/sympa-*.service > /dev/null 2>&1 ; then
echononl "\tRemove services files 'sympa-*.services'.."
echo "" >> $_log_file
echo "## - Remove unit files 'sympa-*.services'" >> $_log_file
echo "## -" >> $_log_file
echo "rm ${SYMPA_SYSTEMD_DIR}/sympa-*.service" >> $_log_file
rm ${SYMPA_SYSTEMD_DIR}/sympa-*.service >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot remove services files 'sympa-*.service'! \n
See '${_log_file}' for further informations."
fi
fi
fi
echo
echo -e "\t---"
echo -e "\t--- Installation of Sympa mailing list server (${SYMPA_VERSION})"
echo -e "\t---"
echo""
echo "" >> $_log_file
echo -e "## ---" >> $_log_file
echo -e "## --- Installation of Sympa mailing list server (${SYMPA_VERSION})" >> $_log_file
echo -e "## ---" >> $_log_file
echo"" >> $_log_file
echononl "\tMove (backup) existing source directory ..."
if [ -d "$_builddir" ];then
echo "" >> $_log_file
echo "## - Move (backup) existing source directory ..." >> $_log_file
echo "## -" >> $_log_file
echo "mv $_builddir $_builddir.$backup_date" >> $_log_file
mv $_builddir $_builddir.$backup_date >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) source directory \"${_builddir}\"! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
## - Unpack source archive
## -
echo "" >> $_log_file
echo "## - Change into base source directory \"$_src_base_dir\" .." >> $_log_file
echo "## -" >> $_log_file
echo "cd $_src_base_dir" >> $_log_file
cd $_src_base_dir
echo "" >> $_log_file
echo "## - Unpack sympa-${SYMPA_VERSION}.tar.gz .." >> $_log_file
echo "## -" >> $_log_file
echo "gzip -dc sympa-${SYMPA_VERSION}.tar.gz | tar xf -" >> $_log_file
echononl "\tUnpack sympa-${SYMPA_VERSION}.tar.gz .."
gzip -dc sympa-${SYMPA_VERSION}.tar.gz | tar xf - >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot unpack archive 'sympa-${SYMPA_VERSION}.tar.gz'! \n
See '${_log_file}' for further informations."
fi
## - Configure sympa
## -
echo "" >> $_log_file
echo "## - Change into sympa source directory \"$_builddir\" .." >> $_log_file
echo "## -" >> $_log_file
echo "cd $_builddir" >> $_log_file
cd $_builddir >> $_log_file 2>&1 || fatal "Changing Directory (cd) to \"${_builddir}\" failed!"
echo "" >> $_log_file
echo "## - Configure sympa-${SYMPA_VERSION} .." >> $_log_file
echo "## -" >> $_log_file
echo "## - See ${_logdir}/sympa-configure.log for more details" >> $_log_file
echo "## -" >> $_log_file
echononl "\tConfiguring sympa-${SYMPA_VERSION} .."
config_params="
--enable-fhs=$ENABLE_FHS
--prefix=$SYMPA_INSTALL_DIR"
if $SYSTEMD_SUPPORTED ; then
config_params="$config_params
--without-initdir
--with-unitsdir=$SYMPA_SYSTEMD_DIR"
else
config_params="$config_params
--with-initdir=$SYMPA_INIT_DIR"
fi
config_params="$config_params
--with-confdir=$SYMPA_MAIN_CONF_DIR
--with-expldir=$SYMPA_LIST_DATA_DIR
--with-aliases_file=$SYMPA_ALIAS_FILE
--with-user=$SYMPA_USER
--with-group=$SYMPA_GROUP"
cat << EOF >> $_log_file
LDFLAGS="-s" \\
./configure $config_params > ${_logdir}/sympa-configure.log 2>&1
EOF
LDFLAGS="-s" \
./configure $config_params > ${_logdir}/sympa-configure.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Configuring sympa-${SYMPA_VERSION} failed! \n
See '${_logdir}/sympa-configure.log' for further informations."
fi
echo "" >> $_log_file
echo "## - Compiling sympa-${SYMPA_VERSION} .." >> $_log_file
echo "## -" >> $_log_file
echo "## - See ${_logdir}/sympa-make.log for more details" >> $_log_file
echo "## -" >> $_log_file
echo "make > ${_logdir}/sympa-make.log 2>&1" >> $_log_file
echononl "\tCompiling sympa-${SYMPA_VERSION} .."
make > ${_logdir}/sympa-make.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Compiling sympa-${SYMPA_VERSION} failed! \n
See '${_logdir}/sympa-make.log' for further informations."
fi
## - Notice!
## -
## - In case of a new fresh installation, this directory should not exists.
## -
if ! $UPDATE_SYMPA ; then
echononl "\tBackup existing installation directory.."
if [[ -d "$SYMPA_BASE_PATH" ]];then
echo "" >> $_log_file
echo "## - Backup existing installation directory.." >> $_log_file
echo "## -" >> $_log_file
echo "mv $SYMPA_BASE_PATH ${SYMPA_BASE_PATH}.$backup_date" >> $_log_file
mv $"SYMPA_BASE_PATH" "${SYMPA_BASE_PATH}.$backup_date" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot move (backup) existing install directory \"${_builddir}\"! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
fi
#if $UPDATE_SYMPA ; then
#
# _successfully=true
# info "Sorry, but you have to install files in an seperate terminal.\n\t After finished, continue with this script."
# echo -e "\tType:"
# echo -e "\t cd $_builddir"
# echo -e "\t make install "
# echo ""
# echononl "Was the installation sucessfully? [yes/no]: "
# read OK
# while [ "X$OK" != "Xyes" -a "X$OK" != "XYes" -a "X$OK" != "XNo" -a "X$OK" != "Xno" ]
# do
# echononl "wrong entry! [yes/no] :"
# read OK
# done
# [ $OK = "Yes" -o $OK = "yes" ] || _successfully=false
# echo ""
#
# if ! $_successfully ; then
# echononl "\tInstall previous sympa init script"
# echo_skipped
# echononl "\tReorganize Database.."
# echo_skipped
# echononl "\tRestore Sympa's Installation Directory"
# echo_skipped
# echononl "\tRestore Sympa's List Data Directory"
# echo_skipped
# warn "Moving back to previous installation not yet implemented!"
# fatal "Exiting: Installation was not successfully!"
# fi
#
# if $SYSTEMD_SUPPORTED ; then
# echononl "\tReload systemd configuration.."
# echo "" >> $_log_file
# echo "## - Reload systemd configuration.." >> $_log_file
# echo "## -" >> $_log_file
# echo "systemctl daemon-reload" >> $_log_file
# systemctl daemon-reload >> $_log_file 2>&1
# if [ "$?" = "0" ]; then
# echo_ok
# else
# echo_failed
# error "Reloading systemd configuration failed! \n
# See '${_log_file}' for further informations."
# fi
# fi
#
#else
echo "" >> $_log_file
echo "## - Install Sympa mailing list server (v ${SYMPA_VERSION}) .." >> $_log_file
echo "## -" >> $_log_file
echo "## - See ${_logdir}/sympa-make_install.log for more details" >> $_log_file
echo "## -" >> $_log_file
echo "make install > ${_logdir}/sympa-make_install.log 2>&1" >> $_log_file
echononl "\tInstall Sympa mailing list server.."
make install > ${_logdir}/sympa-make_install.log 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Installing Sympa mailing list server (v ${SYMPA_VERSION}) failed! \n
See '${_logdir}/sympa-make_install.log' for further informations."
echo ""
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
echo ""
fi
#fi
if ! $UPDATE_SYMPA ; then
# - Create directory for list archives
# -
echononl "\tCreate Directory '$SYMPA_LIST_ARC_PATH'.."
if [[ ! -d "$SYMPA_LIST_ARC_PATH" ]]; then
echo "" >> $_log_file
echo "## - Create directory '$SYMPA_LIST_ARC_PATH' for list archives" >> $_log_file
echo "## -" >> $_log_file
echo "mkdir \"$SYMPA_LIST_ARC_PATH\"" >> $_log_file
mkdir "$SYMPA_LIST_ARC_PATH" >> $_log_file 2>&1
if [[ $? -eq 0 ]] ; then
echo_ok
else
echo_failed
error "Cannot create directory '$SYMPA_LIST_ARC_PATH'!"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
else
echo_skipped
fi
else
if [[ ! -d "$SYMPA_LIST_ARC_PATH" ]]; then
error "Directory '$SYMPA_LIST_ARC_PATH' for list archives does not exists, but sympa
is configured to use this directory
Maybe your list archive dir is located at '/usr/local/sympa-${SYMPA_OLD_VERSION}/arc' and you
have to move it to '$SYMPA_LIST_ARC_PATH'"
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/nno]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
echo "" >> $_log_file
echo "## - Install (or upgrade) required and recommended dependent modules.." >> $_log_file
echo "## -" >> $_log_file
echo "cd ${_builddir}" >> $_log_file
echo "cpanm --installdeps --with-recommends ." >> $_log_file
echononl "\tIinstall (or upgrade) required and recommended dependent modules.."
cd ${_builddir} >> $_log_file 2>&1
cpanm --installdeps --with-recommends . >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Installation of required and recommended dependent modules failed! \n
See '$_log_file' for further informations."
echononl "\tcontinue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
fi
if [[ -f "${_builddir}/src/etc/script/wwsympa.service" ]]; then
# - Copy wwsympa.service systemd unit file to SYMPA_SYSTEMD_DIR
# -
echo "" >> $_log_file
echo "## - Copy 'wwsympa.service' to '${SYMPA_SYSTEMD_DIR}'.." >> $_log_file
echo "## -" >> $_log_file
echo "cp \"${_builddir}/src/etc/script/wwsympa.service\" \"${SYMPA_SYSTEMD_DIR}\"" >> $_log_file
echononl "\tCopy 'wwsympa.service' to '${SYMPA_SYSTEMD_DIR}'.."
cp "${_builddir}/src/etc/script/wwsympa.service" "${SYMPA_SYSTEMD_DIR}" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Copying 'wwsympa.service' to '${SYMPA_SYSTEMD_DIR}' failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
# - Adjust unit file wwsympa.service
# -
_failed=false
echononl "\tAdjust unit file 'wwsympa.service'.."
echo "## - Adjust unit file 'wwsympa.service'.." >> $_log_file
echo "## -" >> $_log_file
echo "perl -i -n -p -e \"s/^(.*)\\\"FCGI_OPTS=.*$/\\1\\\"FCGI_OPTS=-M 0600 -U $HTTPD_USER\\\"/\" ${SYMPA_SYSTEMD_DIR}/wwsympa.service" >> $_log_file
perl -i -n -p -e "s/^(.*)\"FCGI_OPTS=.*$/\1\"FCGI_OPTS=-M 0600 -U $HTTPD_USER\"/" ${SYMPA_SYSTEMD_DIR}/wwsympa.service >> $_log_file 2>&1
if [[ "$?" != 0 ]]; then
_failed=true
fi
echo "perl -i -n -p -e \"s/sympa-${SYMPA_VERSION}/sympa/\" ${SYMPA_SYSTEMD_DIR}/wwsympa.service" >> $_log_file
perl -i -n -p -e "s/sympa-${SYMPA_VERSION}/sympa/g" ${SYMPA_SYSTEMD_DIR}/wwsympa.service >> $_log_file 2>&1
if [[ "$?" != 0 ]]; then
_failed=true
fi
if ! $_failed ; then
echo_ok
else
echo_failed
error "Adjusting '${SYMPA_SYSTEMD_DIR}/wwsympa.service' failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
# - Adjust unit files sympa*.service
# -
echononl "\tAdjust unit files 'sympa*.service'.."
echo "## - Adjust unit file 'sympa*.service'.." >> $_log_file
echo "## -" >> $_log_file
echo "perl -i -n -p -e \"s/sympa-${SYMPA_VERSION}/sympa/\" ${SYMPA_SYSTEMD_DIR}/sympa*.service" >> $_log_file
perl -i -n -p -e "s/sympa-${SYMPA_VERSION}/sympa/g" ${SYMPA_SYSTEMD_DIR}/sympa*.service >> $_log_file 2>&1
if [[ $? = 0 ]] ; then
echo_ok
else
echo_failed
error "Adjusting unit files '${SYMPA_SYSTEMD_DIR}/sympa*.service' failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
# - systemd: reload daemon
# -
echo "" >> $_log_file
echo "## - Reload systemd.." >> $_log_file
echo "## -" >> $_log_file
echo "systemctl daemon-reload" >> $_log_file
echononl "\tReload systemd.."
systemctl daemon-reload >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Reloading systemd failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
# -
# - Create Symlink $SYMPA_BASE_PATH --> $SYMPA_INSTALL_DIR
# -
echononl "\tRemove existing symlink '$SYMPA_BASE_PATH'.."
if [[ -h "$SYMPA_BASE_PATH" ]] ; then
echo "" >> $_log_file
echo "## - Remove existing symlink '$SYMPA_BASE_PATH'.." >> $_log_file
echo "## -" >> $_log_file
echo "rm \"$SYMPA_BASE_PATH\"" >> $_log_file
rm "$SYMPA_BASE_PATH" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Removing symlink '$SYMPA_BASE_PATH' failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
fi
else
echo_skipped
fi
echononl "\tCreate Symlink $SYMPA_BASE_PATH --> $SYMPA_INSTALL_DIR"
echo "" >> $_log_file
echo "## - Create Symlink $SYMPA_BASE_PATH --> $SYMPA_INSTALL_DIR.." >> $_log_file
echo "## -" >> $_log_file
echo "ln -s \"$(basename $SYMPA_INSTALL_DIR)\" \"$SYMPA_BASE_PATH\"" >> $_log_file
ln -s "$(basename $SYMPA_INSTALL_DIR)" "$SYMPA_BASE_PATH" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Creating symlink '$SYMPA_BASE_PATH' failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
# - Create Symlink $SYMPA_LIST_DATA_BASE_SYMLINK --> $SYMPA_LIST_DATA_BASE_PATH
# -
echononl "\tRemove existing symlink '$SYMPA_LIST_DATA_BASE_SYMLINK'.."
if [[ -h "$SYMPA_LIST_DATA_BASE_SYMLINK" ]] ; then
echo "" >> $_log_file
echo "## - Remove existing symlink '$SYMPA_LIST_DATA_BASE_SYMLINK'.." >> $_log_file
echo "## -" >> $_log_file
echo "rm \"$SYMPA_LIST_DATA_BASE_SYMLINK\"" >> $_log_file
rm "$SYMPA_LIST_DATA_BASE_SYMLINK" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Removing symlink '$SYMPA_LIST_DATA_BASE_SYMLINK' failed! \n
See '$_log_file' for further informations."
echononl "\tcontinue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
fi
else
echo_skipped
fi
echononl "\tCreate Symlink $SYMPA_LIST_DATA_BASE_SYMLINK --> $SYMPA_LIST_DATA_BASE_PATH"
echo "" >> $_log_file
echo "## - Create Symlink $SYMPA_LIST_DATA_BASE_SYMLINK --> $SYMPA_LIST_DATA_BASE_PATH.." >> $_log_file
echo "## -" >> $_log_file
echo "ln -s \"$(basename $SYMPA_LIST_DATA_BASE_PATH)\" \"$SYMPA_LIST_DATA_BASE_SYMLINK\"" >> $_log_file
ln -s "$(basename $SYMPA_LIST_DATA_BASE_PATH)" "$SYMPA_LIST_DATA_BASE_SYMLINK" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Creating symlink '$SYMPA_LIST_DATA_BASE_SYMLINK' failed! \n
See '$_log_file' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
# - Update also Databse if in update mode
# -
if $UPDATE_SYMPA ; then
echononl "\tPerform DB changes an updates of the the configuration files.."
echo "" >> $_log_file
echo "## - Perform DB changes an updates of the the configuration files if required." >> $_log_file
echo "## -" >> $_log_file
echo "${SYMPA_BIN_DIR}/sympa.pl --upgrade" >> $_log_file
${SYMPA_BIN_DIR}/sympa.pl --upgrade >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "\"${SYMPA_BIN_DIR}/sympa.pl --upgrade\" failed! \n
See '${_log_file}' for further informations."
echononl "continue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
fi
fi
echo ""
echo -e "\t---"
echo -e "\t--- Configure Sympa mailing list manager (base configuration)"
echo -e "\t---"
echo""
echo "" >> $_log_file
echo -e "## ---" >> $_log_file
echo -e "## --- Configure Sympa mailing list manager (base configuration)" >> $_log_file
echo -e "## ---" >> $_log_file
echo"" >> $_log_file
if $UPDATE_SYMPA ; then
info "Configuration will be omitted. \"sympa.conf\" is taken over from existing installation."
#echo -e "\t[ \033[33m\033[1mImportant\033[m ]: For changes which are not compartible with previous versions,"
#echo " see file \"${_builddir}/NEWS\"."
#echo " See \"${_builddir}/ChangeLog\" for the full changes log."
echo "" >> $_log_file
echo "# --- Configuration will be omitted. \"sympa.conf\" is taken over from existing installation." >> $_log_file
echo "# ---" >> $_log_file
echo "# --- For changes which are not compartible with previous versions," >> $_log_file
echo "# --- see file \"${_builddir}/NEWS\"." >> $_log_file
echo "# ---" >> $_log_file
echo "# --- See \"${_builddir}/ChangeLog\" for the full changes log." >> $_log_file
else
_key=domain
_val=$SYMPA_DOMAIN
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echo "" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i.ORIG -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i.ORIG -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
## - Replace "@" with "\@"
## -
echo "SYMPA_LISTMASTER=\`echo \${SYMPA_LISTMASTER//\\@/\\\\\@}\`" >> $_log_file
SYMPA_LISTMASTER=`echo ${SYMPA_LISTMASTER//\@/\\\@}`
_key=listmaster
_val=$SYMPA_LISTMASTER
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=wwsympa_url
_val="$SYMPA_WEB_URL"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=home
_val="$SYMPA_LIST_DATA_SYMLINK"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=arc_path
_val="$SYMPA_LIST_ARC_SYMLINK"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=db_type
_val="$SYMPA_DB_TYPE"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=db_name
_val="$SYMPA_DB_NAME"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=db_host
_val="$SYMPA_DB_HOST"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=db_port
_val="$SYMPA_DB_PORT"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=db_user
_val="$SYMPA_DB_USER"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=db_passwd
_val="$SYMPA_DB_PASSWD"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=use_fast_cgi
_val=1
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
_key=lang
_val="de"
echo "" >> $_log_file
echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
echo "" >> $_log_file
echo "## - Add \"merge_feature\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tAdd \"merge_feature\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf
## merge_feature
## Customizing messages. If set to 'on', allows the subscribers to send messages with custom users
## attributes. It also allows the use of sympa variables in message templates, i.e. in message.footer
merge_feature on
EOF" >> $_log_file
cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file
## merge_feature
## Customizing messages. If set to 'on', allows the subscribers to send messages with custom users
## attributes. It also allows the use of sympa variables in message templates, i.e. in message.footer
merge_feature on
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set \"merge_feature\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
echo "" >> $_log_file
echo "## - Add \"password_hash bcrypt\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tAdd \"password_hash bcrypt\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf
### password_hash
###
### Information of users are stored in database table user_table. This parameter specifies a
### method to generate password hash. Currently these values are possible:
### md5 Uses MD5 digest algorithm.
### bcrypt Uses bcrypt hash function.
password_hash bcrypt
EOF" >> $_log_file
cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file
### password_hash
###
### Information of users are stored in database table user_table. This parameter specifies a
### method to generate password hash. Currently these values are possible:
### md5 Uses MD5 digest algorithm.
### bcrypt Uses bcrypt hash function.
password_hash bcrypt
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set \"password_hash bcrypt\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
echo "" >> $_log_file
echo "## - Add \"dmarc_protection_mode dmarc_reject\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tAdd \"dmarc_protection_mode dmarc_reject\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf
## dmarc_protection_mode
##
## Fix to prevent 'yahoo' and other to reject mails from sympa mailing list manager.
##
## See also:
## https://sympa-community.github.io/manual/customize/dmarc-protection.html
dmarc_protection_mode dmarc_reject
EOF" >> $_log_file
cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file
## dmarc_protection_mode
##
## Fix to prevent 'yahoo' and other to reject mails from sympa mailing list manager.
##
## See also:
## https://sympa-community.github.io/manual/customize/dmarc-protection.html
dmarc_protection_mode dmarc_reject
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set \"dmarc_protection_mode\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
echo "" >> $_log_file
echo "## - Add \"shared_feature on\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tAdd \"shared_feature on\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf
# Upgrade from 6.2.40 to 6.2.42
# 06. Jun 2019 um 14:02:54
#
# Enable shared repository
#
shared_feature on
EOF" >> $_log_file
cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file
# Upgrade from 6.2.40 to 6.2.42
# 06. Jun 2019 um 14:02:54
#
# Enable shared repository
#
shared_feature on
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set \"shared_feature\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
echo "" >> $_log_file
echo "## - Add \"personalization.mail_apply_on footer\" and others to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tAdd \"personalization.mail_apply_on footer\" and others to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .."
echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf
# Upgrade from 6.2.58 to 6.2.60
#
# Personalization (also known as “merge feature”) is now subject to the following restrictions:
#
# Allowed only for messages posted from the web interface
# Applied only to the header and the footer of the message
#
# The restrictions can be configured with the new personalization list parameter. Listmasters
# are advised to review the current usage of template variables and adjust the configuration
# accordingly.
#
# Note:
# the default for e-mail created at webinterface (web_apply_on) is 'footer'
# the default for mail delivery is 'none'
#
# We want this feature set to 'footer' also for mail delivery
#
personalization_feature on
personalization.web_apply_on footer
personalization.mail_apply_on footer
EOF" >> $_log_file
cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file
# Upgrade from 6.2.58 to 6.2.60
#
# Personalization (also known as “merge feature”) is now subject to the following restrictions:
#
# Allowed only for messages posted from the web interface
# Applied only to the header and the footer of the message
#
# The restrictions can be configured with the new personalization list parameter. Listmasters
# are advised to review the current usage of template variables and adjust the configuration
# accordingly.
#
# Note:
# the default for e-mail created at webinterface (web_apply_on) is 'footer'
# the default for mail delivery is 'none'
#
# We want this feature set to 'footer' also for mail delivery
#
personalization_feature on
personalization.web_apply_on footer
personalization.mail_apply_on footer
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Cannot set \"personalization.web_apply_on\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n
See '${_log_file}' for further informations."
fi
## - Set owner/group for \"sympa.conf\"..
## -
echononl "\tSet owner/group for \"sympa.conf\".."
echo "" >> $_log_file
echo "## - Set owner/group for \"sympa.conf\".." >> $_log_file
echo "## -" >> $_log_file
echo "chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file
chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
fi
## - Replace 'sympa-${SYMPA_VERSION}' with 'sympa'..
## -
echononl "\t${SYMPA_MAIN_CONF_DIR}/sympa.conf: Repace 'sympa-${SYMPA_VERSION}' with 'sympa'.."
echo "" >> $_log_file
echo "## - Replace 'sympa-${SYMPA_VERSION}' with 'sympa'.." >> $_log_file
echo "## -" >> $_log_file
echo "perl -i -n -p -e \"s/sympa-${SYMPA_VERSION}/sympa/g\" \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"" >> $_log_file
perl -i -n -p -e "s/sympa-${SYMPA_VERSION}/sympa/g" "${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file 2>&1
if [[ $? = 0 ]]; then
echo_ok
else
echo_failed
error "Adjusting file '${SYMPA_MAIN_CONF_DIR}/sympa.conf'. \n
See '$_log_file' for further informations."
echononl "\tcontinue anyway [yes/no]: "
read OK
OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')"
while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do
echononl "Wrong entry! - repeat [yes/no]: "
read OK
done
[[ $OK = "yes" ]] || fatal "Abbruch durch User"
echo ""
fi
echo
echo -e "\t---"
echo -e "\t--- Some after installation tasks"
echo -e "\t---"
echo""
echo "" >> $_log_file
echo -e "## ---" >> $_log_file
echo -e "## --- Some after installation tasks" >> $_log_file
echo -e "## ---" >> $_log_file
echo"" >> $_log_file
## - Priovide LSB - Add Block for run-time dependencies on Sympa
## -
_backup_sympa_initscript=`mktemp`
_failed=false
if [[ -f "${SYMPA_INIT_DIR}/sympa" ]] ; then
echo "" >> $_log_file
echo "## - Priovide LSB - Add Block for run-time dependencies to /etc/init.d/sympa .." >> $_log_file
echo "## -" >> $_log_file
echononl "\tAdd Block for run-time dependencies to ${SYMPA_INIT_DIR}/sympa .."
echo "cp ${SYMPA_INIT_DIR}/sympa $_backup_sympa_initscript" >> $_log_file
cp ${SYMPA_INIT_DIR}/sympa $_backup_sympa_initscript >> $_log_file 2>&1
if [ "$?" != "0" ]; then
_failed=true
fi
echo "cat << EOF > ${SYMPA_INIT_DIR}/sympa
#!/bin/sh
### BEGIN INIT INFO
# Provides: sympa
# Required-Start: \\\$remote_fs \\\$syslog
# Required-Stop: \\\$remote_fs \\\$syslog
# Should-Start: mysql postgresql
# Should-Stop: mysql postgresql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Short-Description: start and stop the SYMPA mailing list manager
# Description: SYMPA is a mailing list manager
### END INIT INFO
export PERL5LIB=/usr/share/mhonarc
EOF" >> $_log_file
cat << EOF > ${SYMPA_INIT_DIR}/sympa 2>> $_log_file
#!/bin/sh
### BEGIN INIT INFO
# Provides: sympa
# Required-Start: \$remote_fs \$syslog
# Required-Stop: \$remote_fs \$syslog
# Should-Start: mysql postgresql
# Should-Stop: mysql postgresql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Short-Description: start and stop the SYMPA mailing list manager
# Description: SYMPA is a mailing list manager
### END INIT INFO
export PERL5LIB=/usr/share/mhonarc
EOF
if [ "$?" != "0" ]; then
_failed=true
fi
echo "tail -n +2 "$_backup_sympa_initscript" >> /etc/init.d/sympa" >> $_log_file
tail -n +2 "$_backup_sympa_initscript" >> /etc/init.d/sympa 2>> $_log_file
if [ "$?" != "0" ]; then
_failed=true
fi
echo "rm $_backup_sympa_initscript" >> $_log_file
rm $_backup_sympa_initscript >> $_log_file 2>&1
if [ "$?" != "0" ]; then
_failed=true
fi
if $_failed ; then
echo_failed
error "Adding Block for run-time dependencies to /etc/init.d/sympa failed! \n
See '${_log_file}' for further informations."
else
echo_ok
fi
fi # if [[ -f "${SYMPA_INIT_DIR}/sympa" ]]
if $START_AT_BOOTTIME ; then
# - Normaly, this should be already done - its duplicated code
# -
if `ls /etc/rc2.d/ | grep sympa > /dev/null 2>&1` ; then
echononl "\tRemove init script links"
echo "" >> $_log_file
echo "## - Remove init script links" >> $_log_file
echo "## -" >> $_log_file
echo "update-rc.d -f sympa remove" >> $_log_file
update-rc.d -f sympa remove >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Removing existing init script links failed! \n
See '${_log_file}' for further informations."
fi
fi
## - Make Sympa mailing list manager start at boottime
## -
if $SYSTEMD_SUPPORTED ; then
# - Sympa service
# -
echo "" >> $_log_file
echo "## - Eanbles sympa.service" >> $_log_file
echo "## -" >> $_log_file
echononl "\tEanbles sympa.service"
echo "systemctl enable sympa.service" >> $_log_file
systemctl enable sympa.service >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Create file /etc/systemd/system/sympa.service failed! \n
See '${_log_file}' for further informations."
fi
# - Sympa Webservice
# -
echononl "\tEanble wwsympa.service"
if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then
echo "" >> $_log_file
echo "## - Eanble wwsympa.service" >> $_log_file
echo "## -" >> $_log_file
echo "systemctl enable wwsympa.service" >> $_log_file
systemctl enable wwsympa.service >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Enabling wwsympa.service failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
warn "Service wwsympa.service NOT available"
fi
else
echononl "\tMake Sympa mailing list manager at boottime"
echo "" >> $_log_file
echo "## - Make Sympa mailing list manager at boottime" >> $_log_file
echo "## -" >> $_log_file
echo "update-rc.d sympa defaults" >> $_log_file
update-rc.d sympa defaults >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Making sympa start at boottime failed! \n
See '${_log_file}' for further informations."
fi
fi # if $SYSTEMD_SUPPORTED
fi # if START_AT_BOOTTIME
## - special for debian. set manpath entries
## -
if [ -f /etc/manpath.config ];then
echononl "\tSet manpath entries in /etc/manpath.config"
if ! grep $SYMPA_MANPATH /etc/manpath.config > /dev/null 2<&1 ; then
echo "" >> $_log_file
echo "## - Set manpath entries in /etc/manpath.config" >> $_log_file
echo "## -" >> $_log_file
echo "echo >> /etc/manpath.config" >> $_log_file
echo "echo \"MANDATORY_MANPATH $SYMPA_MANPATH /var/cache/man\" >> /etc/manpath.config" >> $_log_file
echo "echo \"MANPATH_MAP $SYMPA_BIN_DIR $SYMPA_MANPATH\" >> /etc/manpath.config" >> $_log_file
echo "echo \"MANDB_MAP $SYMPA_MANPATH /var/cache/man\" >> /etc/manpath.config" >> $_log_file
echo >> /etc/manpath.config
echo "MANDATORY_MANPATH $SYMPA_MANPATH /var/cache/man" >> /etc/manpath.config
echo "MANPATH_MAP $SYMPA_BIN_DIR $SYMPA_MANPATH" >> /etc/manpath.config
echo "MANDB_MAP $SYMPA_MANPATH /var/cache/man" >> /etc/manpath.config
echo_ok
else
echo_skipped
fi
elif [ -f /etc/man.conf];then
echononl "\tSet manpath entries in /etc/man.conf"
if ! grep $SYMPA_MANPATH /etc/man.conf > /dev/null 2<&1 ; then
echo "" >> $_log_file
echo "## - Set manpath entries in /etc/man.conf" >> $_log_file
echo "## -" >> $_log_file
echo >> /etc/man.conf
echo "MANPATH $SYMPA_MANPATH /var/cache/man" >> /etc/man.conf
echo "MANPATH_MAP $SYMPA_BIN_DIR /opt/apache2/man" >> /etc/man.conf
echo_ok
else
echo_skipped
fi
fi
## - Add $SYMPA_BIN_DIR to the systems PATH variable
## -
_checkdir="$SYMPA_BIN_DIR"
if [ -f /etc/profile ]; then
echononl "\tAdd $_checkdir to the systems PATH variable.."
if ! grep -e "$_checkdir" /etc/profile > /dev/null 2<&1 ; then
echo "" >> $_log_file
echo "## - Add $_checkdir to the systems PATH variable.." >> $_log_file
echo "## -" >> $_log_file
echo "perl -i -n -p -e \"s#^([ ]*export[ ]*PATH.*$)#check_dir=$_checkdir\nif [ -d \\\"\\\\\$check_dir\\\" ];then\n PATH=\\\\\${check_dir}:\\\\\$PATH\nfi\n\n\1#\" /etc/profile > /dev/null 2<&1" >> $_log_file
perl -i -n -p -e "s#^([ ]*export[ ]*PATH.*$)#check_dir=$_checkdir\nif [ -d \"\\\$check_dir\" ];then\n PATH=\\\${check_dir}:\\\$PATH\nfi\n\n\1#" /etc/profile >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
warn "Adding $_checkdir to the systems PATH variable failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
fi
echo
echo -e "\t---"
echo -e "\t--- Configure Apache Webserver"
echo -e "\t---"
echo""
echo "" >> $_log_file
echo -e "## ---" >> $_log_file
echo -e "## --- Configure Apache Webserver" >> $_log_file
echo -e "## ---" >> $_log_file
echo"" >> $_log_file
## - Backup existing VHost Configuration
## -
echononl "\tBackup existing VHost Configuration.."
if [[ -f "$apache_vhost_dir/${SYMPA_DOMAIN}.conf" ]]; then
echo "" >> $_log_file
echo "## - Backup existing VHost Configuration...." >> $_log_file
echo "## -" >> $_log_file
echo "mv \"$apache_vhost_dir/${SYMPA_DOMAIN}.conf\" \"$apache_vhost_dir/${SYMPA_DOMAIN}.conf.$backup_date\"" >> $_log_file
mv "$apache_vhost_dir/${SYMPA_DOMAIN}.conf" "$apache_vhost_dir/${SYMPA_DOMAIN}.conf.$backup_date" >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Backing up VHost Configuration failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
## - Add VHost Configuration to Apache Webserver
## -
apache_vhost_added=false
echononl "\tAdd VHost Configuration for Apache Webserver.."
echo "" >> $_log_file
echo "## - Add VHost Configuration for Apache Webserver.." >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF > $apache_vhost_dir/${SYMPA_DOMAIN}.conf
# - $SYMPA_DOMAIN -#
<VirtualHost ${IPv4}:80 [${IPv6}]:80>
ServerAdmin admin@oopen.de
ServerName $SYMPA_DOMAIN
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
CustomLog ${apache_log_dir}/${SYMPA_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_DOMAIN}-error.log
</VirtualHost>
<VirtualHost ${IPv4}:443 [${IPv6}]:443>
ServerAdmin admin@oopen.de
ServerName $SYMPA_DOMAIN
RewriteEngine on
RewriteRule ^/\\\$ /$_wwsympa_dir/ [R]
" >> $_log_file
if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then
echo "
<Location /$(basename \"$_wwsympa_dir\")>
SetHandler \"proxy:unix:${SYMPA_PID_DIR}/wwsympa.socket|fcgi://\"
</Location>
<Location /static-sympa>
Require all granted
</Location>
Alias /static-sympa ${SYMPA_STATIC_DIR}
" >> $_log_file
else
echo "
<Directory \"$SYMPA_CGI_DIR\">
AllowOverride none
Require all granted
</Directory>
<Directory \"$SYMPA_STATIC_DIR\">
AllowOverride none
Require all granted
</Directory>
Alias /static-sympa ${SYMPA_STATIC_DIR}
ScriptAlias /$_wwsympa_dir ${SYMPA_CGI_DIR}/wwsympa-wrapper.fcgi
<Location /${_wwsympa_dir}>
SetHandler fcgid-script
</Location>
" >> $_log_file
fi
echo "
SSLEngine on
## - HTTP Strict Transport Security (HSTS)
## -
## - HSTS tells a browser that the website should only be accessed through
## - a secure connection. The HSTS header will be remembered by a standard
## compliant browser for max-age seconds.
## -
## - Remember this settings for 1/2 year
## -
#Header add Strict-Transport-Security \"max-age=15768000\"
Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"
## - don't support weak ciphers
SSLHonorCipherOrder On
SSLCompression Off
SSLProtocol ALL -SSLv2 -SSLv3
SLCertificateFile ${apache_conf_dir}/server-bundle.crt
SSLCertificateKeyFile ${apache_conf_dir}/server.key
CustomLog ${apache_log_dir}/${SYMPA_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_DOMAIN}-error.log
</VirtualHost>
EOF" >> $_log_file
cat <<EOF > $apache_vhost_dir/${SYMPA_DOMAIN}.conf
# - $SYMPA_DOMAIN -#
<VirtualHost ${IPv4}:80 [${IPv6}]:80>
ServerAdmin admin@oopen.de
ServerName $SYMPA_DOMAIN
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
CustomLog ${apache_log_dir}/${SYMPA_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_DOMAIN}-error.log
</VirtualHost>
<VirtualHost ${IPv4}:443 [${IPv6}]:443>
ServerAdmin admin@oopen.de
ServerName $SYMPA_DOMAIN
RewriteEngine on
RewriteRule ^/\$ /$_wwsympa_dir/ [R]
EOF
if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then
cat <<EOF >> $apache_vhost_dir/${SYMPA_DOMAIN}.conf
<Location /$(basename "$_wwsympa_dir")>
SetHandler "proxy:unix:${SYMPA_PID_DIR}/wwsympa.socket|fcgi://"
</Location>
<Location /static-sympa>
Require all granted
</Location>
Alias /static-sympa ${SYMPA_STATIC_DIR}
EOF
else
cat <<EOF >> $apache_vhost_dir/${SYMPA_DOMAIN}.conf
<Directory "$SYMPA_CGI_DIR">
AllowOverride none
Require all granted
</Directory>
<Directory "$SYMPA_STATIC_DIR">
AllowOverride none
Require all granted
</Directory>
Alias /static-sympa ${SYMPA_STATIC_DIR}
ScriptAlias /$_wwsympa_dir ${SYMPA_CGI_DIR}/wwsympa-wrapper.fcgi
<Location /${_wwsympa_dir}>
SetHandler fcgid-script
</Location>
EOF
fi
cat <<EOF >> $apache_vhost_dir/${SYMPA_DOMAIN}.conf
SSLEngine on
## - HTTP Strict Transport Security (HSTS)
## -
## - HSTS tells a browser that the website should only be accessed through
## - a secure connection. The HSTS header will be remembered by a standard
## compliant browser for max-age seconds.
## -
## - Remember this settings for 1/2 year
## -
#Header add Strict-Transport-Security "max-age=15768000"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
## - don't support weak ciphers
SSLHonorCipherOrder On
SSLCompression Off
SSLProtocol ALL -SSLv2 -SSLv3
SSLCertificateFile ${apache_conf_dir}/server-bundle.crt
SSLCertificateKeyFile ${apache_conf_dir}/server.key
CustomLog ${apache_log_dir}/${SYMPA_DOMAIN}-access.log combined
ErrorLog ${apache_log_dir}/${SYMPA_DOMAIN}-error.log
</VirtualHost>
EOF
if [ "$?" = "0" ]; then
echo_ok
apache_vhost_added=true
else
echo_failed
fi
if $apache_vhost_added ; then
_apache_configtest=false
echononl "\tCheck Apache Configuration"
echo "" >> $_log_file
echo "## - Check Apache Configuration" >> $_log_file
echo "## -" >> $_log_file
echo "apachectl configtest" >> $_log_file
apachectl configtest >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
_apache_configtest=true
else
echo_failed
error "Checking Apache Configuration was not successfully! \n
See '${_log_file}' for further informations."
fi
if ! $UPDATE_SYMPA ; then
echononl "\tGraceful Restart Apache Webserver.."
if $_apache_configtest ; then
echo "" >> $_log_file
echo "## - Graceful Restart Apache Webserver.." >> $_log_file
echo "## -" >> $_log_file
echo "apachectl graceful" >> $_log_file
apachectl graceful >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Graceful Restart of Apache Webserver failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
fi
fi
echo
echo -e "\t---"
echo -e "\t--- Configure Postfix for Sympa Support"
echo -e "\t---"
echo""
echo "" >> $_log_file
echo -e "## ---" >> $_log_file
echo -e "## --- Configure Postfix for Sympa Support" >> $_log_file
echo -e "## ---" >> $_log_file
echo"" >> $_log_file
if $UPDATE_SYMPA ; then
info "Configuration will be omitted. No mailserver configuration needed in update mode."
echo "## - [Info]: Configuration will be omitted. No mailserver configuration" >> $_log_file
echo "## - needed in update mode." >> $_log_file
else
## - Configure Postfix
## -
if $SYMPA_SUPPORT_MULTIDOMAINS ; then
info "Configure Postfix for Sympa Multidomain Support"
## - Relay Domains
## -
_file_name=sympa_domains
_parameter_name=relay_domains
echononl "\tCreate (empty) file \"$_file_name\".."
echo "" >> $_log_file
echo "## - Add (empty) file \"$_file_name\" to conf directory \"$POSTFIX_CONF_DIR\".." >> $_log_file
echo "## -" >> $_log_file
if [ -f "${POSTFIX_CONF_DIR}/$_file_name" ];then
echo_skipped
echo "## - File \"$_file_name\" already exists" >> $_log_file
echo "## -" >> $_log_file
else
echo "touch ${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
touch ${POSTFIX_CONF_DIR}/$_file_name >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Craeting file \"${POSTFIX_CONF_DIR}/$_file_name\" failed! \n
See '${_log_file}' for further informations."
fi
fi
echononl "\tCreate concerning db-file \"${POSTFIX_CONF_DIR}/${_file_name}.db\".."
echo "" >> $_log_file
echo "## - Create concerning db-file \"${POSTFIX_CONF_DIR}/${_file_name}.db\".." >> $_log_file
echo "## -" >> $_log_file
echo "postmap btree:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
postmap btree:${POSTFIX_CONF_DIR}/$_file_name >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "\"postmap btree:${POSTFIX_CONF_DIR}/$_file_name\" failed! \n
See '${_log_file}' for further informations."
fi
echononl "\tConfigure postfix parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add entry for \"$_file_name\" to postfix parameter ${_parameter_name}.." >> $_log_file
echo "## -" >> $_log_file
if grep -e "${POSTFIX_CONF_DIR}/$_file_name" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
| grep -q -v -e"^#" 2>> $_log_file ; then
echo_skipped
echo "## - Postfix parameter \"$_parameter_name\" is already configured." >> $_log_file
echo "## -" >> $_log_file
info "Postfix parameter \"$_parameter_name\" is already configured."
else
if grep -q -e "^$_parameter_name" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i.bak.sympa-install -n -p -e \"s#(^${_parameter_name}.*)#\1\n btree:${POSTFIX_CONF_DIR}/${_file_name}#\" \\" >> $_log_file
echo " ${POSTFIX_CONF_DIR}/main.cf">> $_log_file
perl -i.bak.sympa-install -n -p -e "s#(^${_parameter_name}.*)#\1\n btree:${POSTFIX_CONF_DIR}/${_file_name}#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix main.cf for ${_file_name} failed! \n
See '${_log_file}' for further informations."
fi
else
cat <<EOF >> ${POSTFIX_CONF_DIR}/main.cf
# ---
# Added for Sympa Mailing Lists (suports multidomain)
# ---
$_parameter_name =
btree:${POSTFIX_CONF_DIR}/$_file_name
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix main.cf for ${_file_name} failed!"
msg_postfix="$msg_postfix\t \033[37m\033[1m$_parameter_name =\n"
msg_postfix="$msg_postfix\t btree:${POSTFIX_CONF_DIR}/$_file_name\033[m\n\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name =" >> $_log_file
echo "## - btree:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
echo "## -" >> $_log_file
fi
#echo_skipped
#warn "Parameter \"$_parameter_name\" was not found in postfix configuration file \"main.cf\"."
##echo -e "\t Configure $_parameter_name manually. Add to ${POSTFIX_CONF_DIR}/main.cf:\n"
#msg_postfix="$msg_postfix\t \033[37m\033[1m$_parameter_name =\n"
#msg_postfix="$msg_postfix\t btree:${POSTFIX_CONF_DIR}/$_file_name\033[m\n\n"
#echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
#echo "## -" >> $_log_file
#echo "## - $_parameter_name =" >> $_log_file
#echo "## - btree:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
#echo "## -" >> $_log_file
fi
fi
echo ""
## - Forward addresses (postmaster|abuse|sympa-request|sympa-owner)@sympa-domain.tld) using virtual_alias_maps
## -
_file_name=sympa_virtual_aliases
_parameter_name=virtual_alias_maps
echononl "\tCreate file \"$_file_name\".."
echo "" >> $_log_file
echo "## - Add (empty) file \"$_file_name\" to conf directory \"$POSTFIX_CONF_DIR\".." >> $_log_file
echo "## -" >> $_log_file
if [ -f ${POSTFIX_CONF_DIR}/$_file_name ];then
echo_skipped
echo "## - \"$_file_name\" already exists" >> $_log_file
echo "## -" >> $_log_file
else
#echo "touch ${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
#touch ${POSTFIX_CONF_DIR}/$_file_name >> $_log_file 2>&1
echo "echo \"/^(.*)-owner\\\\@(.*)\$/ \$1+owner@\$2\"" >> $_log_file
echo "/^(.*)-owner\\@(.*)\$/ \$1+owner@\$2" > ${POSTFIX_CONF_DIR}/$_file_name
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Craeting file \"${POSTFIX_CONF_DIR}/$_file_name\" failed!"
fi
fi
echononl "\tConfigure postfix parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add entry for \"$_file_name\" to postfix parameter ${_parameter_name}.." >> $_log_file
echo "## -" >> $_log_file
if grep -e "${POSTFIX_CONF_DIR}/$_file_name" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
| grep -q -v -e"^#" 2>> $_log_file ; then
echo_skipped
info "Postfix parameter \"$_parameter_name\" is already configured."
echo "## - Postfix parameter \"$_parameter_name\" is already configured ." >> $_log_file
echo "## -" >> $_log_file
else
if grep -q -e "^$_parameter_name" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i -n -p -e \"s#(^${_parameter_name}.*$)#\1\n regexp:${POSTFIX_CONF_DIR}/$_file_name#\" \\" >> $_log_file
echo " ${POSTFIX_CONF_DIR}/main.cf" >> $_log_file
perl -i -n -p -e "s#(^${_parameter_name}.*)#\1\n regexp:${POSTFIX_CONF_DIR}/$_file_name#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix $_parameter_name for $_file_name failed! \n
See '${_log_file}' for further informations."
fi
else
if grep -q -e "^relay_domains" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i -n -p -e \"s#(^relay_domains.*)#$_parameter_name = \n regexp:${POSTFIX_CONF_DIR}/$_file_name\n\n\1#\" \\">> $_log_file 2>&1
echo " ${POSTFIX_CONF_DIR}/main.cf" >> $_log_file
perl -i -n -p -e "s#(^relay_domains.*)#$_parameter_name = \n regexp:${POSTFIX_CONF_DIR}/$_file_name\n\n\1#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix $_parameter_name for $_file_name failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
warn "Parameter \"$_parameter_name\" was not found in postfix configuration file \"main.cf\"."
#echo -e "\t Configure $_parameter_name manually. Add to ${POSTFIX_CONF_DIR}/main.cf:\n"
msg_postfix="$msg_postfix\t \033[37m\033[1m$_parameter_name =\n"
msg_postfix="$msg_postfix\t regexp:${POSTFIX_CONF_DIR}/$_file_name\033[m\n\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name =" >> $_log_file
echo "## - regexp:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
echo "## -" >> $_log_file
fi
fi
fi
echo ""
## - Backup file /etc/postfix/master.cf
## -
echononl "\tBackup '/etc/postfix/master.cf'.."
echo "" >> $_log_file
echo "## - Backup '/etc/postfix/master.cf'.." >> $_log_file
echo "## -" >> $_log_file
echo "cp -a /etc/postfix/master.cf /etc/postfix/master.cf.bak.sympa-install" >> $_log_file
cp -a /etc/postfix/master.cf /etc/postfix/master.cf.bak.sympa-install >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Backing up file '/etc/postfix/master.cf' failed! \n
See '${_log_file}' for further informations."
fi
## - Add transport for Sympa Domains to /etc/postfix/master.cf
## -
echononl "\tAdd transport declaration for sympa domains to file master.cf"
if grep -q -e "^sympa\ " ${POSTFIX_CONF_DIR}/master.cf 2>> /dev/null ; then
echo_skipped
else
echo "" >> $_log_file
echo "## - Add transport declaration for sympa domains to file master.cf" >> $_log_file
echo "## -" >> $_log_file
echo "cat <<EOF >> ${POSTFIX_CONF_DIR}/master.cf
sympa unix - n n - - pipe
flags=FR user=sympa argv=${SYMPA_LIBEXEC_DIR}/queue \\\${recipient}
sympabounce unix - n n - - pipe
flags=FR user=sympa argv=${SYMPA_LIBEXEC_DIR}/bouncequeue \\\${user}
EOF" >> $_log_file
cat <<EOF >> ${POSTFIX_CONF_DIR}/master.cf
sympa unix - n n - - pipe
flags=FR user=sympa argv=${SYMPA_LIBEXEC_DIR}/queue \${recipient}
sympabounce unix - n n - - pipe
flags=FR user=sympa argv=${SYMPA_LIBEXEC_DIR}/bouncequeue \${user}
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Adding transport declaration for sympa domains to \"${POSTFIX_CONF_DIR}/master.cf\" failed!"
fi
fi
_parameter_name=sympa_destination_recipient_limit
_parameter_val=1
echononl "\tConfigure postfix (specific) parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add postfix parameter \"${_parameter_name} = ${_parameter_val}\".." >> $_log_file
echo "## -" >> $_log_file
if grep -e "${_parameter_name}" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
| grep -q -v -e"^#" 2>> $_log_file ; then
echo_skipped
info "Postfix parameter \"$_parameter_name\" is already configured."
echo "## - Postfix parameter \"$_parameter_name\" is already configured." >> $_log_file
echo "## -" >> $_log_file
else
if grep -q -e "^relay_domains" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i -n -p -e \"s#(^relay_domains.*)#$_parameter_name = ${_parameter_val}\n\n\1#\" \\" >> $_log_file 2>&1
echo " ${POSTFIX_CONF_DIR}/main.cf" >> $_log_file
perl -i -n -p -e "s#(^relay_domains.*)#$_parameter_name = ${_parameter_val}\n\n\1#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix $_parameter_name for $_file_name failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
warn "Parameter \"$_parameter_name\" was not found in postfix configuration file \"main.cf\"."
#echo -e "\t Configure $_parameter_name manually. Add to ${POSTFIX_CONF_DIR}/main.cf:\n"
msg_postfix="$msg_postfix\t \033[37m\033[1m${_parameter_name} = ${_parameter_val}\033[m\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name = $_parameter_val" >> $_log_file
echo "## -" >> $_log_file
fi
fi
_parameter_name=sympabounce_destination_recipient_limit
_parameter_val=1
echononl "\tConfigure postfix (specific) parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add postfix parameter \"${_parameter_name} = ${_parameter_val}\".." >> $_log_file
echo "## -" >> $_log_file
if grep -e "${_parameter_name}" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
| grep -q -v -e"^#" 2>> $_log_file ; then
echo_skipped
info "Postfix parameter \"$_parameter_name\" is already configured."
echo "## - Postfix parameter \"$_parameter_name\" is already configured." >> $_log_file
echo "## -" >> $_log_file
else
if grep -q -e "^relay_domains" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i -n -p -e \"s#(^relay_domains.*)#$_parameter_name = ${_parameter_val}\n\n\1#\" \\" >> $_log_file 2>&1
echo " ${POSTFIX_CONF_DIR}/main.cf" >> $_log_file
perl -i -n -p -e "s#(^relay_domains.*)#$_parameter_name = ${_parameter_val}\n\n\1#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix $_parameter_name for $_file_name failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
warn "Parameter \"$_parameter_name\" was not found in postfix configuration file \"main.cf\"."
#echo -e "\t Configure $_parameter_name manually. Add to ${POSTFIX_CONF_DIR}/main.cf:\n"
msg_postfix="$msg_postfix\t \033[37m\033[1m${_parameter_name} = ${_parameter_val}\033[m\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name = $_parameter_val" >> $_log_file
echo "## -" >> $_log_file
fi
fi
## - Configure Parameter "transport_maps" for Sympa domains
## -
_file_name=sympa_transport
_parameter_name=transport_maps
echononl "\tCreate (empty) file \"$_file_name\".."
if [ -f ${POSTFIX_CONF_DIR}/$_file_name ];then
echo_skipped
else
echo "" >> $_log_file
echo "## - Add (empty) file \"$_file_name\" to conf directory \"$POSTFIX_CONF_DIR\".." >> $_log_file
echo "## -" >> $_log_file
echo "touch ${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
touch ${POSTFIX_CONF_DIR}/$_file_name >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Craeting file \"${POSTFIX_CONF_DIR}/$_file_name\" failed! \n
See '${_log_file}' for further informations."
fi
fi
echononl "\tConfigure postfix parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add entry for \"$_file_name\" to postfix parameter ${_parameter_name}.." >> $_log_file
echo "## -" >> $_log_file
if grep -e "${POSTFIX_CONF_DIR}/$_file_name" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
| grep -q -v -e"^#" 2>> $_log_file ; then
echo_skipped
info "Postfix parameter \"$_parameter_name\" is already configured."
echo "## - Postfix parameter \"$_parameter_name\" is already configured." >> $_log_file
echo "## -" >> $_log_file
else
if grep -q -e "^$_parameter_name" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i -n -p -e \"s#(^${_parameter_name}.*$)#\1\n regexp:${POSTFIX_CONF_DIR}/$_file_name#\" \\" >> $_log_file
echo " ${POSTFIX_CONF_DIR}/main.cf" >> $_log_file
perl -i -n -p -e "s#(^${_parameter_name}.*)#\1\n regexp:${POSTFIX_CONF_DIR}/$_file_name#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix $_parameter_name for $_file_name failed! \n
See '${_log_file}' for further informations."
fi
else
if grep -q -e "^relay_domains" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i -n -p -e \"s#(^relay_domains.*)#$_parameter_name = \n regexp:${POSTFIX_CONF_DIR}/$_file_name\n\n\1#\" \\" >> $_log_file 2>&1
echo " ${POSTFIX_CONF_DIR}/main.cf" >> $_log_file
perl -i -n -p -e "s#(^relay_domains.*)#$_parameter_name = \n regexp:${POSTFIX_CONF_DIR}/$_file_name\n\n\1#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix $_parameter_name for $_file_name failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
warn "Parameter \"$_parameter_name\" was not found in postfix configuration file \"main.cf\"."
#echo -e "\t Configure $_parameter_name manually. Add to ${POSTFIX_CONF_DIR}/main.cf:\n"
msg_postfix="$msg_postfix\t \033[37m\033[1m$_parameter_name =\n"
msg_postfix="$msg_postfix\t regexp:${POSTFIX_CONF_DIR}/$_file_name\033[m\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name =" >> $_log_file
echo "## - regexp:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
echo "## -" >> $_log_file
fi
fi
fi
else # if $SYMPA_SUPPORT_MULTIDOMAINS
info "Configure Postfix for Sympa Single Domain Support"
## - Sympa Alias File
## -
_file_name=`basename $SYMPA_ALIAS_FILE`
_parameter_name=alias_maps
echononl "\tCreate (empty) file \"$_file_name\".."
echo "" >> $_log_file
echo "## - Add (empty) file \"$_file_name\" to conf directory \"$POSTFIX_CONF_DIR\".." >> $_log_file
echo "## -" >> $_log_file
if [ -f "${POSTFIX_CONF_DIR}/$_file_name" ];then
echo_skipped
echo "## - File \"$_file_name\" already exists" >> $_log_file
echo "## -" >> $_log_file
else
echo "touch ${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
touch ${POSTFIX_CONF_DIR}/$_file_name >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Craeting file \"${POSTFIX_CONF_DIR}/$_file_name\" failed! \n
See '${_log_file}' for further informations."
fi
fi
echononl "\tCreate concerning db-file \"${POSTFIX_CONF_DIR}/${_file_name}.db\".."
echo "" >> $_log_file
echo "## - Create concerning db-file \"${POSTFIX_CONF_DIR}/${_file_name}.db\".." >> $_log_file
echo "## -" >> $_log_file
echo "postmap btree:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
postmap btree:${POSTFIX_CONF_DIR}/$_file_name >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "\"postmap btree:${POSTFIX_CONF_DIR}/$_file_name\" failed!"
fi
echononl "\tConfigure postfix parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add entry for \"$_file_name\" to postfix parameter ${_parameter_name}.." >> $_log_file
echo "## -" >> $_log_file
if grep -e "${POSTFIX_CONF_DIR}/$_file_name" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
| grep -q -v -e"^#" 2>> $_log_file ; then
echo_skipped
echo "## - Postfix parameter \"$_parameter_name\" is already configured." >> $_log_file
echo "## -" >> $_log_file
info "Postfix parameter \"$_parameter_name\" is already configured."
else
if grep -q -e "^$_parameter_name" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i.bak -n -p -e \"s#(^${_parameter_name}.*)#\1\n btree:${POSTFIX_CONF_DIR}/${_file_name}#\" \\" >> $_log_file
echo " ${POSTFIX_CONF_DIR}/main.cf">> $_log_file
perl -i.bak -n -p -e "s#(^${_parameter_name}.*)#\1\n btree:${POSTFIX_CONF_DIR}/${_file_name}#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix main.cf for ${filename} failed! \n
See '${_log_file}' for further informations."
fi
else
cat <<EOF >> ${POSTFIX_CONF_DIR}/main.cf
# ---
# Added for Sympa Mailing Lists
# ---
${_parameter_name} =
btree:${POSTFIX_CONF_DIR}/$_file_name
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix main.cf for ${_file_name} failed!"
msg_postfix="$msg_postfix\t \033[37m\033[1m$_parameter_name =\n"
msg_postfix="$msg_postfix\t btree:${POSTFIX_CONF_DIR}/$_file_name\033[m\n\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name =" >> $_log_file
echo "## - btree:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
echo "## -" >> $_log_file
fi
fi
fi
_parameter_name=alias_database
echononl "\tConfigure postfix parameter ${_parameter_name}.."
echo "" >> $_log_file
echo "## - Add entry for \"$_file_name\" to postfix parameter ${_parameter_name}.." >> $_log_file
echo "## -" >> $_log_file
#if grep -e "${POSTFIX_CONF_DIR}/$_file_name" ${POSTFIX_CONF_DIR}/main.cf 2>> $_log_file \
# | grep -q -v -e"^#" 2>> $_log_file ; then
# echo_skipped
# echo "## - Postfix parameter \"$_parameter_name\" is already configured." >> $_log_file
# echo "## -" >> $_log_file
# info "Postfix parameter \"$_parameter_name\" is already configured."
#else
if grep -q -e "^$_parameter_name" ${POSTFIX_CONF_DIR}/main.cf 2>> /dev/null ; then
echo "perl -i.bak -n -p -e \"s#(^${_parameter_name}.*)#\1\n btree:${POSTFIX_CONF_DIR}/${_file_name}#\" \\" >> $_log_file
echo " ${POSTFIX_CONF_DIR}/main.cf">> $_log_file
perl -i.bak -n -p -e "s#(^${_parameter_name}.*)#\1\n btree:${POSTFIX_CONF_DIR}/${_file_name}#" \
${POSTFIX_CONF_DIR}/main.cf >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix main.cf for ${filename} failed! \n
See '${_log_file}' for further informations."
fi
else
cat <<EOF >> ${POSTFIX_CONF_DIR}/main.cf
# ---
# Added for Sympa Mailing Lists
# ---
${_parameter_name} =
btree:${POSTFIX_CONF_DIR}/$_file_name
EOF
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Configure postfix main.cf for ${_file_name} failed!"
msg_postfix="$msg_postfix\t \033[37m\033[1m$_parameter_name =\n"
msg_postfix="$msg_postfix\t btree:${POSTFIX_CONF_DIR}/$_file_name\033[m\n\n"
echo "## - Add to ${POSTFIX_CONF_DIR}/main.cf:" >> $_log_file
echo "## -" >> $_log_file
echo "## - $_parameter_name =" >> $_log_file
echo "## - btree:${POSTFIX_CONF_DIR}/$_file_name" >> $_log_file
echo "## -" >> $_log_file
fi
fi
#fi
fi
## - Reload postfix configuration
## -
echononl "\tReload Postfix.."
echo "" >> $_log_file
echo "## - Reload Postfix.." >> $_log_file
echo "## -" >> $_log_file
if $SYSTEMD_SUPPORTED ; then
echo "systemctl reload postfix" >> $_log_file
systemctl reload postfix >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Reloading Postfix SMTP-Server failed! \n
See '${_log_file}' for further informations."
fi
else
echo "/etc/init.d/postfix reload" >> $_log_file
/etc/init.d/postfix reload >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Reloading Postfix SMTP-Server failed! \n
See '${_log_file}' for further informations."
fi
fi
fi
## - Start Sympa mailing list manager
## -
echo ""
echo -e "\t---"
echo -e "\t--- Starting Sympa mailing list manager .."
echo -e "\t---"
echo""
echo "" >> $_log_file
echo "" >> $_log_file
echo "## ---" >> $_log_file
echo "## --- Starting Sympa mailing list manager .." >> $_log_file
echo "## ---" >> $_log_file
echo "" >> $_log_file
if $SYSTEMD_SUPPORTED ; then
echononl "\tReload systemd configuration"
echo "" >> $_log_file
echo "## - Reload systemd configuration.." >> $_log_file
echo "## -" >> $_log_file
echo "systemctl daemon-reload" >> $_log_file
systemctl daemon-reload >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Reloading systemd configuration failed! \n
See '${_log_file}' for further informations."
fi
echononl "\tStarting Sympa mailing list manager .."
echo "" >> $_log_file
echo "## - Starting Sympa mailing list manager .." >> $_log_file
echo "## -" >> $_log_file
echo "systemctl start sympa" >> $_log_file
systemctl start sympa.service >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Starting Sympa mailing list manager failed! \n
See '${_log_file}' for further informations."
fi
echononl "\tSleeping for 12 seconds.."
echo_wait
sleep 12
echo_ok
echononl "\tStarting Sympa Webservice .."
if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then
echo "" >> $_log_file
echo "## - Starting Sympa Webservice .." >> $_log_file
echo "## -" >> $_log_file
echo "systemctl start wwsympa.service" >> $_log_file
systemctl start wwsympa.service >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Starting Sympa Webservice failed! \n
See '${_log_file}' for further informations."
fi
else
echo_skipped
fi
else
if $UPDATE_SYMPA ; then
echononl "\tRestarting Sympa mailing list manager .."
echo "" >> $_log_file
echo "## - Restarting Sympa mailing list manager .." >> $_log_file
echo "## -" >> $_log_file
echo "${SYMPA_INIT_DIR}/sympa restart" >> $_log_file
${SYMPA_INIT_DIR}/sympa restart >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Restarting Sympa mailing list manager failed!"
fi
else
echononl "\tStarting Sympa mailing list manager .."
echo "" >> $_log_file
echo "## - Starting Sympa mailing list manager .." >> $_log_file
echo "## -" >> $_log_file
echo "${SYMPA_INIT_DIR}/sympa start" >> $_log_file
${SYMPA_INIT_DIR}/sympa start >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Starting Sympa mailing list manager failed! \n
See '${_log_file}' for further informations."
fi
fi
fi
if $UPDATE_SYMPA ; then
echononl "\tStart Apache Webserver"
echo "" >> $_log_file
echo "## - Start Apache Webserver.." >> $_log_file
echo "## -" >> $_log_file
if [[ -n "$APACHE_SERVICE_FILE" ]] ; then
echo "systemctl start $APACHE_SERVICE_FILE" >> $_log_file
systemctl start $APACHE_SERVICE_FILE >> $_log_file 2>&1
if [[ $? = 0 ]]; then
echo_ok
else
echo_failed
error "Starting Apache Webserver failed! \n
See '${_log_file}' for further informations."
fi
else
echo "$APACHE_INIT_SCRIPT start" >> $_log_file
$APACHE_INIT_SCRIPT start >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
error "Starting Apache Webserver failed! \n
See '${_log_file}' for further informations."
fi
fi
echo ""
echononl "\tReenable crontab for user root .."
if $_crontab_found ; then
echo "" >> $_log_file
echo "Reenable crontab for user root" >> $_log_file
echo "## -" >> $_log_file
echo "crontab -u root $_CRONTAB_BAKUP_FILE" >> $_log_file
crontab -u root $_CRONTAB_BAKUP_FILE >> $_log_file 2>&1
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
echononl "\tRemove crontab backup file .."
echo "" >> $_log_file
echo "## - Remove crontab backup file" >> $_log_file
echo "## -" >> $_log_file
echo "rm $_CRONTAB_BAKUP_FILE" >> $_log_file
rm -f $_CRONTAB_BAKUP_FILE
if [ "$?" = "0" ]; then
echo_ok
else
echo_failed
fi
else
echo_skipped
fi
fi
echo ""
echo ""
echo -e "\t[ \033[33m\033[1mImportant\033[m ]: Take care, that all needed perl modules are installed!"
echo " You can check this by running \"$SYMPA_BIN_DIR/sympa_wizard.pl --check\"."
echo " Running this script allows you, to install missing modules."
if $UPDATE_SYMPA ; then
echo ""
echo -e "\t[ \033[33m\033[1mImportant\033[m ]: For changes which are not compartible with previous versions,"
echo " see file \"${_builddir}/NEWS\"."
echo " See \"${_builddir}/ChangeLog\" for the full changes log."
echo ""
fi
if [ -n "$msg_postfix" ]; then
echo ""
echo -e "\t[ \033[33m\033[1mImportant\033[m ]: To support multidomains, you have to add the following entries"
echo " to postfix configuration \"${POSTFIX_CONF_DIR}/main.cf\":"
echo ""
echo -e "$msg_postfix"
fi
echo ""
clean_up 0