#!/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" PATCH_FILE_NO_LOG_USER_IP="${working_dir}/do-not-log-usr-ip.patch" DEFAULT_APPLY_LOG_NO_USER_IP="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 "$APPLY_LOG_NO_USER_IP" ]] && DEFAULT_APPLY_LOG_NO_USER_IP="$APPLY_LOG_NO_USER_IP" # - [[ -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 "Apply Patch to prevent logging user IPs " echo "" if [[ ! -f "$PATCH_FILE_NO_LOG_USER_IP" ]] ; then warn Patchfile "\033[1m$PATCH_FILE_NO_LOG_USER_IP\033[m" NOT FOUND APPLY_LOG_NO_USER_IP=false else echononl "Apply Patch (yes/no) [$DEFAULT_APPLY_LOG_NO_USER_IP]: " read OK if [ "X$OK" = "X" ]; then OK=$DEFAULT_APPLY_LOG_NO_USER_IP 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 APPLY_LOG_NO_USER_IP=true else APPLY_LOG_NO_USER_IP=false fi 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" echo "" if $APPLY_LOG_NO_USER_IP ; then echo -e "Patch to prevent logging user IPs...: \033[33m\033[1mYes\033[m" else echo -e "Patch to prevent logging user IPs...: \033[33m\033[1mNo\033[m" fi echo "" 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 $APPLY_LOG_NO_USER_IP ; then echo "## - Patch to prevent logging user IPs.: Yes" >> $_log_file else echo "## - Patch to prevent logging user IPs..: No" >> $_log_file fi 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 "APPLY_LOG_NO_USER_IP=$APPLY_LOG_NO_USER_IP" >> $_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 -al \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}\" \"${CURRENT_SYMPA_LIST_DATA_BASE_PATH}.$backup_date\"" >> $_log_file cp -al "${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 ## - Patch to prevent logging user IPs ## - echononl "\tApply Patch to prevent from logging user IPs .." if $APPLY_LOG_NO_USER_IP ; then echo "" >> $_log_file echo "## - Apply Patch to prevent from logging user IPs .." >> $_log_file echo "## -" >> $_log_file echo "patch -d $_builddir -p1 < $PATCH_FILE_NO_LOG_USER_IP" >> $_log_file patch -d $_builddir -p1 < $PATCH_FILE_NO_LOG_USER_IP >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot apply patchfile '$PATCH_FILE_NO_LOG_USER_IP'..\n See '${_log_file}' 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 else echo_skipped 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 elif [[ -f "${_builddir}/service/wwsympa-spawn-fcgi.service" ]] ; then # - Copy wwsympa-spawn-fcgi.service systemd unit file to SYMPA_SYSTEMD_DIR # - echo "" >> $_log_file echo "## - Copy 'wwsympa-spawn-fcgi.service' to '${SYMPA_SYSTEMD_DIR}/wwsympa.service'.." >> $_log_file echo "## -" >> $_log_file echo "cp \"${_builddir}/service/wwsympa-spawn-fcgi.service\" \"${SYMPA_SYSTEMD_DIR}/wwsympa.service\"" >> $_log_file echononl "\tCopy 'wwsympa-spawn-fcgi.service' to '${SYMPA_SYSTEMD_DIR}'.." cp "${_builddir}/service/wwsympa-spawn-fcgi.service" "${SYMPA_SYSTEMD_DIR}/wwsympa.service" >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Copying 'wwsympa-spawn-fcgi.service' to '${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 if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]] ; then # - Adjust unit file wwsympa.service # - _failed=false echononl "\tAdjust unit file 'wwsympa.service'.." echo "## - Adjust unit file 'wwsympa.service'.." >> $_log_file echo "## -" >> $_log_file echo "perl -i -n -p -e \"s/^(.*)\\\"FCGI_OPTS=.*$/\\1\\\"FCGI_OPTS=-M 0600 -U $HTTPD_USER\\\"/\" ${SYMPA_SYSTEMD_DIR}/wwsympa.service" >> $_log_file perl -i -n -p -e "s/^(.*)\"FCGI_OPTS=.*$/\1\"FCGI_OPTS=-M 0600 -U $HTTPD_USER\"/" ${SYMPA_SYSTEMD_DIR}/wwsympa.service >> $_log_file 2>&1 if [[ "$?" != 0 ]]; then _failed=true fi echo "perl -i -n -p -e \"s/sympa-${SYMPA_VERSION}/sympa/\" ${SYMPA_SYSTEMD_DIR}/wwsympa.service" >> $_log_file perl -i -n -p -e "s/sympa-${SYMPA_VERSION}/sympa/g" ${SYMPA_SYSTEMD_DIR}/wwsympa.service >> $_log_file 2>&1 if [[ "$?" != 0 ]]; then _failed=true fi if ! $_failed ; then echo_ok else echo_failed error "Adjusting '${SYMPA_SYSTEMD_DIR}/wwsympa.service' failed! \n See '$_log_file' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" fi fi # - Adjust unit files sympa*.service # - echononl "\tAdjust unit files 'sympa*.service'.." echo "## - Adjust unit file 'sympa*.service'.." >> $_log_file echo "## -" >> $_log_file echo "perl -i -n -p -e \"s/sympa-${SYMPA_VERSION}/sympa/\" ${SYMPA_SYSTEMD_DIR}/sympa*.service" >> $_log_file perl -i -n -p -e "s/sympa-${SYMPA_VERSION}/sympa/g" ${SYMPA_SYSTEMD_DIR}/sympa*.service >> $_log_file 2>&1 if [[ $? = 0 ]] ; then echo_ok else echo_failed error "Adjusting unit files '${SYMPA_SYSTEMD_DIR}/sympa*.service' failed! \n See '$_log_file' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" fi # - systemd: reload daemon # - echo "" >> $_log_file echo "## - Reload systemd.." >> $_log_file echo "## -" >> $_log_file echo "systemctl daemon-reload" >> $_log_file echononl "\tReload systemd.." systemctl daemon-reload >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Reloading systemd failed! \n See '$_log_file' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" fi # - # - Create Symlink $SYMPA_BASE_PATH --> $SYMPA_INSTALL_DIR # - echononl "\tRemove existing symlink '$SYMPA_BASE_PATH'.." if [[ -h "$SYMPA_BASE_PATH" ]] ; then echo "" >> $_log_file echo "## - Remove existing symlink '$SYMPA_BASE_PATH'.." >> $_log_file echo "## -" >> $_log_file echo "rm \"$SYMPA_BASE_PATH\"" >> $_log_file rm "$SYMPA_BASE_PATH" >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Removing symlink '$SYMPA_BASE_PATH' failed! \n See '$_log_file' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" echo "" fi else echo_skipped fi echononl "\tCreate Symlink $SYMPA_BASE_PATH --> $SYMPA_INSTALL_DIR" echo "" >> $_log_file echo "## - Create Symlink $SYMPA_BASE_PATH --> $SYMPA_INSTALL_DIR.." >> $_log_file echo "## -" >> $_log_file echo "ln -s \"$(basename $SYMPA_INSTALL_DIR)\" \"$SYMPA_BASE_PATH\"" >> $_log_file ln -s "$(basename $SYMPA_INSTALL_DIR)" "$SYMPA_BASE_PATH" >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Creating symlink '$SYMPA_BASE_PATH' failed! \n See '$_log_file' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" fi # - Create Symlink $SYMPA_LIST_DATA_BASE_SYMLINK --> $SYMPA_LIST_DATA_BASE_PATH # - echononl "\tRemove existing symlink '$SYMPA_LIST_DATA_BASE_SYMLINK'.." if [[ -h "$SYMPA_LIST_DATA_BASE_SYMLINK" ]] ; then echo "" >> $_log_file echo "## - Remove existing symlink '$SYMPA_LIST_DATA_BASE_SYMLINK'.." >> $_log_file echo "## -" >> $_log_file echo "rm \"$SYMPA_LIST_DATA_BASE_SYMLINK\"" >> $_log_file rm "$SYMPA_LIST_DATA_BASE_SYMLINK" >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Removing symlink '$SYMPA_LIST_DATA_BASE_SYMLINK' failed! \n See '$_log_file' for further informations." echononl "\tcontinue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" echo "" fi else echo_skipped fi echononl "\tCreate Symlink $SYMPA_LIST_DATA_BASE_SYMLINK --> $SYMPA_LIST_DATA_BASE_PATH" echo "" >> $_log_file echo "## - Create Symlink $SYMPA_LIST_DATA_BASE_SYMLINK --> $SYMPA_LIST_DATA_BASE_PATH.." >> $_log_file echo "## -" >> $_log_file echo "ln -s \"$(basename $SYMPA_LIST_DATA_BASE_PATH)\" \"$SYMPA_LIST_DATA_BASE_SYMLINK\"" >> $_log_file ln -s "$(basename $SYMPA_LIST_DATA_BASE_PATH)" "$SYMPA_LIST_DATA_BASE_SYMLINK" >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Creating symlink '$SYMPA_LIST_DATA_BASE_SYMLINK' failed! \n See '$_log_file' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" fi # - Update also Databse if in update mode # - if $UPDATE_SYMPA ; then echononl "\tPerform DB changes an updates of the the configuration files.." echo "" >> $_log_file echo "## - Perform DB changes an updates of the the configuration files if required." >> $_log_file echo "## -" >> $_log_file echo "${SYMPA_BIN_DIR}/sympa.pl --upgrade" >> $_log_file ${SYMPA_BIN_DIR}/sympa.pl --upgrade >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "\"${SYMPA_BIN_DIR}/sympa.pl --upgrade\" failed! \n See '${_log_file}' for further informations." echononl "continue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" fi fi echo "" echo -e "\t---" echo -e "\t--- Configure Sympa mailing list manager (base configuration)" echo -e "\t---" echo"" echo "" >> $_log_file echo -e "## ---" >> $_log_file echo -e "## --- Configure Sympa mailing list manager (base configuration)" >> $_log_file echo -e "## ---" >> $_log_file echo"" >> $_log_file if $UPDATE_SYMPA ; then info "Configuration will be omitted. \"sympa.conf\" is taken over from existing installation." #echo -e "\t[ \033[33m\033[1mImportant\033[m ]: For changes which are not compartible with previous versions," #echo " see file \"${_builddir}/NEWS\"." #echo " See \"${_builddir}/ChangeLog\" for the full changes log." echo "" >> $_log_file echo "# --- Configuration will be omitted. \"sympa.conf\" is taken over from existing installation." >> $_log_file echo "# ---" >> $_log_file echo "# --- For changes which are not compartible with previous versions," >> $_log_file echo "# --- see file \"${_builddir}/NEWS\"." >> $_log_file echo "# ---" >> $_log_file echo "# --- See \"${_builddir}/ChangeLog\" for the full changes log." >> $_log_file else _key=domain _val=$SYMPA_DOMAIN echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echo "" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i.ORIG -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i.ORIG -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi ## - Replace "@" with "\@" ## - echo "SYMPA_LISTMASTER=\`echo \${SYMPA_LISTMASTER//\\@/\\\\\@}\`" >> $_log_file SYMPA_LISTMASTER=`echo ${SYMPA_LISTMASTER//\@/\\\@}` _key=listmaster _val=$SYMPA_LISTMASTER echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=wwsympa_url _val="$SYMPA_WEB_URL" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=home _val="$SYMPA_LIST_DATA_SYMLINK" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=arc_path _val="$SYMPA_LIST_ARC_SYMLINK" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=db_type _val="$SYMPA_DB_TYPE" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=db_name _val="$SYMPA_DB_NAME" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=db_host _val="$SYMPA_DB_HOST" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=db_port _val="$SYMPA_DB_PORT" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=db_user _val="$SYMPA_DB_USER" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=db_passwd _val="$SYMPA_DB_PASSWD" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=use_fast_cgi _val=1 echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi _key=lang _val="de" echo "" >> $_log_file echo "## - Set \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tSet \"$_key\" in file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "perl -i -n -p -e \"s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#\" ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file perl -i -n -p -e "s#^(\s*\#\s*${_key}.*)#\1\n$_key\t$_val#" ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot set \"$_key\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi echo "" >> $_log_file echo "## - Add \"merge_feature\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tAdd \"merge_feature\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf ## merge_feature ## Customizing messages. If set to 'on', allows the subscribers to send messages with custom users ## attributes. It also allows the use of sympa variables in message templates, i.e. in message.footer merge_feature on EOF" >> $_log_file cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file ## merge_feature ## Customizing messages. If set to 'on', allows the subscribers to send messages with custom users ## attributes. It also allows the use of sympa variables in message templates, i.e. in message.footer merge_feature on EOF if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set \"merge_feature\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi echo "" >> $_log_file echo "## - Add \"password_hash bcrypt\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tAdd \"password_hash bcrypt\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf ### password_hash ### ### Information of users are stored in database table user_table. This parameter specifies a ### method to generate password hash. Currently these values are possible: ### md5 Uses MD5 digest algorithm. ### bcrypt Uses bcrypt hash function. password_hash bcrypt EOF" >> $_log_file cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file ### password_hash ### ### Information of users are stored in database table user_table. This parameter specifies a ### method to generate password hash. Currently these values are possible: ### md5 Uses MD5 digest algorithm. ### bcrypt Uses bcrypt hash function. password_hash bcrypt EOF if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set \"password_hash bcrypt\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi echo "" >> $_log_file echo "## - Add \"dmarc_protection_mode dmarc_reject\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tAdd \"dmarc_protection_mode dmarc_reject\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf ## dmarc_protection_mode ## ## Fix to prevent 'yahoo' and other to reject mails from sympa mailing list manager. ## ## See also: ## https://sympa-community.github.io/manual/customize/dmarc-protection.html dmarc_protection_mode dmarc_reject EOF" >> $_log_file cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file ## dmarc_protection_mode ## ## Fix to prevent 'yahoo' and other to reject mails from sympa mailing list manager. ## ## See also: ## https://sympa-community.github.io/manual/customize/dmarc-protection.html dmarc_protection_mode dmarc_reject EOF if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set \"dmarc_protection_mode\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi echo "" >> $_log_file echo "## - Add \"shared_feature on\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tAdd \"shared_feature on\" to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf # Upgrade from 6.2.40 to 6.2.42 # 06. Jun 2019 um 14:02:54 # # Enable shared repository # shared_feature on EOF" >> $_log_file cat << EOF >> ${SYMPA_MAIN_CONF_DIR}/sympa.conf 2>> $_log_file # Upgrade from 6.2.40 to 6.2.42 # 06. Jun 2019 um 14:02:54 # # Enable shared repository # shared_feature on EOF if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set \"shared_feature\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi echo "" >> $_log_file echo "## - Add \"personalization.mail_apply_on footer\" and others to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." >> $_log_file echo "## -" >> $_log_file echononl "\tAdd \"personalization.mail_apply_on footer\" and others to file ${SYMPA_MAIN_CONF_DIR}/sympa.conf .." echo "cat << EOF > ${SYMPA_MAIN_CONF_DIR}/sympa.conf # Upgrade from 6.2.58 to 6.2.60 # # Personalization (also known as “merge feature”) is now subject to the following restrictions: # # Allowed only for messages posted from the web interface # Applied only to the header and the footer of the message # # The restrictions can be configured with the new personalization list parameter. Listmasters # are advised to review the current usage of template variables and adjust the configuration # accordingly. # # Note: # the default for e-mail created at webinterface (web_apply_on) is 'footer' # the default for mail delivery is 'none' # # We want this feature set to 'footer' also for mail delivery # personalization_feature on personalization.web_apply_on footer personalization.mail_apply_on footer # allow_account_deletion: EXPERIMENTAL! # # Allow users to delete their account. If enabled, shows a "delete my account" form # in user's preferences page. # allow_account_deletion on 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 # allow_account_deletion: EXPERIMENTAL! # # Allow users to delete their account. If enabled, shows a "delete my account" form # in user's preferences page. # allow_account_deletion on EOF if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set \"personalization.web_apply_on\" in file \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"! \n See '${_log_file}' for further informations." fi ## - Set owner/group for \"sympa.conf\".. ## - echononl "\tSet owner/group for \"sympa.conf\".." echo "" >> $_log_file echo "## - Set owner/group for \"sympa.conf\".." >> $_log_file echo "## -" >> $_log_file echo "chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file chown ${SYMPA_USER}:$SYMPA_GROUP ${SYMPA_MAIN_CONF_DIR}/sympa.conf >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fi fi ## - Replace 'sympa-${SYMPA_VERSION}' with 'sympa'.. ## - echononl "\t${SYMPA_MAIN_CONF_DIR}/sympa.conf: Repace 'sympa-${SYMPA_VERSION}' with 'sympa'.." echo "" >> $_log_file echo "## - Replace 'sympa-${SYMPA_VERSION}' with 'sympa'.." >> $_log_file echo "## -" >> $_log_file echo "perl -i -n -p -e \"s/sympa-${SYMPA_VERSION}/sympa/g\" \"${SYMPA_MAIN_CONF_DIR}/sympa.conf\"" >> $_log_file perl -i -n -p -e "s/sympa-${SYMPA_VERSION}/sympa/g" "${SYMPA_MAIN_CONF_DIR}/sympa.conf" >> $_log_file 2>&1 if [[ $? = 0 ]]; then echo_ok else echo_failed error "Adjusting file '${SYMPA_MAIN_CONF_DIR}/sympa.conf'. \n See '$_log_file' for further informations." echononl "\tcontinue anyway [yes/no]: " read OK OK="$(echo "$OK" | tr '[:upper:]' '[:lower:]')" while [[ "$OK" != "yes" ]] && [[ "$OK" != "no" ]] ; do echononl "Wrong entry! - repeat [yes/no]: " read OK done [[ $OK = "yes" ]] || fatal "Abbruch durch User" echo "" fi echo echo -e "\t---" echo -e "\t--- Some after installation tasks" echo -e "\t---" echo"" echo "" >> $_log_file echo -e "## ---" >> $_log_file echo -e "## --- Some after installation tasks" >> $_log_file echo -e "## ---" >> $_log_file echo"" >> $_log_file ## - Priovide LSB - Add Block for run-time dependencies on Sympa ## - _backup_sympa_initscript=`mktemp` _failed=false if [[ -f "${SYMPA_INIT_DIR}/sympa" ]] ; then echo "" >> $_log_file echo "## - Priovide LSB - Add Block for run-time dependencies to /etc/init.d/sympa .." >> $_log_file echo "## -" >> $_log_file echononl "\tAdd Block for run-time dependencies to ${SYMPA_INIT_DIR}/sympa .." echo "cp ${SYMPA_INIT_DIR}/sympa $_backup_sympa_initscript" >> $_log_file cp ${SYMPA_INIT_DIR}/sympa $_backup_sympa_initscript >> $_log_file 2>&1 if [ "$?" != "0" ]; then _failed=true fi echo "cat << EOF > ${SYMPA_INIT_DIR}/sympa #!/bin/sh ### BEGIN INIT INFO # Provides: sympa # Required-Start: \\\$remote_fs \\\$syslog # Required-Stop: \\\$remote_fs \\\$syslog # Should-Start: mysql postgresql # Should-Stop: mysql postgresql # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Short-Description: start and stop the SYMPA mailing list manager # Description: SYMPA is a mailing list manager ### END INIT INFO export PERL5LIB=/usr/share/mhonarc EOF" >> $_log_file cat << EOF > ${SYMPA_INIT_DIR}/sympa 2>> $_log_file #!/bin/sh ### BEGIN INIT INFO # Provides: sympa # Required-Start: \$remote_fs \$syslog # Required-Stop: \$remote_fs \$syslog # Should-Start: mysql postgresql # Should-Stop: mysql postgresql # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Short-Description: start and stop the SYMPA mailing list manager # Description: SYMPA is a mailing list manager ### END INIT INFO export PERL5LIB=/usr/share/mhonarc EOF if [ "$?" != "0" ]; then _failed=true fi echo "tail -n +2 "$_backup_sympa_initscript" >> /etc/init.d/sympa" >> $_log_file tail -n +2 "$_backup_sympa_initscript" >> /etc/init.d/sympa 2>> $_log_file if [ "$?" != "0" ]; then _failed=true fi echo "rm $_backup_sympa_initscript" >> $_log_file rm $_backup_sympa_initscript >> $_log_file 2>&1 if [ "$?" != "0" ]; then _failed=true fi if $_failed ; then echo_failed error "Adding Block for run-time dependencies to /etc/init.d/sympa failed! \n See '${_log_file}' for further informations." else echo_ok fi fi # if [[ -f "${SYMPA_INIT_DIR}/sympa" ]] if $START_AT_BOOTTIME ; then # - Normaly, this should be already done - its duplicated code # - if `ls /etc/rc2.d/ | grep sympa > /dev/null 2>&1` ; then echononl "\tRemove init script links" echo "" >> $_log_file echo "## - Remove init script links" >> $_log_file echo "## -" >> $_log_file echo "update-rc.d -f sympa remove" >> $_log_file update-rc.d -f sympa remove >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed warn "Removing existing init script links failed! \n See '${_log_file}' for further informations." fi fi ## - Make Sympa mailing list manager start at boottime ## - if $SYSTEMD_SUPPORTED ; then # - Sympa service # - echo "" >> $_log_file echo "## - Eanbles sympa.service" >> $_log_file echo "## -" >> $_log_file echononl "\tEanbles sympa.service" echo "systemctl enable sympa.service" >> $_log_file systemctl enable sympa.service >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Create file /etc/systemd/system/sympa.service failed! \n See '${_log_file}' for further informations." fi # - Sympa Webservice # - echononl "\tEanble wwsympa.service" if [[ -f "${SYMPA_SYSTEMD_DIR}/wwsympa.service" ]]; then echo "" >> $_log_file echo "## - Eanble wwsympa.service" >> $_log_file echo "## -" >> $_log_file echo "systemctl enable wwsympa.service" >> $_log_file systemctl enable wwsympa.service >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Enabling wwsympa.service failed! \n See '${_log_file}' for further informations." fi else echo_skipped warn "Service wwsympa.service NOT available" fi else echononl "\tMake Sympa mailing list manager at boottime" echo "" >> $_log_file echo "## - Make Sympa mailing list manager at boottime" >> $_log_file echo "## -" >> $_log_file echo "update-rc.d sympa defaults" >> $_log_file update-rc.d sympa defaults >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Making sympa start at boottime failed! \n See '${_log_file}' for further informations." fi fi # if $SYSTEMD_SUPPORTED fi # if START_AT_BOOTTIME ## - special for debian. set manpath entries ## - if [ -f /etc/manpath.config ];then echononl "\tSet manpath entries in /etc/manpath.config" if ! grep $SYMPA_MANPATH /etc/manpath.config > /dev/null 2<&1 ; then echo "" >> $_log_file echo "## - Set manpath entries in /etc/manpath.config" >> $_log_file echo "## -" >> $_log_file echo "echo >> /etc/manpath.config" >> $_log_file echo "echo \"MANDATORY_MANPATH $SYMPA_MANPATH /var/cache/man\" >> /etc/manpath.config" >> $_log_file echo "echo \"MANPATH_MAP $SYMPA_BIN_DIR $SYMPA_MANPATH\" >> /etc/manpath.config" >> $_log_file echo "echo \"MANDB_MAP $SYMPA_MANPATH /var/cache/man\" >> /etc/manpath.config" >> $_log_file echo >> /etc/manpath.config echo "MANDATORY_MANPATH $SYMPA_MANPATH /var/cache/man" >> /etc/manpath.config echo "MANPATH_MAP $SYMPA_BIN_DIR $SYMPA_MANPATH" >> /etc/manpath.config echo "MANDB_MAP $SYMPA_MANPATH /var/cache/man" >> /etc/manpath.config echo_ok else echo_skipped fi elif [ -f /etc/man.conf];then echononl "\tSet manpath entries in /etc/man.conf" if ! grep $SYMPA_MANPATH /etc/man.conf > /dev/null 2<&1 ; then echo "" >> $_log_file echo "## - Set manpath entries in /etc/man.conf" >> $_log_file echo "## -" >> $_log_file echo >> /etc/man.conf echo "MANPATH $SYMPA_MANPATH /var/cache/man" >> /etc/man.conf echo "MANPATH_MAP $SYMPA_BIN_DIR /opt/apache2/man" >> /etc/man.conf echo_ok else echo_skipped fi fi ## - Add $SYMPA_BIN_DIR to the systems PATH variable ## - _checkdir="$SYMPA_BIN_DIR" if [ -f /etc/profile ]; then echononl "\tAdd $_checkdir to the systems PATH variable.." if ! grep -e "$_checkdir" /etc/profile > /dev/null 2<&1 ; then echo "" >> $_log_file echo "## - Add $_checkdir to the systems PATH variable.." >> $_log_file echo "## -" >> $_log_file echo "perl -i -n -p -e \"s#^([ ]*export[ ]*PATH.*$)#check_dir=$_checkdir\nif [ -d \\\"\\\\\$check_dir\\\" ];then\n PATH=\\\\\${check_dir}:\\\\\$PATH\nfi\n\n\1#\" /etc/profile > /dev/null 2<&1" >> $_log_file perl -i -n -p -e "s#^([ ]*export[ ]*PATH.*$)#check_dir=$_checkdir\nif [ -d \"\\\$check_dir\" ];then\n PATH=\\\${check_dir}:\\\$PATH\nfi\n\n\1#" /etc/profile >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed warn "Adding $_checkdir to the systems PATH variable failed! \n See '${_log_file}' for further informations." fi else echo_skipped fi fi echo echo -e "\t---" echo -e "\t--- Configure Apache Webserver" echo -e "\t---" echo"" echo "" >> $_log_file echo -e "## ---" >> $_log_file echo -e "## --- Configure Apache Webserver" >> $_log_file echo -e "## ---" >> $_log_file echo"" >> $_log_file ## - Backup existing VHost Configuration ## - echononl "\tBackup existing VHost Configuration.." if [[ -f "$apache_vhost_dir/${SYMPA_DOMAIN}.conf" ]]; then echo "" >> $_log_file echo "## - Backup existing VHost Configuration...." >> $_log_file echo "## -" >> $_log_file echo "mv \"$apache_vhost_dir/${SYMPA_DOMAIN}.conf\" \"$apache_vhost_dir/${SYMPA_DOMAIN}.conf.$backup_date\"" >> $_log_file mv "$apache_vhost_dir/${SYMPA_DOMAIN}.conf" "$apache_vhost_dir/${SYMPA_DOMAIN}.conf.$backup_date" >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Backing up VHost Configuration failed! \n See '${_log_file}' for further informations." fi else echo_skipped fi ## - Add VHost Configuration to Apache Webserver ## - apache_vhost_added=false echononl "\tAdd VHost Configuration for Apache Webserver.." echo "" >> $_log_file echo "## - Add VHost Configuration for Apache Webserver.." >> $_log_file echo "## -" >> $_log_file echo "cat < $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