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