From 730cf80c36f4f995bc8850c2f8b63435ed04b0d1 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 8 Jan 2021 22:58:25 +0100 Subject: [PATCH] Add some more (default) settings to global configuration 'sympa.conf'. --- OLD/install_sympa.sh.01 | 4754 +++++++++++++++++++++++++++++++++++++++ install_sympa.sh | 88 + 2 files changed, 4842 insertions(+) create mode 100755 OLD/install_sympa.sh.01 diff --git a/OLD/install_sympa.sh.01 b/OLD/install_sympa.sh.01 new file mode 100755 index 0000000..4af3c56 --- /dev/null +++ b/OLD/install_sympa.sh.01 @@ -0,0 +1,4754 @@ +#!/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 <> $_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 <> $_log_file +cat < /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 < /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 + + + ## - 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 < $apache_vhost_dir/${SYMPA_DOMAIN}.conf +# - $SYMPA_DOMAIN -# + + + + 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 + + + + + + ServerAdmin admin@oopen.de + + ServerName $SYMPA_DOMAIN + + RewriteEngine on + RewriteRule ^/\\\$ /$_wwsympa_dir/ [R] +" >> $_log_file +if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then + echo " + + SetHandler \"proxy:unix:${SYMPA_PID_DIR}/wwsympa.socket|fcgi://\" + + + + Require all granted + + + Alias /static-sympa ${SYMPA_STATIC_DIR} +" >> $_log_file +else + echo " + + AllowOverride none + Require all granted + + + + AllowOverride none + Require all granted + + + Alias /static-sympa ${SYMPA_STATIC_DIR} + ScriptAlias /$_wwsympa_dir ${SYMPA_CGI_DIR}/wwsympa-wrapper.fcgi + + + SetHandler fcgid-script + +" >> $_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 + + +EOF" >> $_log_file + +cat < $apache_vhost_dir/${SYMPA_DOMAIN}.conf +# - $SYMPA_DOMAIN -# + + + + 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 + + + + + + ServerAdmin admin@oopen.de + + ServerName $SYMPA_DOMAIN + + RewriteEngine on + RewriteRule ^/\$ /$_wwsympa_dir/ [R] +EOF + +if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then + + cat <> $apache_vhost_dir/${SYMPA_DOMAIN}.conf + + + SetHandler "proxy:unix:${SYMPA_PID_DIR}/wwsympa.socket|fcgi://" + + + + Require all granted + + + Alias /static-sympa ${SYMPA_STATIC_DIR} +EOF +else + cat <> $apache_vhost_dir/${SYMPA_DOMAIN}.conf + + + AllowOverride none + Require all granted + + + + AllowOverride none + Require all granted + + + Alias /static-sympa ${SYMPA_STATIC_DIR} + ScriptAlias /$_wwsympa_dir ${SYMPA_CGI_DIR}/wwsympa-wrapper.fcgi + + + SetHandler fcgid-script + +EOF +fi + +cat <> $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 + + +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 <> ${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 <> ${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 <> ${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 <> ${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 <> ${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 diff --git a/install_sympa.sh b/install_sympa.sh index 4af3c56..912c69a 100755 --- a/install_sympa.sh +++ b/install_sympa.sh @@ -3449,6 +3449,94 @@ EOF 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\".. ## -