#!/usr/bin/env bash _src_base_dir=/usr/local/src/sympa 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-ciphersaber-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 libcrypt-ciphersaber-perl libmail-dkim-perl " #_required_debian_packages=" # libcgi-pm-perl # libdbd-mysql-perl # mhonarc" ## --- 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 "[ \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 ]" } ## --- ## --- END: functions trap clean_up SIGHUP SIGINT SIGTERM # - Support systemd ? # - if [[ "X$(which systemd)" = "X" ]]; then SYSTEMD_EXISTS=false else SYSTEMD_EXISTS=true fi DEFAULT_PREFIX="/usr/local/sympa" DEFAULT_SYMPA_USER="sympa" DEFAULT_SYMPA_MAIN_CONF_DIR="/etc/sympa" DEFAULT_SYMPA_LIST_DATA_DIR="/data/sympa/list_data" DEFAULT_START_AT_BOOTTIME="yes" DEFAULT_SYMPA_DB_TYPE="mysql" DEFAULT_SYMPA_DB_HOST="127.0.0.1" DEFAULT_SYMPA_DB_NAME="sympa" DEFAULT_SYMPA_DB_USER="sympa" # - DEFAULT_SYMPA_DB_PORT will be determined later DEFAULT_VSERVER_GUEST="no" echo echononl "\tInclude Configuration file.." if [[ ! -f $conf_file ]]; then echo_failed fatal "Missing configuration file '$conf_file'" else source $conf_file echo_ok fi if [[ -z "$SYMPA_DOMAIN" ]]; then fatal "Missing value for the sympa domain (SYMPA_DOMAIN)" else DEFAULT_SYMPA_DOMAIN="$SYMPA_DOMAIN" fi DEFAULT_SYMPA_WEB_URL="https://$SYMPA_DOMAIN/wws" [[ -n "$PREFIX" ]] && DEFAULT_PREFIX="$PREFIX" [[ -n "$SYMPA_USER" ]] && DEFAULT_SYMPA_USER="$SYMPA_USER" [[ -n "$SYMPA_MAIN_CONF_DIR" ]] && DEFAULT_SYMPA_MAIN_CONF_DIR="$SYMPA_MAIN_CONF_DIR" [[ -n "$SYMPA_LISTMASTER" ]] && DEFAULT_SYMPA_LISTMASTER="$SYMPA_LISTMASTER" [[ -n "$SYMPA_LIST_DATA_DIR" ]] && DEFAULT_SYMPA_LIST_DATA_DIR="$SYMPA_LIST_DATA_DIR" [[ -n "$START_AT_BOOTTIME" ]] && DEFAULT_START_AT_BOOTTIME="$START_AT_BOOTTIME" [[ -n "$SYMPA_DB_NAME" ]] && DEFAULT_SYMPA_DB_NAME="$SYMPA_DB_NAME" [[ -n "$SYMPA_DB_PORT" ]] && DEFAULT_SYMPA_DB_PORT="$SYMPA_DB_PORT" [[ -n "$SYMPA_DB_USER" ]] && DEFAULT_SYMPA_DB_USER="$SYMPA_DB_USER" [[ -n "$VSERVER_GUEST" ]] && DEFAULT_VSERVER_GUEST="$VSERVER_GUEST" [[ -n "$SYMPA_DB_PASSWD" ]] && DEFAULT_SYMPA_DB_PASSWD="$SYMPA_DB_PASSWD" if [[ -n "$SYMPA_LISTMASTER" ]] ; then DEFAULT_SYMPA_LISTMASTER="$SYMPA_LISTMASTER" else DEFAULT_SYMPA_LISTMASTER="postmaster@$SYMPA_DOMAIN" fi if [[ -z "$MYSQL_CREDENTIALS" ]] ; then if [ -f "/usr/local/mysql/sys-maint.cnf" ]; then mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf" elif [ -f "/etc/mysql/debian.cnf" ]; then mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf" fi else mysql_credential_args="$MYSQL_CREDENTIALS" fi APACHE_INIT_SCRIPT="" if [ -x "/etc/init.d/apache2" ]; then APACHE_INIT_SCRIPT="/etc/init.d/apache2" elif [ -x "/etc/init.d/apachectl" ]; then APACHE_INIT_SCRIPT="/etc/init.d/apachectl" else fatal 'Cannot find init-script for Apache web server!' fi ## - Determin the IP-Addresses ## - __ipv4="`ifconfig | grep -e \"^\s*inet Adresse\" | grep -v \"127.0.0.1\" | awk '{print$2}' | cut -d\":\" -f2 | sort | head -1`" __ipv6="`ifconfig | grep -e \"^\s*inet6-Adresse\" | awk '{print$2}' | grep -v -e \"^::1/\" | grep -v -e \"^fe80\" | cut -d\"/\" -f1 | sort | head -1`" _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 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 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 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 _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 echo "" echo "--" echo "" echo "Specify Sympa's installation directory." echo "" PREFIX= echononl "Sympa installation directory [${DEFAULT_PREFIX}]: " read PREFIX if [ "X$PREFIX" = "X" ]; then PREFIX=$DEFAULT_PREFIX fi SYMPA_MANPATH=${PREFIX}/share/man SYMPA_BIN_DIR=${PREFIX}/bin if $UPDATE_SYMPA ; then if [ ! -f "${PREFIX}/bin/sympa.pl" ]; then fatal "You are in update mode, but i can't find existing installation at $PREFIX" fi SYMPA_USER=`stat -c "%U" $PREFIX` SYMPA_GROUP=`stat -c "%G" $PREFIX` fi SYMPA_OLD_VERSION="" if $UPDATE_SYMPA ; then SYMPA_OLD_VERSION=`egrep -v '^s*$|^#' ${PREFIX}/etc/data_structure.version 2> /dev/null | head -1` 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 else 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!" _empty_conf_file="" echononl "Backup and then delete ${SYMPA_MAIN_CONF_DIR}/sympa.conf now? (yes/no) [yes]: " read _empty_conf_file if [ "X$_empty_conf_file" = "X" ]; then _empty_conf_file=yes fi while [ "X$_empty_conf_file" != "Xyes" -a "X$_empty_conf_file" != "XYes" -a "X$_empty_conf_file" != "XNo" -a "X$_empty_conf_file" != "Xno" ]; do echo "" echononl "\twrong entry! [yes/no]: " read OK done _empty_conf_file=`echo "$_empty_conf_file" | tr '[:upper:]' '[:lower:]'` if [ "$_empty_conf_file" = "yes" ]; then mv ${SYMPA_MAIN_CONF_DIR}/sympa.conf ${SYMPA_MAIN_CONF_DIR}/sympa.conf.$backup_date ok "Saved ${SYMPA_MAIN_CONF_DIR}/sympa.conf to ${SYMPA_MAIN_CONF_DIR}/sympa.conf.$backup_date" fi fi fi SYMPA_LIST_DATA_DIR= if $UPDATE_SYMPA ; then SYMPA_LIST_DATA_DIR=`grep -e "^home" ${SYMPA_MAIN_CONF_DIR}/sympa.conf | awk '{print$2}'` if [ ! -d "$SYMPA_LIST_DATA_DIR" ]; then echo "" echo "--" echo "" echo "Specify Sympa's list data directory." echo "" SYMPA_LIST_DATA_DIR= echononl "Sympa's list data directory [${DEFAULT_SYMPA_LIST_DATA_DIR}]: " read SYMPA_LIST_DATA_DIR if [ "X$SYMPA_LIST_DATA_DIR" = "X" ]; then SYMPA_LIST_DATA_DIR=$DEFAULT_SYMPA_LIST_DATA_DIR fi fi else echo "" echo "--" echo "" echo "Specify Sympa's list data directory." echo "" SYMPA_LIST_DATA_DIR= echononl "Sympa's list data directory [${DEFAULT_SYMPA_LIST_DATA_DIR}]: " read SYMPA_LIST_DATA_DIR if [ "X$SYMPA_LIST_DATA_DIR" = "X" ]; then SYMPA_LIST_DATA_DIR=$DEFAULT_SYMPA_LIST_DATA_DIR fi fi if $UPDATE_SYMPA ; then if [ ! -d "$SYMPA_LIST_DATA_DIR" ]; then fatal "You are in update mode, but i can't find existing list data dir at $SYMPA_LIST_DATA_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 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 fi 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 witg 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'!" else _tables=$(mysql $mysql_credential_args $SYMPA_DB_NAME -N -s -e 'SHOW TABLES' 2>/dev/null) if [[ -n "$_tables" ]]; then warn "Database \"$SYMPA_DB_NAME\" exists AND contains tables, but this is an initial installation!" _empty_db="" echononl "Empty database \"$SYMPA_DB_NAME\" now? (yes/no) [yes]: " read _empty_db if [ "X$_empty_db" = "X" ]; then _empty_db=yes fi while [ "X$_empty_db" != "Xyes" -a "X$_empty_db" != "XYes" -a "X$_empty_db" != "XNo" -a "X$_empty_db" != "Xno" ]; do echo "" echononl "\twrong entry! [yes/no]: " read OK done _empty_db=`echo "$_empty_db" | tr '[:upper:]' '[:lower:]'` if [[ "$_empty_db" = "yes" ]]; then echo "" echononl "\tBackup database '$SYMPA_DB_NAME'.." mysqldump $mysql_credential_args --opt $SYMPA_DB_NAME > ${_src_base_dir}/${SYMPA_DB_NAME}-${backup_date}.sql 2> $err_log if [[ $? -eq 0 ]]; then echo_ok else echo_failed fatal "$(cat $err_log)" fi _failed=false for _table in $_tables ; do mysql $mysql_credential_args $SYMPA_DB_NAME -N -s -e "DROP TABLE $_table" 2> /dev/null if [ "$?" != "0" ]; then _failed=true fi done if $_failed ; then error "Cleaning up database \"$SYMPA_DB_NAME\" failed!" else ok "Cleaning up database \"$SYMPA_DB_NAME\" was successful." fi else fatal "Clean up database '$SYMPA_DB_NAME' or use another one." fi fi fi else mysql $mysql_credential_args -N -s -e \ "CREATE DATABASE IF NOT EXISTS $SYMPA_DB_NAME CHARACTER SET utf8 COLLATE utf8_general_ci" if [[ $? -ne 0 ]]; then fatal "Cannot create Database \"$SYMPA_DB_NAME\"" fi mysql $mysql_credential_args -N -s -e \ "GRANT ALL ON ${SYMPA_DB_NAME}.* TO '${SYMPA_DB_USER}'@'localhost' IDENTIFIED BY '${SYMPA_DB_PASSWD}'" if [[ $? -ne 0 ]]; then fatal "Cannot set credentials to db-user \"$SYMPA_DB_USER\" on Database \"$SYMPA_DB_NAME\"!" fi mysql $mysql_credential_args -N -s -e \ "GRANT ALL ON ${SYMPA_DB_NAME}.* TO '${SYMPA_DB_USER}'@'`hostname -f`' IDENTIFIED BY '${SYMPA_DB_PASSWD}'" if [[ $? -ne 0 ]]; then fatal "Cannot set credentials to db-user \"$SYMPA_DB_USER\" on Database \"$SYMPA_DB_NAME\"!" fi mysql $mysql_credential_args -N -s -e \ "USE mysql; UPDATE user SET Super_priv = 'Y' WHERE User = '$SYMPA_DB_USER'" if [[ $? -ne 0 ]]; then fatal "Cannot set \"Super_priv\" to user \"$SYMPA_DB_USER\"!" fi mysql $mysql_credential_args -N -s -e "FLUSH PRIVILEGES" if [[ $? -ne 0 ]]; then fatal "\"FLUSH PRIVILEGES\" failed!" fi mysql -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p"$SYMPA_DB_PASSWD" $SYMPA_DB_NAME -N -s -e "show tables" > /dev/null 2>&1 if [[ $? -ne 0 ]]; then fatal "Creation of Database \"$SYMPA_DB_NAME\" or setting credentials to db-user \"$SYMPA_DB_USER\" failed!" fi echo "$SYMPA_DB_NAME $SYMPA_DB_USER $SYMPA_DB_PASSWD" > /root/databases.txt.$SYMPA_DB_NAME ok "Creation of Database \"$SYMPA_DB_NAME\" was successfully." fi fi fi elif [[ "$SYMPA_DB_TYPE" = "Pg" ]] || [[ "$SYMPA_DB_TYPE" = "Oracle" ]] || [[ "$SYMPA_DB_TYPE" = "Sybase" ]]; then if $UPDATE_SYMPA ; then warn "Databasetype is not fully supported by this script.\n\n\t Take care, database '$SYMPA_DB_NAME' is accessible." else warn "Databasetype is not fully supported by this script.\n\n\t Take care, an empty database '$SYMPA_DB_NAME' exists and is accessible" fi fi if ! $UPDATE_SYMPA ; then echo "" echo "--" echo "" __START_AT_BOOTTIME= echononl "Start at boot time (yes/no) [${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 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 ## - Is this a system with "systemd" ? ## - 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_EXISTS=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 echo "" echo "Sympa version...................: $SYMPA_VERSION" echo " First (initial) Install......: $_new" echo " Update ......................: $_update" echo "" if ! $UPDATE_SYMPA ; then echo "Sympa support for multidomains..: $SYMPA_SUPPORT_MULTIDOMAINS" fi echo "" echo "Sympa user......................: $SYMPA_USER (id: ${SYMPA_UID})" echo "Sympa group.....................: $SYMPA_GROUP (id: ${SYMPA_GID})" echo "" echo "Installation directory..........: $PREFIX" echo "Sympa's bin directory...........: $SYMPA_BIN_DIR" echo "Sympa's manpages directory......: $SYMPA_MANPATH" echo "Sympa's main conf directory.....: $SYMPA_MAIN_CONF_DIR" echo "Sympa's Data directory..........: $SYMPA_LIST_DATA_DIR" echo "Sympa's aliases file............: $SYMPA_ALIAS_FILE" if ! $UPDATE_SYMPA ; then echo "" echo "(default) domain................: $SYMPA_DOMAIN" echo "Listmaster......................: $SYMPA_LISTMASTER" echo "URL for web interface...........: $SYMPA_WEB_URL" echo "SctiptAlias Directory...........: $_wwsympa_dir" echo "" echo "Database management system......: $SYMPA_DB_TYPE" echo "Database host...................: $SYMPA_DB_HOST" echo "Database port...................: $SYMPA_DB_PORT" echo "Database name...................: $SYMPA_DB_NAME" echo "Database user...................: $SYMPA_DB_USER" echo "Database password...............: $SYMPA_DB_PASSWD" echo "" echo "Start at boot time..............: $START_AT_BOOTTIME" fi echo "Directory for init scripts......: $SYMPA_INIT_DIR" echo "" echo "Use systemd.....................: $SYSTEMD_EXISTS" if ! $UPDATE_SYMPA ; then echo "" echo "Apache VHost directory..........: $apache_vhost_dir" echo "Apache Log Directory............: $apache_log_dir" echo "IPv4 Address....................: $IPv4" echo "IPv6 Address....................: $IPv6" 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 " (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 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............: $PREFIX" >> $_log_file echo "## - Sympa's bin directory.............: $SYMPA_BIN_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 "## - Sympa's Data directory...........: $SYMPA_LIST_DATA_DIR" >> $_log_file echo "## - Sympa's aliases file..............: $SYMPA_ALIAS_FILE" >> $_log_file echo "## -" >> $_log_file if ! $UPDATE_SYMPA ; then echo "## -" >> $_log_file echo "## - (default) domain..................: $SYMPA_DOMAIN" >> $_log_file echo "## - Listmaster........................: $SYMPA_LISTMASTER" >> $_log_file echo "## - URL for web interface.............: $SYMPA_WEB_URL" >> $_log_file echo "## - SctiptAlias Directory.............: $_wwsympa_dir" >> $_log_file echo "## -" >> $_log_file echo "## - Database management system........: $SYMPA_DB_TYPE" >> $_log_file echo "## - Database host.....................: $SYMPA_DB_HOST" >> $_log_file echo "## - Database port.....................: $SYMPA_DB_PORT" >> $_log_file echo "## - Database name.....................: $SYMPA_DB_NAME" >> $_log_file echo "## - Database user.....................: $SYMPA_DB_USER" >> $_log_file echo "## - Database password.................: $SYMPA_DB_PASSWD" >> $_log_file fi if ! $UPDATE_SYMPA ; then echo "## -" >> $_log_file echo "## - Start at boot time................: $START_AT_BOOTTIME" >> $_log_file fi echo "## - Directory for init scripts........: $SYMPA_INIT_DIR" >> $_log_file echo "## -" >> $_log_file echo "## - Use systemd.......................: $SYSTEMD_EXISTS" >> $_log_file echo "## -" >> $_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 "## - IPv4 Address......................: $IPv4" >> $_log_file echo "## - IPv6 Address......................: $IPv6" >> $_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 "## - (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 echo "" >> $_log_file 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 "PREFIX=$PREFIX" >> $_log_file echo "SYMPA_MAIN_CONF_DIR=$SYMPA_MAIN_CONF_DIR" >> $_log_file echo "SYMPA_BIN_DIR=$SYMPA_BIN_DIR" >> $_log_file echo "SYMPA_MANPATH=$SYMPA_MANPATH" >> $_log_file echo "SYMPA_LIST_DATA_DIR=$SYMPA_LIST_DATA_DIR" >> $_log_file echo "SYMPA_ALIAS_FILE=$SYMPA_ALIAS_FILE" >> $_log_file echo "" >> $_log_file echo "SYMPA_DOMAIN=$SYMPA_DOMAIN" >> $_log_file echo "SYMPA_LISTMASTER=$SYMPA_LISTMASTER" >> $_log_file echo "SYMPA_WEB_URL=$SYMPA_WEB_URL" >> $_log_file echo "_wwsympa_dir=$_wwsympa_dir" >> $_log_file echo "" >> $_log_file echo "SYMPA_DB_TYPE=$SYMPA_DB_TYPE" >> $_log_file echo "SYMPA_DB_HOST=$SYMPA_DB_HOST" >> $_log_file echo "SYMPA_DB_PORT=$SYMPA_DB_PORT" >> $_log_file echo "SYMPA_DB_NAME=$SYMPA_DB_NAME" >> $_log_file echo "SYMPA_DB_USER=$SYMPA_DB_USER" >> $_log_file echo "SYMPA_DB_PASSWD=$SYMPA_DB_PASSWD" >> $_log_file if ! $UPDATE_SYMPA ; then echo "START_AT_BOOTTIME=$START_AT_BOOTTIME" >> $_log_file fi echo "SYMPA_INIT_DIR=$SYMPA_INIT_DIR" >> $_log_file echo "" >> $_log_file if ! $UPDATE_SYMPA ; then echo "apache_vhost_dir=$apache_vhost_dir" >> $_log_file echo "apache_log_dir=$apache_log_dir" >> $_log_file echo "IPv4=$IPv4" >> $_log_file echo "IPv6=$IPv6" >> $_log_file fi echo "" >> $_log_file if ! $UPDATE_SYMPA ; then echo "POSTFIX_CONF_DIR=$POSTFIX_CONF_DIR" >> $_log_file fi echo "" >> $_log_file echo "SYSTEMD_EXISTS=$SYSTEMD_EXISTS" >> $_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 "" ## - 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 # - OLD #echo "wget https://www.sympa.org/distribution/sympa-${SYMPA_VERSION}.tar.gz" >> $_log_file #wget https://www.sympa.org/distribution/sympa-${SYMPA_VERSION}.tar.gz >> $_log_file 2>&1 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!" 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 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 $PREFIX --disabled-password \\" >> $_log_file echo " --gecos \"Sympa mailing list manager\" $SYMPA_USER" >> $_log_file adduser --uid $SYMPA_UID --gid $SYMPA_GID --home $PREFIX --disabled-password \ --gecos "Sympa mailing list manager" $SYMPA_USER >> $_log_file #echo "adduser --system --home /usr/local/sympa --no-create-home --shell /bin/sh \\" >> $_log_file #echo " --gid $SYMPA_GID --uid $SYMPA_UID --gecos \"Sympa mailing list manager\" $SYMPA_USER" >> $_log_file #adduser --system --home /usr/local/sympa --no-create-home --shell /bin/sh \ # --gid $SYMPA_GID --uid $SYMPA_UID --gecos "Sympa mailing list manager" $SYMPA_USER > $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed 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!" _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 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Creation of alias file \"$SYMPA_ALIAS_FILE\" failed!" 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 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set ownerchip ($SYMPA_USER:$SYMPA_GROUP) to \"$SYMPA_ALIAS_FILE\"!" 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 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot set ownerchip ($SYMPA_USER:$SYMPA_GROUP) to \"$SYMPA_ALIAS_FILE\"!" fi ## - Install reqired debian packages ## - declare -a required_debian_packages_arr for _debian_pkg in $_required_debian_packages ; do perl_modules_arr+=("$_debian_pkg") done > ${_logdir}/debian-install.log echo "" echo -e "\tInstalling required debian packages .." for _debian_pkg in ${perl_modules_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!" fi else echo_skipped 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 echo "locale-gen" >> $_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 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!" 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 if [ "$?" = 0 ]; then echo_ok else echo_failed error "Adding Environment Variable \"PERL5LIB\" to /etc/profile failed!" fi else echo_skipped fi ## - Make PERL5LIB also present in that shell ## - export PERL5LIB=/usr/share/mhonarc else # 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 if $SYSTEMD_EXISTS ; then echo "systemctl stop apache2" >> $_log_file systemctl stop apache2 >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed 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 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 ${Prefix}/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_EXISTS ; then echo "systemctl stop sympa" >> $_log_file systemctl stop sympa >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed 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 fi fi else echo_skipped fi _PIDS=`ps -e f | grep ${PREFIX}/bin/ 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 echononl "\tBackup existing installation directory ($PREFIX) .." echo "" >> $_log_file echo "## - Backup existing installation directory ($PREFIX) .." >> $_log_file echo "## -" >> $_log_file echo "cp -a $PREFIX ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.$backup_date" >> $_log_file cp -a $PREFIX ${PREFIX}.${SYMPA_OLD_VERSION}.$backup_date >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot Backup existing installation directory \"$PREFIX\"!" _proceed="" echononl "Type uppercase \"yes\" to proceed anyway: " read _proceed [[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.." fi echononl "\tBackup existing list directory ($SYMPA_LIST_DATA_DIR) .." echo "" >> $_log_file echo "## - Backup existing list directory ($SYMPA_LIST_DATA_DIR) .." >> $_log_file echo "## -" >> $_log_file echo "cp -a $SYMPA_LIST_DATA_DIR ${SYMPA_LIST_DATA_DIR}.$backup_date" >> $_log_file cp -a $SYMPA_LIST_DATA_DIR ${SYMPA_LIST_DATA_DIR}.$backup_date >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot Backup existing lists data directory \"$PREFIX\"!" _proceed="" echononl "Type uppercase \"yes\" to proceed anyway: " read _proceed [[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.." fi 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 > ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.${backup_date}/${SYMPA_DB_NAME}-${_date}.sql" >> $_log_file #mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > ${PREFIX}.${SYMPA_OLD_VERSION}.BAK.${_date}/${SYMPA_DB_NAME}-${backup_date}.sql 2>> $_log_file mysqldump -h $SYMPA_DB_HOST -u $SYMPA_DB_USER -p$SYMPA_DB_PASSWD --opt $SYMPA_DB_NAME > `dirname ${PREFIX}`/${SYMPA_DB_NAME}.${SYMPA_OLD_VERSION}.${backup_date}.sql 2>> $_log_file if [ "$?" = "0" ]; then echo_ok else echo_failed error "Cannot Backup existing database \"$SYMPA_DB_NAME\"!" _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 echononl "\tBackup existing init script .." 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\"!" _proceed="" echononl "Type uppercase \"yes\" to proceed anyway: " read _proceed [[ "$_proceed" == "YES" ]] || fatal "Exiting by user request.." 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}\" .." 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 .." 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=" --prefix=$PREFIX --with-initdir=$SYMPA_INIT_DIR --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!" 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!" fi ## - Notice! ## - ## - In case of Updating an existent installation, we have already backuped the ## - installatio directory. ## - if ! $UPDATE_SYMPA ; then echononl "\tBackup existing installation directory.." if [ -d "$PREFIX" ];then echo "" >> $_log_file echo "## - Backup existing installation directory.." >> $_log_file echo "## -" >> $_log_file echo "mv $PREFIX $PREFIX.$backup_date" >> $_log_file mv $PREFIX $PREFIX.$backup_date >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed fatal "Cannot move (backup) existing install directory \"${_builddir}\" .." 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 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!" fi if $SYSTEMD_EXISTS ; 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!" 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 fatal "Installing Sympa mailing list server (v ${SYMPA_VERSION}) failed!" 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\" .." 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\" .." 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\" .." fi _key=home _val="$SYMPA_LIST_DATA_DIR" 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\" .." 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\" .." 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\" .." 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\" .." 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\" .." 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\" .." 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\" .." 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\" .." 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\" .." 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 > /etc/init.d/sympa ## 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 ## 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\" .." 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 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 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 /etc/init.d/sympa .." echo "cp /etc/init.d/sympa $_backup_sympa_initscript" >> $_log_file cp /etc/init.d/sympa $_backup_sympa_initscript >> $_log_file 2>&1 if [ "$?" != "0" ]; then _failed=true fi echo "cat << EOF > /etc/init.d/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 > /etc/init.d/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 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 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 else echo_ok fi if ! $UPDATE_SYMPA ; then if $START_AT_BOOTTIME ; then 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." fi fi ## - Make Sympa mailing list manager start at boottime ## - if $SYSTEMD_EXISTS ; then echo "" >> $_log_file echo "## - Eanbles sympa.service" >> $_log_file echo "## -" >> $_log_file echononl "\tEanbles sympa.service" echo "systemctl enable sympa" >> $_log_file systemctl enable sympa >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Create file /etc/systemd/system/sympa.service failed!" 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." fi fi # if $SYSTEMD_EXISTS fi # if START_AT_BOOTTIME fi # if $UPDATE_SYMPA ## - 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 ${PREFIX}/bin to the systems PATH variable ## - _checkdir="${PREFIX}/bin" 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 > /dev/null 2<&1 if [ "$?" = "0" ]; then echo_ok else echo_failed warn "Adding $_checkdir to the systems PATH variable failed!" 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 if $UPDATE_SYMPA ; then info "Configuration will be omitted. No webserver configuration needed in update mode." echo "" >> $_log_file echo "# --- Configuration will be omitted. No webserver configuration needed in update mode." >> $_log_file echo "# ---" >> $_log_file else _apache_vhost_added=false ## - Add VHost Configuration to Apache Webserver ## - echononl "\tAdd VHost Configuration for Apache Webserver.." if grep -r $SYMPA_DOMAIN $apache_vhost_dir/* 2>/dev/null |\ grep -q -i -E "(ServerAlias| ServerName)" 2> /dev/null ; then echo_skipped warn "Apache VHost Configuration for \"$SYMPA_DOMAIN\" already exists." else 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] AllowOverride none Require all granted AllowOverride none Require all granted Alias /static-sympa ${PREFIX}/static_content ScriptAlias /wws ${PREFIX}/bin/wwsympa-wrapper.fcgi SetHandler fcgid-script 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 ## --- ## --- IPv6 ## --- 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] AllowOverride none Require all granted AllowOverride none Require all granted Alias /static-sympa ${PREFIX}/static_content ScriptAlias /wws ${PREFIX}/bin/wwsympa-wrapper.fcgi SetHandler fcgid-script 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" >> $_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] AllowOverride none Require all granted AllowOverride none Require all granted Alias /static-sympa ${PREFIX}/static_content ScriptAlias /wws ${PREFIX}/bin/wwsympa-wrapper.fcgi SetHandler fcgid-script 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 ## --- ## --- IPv6 ## --- 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] AllowOverride none Require all granted AllowOverride none Require all granted Alias /static-sympa ${PREFIX}/static_content ScriptAlias /wws ${PREFIX}/bin/wwsympa-wrapper.fcgi SetHandler fcgid-script 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 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 fi 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 _apache_configtest=true else echo_failed 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 "" >> $_log_file echo "# --- Configuration will be omitted. Noimailserver configuration needed in update mode." >> $_log_file echo "# ---" >> $_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!" 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 ${_file_name} failed!" 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-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!" 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!" 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 "" ## - 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=${PREFIX}/bin/queue \\\${recipient} sympabounce unix - n n - - pipe flags=FR user=sympa argv=${PREFIX}/bin/bouncequeue \\\${user} EOF" >> $_log_file cat <> ${POSTFIX_CONF_DIR}/master.cf sympa unix - n n - - pipe flags=FR user=sympa argv=${PREFIX}/bin/queue \${recipient} sympabounce unix - n n - - pipe flags=FR user=sympa argv=${PREFIX}/bin/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!" 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!" 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!" 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!" 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!" 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 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!" 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!" 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!" 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_EXISTS ; 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!" 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!" 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_EXISTS ; then echononl "\tReload systemd configuration" 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!" fi if $UPDATE_SYMPA ; then echononl "\tRestarting Sympa mailing list manager .." echo "" >> $_log_file echo "systemctl restart sympa" >> $_log_file systemctl restart sympa >> $_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 "systemctl start sympa" >> $_log_file systemctl start sympa >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok else echo_failed error "Starting Sympa mailing list manager failed!" fi fi else if $UPDATE_SYMPA ; then echononl "\tRestarting Sympa mailing list manager .." 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 "${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!" fi fi fi if $UPDATE_SYMPA ; then echononl "\tStart Apache Webserver" echo "" >> $_log_file echo "## - Start Apache Webserver.." >> $_log_file echo "## -" >> $_log_file if $SYSTEMD_EXISTS ; then echo "systemctl start apache2" >> $_log_file systemctl start apache2 >> $_log_file 2>&1 if [ "$?" = "0" ]; then echo_ok _apache_configtest=true else echo_failed 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 fi 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