3857 lines
140 KiB
Bash
3857 lines
140 KiB
Bash
#!/bin/sh
|
|
|
|
# This is the DTC's BSD interactive install configuration script
|
|
# called by the make install
|
|
# made by Thomas Goirand <thomas@goirand.fr> and Frederic Cambus
|
|
|
|
|
|
PREFIX=%%PREFIX%%
|
|
LOCALBASE=%%LOCALBASE%%
|
|
QMAIL_DIR=%%QMAIL_DIR%%
|
|
|
|
UNIX_TYPE=freebsd
|
|
|
|
VERBOSE_INSTALL=yes
|
|
|
|
# Create our group and user
|
|
CONF_DTC_SYSTEM_USERNAME=dtc
|
|
CONF_DTC_SYSTEM_GROUPNAME=dtcgrp
|
|
if getent group ${CONF_DTC_SYSTEM_GROUPNAME} >/dev/null ; then
|
|
echo "Group ${CONF_DTC_SYSTEM_GROUPNAME} already exists: skiping creation!"
|
|
else
|
|
pw groupadd ${CONF_DTC_SYSTEM_GROUPNAME}
|
|
fi
|
|
CONF_DTC_SYSTEM_GID=`getent group ${CONF_DTC_SYSTEM_GROUPNAME} | cut -d':' -f3`
|
|
if getent passwd ${CONF_DTC_SYSTEM_USERNAME} >/dev/null ; then
|
|
echo "User ${CONF_DTC_SYSTEM_USERNAME} already exists: skiping creation!"
|
|
else
|
|
pw useradd ${CONF_DTC_SYSTEM_USERNAME} -m -s /bin/false -g ${CONF_DTC_SYSTEM_GROUPNAME}
|
|
fi
|
|
CONF_DTC_SYSTEM_UID=`getent passwd ${CONF_DTC_SYSTEM_USERNAME} | cut -d':' -f3`
|
|
|
|
# DATABASE CONFIGURATION
|
|
echo "### MYSQL CONFIGURATION ###"
|
|
echo ""
|
|
echo "WARNING: Your MySQL Server MUST be running."
|
|
echo "If not, please issue the following cmd:"
|
|
echo "/usr/local/etc/rc.d/mysql-server.sh start"
|
|
echo ""
|
|
|
|
# Deamon path configuration
|
|
echo "### DEAMON PATH CONFIGURATION ###"
|
|
if [ -f "${LOCALBASE}/sbin/apxs" ]; then
|
|
PATH_HTTPD_CONF="`/usr/local/sbin/apxs -q SYSCONFDIR`/httpd.conf"
|
|
else
|
|
echo "Could not found your httpd.conf: exiting."
|
|
exit 1
|
|
fi
|
|
PATH_APACHE_PID_FILE="/var/run/httpd.pid"
|
|
PATH_NAMED_CONF="/etc/namedb/named.conf"
|
|
# Copy default conf if no conf exists (BSD specific)
|
|
if [ ! -f ${LOCALBASE}/etc/proftpd.conf ];
|
|
then
|
|
cp ${LOCALBASE}/etc/proftpd.conf.default ${LOCALBASE}/etc/proftpd.conf
|
|
fi
|
|
PATH_PROFTPD_CONF="${LOCALBASE}/etc/proftpd.conf"
|
|
PATH_DOVECOT_CONF="${LOCALBASE}/etc/dovecot.conf"
|
|
PATH_COURIER_CONF_PATH="${LOCALBASE}/etc/courier"
|
|
PATH_COURIER_AUTHD_CONF_PATH="${LOCALBASE}/etc/courier"
|
|
if [ ! -f $PATH_COURIER_AUTHD_CONF_PATH/authdaemonrc ]; then
|
|
if [ -f ${LOCALBASE}/etc/authlib/authdaemonrc ]; then
|
|
PATH_COURIER_AUTHD_CONF_PATH="${LOCALBASE}/etc/authlib"
|
|
fi
|
|
fi
|
|
PATH_POSTFIX_CONF="${LOCALBASE}/etc/postfix/main.cf"
|
|
PATH_POSTFIX_ETC="${LOCALBASE}/etc/postfix"
|
|
PATH_SASL_PASSWD2="${LOCALBASE}/sbin/saslpasswd2"
|
|
PATH_MAILDROP_BIN="${LOCALBASE}/bin/maildrop"
|
|
PATH_USERDB_BIN="${LOCALBASE}/sbin/userdb"
|
|
PATH_QMAIL_CTRL="${QMAIL_DIR}/control"
|
|
PATH_PHP_CGI="${LOCALBASE}/bin/php"
|
|
FREERADIUS_ETC="${LOCALBASE}/etc/raddb"
|
|
PATH_DTC_SHARED="${PREFIX}/www/dtc"
|
|
PATH_CRONTAB_CONF=/etc/crontab
|
|
PATH_AWSTATS_ETC=${LOCALBASE}/etc/awstats
|
|
MYSQL_DB_SOCKET_PATH="/tmp/mysqld.sock"
|
|
PATH_CGIBIN="${LOCALBASE}/lib/cgi-bin"
|
|
|
|
PATH_SUDOERS_CONF="${LOCALBASE}/etc/sudoers"
|
|
PATH_RRDTOOL="${LOCALBASE}/bin/rrdtool"
|
|
|
|
PATH_DTC_ETC=$PATH_DTC_SHARED"/etc"
|
|
PATH_DTC_ADMIN=$PATH_DTC_SHARED"/admin"
|
|
PATH_DTC_CLIENT=$PATH_DTC_SHARED"/client"
|
|
|
|
USER_ADD_CMD=useradd
|
|
USER_ADD_CMD=groupadd
|
|
USER_MOD_CMD=usermod
|
|
PASSWD_CMD=passwd
|
|
|
|
echo "===> Checking BSD type"
|
|
kernel=`uname -a | awk '{print $1}'`;
|
|
echo "Kernel: $kernel"
|
|
|
|
if [ $kernel = "FreeBSD" ] || [ $kernel = "NetBSD" ];
|
|
then
|
|
named=`grep named_enable /etc/rc.conf`
|
|
nonamed=`cat /etc/rc.conf | grep named | awk '{print $1}' | grep NO`
|
|
if [ "$named" = "" ] || [ "$nonamed" != "" ];
|
|
then
|
|
echo "===> FreeBSD or NetBSD: Backing up /etc/rc.conf and insterting named_enamble=YES"
|
|
cp /etc/rc.conf /etc/rc.conf.old
|
|
echo "/etc/rc.conf /etc/rc.conf.old saved"
|
|
cat /etc/rc.conf | grep -v "named" >> /etc/rc.tmp
|
|
echo 'named_enable="YES" # Run named, the DNS server (or NO).' >> /etc/rc.tmp
|
|
echo 'named_program="/usr/sbin/named" # path to named, if you want a different one.' >> /etc/rc.tmp
|
|
echo '#named_flags="-u bind -g bind" # Flags for named' >> /etc/rc.tmp
|
|
mv /etc/rc.tmp /etc/rc.conf
|
|
echo "named /etc/rc.conf injected"
|
|
else
|
|
echo "===> /etc/rc.conf is already configured: leaving..."
|
|
fi
|
|
fi
|
|
|
|
if [ $kernel = "OpenBSD" ];
|
|
then
|
|
flag=`grep named_flags=\"-c /etc/rc.conf`
|
|
echo "conf $flag"
|
|
if [ "$flag" = "" ];
|
|
then
|
|
echo "===> OpenBSD: Backing up /etc/rc.conf and insterting named_flags=\"-c /etc/named.conf\""
|
|
echo "/etc/rc.conf no named"
|
|
cp /etc/rc.conf /etc/rc.conf.old
|
|
echo "/etc/rc.conf /etc/rc.conf.old saved"
|
|
cat /etc/rc.conf | grep -v "named_flags=NO" >> /etc/rc.tmp
|
|
echo 'named_flags="-c /etc/named.conf"' >> /etc/rc.tmp
|
|
mv /etc/rc.tmp /etc/rc.conf
|
|
echo "named /etc/rc.conf injected"
|
|
if [ ! -f /etc/named.conf ];
|
|
then
|
|
echo "no /etc/named.conf"
|
|
if ! [ ! -f /var/named/etc/named.conf ];
|
|
then
|
|
cp /var/named/etc/named.conf /etc/named.conf
|
|
echo "/var/named/etc/named.conf /etc/named.conf copied"
|
|
else
|
|
mv /etc/rc.conf.old /etc/rc.conf
|
|
echo "/etc/rc.conf.old /etc/rc.conf replaced"
|
|
echo "set named at your own configuration in /etc/rc.conf and in your named.conf"
|
|
fi
|
|
echo "conf named.conf done"
|
|
fi
|
|
echo "conf /etc/rc.conf done"
|
|
fi
|
|
echo "conf done"
|
|
fi
|
|
|
|
# Copy dist file if no php.ini is there yet...
|
|
if [ -e /usr/local/etc/php.ini-dist ] ; then
|
|
if ! [ -e /usr/local/etc/php.ini ] ; then
|
|
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
|
|
fi
|
|
fi
|
|
# Check for pear in include path
|
|
if [ -f /usr/local/share/pear/PEAR.php ] ;then
|
|
if [ -e /usr/local/etc/php.ini ] ; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Checking include_path=/usr/local/share/pear in php.ini"
|
|
fi
|
|
if grep include_path /usr/local/etc/php.ini | grep /usr/local/share/pear > /dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Seems ok: skiping include_path insertion in php.ini"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Your php.ini doesn't has pear in it's inc path: changin!"
|
|
fi
|
|
echo "include_path = \".:/usr/local/share/pear\"" >>/usr/local/etc/php.ini
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Here starts the interactive_installer.sh script
|
|
#!/bin/sh
|
|
|
|
# This is the interactive installer that will asks questions
|
|
# for all of these OS that don't have ncurse (or similar)
|
|
# automated system.
|
|
# Authors: Thomas Goirand <thomas at goirand.fr>
|
|
# and Damien Mascord <tusker at tusker.org> with the help
|
|
# of some contributors
|
|
|
|
echo "###############################################################"
|
|
echo "### Welcome to DTC config script for automatic installation ###"
|
|
echo "###############################################################"
|
|
|
|
if [ -f "/root/.dtc_install" ]; then
|
|
. /root/.dtc_install
|
|
else
|
|
touch /root/.dtc_install
|
|
fi
|
|
|
|
# DATABASE CONFIGURATION
|
|
echo "### MYSQL CONFIGURATION ###"
|
|
echo ""
|
|
echo "DTC needs to access to your mysql database"
|
|
echo "Please give your mysql account information"
|
|
if [ -z $conf_mysql_host ] ; then
|
|
conf_mysql_host="localhost"
|
|
fi
|
|
echo -n "MySQL hostname [${conf_mysql_host}]: "
|
|
read answer
|
|
if [ ! -z $answer ]; then
|
|
conf_mysql_host=${answer}
|
|
fi
|
|
sed -i.bak '/conf_mysql_host/d' /root/.dtc_install
|
|
echo "conf_mysql_host=${conf_mysql_host}" >> /root/.dtc_install
|
|
|
|
if [ -z $conf_mysql_login ] ; then
|
|
conf_mysql_login="root"
|
|
fi
|
|
echo -n "MySQL root login [${conf_mysql_login}]: "
|
|
read answer
|
|
if [ ! -z $answer ]; then
|
|
conf_mysql_login=${answer}
|
|
fi
|
|
sed -i.bak '/conf_mysql_login/d' /root/.dtc_install
|
|
echo "conf_mysql_login=${conf_mysql_login}" >> /root/.dtc_install
|
|
|
|
if [ -z $conf_mysql_pass ] ; then
|
|
conf_mysql_pass=""
|
|
fi
|
|
echo -n "MySQL root password [${conf_mysql_pass}]: "
|
|
read answer
|
|
if [ ! -z $answer ]; then
|
|
conf_mysql_pass=${answer}
|
|
fi
|
|
sed -i.bak '/conf_mysql_pass/d' /root/.dtc_install
|
|
echo "conf_mysql_pass=${conf_mysql_pass}" >> /root/.dtc_install
|
|
|
|
echo ""
|
|
echo "Do you want that DTC setup this password"
|
|
echo "for you ? (eg: UPDATE user SET Password=PASSWORD('XXX')...)"
|
|
echo -n 'Setup the mysql password [Ny]: '
|
|
read conf_mysql_change_root
|
|
|
|
if [ ""$conf_mysql_change_root = "y" -o ""$conf_mysql_change_root = "Y" ]; then
|
|
echo "===> Changing MySQL Root password"
|
|
echo "MySQL will now prompt your for the password to connect to"
|
|
echo "the database. This is the OLD password that was there before"
|
|
echo "you launched this script. If you didn't setup a root pass for"
|
|
echo "mysqld, just hit ENTER to use empty pass."
|
|
mysql -u$conf_mysql_login -p -h$conf_mysql_host -Dmysql --execute="UPDATE user SET Password=PASSWORD('"$conf_mysql_pas"') WHERE User='root'; FLUSH PRIVILEGES;";
|
|
else
|
|
echo "Skinping MySQL password root change!"
|
|
fi
|
|
|
|
echo -n 'Choose a DB name for DTC [dtc]: '
|
|
read conf_mysql_db
|
|
if [ ""$conf_mysql_db = "" ] ; then
|
|
conf_mysql_db="dtc"
|
|
fi
|
|
|
|
echo ""
|
|
echo "What MTA (Mail Tranport Agent, the one that"
|
|
echo "will route and deliver your incoming mail) do"
|
|
echo "you wish to use with DTC ? Type q for qmail"
|
|
echo "or type p for postfix."
|
|
echo -n 'MTA type (Qmail or Postfix) [Q/p]: '
|
|
read conf_mta_type
|
|
if [ ""$conf_mta_type = "p" -o ""$conf_mta_type = "P" ]; then
|
|
conf_mta_type=postfix
|
|
echo "Postfix will be used"
|
|
else
|
|
conf_mta_type=qmail
|
|
echo "Qmail will be used"
|
|
fi
|
|
|
|
# Host configuration
|
|
echo "### YOUR SERVER CONFIGURATION ###"
|
|
echo ""
|
|
echo "Please enter the main domain name you will use."
|
|
echo "DTC will install the root admin panel on that host."
|
|
echo -n "Domain name (example: toto.com): "
|
|
read main_domain_name
|
|
|
|
echo ""
|
|
echo "DTC will install a root admin panel on a subdomain"
|
|
echo "of the domain you just provided. The default subdomain"
|
|
echo "is dtc, which leads you to http://dtc."$main_domain_name"/"
|
|
echo "You can enter another subdomain name if you want."
|
|
echo -n 'Subdomain for DTC admin panel [dtc]: '
|
|
read dtc_admin_subdomain
|
|
if [ ""$dtc_admin_subdomain = "" ] ; then
|
|
dtc_admin_subdomain="dtc"
|
|
fi
|
|
|
|
if [ ""$UNIX_TYPE = "freebsd" -o ""$UNIX_TYPE = "osx" ]; then
|
|
echo "***FIX ME*** Installer in OS X and BSD version don't have IP addr detection yet!"
|
|
guessed_ip_addr=""
|
|
else
|
|
echo "Trying to guess your current IP..."
|
|
guessed_ip_addr=`ifconfig | head -n 2 | tail -n 1 | cut -f2 -d":" | cut -f1 -d" "`
|
|
fi
|
|
|
|
echo ""
|
|
echo " Do you want that DTC generates apache file to use"
|
|
echo "a LAN IP address that your server is using?"
|
|
echo "If your server is in the LAN behind a firewall"
|
|
echo "that does NAT and port redirections of the public IP(s)"
|
|
echo "address(es) to your server, then you must say YES"
|
|
echo "here, otherwise (if your server is connected directly"
|
|
echo "to the internet with a public static IP) leave it to NO."
|
|
echo -n "Use NATed vhosts ? [N/y]: "
|
|
read conf_use_nated_vhosts
|
|
if [ ""$conf_use_nated_vhosts = "y" -o ""$conf_use_nated_vhosts = "Y" -o ""$conf_use_nated_vhosts = "yes" ]; then
|
|
conf_use_nated_vhosts="yes";
|
|
echo ""
|
|
echo " Please enter the LAN IP of your server."
|
|
echo -n "IP address of your server if in the LAN [${guessed_ip_addr}]: "
|
|
read conf_nated_vhost_ip
|
|
if [ ""$conf_nated_vhosts_ip = "" ]; then
|
|
conf_nated_vhosts_ip=$guessed_ip_addr
|
|
fi
|
|
else
|
|
conf_use_nated_vhosts="no";
|
|
conf_nated_vhosts_ip="192.168.0.2"
|
|
fi
|
|
|
|
echo ""
|
|
echo "I need now you host information to configure the daemons."
|
|
if [ ""$conf_use_nated_vhosts = "yes" ] ; then
|
|
echo -n "What is your external (public) IP addresse ?: "
|
|
read conf_ip_addr
|
|
else
|
|
echo -n "What is your IP addresse ? [${guessed_ip_addr}]: "
|
|
read conf_ip_addr
|
|
if [ ""$conf_ip_addr = "" ]; then
|
|
conf_ip_addr=$guessed_ip_addr
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "Where will you keep your files for hosting ?"
|
|
echo -n "Hosting path [/var/www/sites]: "
|
|
read conf_hosting_path
|
|
if [ ""$conf_hosting_path = "" ] ; then
|
|
conf_hosting_path="/var/www/sites"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Path where to build the chroot environment."
|
|
echo "Where do you want DTC to build the cgi-bin chroot"
|
|
echo "environment? Please note that DTC will do hardlinks"
|
|
echo "to that directory, so the chroot path should be in"
|
|
echo "the same logical device as the path for hosted"
|
|
echo "domains files."
|
|
echo -n "Chroot path [/var/www/chroot]: "
|
|
read conf_chroot_path
|
|
if [ ""$conf_chroot_path = "" ] ; then
|
|
conf_chroot_path="/var/www/chroot"
|
|
fi
|
|
|
|
echo ""
|
|
echo "What admin login/pass you want for the administration of "$main_domain_name "?"
|
|
echo -n "Login [dtc]: "
|
|
read conf_adm_login
|
|
if [ ""$conf_adm_login = "" ] ; then
|
|
conf_adm_login="dtc"
|
|
fi
|
|
echo -n "Password: "
|
|
read conf_adm_pass
|
|
|
|
if [ -z "$conf_eth2monitor" ] ; then
|
|
if [ ""$UNIX_TYPE = "freebsd" -o ""$UNIX_TYPE = "osx" ]; then
|
|
echo "***FIX ME*** OS X and FreeBSD don't have interface detection yet!"
|
|
else
|
|
NBRLINES=`grep -v "lo:" /proc/net/dev | wc -l`
|
|
NBRIFACE=$((${NBRLINES} - 2 ))
|
|
CNT=${NBRIFACE}
|
|
ALL_IFACES=''
|
|
while [ ${CNT} -gt 0 ] ; do
|
|
ALL_IFACES=${ALL_IFACES}' '`grep -v "lo:" /proc/net/dev | tail -n ${CNT} | cut -f 1 -d':' | gawk -F ' ' '{print $1}' | head -n 1`
|
|
CNT=$((${CNT} - 1 ))
|
|
done
|
|
fi
|
|
echo ""
|
|
echo "DTC will setup an RRDTools graphing system for you, please"
|
|
echo "enter all the interfaces you wish to see in the total traffic."
|
|
echo -n 'Enter the iface you wish to monitor ['$ALL_IFACES']: '
|
|
read conf_eth2monitor
|
|
if [ -z "$conf_eth2monitor" ]; then
|
|
conf_eth2monitor=$ALL_IFACES
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "In order to know how many DTC setup has been done, the"
|
|
echo "installer can report to GPLHost web site. No data is collected"
|
|
echo "exept the operating system (Debian in your case), IP address"
|
|
echo "of the setup (we use the IP as an identifier so we don't account"
|
|
echo "upgrades and/or reinstallations, we wont ever use it for commercial"
|
|
echo "purpose)."
|
|
echo "You need an internet connection and wget installed to report. Do you"
|
|
echo "wish to allow DTC installer to report the setup of the control panel?"
|
|
echo -n 'Allow installer to report setup? [Yn]:'
|
|
read report_setup
|
|
if [ ""$report_setup = "y" -o ""$report_setup = "Y" -o ""$report_setup = "" ] ; then
|
|
conf_report_setup="true";
|
|
else
|
|
conf_report_setup="false";
|
|
fi
|
|
|
|
echo ""
|
|
echo "In some environment, like FreeBSD Jail or Linux vServer,"
|
|
echo "mknod is not allowed to be executed. For that reason, it's possible"
|
|
echo "to skip the creation of the dev null, random and urandom devices"
|
|
echo "durring the chroot template creation."
|
|
echo -n "Allow installer to create the devices template? [Yn]:"
|
|
read omit_dev_mknod
|
|
if [ ""$omit_dev_mknod = "y" -o ""$omit_dev_mknod = "Y" -o ""$omit_dev_mknod = "" ] ; then
|
|
conf_omit_dev_mknod="no"
|
|
else
|
|
conf_omit_dev_mknod="yes"
|
|
fi
|
|
|
|
# Deamon path configuration
|
|
echo ""
|
|
echo ""
|
|
echo ""
|
|
echo ""
|
|
echo ""
|
|
echo "### Last confirmation before installation !!! ###"
|
|
echo ""
|
|
echo "Here are the given informations:"
|
|
echo ""
|
|
echo "MySQL host: "$conf_mysql_host
|
|
echo "MySQL login: "$conf_mysql_login
|
|
echo "MySQL pass: "$conf_mysql_pass
|
|
echo "MySQL db: "$conf_mysql_db
|
|
echo "Addresse of dtc panel: http://"$dtc_admin_subdomain"."$main_domain_name"/"
|
|
echo "IP addr: "$conf_ip_addr
|
|
echo "Hosting path: "$conf_hosting_path
|
|
echo "DTC login: "$conf_adm_login
|
|
echo "DTC pass: "$conf_adm_pass
|
|
echo "httpd.conf: "$PATH_HTTPD_CONF
|
|
echo "named.conf: "$PATH_NAMED_CONF
|
|
echo "proftpd.conf: "$PATH_PROFTPD_CONF
|
|
echo "dovecot.conf: "$PATH_DOVECOT_CONF
|
|
echo "Courier config path: "$PATH_COURIER_CONF_PATH
|
|
echo "postfix/main.cf: "$PATH_POSTFIX_CONF
|
|
echo "qmail control: "$PATH_QMAIL_CTRL
|
|
echo "php cgi: "$PATH_PHP_CGI
|
|
echo "generated files: "$PATH_DTC_ETC
|
|
echo ""
|
|
echo -n 'Confirm and install DTC ? [Ny]:'
|
|
read valid_infos
|
|
if [ ""$valid_infos = "y" -o ""$valid_infos = "Y" ] ; then
|
|
echo "Installation has started..."
|
|
else
|
|
echo "Configuration not validated : exiting !"
|
|
exit
|
|
fi
|
|
|
|
# Multi OS (Unix system) DATABASE setup sh script for DTC
|
|
# Written by Thomas GOIRAND <thomas [ at ] goirand.fr>
|
|
# under LGPL Licence
|
|
|
|
# The configuration for all thoses variables must be written BEFORE this
|
|
# script. Do the start of the script for your operating system.
|
|
# I did mine for debian in debian/postinst
|
|
|
|
# Please note this script
|
|
# doeas not start with a :
|
|
|
|
#!/bin/sh
|
|
|
|
# because it's up to you to write it ! :)
|
|
# Do a "cat setup_mysql_db.sh >>your_os_setup_script"
|
|
|
|
|
|
# Uses the following variables :
|
|
# "MySQL host: "$conf_mysql_host
|
|
# "MySQL login: "$conf_mysql_login
|
|
# "MySQL pass: "$conf_mysql_pass
|
|
# "MySQL db: "$conf_mysql_db
|
|
# "vhost: http://"$dtc_admin_subdomain"."$main_domain_name"/"
|
|
# "IP addr: "$conf_ip_addr
|
|
# "DTC login: "$conf_adm_login
|
|
# "DTC pass: "$conf_adm_pass
|
|
# "Hosting path: "$conf_hosting_path
|
|
# $PATH_DTC_ETC & $PATH_DTC_SHARED
|
|
|
|
if [ -z "$MKTEMP" ] ; then
|
|
MKTEMP="mktemp -t"
|
|
fi
|
|
|
|
# Params:
|
|
# $1 - File where to search
|
|
# $2 - String to search
|
|
# $3 - String to replace
|
|
# $4 - MKTEMP binary and params
|
|
searchAndReplace () {
|
|
if ! grep ${2} ${1} >/dev/null 2>&1 ; then
|
|
TMP_FILE=`${MKTEMP} DTC_SAR_TEMP.XXXXXX` || exit 1
|
|
sed "s/${2}/${3}/" ${1} >${TMP_FILE}
|
|
cat ${TMP_FILE} >${1}
|
|
rm ${TMP_FILE}
|
|
fi
|
|
}
|
|
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "DTC is configuring your services: please wait..."
|
|
echo "DTC installer is in VERBOSE mode"
|
|
else
|
|
echo -n "DTC is configuring your services: please wait..."
|
|
fi
|
|
|
|
# Create hosting directories for main site
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Creating directory for hosting "$main_domain_name
|
|
fi
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/"$dtc_admin_subdomain"/html"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/"$dtc_admin_subdomain"/logs"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/"$dtc_admin_subdomain"/cgi-bin"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/www/html"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/www/logs"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/www/cgi-bin"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/404/html"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/404/logs"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/404/cgi-bin"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/Mailboxs"
|
|
mkdir -p $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/mysql"
|
|
ADMIN_HOME=$conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/"$dtc_admin_subdomain"/html"
|
|
if ! [ -e $ADMIN_HOME/index.* ] ;then
|
|
cp $PATH_DTC_SHARED"/shared/default_admin_site.php" $ADMIN_HOME"/index.php"
|
|
if ! [ -e $ADMIN_HOME"/dtc_logo.gif" ] ;then
|
|
cp $PATH_DTC_SHARED"/shared/template/dtc_logo.gif" $ADMIN_HOME
|
|
fi
|
|
if ! [ -e $ADMIN_HOME"/favicon.ico" ] ;then
|
|
cp $PATH_DTC_SHARED"/shared/template/favicon.ico" $ADMIN_HOME
|
|
fi
|
|
fi
|
|
|
|
# Copy a template site to the new main site
|
|
MAINSITE_HOME=$conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/www/html"
|
|
if ! [ -e $MAINSITE_HOME/index.* ] ;then
|
|
cp $PATH_DTC_SHARED"/shared/template/index.php" $MAINSITE_HOME
|
|
if ! [ -e $MAINSITE_HOME"/dtc_logo.gif" ] ;then
|
|
cp $PATH_DTC_SHARED"/shared/template/dtc_logo.gif" $MAINSITE_HOME
|
|
fi
|
|
fi
|
|
|
|
set +e
|
|
|
|
nobodygroup=`cat /etc/group | cut -f 1 -d: | grep ^nobody`
|
|
# if we can't find the nobody group, try nogroup
|
|
if [ -z ""$nobodygroup ]; then
|
|
nobodygroup=`cat /etc/group | cut -f 1 -d: | grep ^nogroup`
|
|
fi
|
|
# if we can't find nogroup, then set to 65534
|
|
if [ -z ""$nobodygroup ]; then
|
|
nobodygroup=65534
|
|
fi
|
|
|
|
# if we can't find the nobody group, try nogroup
|
|
nobodygid=`cat /etc/group | grep ^nobody | cut -f 3 -d:`
|
|
if [ -z ""$nobodygid ]; then
|
|
nobodygid=`cat /etc/group | grep ^nogroup | cut -f 3 -d:`
|
|
fi
|
|
# if we can't find nogroup, then set to 65534
|
|
if [ -z ""$nobodygid ]; then
|
|
nobodygid=65534
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path
|
|
fi
|
|
chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path
|
|
|
|
set -e
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> DTC is now creating it's database:"
|
|
fi
|
|
# Added for MacOS X support with mysql not in the path...
|
|
if [ ""$conf_mysql_cli_path = "" ] ;then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "mysql_cli_path is not set"
|
|
fi
|
|
conf_mysql_cli_path="mysql";
|
|
fi
|
|
if [ ""$conf_mysqlshow_cli_path = "" ] ;then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "mysqlshow_cli_path is not set"
|
|
fi
|
|
conf_mysqlshow_cli_path="mysqlshow";
|
|
fi
|
|
if [ "$conf_mysql_pass" = "" ];
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Setting up mysql cli "$conf_mysql_cli_path" without password"
|
|
fi
|
|
MYSQL=""$conf_mysql_cli_path
|
|
MYSQLSHOW=$conf_mysqlshow_cli_path
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Setting up mysql cli with password"
|
|
fi
|
|
# MYSQL=""$conf_mysql_cli_path "-p"$conf_mysql_pass
|
|
MYSQL=$conf_mysql_cli_path" -p${conf_mysql_pass}"
|
|
MYSQLSHOW=$conf_mysqlshow_cli_path" -p${conf_mysql_pass}"
|
|
fi
|
|
|
|
|
|
create_tables=$PATH_DTC_SHARED"/admin/tables"
|
|
# fix the group id for nobody group
|
|
perl -i -p -e "s/65534/$nobodygid/g" $create_tables/*.sql
|
|
|
|
curdir=`pwd`
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n "===> Installing or upgrading DTC database: dtc "
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host --execute="CREATE DATABASE IF NOT EXISTS "$conf_mysql_db
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n "===> Checking version of mysql installed..."
|
|
fi
|
|
# mysql Ver 14.7 Distrib 4.1.20, for pc-linux-gnu (i386) using readline 5.1
|
|
MYSQL_VERSION=`mysql -V`
|
|
MYSQL_VER=30
|
|
case $MYSQL_VERSION in
|
|
*Distrib\ 3.*)
|
|
echo "Found version 3.x ..."
|
|
MYSQL_VER=30
|
|
;;
|
|
*Distrib\ 4.0*)
|
|
echo "Found version 4.0.x ..."
|
|
MYSQL_VER=40
|
|
;;
|
|
*Distrib\ 4.1*)
|
|
echo "Found version 4.1.x ..."
|
|
MYSQL_VER=41
|
|
;;
|
|
*Distrib\ 5.*)
|
|
echo "Found version 5.x ..."
|
|
MYSQL_VER=50
|
|
;;
|
|
esac
|
|
|
|
if [ ""$MYSQL_VER -gt 40 ]; then
|
|
echo "Modifying character set to latin1..."
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host --execute="ALTER DATABASE \`$conf_mysql_db\` DEFAULT CHARACTER SET latin1 COLLATE latin1_bin;"
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n " apachelogs"
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host --execute="CREATE DATABASE IF NOT EXISTS apachelogs"
|
|
if [ ""$MYSQL_VER -gt 40 ]; then
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host --execute="ALTER DATABASE apachelogs DEFAULT CHARACTER SET latin1 COLLATE latin1_bin;"
|
|
fi
|
|
|
|
cd $create_tables
|
|
for i in $( ls *.sql );
|
|
do
|
|
table_name=`echo $i | cut -f1 -d"."`
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n $table_name" "
|
|
fi
|
|
table_create=`cat $i`
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db <$i
|
|
done
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "done."
|
|
fi
|
|
|
|
# fix some tables for 4.1
|
|
if [ ""$MYSQL_VER -gt 40 ]; then
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE fetchmail DEFAULT CHARACTER SET latin1 COLLATE latin1_bin;"
|
|
fi
|
|
|
|
#echo $PATH_PHP_CGI $PATH_DTC_ADMIN/restor_db.php -u $conf_mysql_login -h $conf_mysql_host -d $conf_mysql_db $conf_mysql_pass
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
cd $PATH_DTC_ADMIN; $PATH_PHP_CGI $PATH_DTC_ADMIN/restor_db.php -u $conf_mysql_login -h $conf_mysql_host -d $conf_mysql_db "$conf_mysql_pass"
|
|
else
|
|
cd $PATH_DTC_ADMIN; $PATH_PHP_CGI $PATH_DTC_ADMIN/restor_db.php -u $conf_mysql_login -h $conf_mysql_host -d $conf_mysql_db "$conf_mysql_pass" >/dev/null
|
|
fi
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Inserting values in mysql for hosting "$main_domain_name
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO groups (members) VALUES ('zigo')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO admin (adm_login,adm_pass,path) VALUES ('"$conf_adm_login"','"$conf_adm_pass"','"$conf_hosting_path"/"$conf_adm_login"')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO domain (name,owner,default_subdomain,generate_flag,ip_addr) VALUES ('"$main_domain_name"','"$conf_adm_login"','www','yes','"$conf_ip_addr"')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO subdomain (domain_name,subdomain_name,path) VALUES ('"$main_domain_name"','www','www')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO subdomain (domain_name,subdomain_name,path) VALUES ('"$main_domain_name"','404','404')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO subdomain(domain_name,subdomain_name,ip) VALUES ('"$main_domain_name"','ns1','$conf_ip_addr')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO subdomain(domain_name,subdomain_name,ip) VALUES ('"$main_domain_name"','mx','$conf_ip_addr')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO subdomain (domain_name,subdomain_name,path) VALUES ('"$main_domain_name"','"$dtc_admin_subdomain"','www')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO config (unicrow,demo_version,main_site_ip,site_addrs,addr_mail_server,webmaster_email_addr,addr_primary_dns,administrative_site,site_root_host_path,generated_file_path,dtcshared_path,dtcadmin_path,dtcclient_path,mta_type,main_domain,404_subdomain) VALUES('1','no','"$conf_ip_addr"','"$conf_ip_addr"','mx."$main_domain_name"','webmaster@"$main_domain_name"','ns1."$main_domain_name"','"$dtc_admin_subdomain"."$main_domain_name"','"$conf_hosting_path"','"$PATH_DTC_ETC"','"$PATH_DTC_SHARED"','"$PATH_DTC_ADMIN"','"$PATH_DTC_CLIENT"','"$conf_mta_type"','"$main_domain_name"','404')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO cron_job (unicrow,reload_named,restart_apache,gen_vhosts,gen_named) VALUES ('1','yes','yes','yes','yes')"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO secpayconf (unicrow,use_paypal,paypal_rate,paypal_flat,paypal_autovalidate,paypal_email) VALUES ('1','yes','3.21','0.50','no','webmaster@"$main_domain_name"')"
|
|
|
|
# Regenerate the "main" domain on each installs...
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE domain SET generate_flag='yes' WHERE name='"$main_domain_name"'"
|
|
|
|
# This one is in case of reinstalltion, so the installer has prority to old values
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET main_site_ip='"$conf_ip_addr"',administrative_site='"$dtc_admin_subdomain"."$main_domain_name"',site_root_host_path='"$conf_hosting_path"',generated_file_path='"$PATH_DTC_ETC"',mta_type='"$conf_mta_type"',main_domain='"$main_domain_name"',404_subdomain='404',apache_version='"$conf_apache_version"' WHERE 1"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE cron_job SET qmail_newu='yes',restart_qmail='yes',gen_qmail='yes',reload_named='yes',restart_apache='yes',gen_vhosts='yes',gen_named='yes' WHERE 1"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET php_library_path='/usr/lib/php:/tmp:/usr/share/pear:$PATH_DTC_ETC/dtc404:/usr/share/php', dtc_system_uid='$CONF_DTC_SYSTEM_UID', dtc_system_username='$CONF_DTC_SYSTEM_USERNAME', dtc_system_gid='$CONF_DTC_SYSTEM_GID',dtc_system_groupname='$CONF_DTC_SYSTEM_GROUPNAME' WHERE 1"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE domain SET ip_addr='"$conf_ip_addr"', generate_flag='yes' WHERE name='"$main_domain_name"'"
|
|
|
|
# Fix the rights for the UIDs in tables
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE ftp_access SET uid='$CONF_DTC_SYSTEM_UID',gid='$CONF_DTC_SYSTEM_GID' WHERE 1"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE pop_access SET uid='$CONF_DTC_SYSTEM_UID',gid='$CONF_DTC_SYSTEM_GID' WHERE 1"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE ssh_access SET uid='$CONF_DTC_SYSTEM_UID',gid='$CONF_DTC_SYSTEM_GID' WHERE 1"
|
|
|
|
# Here are some DB maintainance for old DTC versions
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE subdomain CHANGE ip ip VARCHAR(255) DEFAULT 'default' NOT NULL"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE ftp_access CHANGE homedir homedir VARCHAR(255) DEFAULT '' NOT NULL"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE pop_access CHANGE crypt crypt VARCHAR(255) DEFAULT '' NOT NULL"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE pop_access CHANGE passwd passwd VARCHAR(255) DEFAULT '' NOT NULL"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE paiement CHANGE secpay_site secpay_site enum('none', 'paypal', 'worldpay','enets') DEFAULT 'none' NOT NULL"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE pop_access SET crypt=ENCRYPT(passwd,CONCAT(\"\$1\$\",SUBSTRING(crypt,4,8)))"
|
|
# fix size of accounting variables to store more info
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE http_accounting CHANGE bytes_receive bytes_receive BIGINT(14) UNSIGNED NOT NULL DEFAULT '0'"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER TABLE http_accounting CHANGE bytes_sent bytes_sent BIGINT(14) UNSIGNED NOT NULL DEFAULT '0'"
|
|
|
|
# Add dtc userspace info to mysql db if it's not there
|
|
TMP_FILE=`${MKTEMP} dtc_downer_grep.XXXXXXXX` || exit 1
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -Dmysql --execute="DESCRIBE user dtcowner" >${TMP_FILE}
|
|
if ! grep dtcowner ${TMP_FILE} 2>&1 >/dev/null ;then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Adding dtcowner column to mysql.user"
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE mysql.user ADD dtcowner varchar (255) DEFAULT 'none' NOT NULL"
|
|
fi
|
|
if [ -e ${TMP_FILE} ] ;then
|
|
rm ${TMP_FILE}
|
|
fi
|
|
|
|
# 2005/05/05 Remove bad keys preventing good accounting set in old dtc versions
|
|
# This needs to be fixed with no error. Any idea???
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE smtp_logs DROP INDEX sender_domain"
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE smtp_logs DROP INDEX delivery_domain"
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE smtp_logs DROP INDEX delivery_id_text"
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE smtp_logs DROP INDEX delivery_id_text_2"
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE http_accounting DROP INDEX month"
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE email_accounting DROP INDEX sender_domain"
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE email_accounting DROP INDEX delivery_domain"
|
|
|
|
# Add a fullemail field to the pop table if not exists.
|
|
TMP_FILE=`${MKTEMP} dtc_pop_access_grep.XXXXXXXX` || exit 1
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="DESCRIBE pop_access fullemail" >${TMP_FILE}
|
|
if ! grep fullemail ${TMP_FILE} 2>&1 >/dev/null ;then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Adding fullemail column to dtc.pop_access and updating id@mbox_host field."
|
|
fi
|
|
if $MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="ALTER IGNORE TABLE pop_access ADD fullemail varchar (255) DEFAULT 'none' NOT NULL" ; then
|
|
echo "plop !"
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE pop_access SET fullemail = concat( \`id\`, '@', \`mbox_host\` )"
|
|
fi
|
|
if [ -e ${TMP_FILE} ] ;then
|
|
rm ${TMP_FILE}
|
|
fi
|
|
|
|
# Add a dtc user to the mysql db, generate a password randomly if no password is there already
|
|
# Using a file to remember password...
|
|
PATH_DB_PWD_FILE=${PATH_DTC_ETC}/dtcdb_passwd
|
|
if ! [ -e ""${PATH_DB_PWD_FILE} ] ;then
|
|
MYSQL_DTCDAEMONS_PASS=`echo ${RANDOM}${RANDOM}`
|
|
echo ${MYSQL_DTCDAEMONS_PASS} >${PATH_DB_PWD_FILE}
|
|
else
|
|
MYSQL_DTCDAEMONS_PASS=`cat <${PATH_DB_PWD_FILE}`
|
|
fi
|
|
if [ -z "${MYSQL_DTCDAEMONS_PASS}" ] ;then
|
|
MYSQL_DTCDAEMONS_PASS=${RANDOM}${RANDOM}
|
|
echo ${MYSQL_DTC_PASS} >${PATH_DB_PWD_FILE}
|
|
fi
|
|
|
|
chmod 600 ${PATH_DB_PWD_FILE}
|
|
|
|
# Inserting the user
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', 'dtcdaemons', PASSWORD('"${MYSQL_DTCDAEMONS_PASS}"'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N')"
|
|
|
|
# Update the password in case of (bad) reinstallation case
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE mysql.user SET Password=PASSWORD('"${MYSQL_DTCDAEMONS_PASS}"') WHERE User='dtcdaemons'"
|
|
|
|
# grant Select,Insert,Update,Delete,References,Index to ftp_access
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'ftp_access', '', NOW(NULL), 'Select,Insert,Update,Delete,References,Index', 'Select')"
|
|
|
|
# grant Select,Insert,Update,Delete,References,Index to ftp_access
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'groups', '', NOW(NULL), 'Select,Insert,Update,Delete,References,Index', 'Select')"
|
|
|
|
# grant Select,Insert,Update,Delete,References,Index to ftp_logs
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'ftp_logs', '', NOW(NULL), 'Select,Insert,Update,Delete,References,Index', '')"
|
|
|
|
# grant Select,Insert,Update,Delete,References,Index to ftp_accounting
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'ftp_accounting', '', NOW(NULL), 'Select,Insert,Update,Delete,References,Index', '')"
|
|
|
|
# grant Select,Insert,Update,Delete,References,Index to http_accounting
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'http_accounting', '', NOW(NULL), 'Select,Insert,Update,Delete,References,Index', '')"
|
|
|
|
# grant all to apachelogs
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', 'apachelogs', 'dtcdaemons', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y')"
|
|
|
|
# grant select to pop_access
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'pop_access', '', NOW(NULL), 'Select,Update', 'Select,Update')"
|
|
# update in case of old installations
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE IGNORE mysql.tables_priv SET Timestamp = NOW(NULL) , Table_priv = 'Select,Update', Column_priv = 'Select,Update' WHERE Host = 'localhost' AND Db = '"$conf_mysql_db"' AND User = 'dtcdaemons' AND Table_name = 'pop_access' LIMIT 1 "
|
|
|
|
#$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="GRANT SELECT , UPDATE ( crypt , passwd ) ON dtc.pop_access TO 'dtcdaemons'@'localhost'"
|
|
|
|
# grant select to ssh_access
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'ssh_access', '', NOW(NULL), 'Select,Update', 'Select,Update')"
|
|
# grant select to ssh_groups
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'ssh_groups', '', NOW(NULL), 'Select,Update', 'Select,Update')"
|
|
# grant select to ssh_user_group
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'ssh_user_group', '', NOW(NULL), 'Select,Update', 'Select,Update')"
|
|
|
|
# populate some data into the ssh_groups table, so that it works correctly
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO ssh_groups (group_id, group_name, status, group_password, gid) VALUES (NULL, 'root', 'A', 'x', 0), (NULL, 'nobody', 'A', 'x', 99), (NULL, 'nobody', 'A', 'x', 65534);"
|
|
|
|
# grant Select,Insert,Update,Delete,References,Index to smtp_logs
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'smtp_logs', '', NOW(NULL), 'Select,Insert,Update,Delete,References,Index', '')"
|
|
|
|
# grant select to whitelist
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'whitelist', '', NOW(NULL), 'Select', 'Select')"
|
|
|
|
# grant select to fetchmail
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO mysql.tables_priv (Host, Db, User, Table_name, Grantor, Timestamp, Table_priv, Column_priv) VALUES ('localhost', '"$conf_mysql_db"', 'dtcdaemons', 'fetchmail', '', NOW(NULL), 'Select', 'Select')"
|
|
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="FLUSH PRIVILEGES"
|
|
|
|
# Setup good values depending on Unix distribution
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET dtcadmin_path='${PATH_DTC_ADMIN}', dtcclient_path='${PATH_DTC_CLIENT}', dtcdoc_path='${PATH_DTC_SHARED}/doc', dtcemail_path='${PATH_DTC_SHARED}/email' WHERE 1"
|
|
|
|
# Add the config for nated vhosts if needed
|
|
if [ ""$conf_use_nated_vhosts = "yes" ] ;then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Setting-up values in MySQL for using NAT"
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET use_nated_vhost='yes'"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET nated_vhost_ip='"${conf_nated_vhosts_ip}"'"
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET use_multiple_ip='no'"
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Setting-up values in MySQL NOT using NAT"
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET use_nated_vhost='no'"
|
|
fi
|
|
|
|
# Set the value to use SSL directly...
|
|
if [ ""$conf_gen_ssl_cert = "true" ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Adding the use of SSL directly!"
|
|
fi
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="UPDATE config SET use_ssl='yes'"
|
|
fi
|
|
|
|
# Insert the cyrus user so we can use cyradm
|
|
$MYSQL -u$conf_mysql_login -h$conf_mysql_host -D$conf_mysql_db --execute="INSERT IGNORE INTO pop_access (id,fullemail,passwd,crypt) VALUES('cyrus','cyrus','"${MYSQL_DTCDAEMONS_PASS}"',ENCRYPT('"${MYSQL_DTCDAEMONS_PASS}"'))"
|
|
|
|
# The panel needs root access (it does database management)
|
|
echo "<?php" > $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
echo "\$conf_mysql_host=\""$conf_mysql_host"\";" >> $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
echo "\$conf_mysql_login=\""$conf_mysql_login"\";" >> $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
echo "\$conf_mysql_pass=\""$conf_mysql_pass"\";" >> $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
echo "\$conf_mysql_db=\""$conf_mysql_db"\";" >> $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
echo "\$conf_mysql_conf_ok=\"yes\";" >> $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
echo "?>" >> $PATH_DTC_SHARED"/shared/mysql_config.php"
|
|
|
|
cd $curdir
|
|
CHROOT_DIR=$conf_chroot_path
|
|
WEB_USER=${CONF_DTC_SYSTEM_USERNAME}
|
|
WEB_GROUP=${CONF_DTC_SYSTEM_GROUPNAME}
|
|
|
|
if [ $CHROOT_DIR"" = "" ] ; then
|
|
CHROOT_DIR=/var/www/chroot
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Creating chroot tree in "$CHROOT_DIR
|
|
fi
|
|
|
|
# set our umask so things are created with the correct group perms
|
|
umask 022
|
|
|
|
# now onto the creation
|
|
mkdir -p $CHROOT_DIR
|
|
cd $CHROOT_DIR
|
|
|
|
# create directory structure
|
|
mkdir -p etc dev bin lib tmp var/tmp var/run sbin libexec
|
|
mkdir -p usr/bin usr/lib usr/libexec usr/share usr/lib/zoneinfo
|
|
|
|
# make devices - adjust MAJOR/MINOR as appropriate ( see ls -l /dev/* )
|
|
if ! [ ""$conf_omit_dev_mknod = "yes" ] ; then
|
|
if ! [ -e dev/null ] ; then
|
|
if [ $UNIX_TYPE"" = "freebsd" -o $UNIX_TYPE"" = "osx" ] ; then
|
|
mknod dev/null c 2 2 # FreeBSD?
|
|
else
|
|
mknod dev/null c 1 3 # Linux
|
|
fi
|
|
fi
|
|
|
|
if [ $UNIX_TYPE"" = "freebsd" -o $UNIX_TYPE"" = "osx" ] ; then
|
|
if [ $kernel"" = "OpenBSD" ] ; then
|
|
if ! [ -e dev/urandom ] ; then
|
|
mknod dev/urandom c 45 2 # OpenBSD ?
|
|
fi
|
|
else
|
|
if ! [ -e dev/random ] ; then
|
|
mknod dev/random c 2 3 # FreeBSD
|
|
fi
|
|
if ! [ -e dev/urandom ] ; then
|
|
mknod dev/urandom c 2 3
|
|
fi
|
|
fi
|
|
else
|
|
if ! [ -e dev/random ] ; then
|
|
mknod dev/random c 1 8 # Linux
|
|
fi
|
|
if ! [ -e dev/urandom ] ; then
|
|
mknod dev/urandom c 1 9 # Linux
|
|
fi
|
|
fi
|
|
|
|
# some external programs may need these:
|
|
if [ $UNIX_TYPE"" = "freebsd" -o $UNIX_TYPE"" = "osx" ] ; then
|
|
if ! [ -e dev/stdin ] ; then
|
|
mknod dev/stdin c 22 0 # FreeBSD, OpenBSD
|
|
fi
|
|
if ! [ -e dev/stdout ] ; then
|
|
mknod dev/stdout c 22 1 # FreeBSD, OpenBSD
|
|
fi
|
|
if ! [ -e dev/stderr ] ; then
|
|
mknod dev/stderr c 22 2 # FreeBSD, OpenBSD
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# copy required binaries to $CHROOT_DIR/usr/bin and $CHROOT_DIR/bin
|
|
if [ -e /bin/bzip2 ] ; then
|
|
cp -pf /bin/bzip2 usr/bin/
|
|
fi
|
|
if [ -e /usr/bin/bzip2 ] ; then
|
|
cp -pf /usr/bin/bzip2 usr/bin/
|
|
fi
|
|
if [ -e /usr/bin/file ] ; then
|
|
cp -pf /usr/bin/file usr/bin/
|
|
fi
|
|
|
|
if [ $UNIX_TYPE"" = "freebsd" ] ; then
|
|
cp -pf /usr/bin/cpio usr/bin
|
|
cp -pf /libexec/ld-elf.so.1 libexec
|
|
cp -pf /bin/rm /bin/mv /usr/bin/gunzip /usr/bin/tar /usr/bin/false bin/
|
|
elif [ $UNIX_TYPE"" = "osx" ] ; then
|
|
cp -pf /usr/bin/cpio usr/bin
|
|
cp -pf /usr/bin/rm /usr/bin/mv /usr/bin/gunzip /usr/bin/tar /usr/bin/false bin/
|
|
else
|
|
cp -pf /bin/rm /bin/mv /bin/gunzip bin/
|
|
cp -pf /bin/cpio usr/bin
|
|
fi
|
|
# copy zip and unzip if they are present
|
|
if [ -e /usr/bin/zip ] ; then
|
|
cp -pf /usr/bin/zip bin/
|
|
fi
|
|
if [ -e /usr/bin/unzip ] ; then
|
|
cp -pf /usr/bin/unzip bin/
|
|
fi
|
|
|
|
if [ -e /bin/bash ] ; then
|
|
cp -pf /bin/bash bin
|
|
fi
|
|
if [ -e /usr/bin/bash ] ; then
|
|
cp -pf /usr/bin/bash bin
|
|
fi
|
|
if [ -e /usr/bin/tar ]; then
|
|
cp -pf /usr/bin/tar bin
|
|
fi
|
|
if [ -e /bin/tar ]; then
|
|
cp -pf /bin/tar bin
|
|
fi
|
|
if [ -e /usr/bin/false ]; then
|
|
cp -pf /usr/bin/false bin
|
|
fi
|
|
if [ -e /bin/false ]; then
|
|
cp -pf /bin/false bin
|
|
fi
|
|
|
|
if [ -e /usr/bin/sftp ]; then
|
|
cp -pf /usr/bin/sftp bin/
|
|
fi
|
|
|
|
# the sftp-server binary can be in /usr/lib or /lib, so check both places
|
|
if [ -e /usr/lib/sftp-server ]; then
|
|
cp -pf /usr/lib/sftp-server usr/lib/
|
|
fi
|
|
|
|
if [ -e /lib/sftp-server ]; then
|
|
cp -pf /lib/sftp-server lib/
|
|
fi
|
|
|
|
if [ -e /usr/bin/scp ]; then
|
|
cp -pf /usr/bin/scp bin/
|
|
fi
|
|
|
|
# copy more required binaries to $CHROOT_DIR/bin
|
|
cp -pf /bin/sh /bin/echo /bin/ls /bin/pwd /bin/cat bin/
|
|
|
|
# copy ldconfig from sbin to $CHROOT_DIR/sbin
|
|
if ! [ $UNIX_TYPE"" = "osx" ] ; then
|
|
cp -pf /sbin/ldconfig sbin/
|
|
fi
|
|
|
|
# copy needed /etc files to $CHROOT_DIR/etc
|
|
cp -pf /etc/protocols /etc/services /etc/hosts \
|
|
/etc/resolv.conf etc/
|
|
|
|
# generate /etc/passwd and /etc/group
|
|
# ignore errors
|
|
set +e
|
|
grep daemon /etc/passwd > etc/passwd
|
|
grep bin /etc/passwd >> etc/passwd
|
|
grep sys /etc/passwd >> etc/passwd
|
|
grep man /etc/passwd >> etc/passwd
|
|
grep lp /etc/passwd >> etc/passwd
|
|
grep mail /etc/passwd >> etc/passwd
|
|
grep news /etc/passwd >> etc/passwd
|
|
grep uucp /etc/passwd >> etc/passwd
|
|
grep www-data /etc/passwd >> etc/passwd
|
|
# generate this one manually: grep nobody /etc/passwd >> etc/passwd
|
|
grep daemon /etc/group > etc/group
|
|
grep bin /etc/group >> etc/group
|
|
grep sys /etc/group >> etc/group
|
|
grep man /etc/group >> etc/group
|
|
grep lp /etc/group >> etc/group
|
|
grep mail /etc/group >> etc/group
|
|
grep news /etc/group >> etc/group
|
|
grep uucp /etc/group >> etc/group
|
|
grep www-data /etc/group >> etc/group
|
|
grep ${CONF_DTC_SYSTEM_GROUPNAME} /etc/group >> etc/group
|
|
grep ${CONF_DTC_SYSTEM_USERNAME} /etc/group >> etc/group
|
|
set -e
|
|
|
|
# fix entry for nobody in /etc/passwd
|
|
echo "${CONF_DTC_SYSTEM_USERNAME}:x:${CONF_DTC_SYSTEM_UID}:${CONF_DTC_SYSTEM_GID}:${CONF_DTC_SYSTEM_USERNAME}:/html:/bin/bash" >> etc/passwd
|
|
|
|
# create shadow account line for nobody
|
|
echo "${CONF_DTC_SYSTEM_USERNAME}::12719:0:99999:7:::" > etc/shadow
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} etc/shadow
|
|
|
|
if [ -e /etc/host.conf ] ; then
|
|
cp -pf /etc/host.conf etc/
|
|
fi
|
|
|
|
if [ -e /etc/ld.conf ] ; then
|
|
cp -pf /etc/ld.conf etc/
|
|
fi
|
|
|
|
if [ -e /etc/nsswitch.conf ] ; then
|
|
cp -pf /etc/nsswitch.conf etc/
|
|
fi
|
|
|
|
if [ -e /etc/localtime ] ; then
|
|
cp -pf /etc/localtime etc/
|
|
fi
|
|
|
|
# copy shared libraries to $CHROOT_DIR/lib
|
|
# (check: ldd /usr/bin/perl (or other binary) to see which ones are needed)
|
|
#
|
|
#FreeBSD:
|
|
#for j in \
|
|
if [ $UNIX_TYPE"" = "freebsd" ] ; then
|
|
cp -pf /usr/lib/libc.so* /usr/lib/libm.so* \
|
|
/usr/lib/libstdc\+\+.so* usr/lib/
|
|
if [ -e /usr/compat/linux/usr/lib/libz.so.1 ] ; then
|
|
cp /usr/compat/linux/usr/lib/libz.so.1 usr/lib
|
|
fi
|
|
else
|
|
if [ $UNIX_TYPE"" = "osx" ] ; then
|
|
cp -pf /usr/lib/dyld /usr/lib/libSystem.B.dylib \
|
|
/usr/lib/libc.dylib /usr/lib/libdl.dylib \
|
|
/usr/lib/libncurses.5.dylib /usr/lib/libpam.dylib \
|
|
/usr/lib/libpthread.dylib usr/lib/
|
|
cp -pf /usr/lib/dylib1.o /usr/lib/libSystem.dylib \
|
|
/usr/lib/libcrypto.dylib /usr/lib/libm.dylib \
|
|
/usr/lib/libncurses.dylib /usr/lib/libpam_misc.dylib \
|
|
/usr/lib/libz.dylib usr/lib
|
|
mkdir usr/lib/system
|
|
cp -pf /usr/lib/system/libmathCommon.A.dylib usr/lib/system
|
|
else
|
|
FOUNDED_ARCH=`uname -m`
|
|
if [ ""$FOUNDED_ARCH = "x86_64" ] ; then
|
|
if [ ! -e lib64 ]; then
|
|
ln -s lib lib64
|
|
fi
|
|
fi
|
|
if [ -e /lib/ld-linux.so.2 ] ; then
|
|
cp -pf /lib/ld-linux.so.2 lib/
|
|
fi
|
|
if [ -e /lib/ld-linux-x86-64.so.2 ] ; then
|
|
cp -pf /lib/ld-linux-x86-64.so.2 lib/
|
|
fi
|
|
cp -pf /lib/libdl.so.2 /lib/libm.so.6 /lib/libpthread.so.0 \
|
|
/lib/libc.so.6 /lib/libcrypt.so.1 \
|
|
/lib/librt.so.1 \
|
|
/lib/libnss_compat.so.2 /lib/libnsl.so.1 /lib/libnss_files.so.2 \
|
|
/lib/libpam.so.0 /lib/libpam_misc.so.0 lib/
|
|
|
|
if [ -e /lib/libncurses.so.5 ]; then
|
|
cp /lib/libncurses.so.5 lib/
|
|
fi
|
|
|
|
if [ -e /usr/lib/libncurses.so.5 ]; then
|
|
cp /usr/lib/libncurses.so.5 lib/
|
|
fi
|
|
|
|
if [ -e /lib/libacl.so.1 ]; then
|
|
cp /lib/libacl.so.1 lib/
|
|
fi
|
|
|
|
if [ -e /lib/libattr.so.1 ]; then
|
|
cp /lib/libattr.so.1 lib/
|
|
fi
|
|
|
|
if [ -e /lib/libcap.so.1 ]; then
|
|
cp /lib/libcap.so.1 lib/
|
|
fi
|
|
|
|
if [ -e /lib/libbz2.so.1.0 ]; then
|
|
cp /lib/libbz2.so.1.0 lib/
|
|
fi
|
|
if [ -e /usr/lib/libbz2.so.1.0 ]; then
|
|
cp /usr/lib/libbz2.so.1.0 lib/
|
|
fi
|
|
if [ -e /usr/lib/libmagic.so.1 ]
|
|
then
|
|
cp -pf /usr/lib/libmagic.so.1 lib/
|
|
fi
|
|
if [ $UNIX_TYPE"" = "gentoo" ] ; then
|
|
cp -pf /lib/libz.so.1 lib/
|
|
else
|
|
cp -pf /usr/lib/libz.so.1 lib/
|
|
fi
|
|
|
|
# libs for sftp and scp
|
|
|
|
if [ -e /lib/libresolv.so.2 ]; then
|
|
cp -pf /lib/libresolv.so.2 lib/
|
|
fi
|
|
|
|
if [ -e /usr/lib/libcrypto.so.0.9.7 ]; then
|
|
cp -pf /usr/lib/libcrypto.so.0.9.7 lib/
|
|
fi
|
|
|
|
if [ -e /usr/lib/libcrypto.so.0.9.8 ]; then
|
|
cp -pf /usr/lib/libcrypto.so.0.9.8 lib/
|
|
fi
|
|
|
|
if [ -e /lib/libutil.so.1 ]; then
|
|
cp -pf /lib/libutil.so.1 lib/
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# magic files needed by file(1). Different versions and installations
|
|
# expect magic files in different locations. Check the documentation.
|
|
# Some usual locations are:
|
|
if [ -e /usr/share/misc/file ]
|
|
then
|
|
#cp -pf /usr/local/share/file/* usr/local/share/file/
|
|
mkdir -p usr/share/misc/file
|
|
cp -pf /usr/share/misc/file/magic* usr/share/misc/file
|
|
#cp -pf /usr/share/magic usr/share/
|
|
fi
|
|
|
|
# No need anymore - fix up pam.d into jail
|
|
# if [ -e /etc/pam.d ]; then
|
|
# mkdir -p ./etc/pam.d/
|
|
# cp /etc/pam.d/* ./etc/pam.d/
|
|
# fi
|
|
# No need anymore - copy PAM-Modules to jail
|
|
#if [ -e /lib/security ]; then
|
|
#cp -r /lib/security ./lib/
|
|
#fi
|
|
#if [ -e /etc/security ]; then
|
|
# cp -r /etc/security ./etc/
|
|
#fi
|
|
if [ -e /etc/login.defs ]; then
|
|
cp /etc/login.defs ./etc/
|
|
fi
|
|
|
|
# now we have come this far, make sure our chroot includes enough libs for this environment
|
|
LDD=`which ldd`
|
|
if [ -n "$LDD" ]; then
|
|
|
|
for i in bin/*;
|
|
do
|
|
for j in `$LDD $i | cut -f 1 -d' '`;
|
|
do
|
|
if [ -e $j ]; then
|
|
cp -pf $j lib/
|
|
fi
|
|
|
|
if [ -e /lib/$j ]; then
|
|
cp -pf /lib/$j lib/
|
|
fi
|
|
|
|
if [ -e /usr/lib/$j ]; then
|
|
cp -pf /usr/lib/$j lib/
|
|
fi
|
|
|
|
if [ -e /usr/local/lib/$j ]; then
|
|
cp -pf /usr/local/lib/$j lib/
|
|
fi
|
|
done
|
|
done
|
|
|
|
|
|
fi
|
|
|
|
# if we have a sudo binary around, then use it to create our chroot shell
|
|
SUDO=`which sudo`
|
|
if [ -n "$SUDO" ] ; then
|
|
# create a chroot shell script
|
|
echo "Creating chroot shell script..."
|
|
SHELL=/bin/dtc-chroot-shell
|
|
echo '#!/bin/sh' > $SHELL
|
|
echo "`which sudo` -H `which chroot` \$HOME /bin/su - \$USER" \"\$@\" >> $SHELL
|
|
chmod 755 $SHELL
|
|
# fix sudoers
|
|
# fix /etc/shells
|
|
fi
|
|
|
|
# set protections
|
|
chmod 1770 tmp
|
|
chmod 1770 var/tmp
|
|
if ! [ ""$conf_omit_dev_mknod = "yes" ] ; then
|
|
chmod 666 dev/null
|
|
chmod 644 dev/*random
|
|
fi
|
|
|
|
#now need to copy over the perl binary and some modules
|
|
cp -pf /usr/bin/perl usr/bin/
|
|
|
|
if [ $UNIX_TYPE"" = "freebsd" ] ;then
|
|
# now create our ld.so cache
|
|
cp /libexec/ld-elf.so.1 $CHROOT_DIR/libexec
|
|
chroot $CHROOT_DIR ./sbin/ldconfig
|
|
# just in case we have wiped our /etc/ld.so.cache (run locally)
|
|
/sbin/ldconfig
|
|
else
|
|
if ! [ $UNIX_TYPE"" = "osx" ] ;then
|
|
# now create our ld.so cache
|
|
mkdir -p $CHROOT_DIR/etc
|
|
touch $CHROOT_DIR/etc/ld.so.cache
|
|
touch $CHROOT_DIR/etc/ld.so.conf
|
|
chroot $CHROOT_DIR ./sbin/ldconfig
|
|
# just in case we have wiped our /etc/ld.so.cache (run locally)
|
|
/sbin/ldconfig
|
|
fi
|
|
fi
|
|
|
|
|
|
# Multi OS (Unix system) install sh script for DTC
|
|
# Written by Thomas GOIRAND <thomas@goirand.fr>
|
|
# Cyrus modifications by Cristian Livadaru <cristian@livadaru.net>
|
|
# under LGPL Licence
|
|
|
|
# The configuration for all thoses variables must be written BEFORE this
|
|
# script. Do the start of the script for your operating system.
|
|
# I did mine for debian in debian/postinst
|
|
|
|
# Please note this script
|
|
# doeas not start with a :
|
|
|
|
#!/bin/sh
|
|
|
|
# because it's up to you to write it ! :)
|
|
# Do a "cat configure_deamons.sh >>your_os_setup_script"
|
|
|
|
# This script modify all your daemons configuration
|
|
# files so that it uses the DTC genated files.
|
|
|
|
#
|
|
# First, copy our RENAME_ME_paiement_config.php to paiement_config.php
|
|
# so it works automaticaly even without Tucows API
|
|
#
|
|
|
|
#VERBOSE_INSTALL=yes
|
|
|
|
# We are just after the creation of the chroot tree, so it's time to copy it over
|
|
# our newly created vhosts dirs (in update mode)
|
|
|
|
if [ -z ""$MYSQL_DB_SOCKET_PATH ] ;then
|
|
MYSQL_DB_SOCKET_PATH="/var/run/mysqld/mysqld.sock"
|
|
fi
|
|
|
|
# Copy newly created chroot tree to the 3 vhosts created with this installer (mx and ns don't have apache vhosts generated)
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n "===> Installing chroot file environment for www."$main_domain_name
|
|
fi
|
|
cp -fpR $conf_chroot_path/* $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/www/"
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n " "$dtc_admin_subdomain"."$main_domain_name
|
|
fi
|
|
cp -fpR $conf_chroot_path/* $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/404"
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n " 404."$main_domain_name
|
|
fi
|
|
cp -fpR $conf_chroot_path/* $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/"$dtc_admin_subdomain
|
|
|
|
# symlink directories so that users can login with ssh to the admin account directory
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/bin ]; then ln -s $main_domain_name/subdomains/www/bin $conf_hosting_path/$conf_adm_login/bin; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/var ]; then ln -s $main_domain_name/subdomains/www/var $conf_hosting_path/$conf_adm_login/var; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/lib ]; then ln -s $main_domain_name/subdomains/www/lib $conf_hosting_path/$conf_adm_login/lib; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/sbin ]; then ln -s $main_domain_name/subdomains/www/sbin $conf_hosting_path/$conf_adm_login/sbin; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/tmp ]; then ln -s $main_domain_name/subdomains/www/tmp $conf_hosting_path/$conf_adm_login/tmp; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/usr ]; then ln -s $main_domain_name/subdomains/www/usr $conf_hosting_path/$conf_adm_login/usr; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/dev ]; then ln -s $main_domain_name/subdomains/www/dev $conf_hosting_path/$conf_adm_login/dev; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/etc ]; then ln -s $main_domain_name/subdomains/www/etc $conf_hosting_path/$conf_adm_login/etc; fi
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/bin
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/var
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/lib
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/sbin
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/tmp
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/usr
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/dev
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/etc
|
|
|
|
# also, so the user can login to the main domain names base directory
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/bin ]; then ln -s subdomains/www/bin $conf_hosting_path/$conf_adm_login/$main_domain_name/bin; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/var ]; then ln -s subdomains/www/var $conf_hosting_path/$conf_adm_login/$main_domain_name/var; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/lib ]; then ln -s subdomains/www/lib $conf_hosting_path/$conf_adm_login/$main_domain_name/lib; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/sbin ]; then ln -s subdomains/www/sbin $conf_hosting_path/$conf_adm_login/$main_domain_name/sbin; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/tmp ]; then ln -s subdomains/www/tmp $conf_hosting_path/$conf_adm_login/$main_domain_name/tmp; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/usr ]; then ln -s subdomains/www/usr $conf_hosting_path/$conf_adm_login/$main_domain_name/usr; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/dev ]; then ln -s subdomains/www/dev $conf_hosting_path/$conf_adm_login/$main_domain_name/dev; fi
|
|
if [ ! -e $conf_hosting_path/$conf_adm_login/$main_domain_name/etc ]; then ln -s subdomains/www/etc $conf_hosting_path/$conf_adm_login/$main_domain_name/etc; fi
|
|
|
|
set +e
|
|
|
|
nobodygroup=`cat /etc/group | cut -f 1 -d: | grep ^nobody`
|
|
# if we can't find the nobody group, try nogroup
|
|
if [ -z ""$nobodygroup ]; then
|
|
nobodygroup=`cat /etc/group | cut -f 1 -d: | grep ^nogroup`
|
|
fi
|
|
# if we can't find nogroup, then set to 65534
|
|
if [ -z ""$nobodygroup ]; then
|
|
nobodygroup=65534
|
|
fi
|
|
|
|
nobodygid=`cat /etc/group | grep ^nobody | cut -f 3 -d:`
|
|
# if we can't find the nobody group, try nogroup
|
|
if [ -z ""$nobodygid ]; then
|
|
nobodygid=`cat /etc/group | grep ^nogroup | cut -f 3 -d:`
|
|
fi
|
|
# if we can't find nogroup, then set to 65534
|
|
if [ -z ""$nobodygid ]; then
|
|
nobodygid=65534
|
|
fi
|
|
|
|
|
|
set -e
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/$main_domain_name/subdomains"
|
|
fi
|
|
chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $conf_hosting_path/$conf_adm_login/$main_domain_name/subdomains
|
|
|
|
# if we have a sudo binary around, then use it to create our chroot shell
|
|
# check for some path defaults...
|
|
if [ -z "$PATH_SUDO" ]; then
|
|
PATH_SUDO=`which sudo`
|
|
fi
|
|
if [ -z "$PATH_CHROOT" ]; then
|
|
PATH_CHROOT=`which chrootuid`
|
|
fi
|
|
if [ -z "$PATH_SHELLS_CONF" ]; then
|
|
PATH_SHELLS_CONF=/etc/shells
|
|
fi
|
|
if [ -z "$PATH_SUDOERS_CONF" ]; then
|
|
PATH_SUDOERS_CONF=/etc/sudoers
|
|
fi
|
|
if [ -n "$PATH_SUDO" ] ; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Creating chroot shell..."
|
|
fi
|
|
# create a chroot shell script
|
|
CHROOT_SHELL=/bin/dtc-chroot-shell
|
|
echo '#!/bin/sh' > $CHROOT_SHELL
|
|
echo "# This shell script is used by DTC, please do not remove" >> $CHROOT_SHELL
|
|
echo "$PATH_SUDO -H $PATH_CHROOT \$HOME \$USER" /bin/bash \"\$@\" >> $CHROOT_SHELL
|
|
chmod 755 $CHROOT_SHELL
|
|
# fix sudoers
|
|
if grep "Configured by DTC" $PATH_SUDOERS_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_SUDOERS_CONF has been configured before..."
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_SUDOERS_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_SUDOERS_CONF
|
|
fi
|
|
cp -f "$PATH_SUDOERS_CONF" "$PATH_SUDOERS_CONF.DTC.backup"
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.sudoers.XXXXXX` || exit 1
|
|
echo "# Configured by DTC 0.21 : please do not touch this line !" >> $TMP_FILE
|
|
echo "Defaults:${CONF_DTC_SYSTEM_USERNAME} !set_logname" >> $TMP_FILE
|
|
echo "${CONF_DTC_SYSTEM_USERNAME} ALL= NOPASSWD: $PATH_CHROOT *" >> $TMP_FILE
|
|
echo "# End of DTC configuration : please don't touch this line !" >> $TMP_FILE
|
|
cat <$TMP_FILE >>$PATH_SUDOERS_CONF
|
|
fi
|
|
# fix /etc/shells
|
|
if grep "Configured by DTC" $PATH_SHELLS_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_SHELLS_CONF has been configured before..."
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_SHELLS_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_SHELLS_CONF
|
|
fi
|
|
cp -f "$PATH_SHELLS_CONF" "$PATH_SHELLS_CONF.DTC.backup"
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.shells.XXXXXX` || exit 1
|
|
echo "# Configured by DTC 0.21 : please do not touch this line !" >> $TMP_FILE
|
|
echo "/bin/dtc-chroot-shell" >> $TMP_FILE
|
|
echo "# End of DTC configuration : please don't touch this line !" >> $TMP_FILE
|
|
cat <$TMP_FILE >>$PATH_SHELLS_CONF
|
|
rm $TMP_FILE
|
|
fi
|
|
fi
|
|
|
|
if ! [ -f $PATH_DTC_SHARED/shared/securepay/paiement_config.php ] ; then
|
|
cp -v $PATH_DTC_SHARED/shared/securepay/RENAME_ME_paiement_config.php $PATH_DTC_SHARED/shared/securepay/paiement_config.php
|
|
fi
|
|
|
|
#
|
|
# Modify the php.ini to increase memory limits
|
|
#
|
|
if ! [ -z ""$PATH_PHP_INI_APACHE ] ; then
|
|
searchAndReplace $PATH_PHP_INI_APACHE memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace $PATH_PHP_INI_APACHE memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
if ! [ -z ""$PATH_PHP_INI_APACHE2 ] ; then
|
|
searchAndReplace $PATH_PHP_INI_APACHE2 memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace $PATH_PHP_INI_APACHE2 memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
if ! [ -z ""$PATH_PHP_INI_CLI ] ; then
|
|
searchAndReplace $PATH_PHP_INI_CLI max_execution_time\ =\ 30 max_execution_time\ =\ 1200
|
|
searchAndReplace $PATH_PHP_INI_CLI memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace $PATH_PHP_INI_CLI memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
|
|
if [ -e /etc/php5/apache/php.ini ] ; then
|
|
searchAndReplace /etc/php5/apache/php.ini max_execution_time\ =\ 30 max_execution_time\ =\ 1200
|
|
searchAndReplace /etc/php5/apache/php.ini memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace /etc/php5/apache/php.ini memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
|
|
if [ -e /etc/php5/apache2/php.ini ] ; then
|
|
searchAndReplace /etc/php5/apache2/php.ini max_execution_time\ =\ 30 max_execution_time\ =\ 1200
|
|
searchAndReplace /etc/php5/apache2/php.ini memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace /etc/php5/apache2/php.ini memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
|
|
if [ -e /etc/php4/apache/php.ini ] ; then
|
|
searchAndReplace /etc/php4/apache/php.ini max_execution_time\ =\ 30 max_execution_time\ =\ 1200
|
|
searchAndReplace /etc/php4/apache/php.ini memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace /etc/php4/apache/php.ini memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
|
|
if [ -e /etc/php4/apache2/php.ini ] ; then
|
|
searchAndReplace /etc/php4/apache2/php.ini max_execution_time\ =\ 30 max_execution_time\ =\ 1200
|
|
searchAndReplace /etc/php4/apache2/php.ini memory_limit\ =\ 8M memory_limit\ =\ 64M
|
|
searchAndReplace /etc/php4/apache2/php.ini memory_limit\ =\ 16M memory_limit\ =\ 64M
|
|
fi
|
|
|
|
#
|
|
# Include $PATH_DTC_ETC/vhosts.conf in $PATH_HTTPD_CONF
|
|
#
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.httpd.conf.XXXXXX` || exit 1
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Modifying httpd.conf"
|
|
fi
|
|
# need to see if we can use the modules-config or apacheconfig tools
|
|
HTTPD_MODULES_CONFIG=/usr/sbin/apache-modconf
|
|
|
|
# if apacheconfig is a symlink (deprecated), then use modules-config
|
|
if [ -f $HTTPD_MODULES_CONFIG ]
|
|
then
|
|
if [ ""$conf_apache_version = "2" ] ; then
|
|
HTTPD_MODULES_CONFIG="$HTTPD_MODULES_CONFIG apache2"
|
|
else
|
|
HTTPD_MODULES_CONFIG="$HTTPD_MODULES_CONFIG apache"
|
|
fi
|
|
else
|
|
HTTPD_MODULES_CONFIG=""
|
|
fi
|
|
|
|
# check to see if our apacheconfig has been obseleted
|
|
if [ "$HTTPD_MODULES_CONFIG" = "" ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Not using modules-config tool"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Using $HTTPD_MODULES_CONFIG to configure apache modules"
|
|
fi
|
|
fi
|
|
|
|
if grep "Configured by DTC" $PATH_HTTPD_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "httpd.conf has been configured before : skiping include inssertion !"
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_HTTPD_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_HTTPD_CONF
|
|
fi
|
|
cp -f "$PATH_HTTPD_CONF" "$PATH_HTTPD_CONF.DTC.backup"
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "=> Verifying User and Group directive"
|
|
fi
|
|
|
|
# This is from upgrades from older versions using nobody
|
|
if grep "User nobody" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "User nobody -> User ${CONF_DTC_SYSTEM_USERNAME}"
|
|
sed "s/User nobody/User ${CONF_DTC_SYSTEM_USERNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
if grep "Group nogroup" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "Group nobody -> User ${CONF_DTC_SYSTEM_GROUPNAME}"
|
|
sed "s/Group nogroup/Group ${CONF_DTC_SYSTEM_GROUPNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
|
|
# Those 2 are for debian
|
|
if grep "User www-data" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "User www-data -> User ${CONF_DTC_SYSTEM_USERNAME}"
|
|
sed "s/User www-data/User ${CONF_DTC_SYSTEM_USERNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
|
|
if grep "Group www-data" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "Group www-data -> Group ${CONF_DTC_SYSTEM_GROUPNAME}"
|
|
sed "s/Group www-data/Group ${CONF_DTC_SYSTEM_GROUPNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
|
|
# Those 2 are for BSD
|
|
if grep "User www" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "User www -> User ${CONF_DTC_SYSTEM_USERNAME}"
|
|
sed "s/User www/User ${CONF_DTC_SYSTEM_USERNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
if grep "Group www" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "Group www -> Group ${CONF_DTC_SYSTEM_GROUPNAME}"
|
|
sed "s/Group www/Group ${CONF_DTC_SYSTEM_GROUPNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
# Those 2 are for RedHat
|
|
if grep "User apache" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "User apache -> User ${CONF_DTC_SYSTEM_USERNAME}"
|
|
sed "s/User apache/User ${CONF_DTC_SYSTEM_USERNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
if grep "Group apache" $PATH_HTTPD_CONF >/dev/null 2>&1
|
|
then
|
|
echo "Group apache -> Group ${CONF_DTC_SYSTEM_GROUPNAME}"
|
|
sed "s/Group apache/Group ${CONF_DTC_SYSTEM_GROUPNAME}/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
fi
|
|
|
|
# if [ "$UNIX_TYPE" = "debian" -o "$UNIX_TYPE" = "osx" ]
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "=> Checking apache modules"
|
|
# echo -n "Checking for php4..."
|
|
# fi
|
|
# # first of all, may as well try to use the provided modules-config or apacheconfig provided by debian...
|
|
# # else use the normal method to be cross platform compatible
|
|
#
|
|
# if [ "$HTTPD_MODULES_CONFIG" = "" ]
|
|
# then
|
|
# # need to support modules.conf version of apache debian package
|
|
# # default to normal HTTPD_CONF
|
|
# PATH_HTTPD_CONF_TEMP=$PATH_HTTPD_CONF
|
|
# if [ -f $PATH_HTTPD_MODULES_CONF ]
|
|
# then
|
|
# PATH_HTTPD_CONF_TEMP=$PATH_HTTPD_MODULES_CONF
|
|
# fi
|
|
# if grep -i "# LoadModule php4_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "found commented: activating php4 module!"
|
|
# fi
|
|
# sed "s/# LoadModule php4_module/LoadModule php4_module/" $PATH_HTTPD_CONF_TEMP >$TMP_FILE
|
|
# cat <$TMP_FILE >$PATH_HTTPD_CONF_TEMP
|
|
# else
|
|
# if grep -i "LoadModule php4_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " ok!"
|
|
# fi
|
|
# else
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "php4 missing! please install it or run apacheconfig!!!"
|
|
# fi
|
|
# exit 1
|
|
# fi
|
|
# fi
|
|
# else
|
|
# if [ ""$conf_apache_version = "2" ] ; then
|
|
# echo "Apache2 don't need module checkings..."
|
|
# else
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo $HTTPD_MODULES_CONFIG enable php4_module
|
|
# fi
|
|
# $HTTPD_MODULES_CONFIG enable php4_module
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo $HTTPD_MODULES_CONFIG enable mod_php4
|
|
# fi
|
|
# $HTTPD_MODULES_CONFIG enable mod_php4
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " enabled by $HTTPD_MODULES_CONFIG"
|
|
# fi
|
|
# fi
|
|
# fi
|
|
#
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo -n "Checking for ssl..."
|
|
# fi
|
|
# if [ "$HTTPD_MODULES_CONFIG" = "" ]
|
|
# then
|
|
# if grep -i "# LoadModule ssl_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "found commented: activating ssl module!"
|
|
# fi
|
|
# sed "s/# LoadModule ssl_module/LoadModule ssl_module/" $PATH_HTTPD_CONF_TEMP >$TMP_FILE
|
|
# cat <$TMP_FILE >$PATH_HTTPD_CONF_TEMP
|
|
# else
|
|
# if grep -i "LoadModule ssl_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " ok!"
|
|
# fi
|
|
# else
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "!!! Warning: ssl_module for apache not present !!!"
|
|
# fi
|
|
# fi
|
|
# fi
|
|
# else
|
|
# if [ ""$conf_apache_version = "2" ] ; then
|
|
# echo "Apache 2 don't need module checkings..."
|
|
# else
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo $HTTPD_MODULES_CONFIG enable ssl_module
|
|
# fi
|
|
# $HTTPD_MODULES_CONFIG enable ssl_module
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " enabled by $HTTPD_MODULES_CONFIG"
|
|
# fi
|
|
# fi
|
|
# fi
|
|
#
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo -n "Checking for sql_log..."
|
|
# fi
|
|
# if [ "$HTTPD_MODULES_CONFIG" = "" ]
|
|
# then
|
|
# if grep -i "# LoadModule sql_log_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "found commented: ativating sql_log module!"
|
|
# fi
|
|
# sed "s/# LoadModule sql_log_module/LoadModule sql_log_module/" $PATH_HTTPD_CONF_TEMP >$TMP_FILE
|
|
# cat <$TMP_FILE >$PATH_HTTPD_CONF_TEMP
|
|
# else
|
|
# if grep -i "LoadModule log_sql_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " ok!"
|
|
# fi
|
|
# else
|
|
# if grep -i "# LoadModule log_sql_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo "found commented: ativating sql_log module!"
|
|
# fi
|
|
# sed "s/# LoadModule log_sql_module/LoadModule log_sql_module/" $PATH_HTTPD_CONF_TEMP >$TMP_FILE
|
|
# cat <$TMP_FILE >$PATH_HTTPD_CONF_TEMP
|
|
# else
|
|
# if grep -i "LoadModule sql_log_module" $PATH_HTTPD_CONF_TEMP >/dev/null 2>&1
|
|
# then
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " ok!"
|
|
# fi
|
|
# else
|
|
# echo "!!! sql_log_module for apache not present !!!"
|
|
# echo "please install it or run apacheconfig"
|
|
# echo "or add the following type directive"
|
|
# echo "(matching your path) to httpd.conf:"
|
|
# echo "LoadModule sql_log_module /usr/lib/apache/1.3/mod_log_sql.so (debian)"
|
|
# echo "LoadModule log_sql_module /usr/local/libexec/apache/mod_log_sql.so (bsd)"
|
|
# exit 1
|
|
# fi
|
|
# fi
|
|
# fi
|
|
# fi
|
|
# else
|
|
# if [ ""$conf_apache_version = "2" ] ; then
|
|
# echo "Apache 2 don't need module checkings..."
|
|
# else
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo $HTTPD_MODULES_CONFIG enable log_sql_module
|
|
# echo $HTTPD_MODULES_CONFIG enable log_sql_mysql_module
|
|
# fi
|
|
# $HTTPD_MODULES_CONFIG enable log_sql_module
|
|
# $HTTPD_MODULES_CONFIG enable log_sql_mysql_module
|
|
# $HTTPD_MODULES_CONFIG enable mod_log_sql # just in case
|
|
# if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
# echo " enabled by $HTTPD_MODULES_CONFIG"
|
|
# fi
|
|
# fi
|
|
# fi
|
|
# else
|
|
# echo ""
|
|
# echo "!!! WARNING !!! Tests for the folling apache modules"
|
|
# echo "has NOT been executed because this could crash"
|
|
# echo "the installer. Please verify you have the following"
|
|
# echo "apache modules configured and working:"
|
|
# echo "php4, ssl, rewrite, and sql_log"
|
|
# echo "Note also that current DTC wroks with SBOX and that it"
|
|
# echo "should be compiled and installed on your server to"
|
|
# echo "enable cgi-bin protected and chrooted environment."
|
|
# echo ""
|
|
# fi
|
|
|
|
if [ ""$conf_apache_version = "2" ] ; then
|
|
# Activate mod_rewrite
|
|
if [ -f /etc/apache2/mods-available/rewrite.load ] ; then
|
|
if [ -d /etc/apache2/mods-enabled ] ; then
|
|
if ! [ -e /etc/apache2/mods-enabled/rewrite.load ] ; then
|
|
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
|
|
fi
|
|
fi
|
|
fi
|
|
# Activate mod_ssl
|
|
if [ -f /etc/apache2/mods-available/ssl.load ] ; then
|
|
if [ -d /etc/apache2/mods-enabled ] ; then
|
|
if ! [ -e /etc/apache2/mods-enabled/ssl.load ] ; then
|
|
ln -s ../mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n "Checking for AllowOverride..."
|
|
fi
|
|
if grep "AllowOverride None" $PATH_HTTPD_CONF
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "AllowOverride None -> AllowOverride AuthConfig FileInfo Limit Indexes"
|
|
fi
|
|
sed "s/AllowOverride None/AllowOverride AuthConfig FileInfo Limit Indexes/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "ok!"
|
|
fi
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo -n "Checking for Options None..."
|
|
fi
|
|
if grep "Options None" $PATH_HTTPD_CONF
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Options None -> Options FollowSymLinks"
|
|
fi
|
|
sed "s/Options None/Options FollowSymLinks/" $PATH_HTTPD_CONF >$TMP_FILE
|
|
cat <$TMP_FILE >$PATH_HTTPD_CONF
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "ok!"
|
|
fi
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "=> Adding DTC's directives to httpd.conf end"
|
|
fi
|
|
|
|
# It seems redhat has already the Listen directives...
|
|
# detect whether we already have Listen directives, and comment them out # and replace with Listen 127.0.0.1:80 and 127.0.0.1:443
|
|
# the other IPs will be created in vhosts.conf
|
|
|
|
if grep "^Listen" $PATH_HTTPD_CONF >/dev/null
|
|
then
|
|
perl -i -p -e 's/^Listen/#Listen/' $PATH_HTTPD_CONF
|
|
fi
|
|
if grep "^BindAddress" $PATH_HTTPD_CONF >/dev/null
|
|
then
|
|
perl -i -p -e 's/^BindAddress/#BindAddress/' $PATH_HTTPD_CONF
|
|
fi
|
|
|
|
# if we have a modules.d folder, we need to check to see if there are any Listen or BindAddress there too
|
|
if [ -e /etc/apache*/modules.d/ ]; then
|
|
# first Listen
|
|
for i in `grep -l ^Listen /etc/apache*/modules.d/*`; do
|
|
perl -i -p -e 's/^Listen/#Listen/' $i
|
|
done
|
|
# then BindAddress
|
|
for i in `grep -l ^BindAddress /etc/apache*/modules.d/*`; do
|
|
perl -i -p -e 's/^BindAddress/#BindAddress/' $i
|
|
done
|
|
fi
|
|
|
|
# If the variable is not set prior to calling this sript, then search for it!
|
|
if [ -z "$PATH_APACHE_PID_FILE" ] ; then
|
|
# symlink the PidFile to our dtc location, so we can check it in our scripts
|
|
PATH_APACHE_PID_FILE=`grep ^PidFile $PATH_HTTPD_CONF | cut -f2 -d' '`
|
|
## strip the pid of " characters if they exist
|
|
PATH_APACHE_PID_FILE=${PATH_APACHE_PID_FILE##\"}
|
|
PATH_APACHE_PID_FILE=${PATH_APACHE_PID_FILE%%\"}
|
|
echo "Symlinking $PATH_APACHE_PID_FILE to $PATH_DTC_ETC/apache.pid ..."
|
|
|
|
# in case the specified pid file doesn't exist, try and find it
|
|
if [ ! -e $PATH_APACHE_PID_FILE ]; then
|
|
if [ -e /etc/httpd/$PATH_APACHE_PID_FILE ]; then
|
|
PATH_APACHE_PID_FILE=/etc/httpd/$PATH_APACHE_PID_FILE
|
|
fi
|
|
if [ -e /var/$PATH_APACHE_PID_FILE ]; then
|
|
PATH_APACHE_PID_FILE=/var/$PATH_APACHE_PID_FILE
|
|
fi
|
|
if [ -e /var/run/$PATH_APACHE_PID_FILE ]; then
|
|
PATH_APACHE_PID_FILE=/var/run/$PATH_APACHE_PID_FILE
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
rm -f $PATH_DTC_ETC/apache.pid
|
|
ln -s $PATH_APACHE_PID_FILE $PATH_DTC_ETC/apache.pid
|
|
if [ ! -f $PATH_APACHE_PID_FILE ]; then
|
|
echo "PidFile $PATH_APACHE_PID_FILE didn't exist..."
|
|
if ps -e | grep apache$ > /dev/null; then
|
|
ps -e | grep apache$ | head -n 1 | cut -f1 -d' ' >> $PATH_APACHE_PID_FILE
|
|
fi
|
|
fi
|
|
|
|
# annoyingly redhat has a different Listen for the ssl.conf
|
|
# comment that out too
|
|
if [ ""$UNIX_TYPE = "redhat" ] ;then
|
|
perl -i -p -e 's/^Listen/#Listen/' /etc/httpd/conf.d/ssl.conf
|
|
fi
|
|
|
|
echo "# Configured by DTC v0.12 : please do not touch this line !
|
|
Include $PATH_DTC_ETC/vhosts.conf" >>$PATH_HTTPD_CONF
|
|
|
|
if ! [ ""$conf_omit_dev_mknod = "yes" ] ; then
|
|
echo "Listen 127.0.0.1:80
|
|
Listen 127.0.0.1:443" >>$PATH_HTTPD_CONF
|
|
fi
|
|
|
|
echo "LogSQLLoginInfo localhost dtcdaemons "${MYSQL_DTCDAEMONS_PASS} >>$PATH_HTTPD_CONF
|
|
if [ ""$UNIX_TYPE = "freebsd" ] ;then
|
|
echo "LogSQLSocketFile /tmp/mysqld.sock" >>$PATH_HTTPD_CONF
|
|
else
|
|
echo "LogSQLSocketFile ${MYSQL_DB_SOCKET_PATH}" >>$PATH_HTTPD_CONF
|
|
fi
|
|
echo "LogSQLDatabase apachelogs
|
|
LogSQLCreateTables On
|
|
LogSQLTransferLogFormat IAbhRrSsU
|
|
Alias /dtc404/ $PATH_DTC_ETC/dtc404/
|
|
ErrorDocument 404 /dtc404/404.php
|
|
# End of DTC configuration v0.12 : please don't touch this line !" >>$PATH_HTTPD_CONF
|
|
if [ -f $TMP_FILE ]
|
|
then
|
|
rm -f $TMP_FILE
|
|
fi
|
|
fi
|
|
|
|
if [ -e /etc/apache2/ports.conf ] ; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Founded ports.conf: will remove it's directive"
|
|
fi
|
|
if [ -e /etc/apache2/ports.conf.DTC_backup ] ; then
|
|
echo -n "";
|
|
else
|
|
cp /etc/apache2/ports.conf /etc/apache2/ports.conf.DTC_backup
|
|
fi
|
|
echo "" >/etc/apache2/ports.conf
|
|
fi
|
|
|
|
# Remove all the directives for mod_log_sql that we setup already in the main httpd.conf
|
|
# Removes: "LogSQLLoginInfo", "LogSQLMassVirtualHosting" and "LogSQLTransferLogFormat"
|
|
MOD_SQL_CONF="/etc/apache2/modules.d/42_mod_log_sql.conf"
|
|
if [ -e ${MOD_SQL_CONF} ] ; then
|
|
TMP_FILE=`${MKTEMP} DTC_configure_mod_log_sql.conf.XXXXXX` || exit 1
|
|
grep -v "LogSQLLoginInfo" ${MOD_SQL_CONF} >${TMP_FILE}
|
|
TMP_FILE2=`${MKTEMP} DTC_configure2_mod_log_sql.conf.XXXXXX` || exit 1
|
|
grep -v "LogSQLMassVirtualHosting" ${TMP_FILE} >${TMP_FILE2}
|
|
grep -v "LogSQLTransferLogFormat" ${TMP_FILE2} >${MOD_SQL_CONF}
|
|
rm -f ${TMP_FILE} ${TMP_FILE2}
|
|
fi
|
|
|
|
|
|
|
|
# need to make sure we are loading LOG_SQL in the /etc/conf.d/apache2 if that file exists
|
|
# this is especially true for gentoo
|
|
APACHE2_CONFD="/etc/conf.d/apache2"
|
|
if [ -e ${APACHE2_CONFD} ] ; then
|
|
if grep "Configured by DTC" $APACHE2_CONFD >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$APACHE2_CONFD has been configured before : skiping include inssertion !"
|
|
fi
|
|
else
|
|
if ! [ -f $APACHE2_CONFD.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backing up "$APACHE2_CONFD
|
|
fi
|
|
cp -f "$APACHE2_CONFD" "$APACHE2_CONFD.DTC.backup"
|
|
fi
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install_conf.d_apache2.XXXXXX` || exit 1
|
|
echo "# Configured by DTC $VERSION" >> $TMP_FILE
|
|
echo "# This overrides all APACHE2_OPTS, if you wish to modify these options," >> $TMP_FILE
|
|
echo "# please add the following line to the end of the file" >> $TMP_FILE
|
|
echo "# and replace <your defines> with the obvious" >> $TMP_FILE
|
|
echo "# APACHE2_OPTS=\"\$APACHE2_OPTS <your defines>\"" >> $TMP_FILE
|
|
echo "APACHE2_OPTS=\"-D PHP5 -D SSL -D MOD_LOG -D LOG_SQL\"" >> $TMP_FILE
|
|
echo "# End of DTC configuration $VERSION" >> $TMP_FILE
|
|
|
|
# now to insert it at the end of the actual $APACHE2_CONFD
|
|
cat < $TMP_FILE >>$APACHE2_CONFD
|
|
rm ${TMP_FILE}
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
# Create the ssl certificate if it does not exists (for distribs with /etc/apache only for the moment)
|
|
# Obsolet code: removed!
|
|
#if [ -e "/etc/apache" ]; then
|
|
# if [ -e "/etc/apache/ssl" ]; then
|
|
# mkdir -p /etc/apache/ssl
|
|
# fi
|
|
#fi
|
|
|
|
# copy the template directory from shared to etc, so we can edit it without worry of being purged on each install
|
|
# only copy the directory, if it doesn't already exist in the etc path
|
|
if [ -e "$PATH_DTC_SHARED/shared/template" ]; then
|
|
if [ ! -e "$PATH_DTC_ETC/template" ]; then
|
|
cp -r $PATH_DTC_SHARED/shared/template $PATH_DTC_ETC
|
|
fi
|
|
chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_DTC_ETC/template
|
|
chmod -R 775 $PATH_DTC_ETC/template
|
|
fi
|
|
|
|
# fix the perms for the gfx and imgcache
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_DTC_SHARED/shared/imgcache
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_DTC_SHARED/shared/gfx
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_DTC_SHARED/client/imgcache
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_DTC_SHARED/client/gfx
|
|
|
|
# copy the 404 index.php file if none is found.
|
|
if ! [ -e $conf_hosting_path/$conf_adm_login/$main_domain_name/subdomains/404/html/index.* ]; then
|
|
if [ -e $PATH_DTC_SHARED/shared/404_template/index.php ]; then
|
|
cp $PATH_DTC_SHARED/shared/404_template/index.php $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/404/html/"
|
|
fi
|
|
fi
|
|
|
|
# copy the Error 404 document
|
|
if ! [ -e $conf_hosting_path/$conf_adm_login/$main_domain_name/subdomains/www/html/404.* ]; then
|
|
if [ -e $PATH_DTC_SHARED/shared/404_template/404.php ]; then
|
|
cp $PATH_DTC_SHARED/shared/404_template/404.php $conf_hosting_path"/"$conf_adm_login"/"$main_domain_name"/subdomains/www/html/"
|
|
fi
|
|
fi
|
|
|
|
# copy the expired.php to the destination folder
|
|
if ! [ -e $PATH_DTC_ETC/expired_site ] ; then
|
|
mkdir -p $PATH_DTC_ETC/expired_site
|
|
fi
|
|
if ! [ -e $PATH_DTC_ETC/expired_site/index.* ] ; then
|
|
cp $PATH_DTC_SHARED/shared/404_template/expired.php $PATH_DTC_ETC/expired_site/index.php
|
|
fi
|
|
|
|
# also copy it to the dtc404 directory
|
|
if ! [ -e $PATH_DTC_ETC/dtc404/404.php ]; then
|
|
mkdir -p $PATH_DTC_ETC/dtc404/
|
|
cp $PATH_DTC_SHARED/shared/404_template/404.php $PATH_DTC_ETC/dtc404/
|
|
fi
|
|
|
|
cyrus_auth_php="$PATH_DTC_SHARED/shared/cyrus.php"
|
|
if [ -e /usr/pkg/cyrus/bin/imapd -o -e /usr/lib/cyrus/bin/imapd -o -e /usr/local/cyrus/bin/imapd -o -e /usr/cyrus/bin/imapd ]; then
|
|
|
|
echo "<?
|
|
\$CYRUS = array(
|
|
'HOST' => 'localhost',
|
|
'PORT' => 143,
|
|
'ADMIN' => 'cyrus',
|
|
'PASS' => '${MYSQL_DTCDAEMONS_PASS}'
|
|
);
|
|
\$cyrus_used=1;
|
|
\$cyrus_default_quota=51200;
|
|
?>" > $cyrus_auth_php;
|
|
|
|
else
|
|
|
|
echo "<?
|
|
\$cyrus_used=0;
|
|
?>" > $cyrus_auth_php;
|
|
|
|
fi
|
|
|
|
if [ ""$UNIX_TYPE = "freebsd" -a -f /usr/local/lib/sasl2/sql.so ] ;then
|
|
PATH_AUTH_SMTPD=/usr/local/lib/sasl2/smtpd.conf
|
|
PATH_AUTH_SASLPASSWD=/usr/local/lib/sasl2/saslpasswd.conf
|
|
PATH_AUTH_CYRUS=/usr/local/etc/imapd.conf
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding configuration inside /usr/local/lib/sasl2"
|
|
fi
|
|
if [ -f $PATH_AUTH_SMTP ]; then
|
|
if ! [ -f $PATH_AUTH_SMTP.DTC.backup ]; then
|
|
cp -f $PATH_AUTH_SMTP $PATH_AUTH_SMTP.DTC.backup
|
|
fi
|
|
fi
|
|
echo "pwcheck_method: auxprop
|
|
auxprop_plugin: sql
|
|
sql_engine: mysql
|
|
sql_hostnames: localhost
|
|
sql_user: root
|
|
sql_pass: ${MYSQL_DTCDAEMONS_PASS}
|
|
sql_database: ${conf_mysql_db}
|
|
password_format: crypt
|
|
sql_select: SELECT crypt FROM pop_access WHERE fullemail = '%u@%r'
|
|
sql_update: UPDATE pop_access SET crypt = '%v' WHERE fullemail = '%u@%r'
|
|
sql_verbose: yes" >${PATH_AUTH_SMTPD}
|
|
|
|
if [ -f $PATH_AUTH_SASLPASSWD ]; then
|
|
if ! [ -f $PATH_AUTH_SASLPASSWD.DTC.backup ]; then
|
|
cp -f $PATH_AUTH_SASLPASSWD $PATH_AUTH_SASLPASSWD.DTC.backup
|
|
fi
|
|
fi
|
|
|
|
cp -f $PATH_AUTH_SMTP $PATH_AUTH_SASLPASSWD
|
|
|
|
if [ -f $PATH_AUTH_CYRUS ]; then
|
|
if ! [ -f $PATH_AUTH_CYRUS.DTC.backup ]; then
|
|
cp -f $PATH_AUTH_CYRUS $PATH_AUTH_CYRUS.DTC.backup
|
|
fi
|
|
fi
|
|
|
|
echo "pwcheck_method: auxprop
|
|
auxprop_plugin: sql
|
|
|
|
sasl_sql_engine: mysql
|
|
sasl_sql_hostnames: localhost
|
|
sasl_sql_user: root
|
|
sasl_sql_pass: ${MYSQL_DTCDAEMONS_PASS}
|
|
sasl_sql_database: ${conf_mysql_db}
|
|
sasl_password_format: crypt
|
|
sasl_sql_select: SELECT crypt FROM pop_access WHERE fullemail = '%u@%r'
|
|
sasl_sql_update: UPDATE pop_access SET crypt = '%v' WHERE fullemail = '%u@%r'
|
|
sasl_sql_verbose: yes" >>$PATH_AUTH_CYRUS
|
|
|
|
else
|
|
|
|
PATH_PAMD_SMTP=/etc/pam.d/smtp
|
|
PATH_PAMD_IMAP=/etc/pam.d/imap
|
|
PATH_PAMD_SIEVE=/etc/pam.d/sieve
|
|
PATH_PAMD_POP=/etc/pam.d/pop
|
|
if [ -e /etc/pam.d/ ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding configuration inside "$PATH_PAMD_SMTP
|
|
fi
|
|
if [ -f $PATH_PAMD_SMTP ]; then
|
|
if ! [ -f $PATH_PAMD_SMTP.DTC.backup ]; then
|
|
cp -f $PATH_PAMD_SMTP $PATH_PAMD_SMTP.DTC.backup
|
|
fi
|
|
fi
|
|
touch $PATH_PAMD_SMTP
|
|
echo "auth required pam_mysql.so user=dtcdaemons passwd="${MYSQL_DTCDAEMONS_PASS}" db="$conf_mysql_db" table=pop_access usercolumn=id passwdcolumn=password crypt=0" >$PATH_PAMD_SMTP
|
|
if [ ""$conf_use_cyrus = "true" ]; then
|
|
echo "account sufficient pam_mysql.so user=dtcdaemons passwd="${MYSQL_DTCDAEMONS_PASS}" host=localhost db="$conf_mysql_db" table=pop_access usercolumn=fullemail passwdcolumn=crypt crypt=1
|
|
|
|
auth required pam_mysql.so user=dtcdaemons passwd="${MYSQL_DTCDAEMONS_PASS}" host=localhost db="$conf_mysql_db" table=pop_access usercolumn=fullemail passwdcolumn=crypt crypt=1" >$PATH_PAMD_SMTP
|
|
|
|
if [ -f $PATH_PAMD_IMAP ]; then
|
|
if ! [ -f $PATH_PAMD_IMAP.DTC.backup ]; then
|
|
cp -f $PATH_PAMD_IMAP $PATH_PAMD_IMAP.DTC.backup
|
|
fi
|
|
fi
|
|
cp -f $PATH_PAMD_SMTP $PATH_PAMD_IMAP
|
|
|
|
if [ -f $PATH_PAMD_SIEVE ]; then
|
|
if ! [ -f $PATH_PAMD_SIEVE.DTC.backup ]; then
|
|
cp -f $PATH_PAMD_SIEVE $PATH_PAMD_SIEVE.DTC.backup
|
|
fi
|
|
fi
|
|
cp -f $PATH_PAMD_SMTP $PATH_PAMD_SIEVE
|
|
|
|
if [ -f $PATH_PAMD_POP ]; then
|
|
if ! [ -f $PATH_PAMD_POP.DTC.backup ]; then
|
|
cp -f $PATH_PAMD_POP $PATH_PAMD_POP.DTC.backup
|
|
fi
|
|
fi
|
|
cp -f $PATH_PAMD_SMTP $PATH_PAMD_POP
|
|
fi
|
|
# if grep "Configured by DTC" $PATH_PAMD_SMTP
|
|
# echo $PATH_PAMD_SMTP" has been configured before: skiping include insertion!"
|
|
# else
|
|
# echo "Including configuration in "$PATH_PAMD_SMTP
|
|
# fi
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# include $PATH_DTC_ETC/named.zones in $PATH_NAMED_CONF
|
|
#
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding inclusion to named.conf"
|
|
fi
|
|
# need to detect named chroot for gentoo
|
|
NAMED_CHROOT=
|
|
if [ -e /etc/conf.d/named ]; then
|
|
NAMED_CHROOT=`. /etc/conf.d/named; echo -n $CHROOT`
|
|
echo "named is configured for chroot at $NAMED_CHROOT"
|
|
fi
|
|
# check to see if NAMED_CHROOT is /
|
|
# if so, then we need not do all this hooha below
|
|
if [ ""$NAMED_CHROOT = "/" ]; then
|
|
NAMED_CHROOT=
|
|
fi
|
|
|
|
if [ -n ""$NAMED_CHROOT ]; then
|
|
if [ -e ""$NAMED_CHROOT ]; then
|
|
mkdir -p $NAMED_CHROOT/$PATH_DTC_ETC/zones
|
|
mkdir -p $NAMED_CHROOT/$PATH_DTC_ETC/slave_zones
|
|
touch $NAMED_CHROOT/$PATH_DTC_ETC/named.conf
|
|
if [ -e $PATH_DTC_ETC/named.conf ]; then
|
|
if [ ! -L $PATH_DTC_ETC/named.conf -a ! -e $PATH_DTC_ETC/named.conf.moved ] ; then
|
|
mv $PATH_DTC_ETC/named.conf $PATH_DTC_ETC/named.conf.moved
|
|
fi
|
|
fi
|
|
if [ -e $PATH_DTC_ETC/zones ]; then
|
|
if [ ! -L $PATH_DTC_ETC/zones -a ! -e $PATH_DTC_ETC/zones.moved ]; then
|
|
mv $PATH_DTC_ETC/zones $PATH_DTC_ETC/zones.moved
|
|
fi
|
|
fi
|
|
if [ -e $PATH_DTC_ETC/slave_zones ]; then
|
|
if [ ! -L $PATH_DTC_ETC/slave_zones -a ! -e $PATH_DTC_ETC/slave_zones.moved ]; then
|
|
mv $PATH_DTC_ETC/slave_zones $PATH_DTC_ETC/slave_zones.moved
|
|
fi
|
|
fi
|
|
if [ ! -L $PATH_DTC_ETC/named.conf ]; then
|
|
ln -s $NAMED_CHROOT/$PATH_DTC_ETC/named.conf $PATH_DTC_ETC/named.conf
|
|
fi
|
|
if [ ! -L $PATH_DTC_ETC/zones ]; then
|
|
ln -s $NAMED_CHROOT/$PATH_DTC_ETC/zones $PATH_DTC_ETC/zones
|
|
fi
|
|
if [ ! -L $PATH_DTC_ETC/slave_zones ]; then
|
|
ln -s $NAMED_CHROOT/$PATH_DTC_ETC/slave_zones $PATH_DTC_ETC/slave_zones
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if grep "Configured by DTC" $PATH_NAMED_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "named.conf has been configured before : skiping include insertion !"
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_NAMED_CONF.DTC.backup ]
|
|
then
|
|
cp -f $PATH_NAMED_CONF $PATH_NAMED_CONF.DTC.backup
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.named.conf.XXXXXX` || exit 1
|
|
echo "// Configured by DTC v0.10 : please don't touch this line !" > $TMP_FILE
|
|
echo "include \"$PATH_DTC_ETC/named.conf\";" >> $TMP_FILE
|
|
touch $PATH_DTC_ETC/named.conf
|
|
cat < $TMP_FILE >>$PATH_NAMED_CONF
|
|
if [ -e $TMP_FILE ]; then
|
|
rm -f $TMP_FILE
|
|
fi
|
|
fi
|
|
|
|
# only try and do qmail stuff if we have qmail installed! (check the control directory)
|
|
if [ -e "$PATH_QMAIL_CTRL" ] ;then
|
|
#
|
|
# Install the qmail links in the /etc/qmail
|
|
#
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Linking qmail control files to DTC generated files"
|
|
fi
|
|
if ! [ -e $PATH_QMAIL_CTRL/rcpthosts.DTC.backup ]
|
|
then
|
|
cp -f $PATH_QMAIL_CTRL/rcpthosts $PATH_QMAIL_CTRL/rcpthosts.DTC.backup
|
|
fi
|
|
rm -f $PATH_QMAIL_CTRL/rcpthosts
|
|
touch $PATH_DTC_ETC/rcpthosts
|
|
ln -s $PATH_DTC_ETC/rcpthosts $PATH_QMAIL_CTRL/rcpthosts
|
|
|
|
touch $PATH_QMAIL_CTRL/virtualdomains
|
|
if ! [ -e $PATH_QMAIL_CTRL/virtualdomains.DTC.backup ]
|
|
then
|
|
cp -f $PATH_QMAIL_CTRL/virtualdomains $PATH_QMAIL_CTRL/virtualdomains.DTC.backup
|
|
fi
|
|
rm -f $PATH_QMAIL_CTRL/virtualdomains
|
|
touch $PATH_DTC_ETC/virtualdomains
|
|
ln -s $PATH_DTC_ETC/virtualdomains $PATH_QMAIL_CTRL/virtualdomains
|
|
|
|
if ! [ -e /var/qmail/users/assign.DTC.backup ]
|
|
then
|
|
if [ -e /var/qmail/users/assign ]; then
|
|
cp -f /var/qmail/users/assign /var/qmail/users/assign.DTC.backup
|
|
fi
|
|
fi
|
|
rm -f /var/qmail/users/assign
|
|
touch $PATH_DTC_ETC/assign
|
|
if ! [ -e /var/qmail/users ]; then
|
|
mkdir -p /var/qmail/users
|
|
fi
|
|
ln -s $PATH_DTC_ETC/assign /var/qmail/users/assign
|
|
|
|
# Complete mistake ! Please forgive me !
|
|
#
|
|
#if ! [ -f $PATH_QMAIL_CTRL/locals.DTC.backup ]
|
|
#then
|
|
# touch $PATH_QMAIL_CTRL/locals
|
|
# cp -f $PATH_QMAIL_CTRL/locals $PATH_QMAIL_CTRL/locals.DTC.backup
|
|
#fi
|
|
#rm -f $PATH_QMAIL_CTRL/locals
|
|
#touch $PATH_DTC_ETC/rcpthosts
|
|
#ln -s $PATH_DTC_ETC/rcpthosts $PATH_QMAIL_CTRL/locals
|
|
|
|
touch /etc/poppasswd
|
|
if ! [ -e /etc/poppasswd.DTC.backup ]
|
|
then
|
|
cp -f /etc/poppasswd /etc/poppasswd.DTC.backup
|
|
fi
|
|
rm -f /etc/poppasswd
|
|
touch $PATH_DTC_ETC/poppasswd
|
|
ln -s $PATH_DTC_ETC/poppasswd /etc/poppasswd
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Could not found qmail directory: skipping"
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Make some changes to the amavisd-new configuration to allow clamav to work with it cleanly
|
|
#
|
|
|
|
# make sure the amavisd configuration has 'amavis' user and group
|
|
|
|
if [ -n ""$PATH_AMAVISD_CONF ]; then
|
|
PATH_AMAVISD_ETC=`dirname $PATH_AMAVISD_CONF`
|
|
fi
|
|
AMAVISD_CONFD=0
|
|
# CLAMD_CONF is the file we modify that has the clamd.ctl
|
|
AMAVIS_CLAMD_CONF=$PATH_AMAVISD_CONF
|
|
# if there is no amavisd conf, but there is a conf.d, create a 99-dtc file
|
|
if [ ! -f "$PATH_AMAVISD_CONF" -a -e $PATH_AMAVISD_ETC/conf.d ]; then
|
|
touch $PATH_AMAVISD_ETC/conf.d/99-dtc
|
|
PATH_AMAVISD_CONF=$PATH_AMAVISD_ETC/conf.d/99-dtc
|
|
AMAVISD_CONFD=1
|
|
AMAVIS_CLAMD_CONF=`grep -l clamd.ctl $PATH_AMAVISD_ETC/conf.d/*`
|
|
fi
|
|
|
|
if [ -f "$PATH_AMAVISD_CONF" ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "===> Checking user and group configuration for amavisd..."
|
|
fi
|
|
|
|
# make sure our users exist for amavis
|
|
set +e
|
|
# turn back on error handling, these users probably exist already
|
|
$GROUP_ADD_CMD amavis > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Group amavis already exists..."
|
|
fi
|
|
fi
|
|
$USER_ADD_CMD -g amavis amavis > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "User amavis already exists..."
|
|
fi
|
|
fi
|
|
$PASSWD_CMD -l amavis > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Change password failed for amavis user"
|
|
fi
|
|
fi
|
|
set -e
|
|
|
|
if grep "Configured by DTC" "$PATH_AMAVISD_CONF" >/dev/null; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "$PATH_AMAVISD_CONF already configured..."
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting configuration into $PATH_AMAVISD_CONF"
|
|
fi
|
|
|
|
# strip the 1; from the end of the config file
|
|
perl -i -p -e 's/^1;[^\n]*\n//' $PATH_AMAVISD_CONF
|
|
|
|
# fix the clamd ctl file to point to /var/run/clamav/clamd.ctl
|
|
perl -i -p -e 's/\"i\/.*?\/clamd.ctl\"/\"\/var\/run\/clamav\/clamd.ctl\"/' $AMAVIS_CLAMD_CONF
|
|
|
|
mkdir -p /var/run/clamav/
|
|
chown -R clamav:clamav /var/run/clamav
|
|
|
|
TMP_FILE=`${MKTEMP} dtc_install.amavisd.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC $VERSION" >> $TMP_FILE
|
|
echo "\$daemon_user = 'amavis';" >> $TMP_FILE
|
|
echo "\$daemon_group = 'amavis';" >> $TMP_FILE
|
|
echo "\$final_virus_destiny = D_DISCARD;" >> $TMP_FILE
|
|
echo "\$final_spam_destiny = D_PASS;" >> $TMP_FILE
|
|
echo "\$final_banned_destiny = D_PASS;" >> $TMP_FILE
|
|
echo "\$final_bad_header_destiny = D_PASS;" >> $TMP_FILE
|
|
echo "\$warnvirussender = 0;" >> $TMP_FILE
|
|
echo "\$warnspamsender = 0;" >> $TMP_FILE
|
|
echo " # kill level defaults " >> $TMP_FILE
|
|
|
|
echo "\$sa_tag_level_deflt = 2.0;" >> $TMP_FILE
|
|
echo "\$sa_tag2_level_deflt = 6.3;" >> $TMP_FILE
|
|
echo "\$sa_kill_level_deflt = \$sa_tag2_level_deflt;" >> $TMP_FILE
|
|
echo "\$sa_dsn_cutoff_level = 50;" >> $TMP_FILE
|
|
|
|
echo "\$sa_mail_body_size_limit = 150*1024;" >> $TMP_FILE
|
|
echo "# The following line will read the local domains as generated by DTC, amavisd will need to be restarted for new domains..." >> $TMP_FILE
|
|
echo "read_hash(\\%local_domains, '$PATH_DTC_ETC/local_domains');" >> $TMP_FILE
|
|
|
|
# if we have a list of postfix relay domains, we may as well check them to virii etc...
|
|
# If you enable this, it will tag ***SPAM*** twice... not very good looking :)
|
|
# if [ -e "$PATH_DTC_ETC/postfix_relay_domains" ]; then
|
|
# echo "my %tmp_relay_domains;" >> $TMP_FILE
|
|
# echo "read_hash(\\%tmp_relay_domains, '$PATH_DTC_ETC/postfix_relay_domains');" >> $TMP_FILE
|
|
# echo "# now merge the two hashes" >> $TMP_FILE
|
|
# echo "@local_domains{keys %tmp_relay_domains} = values %tmp_relay_domains;" >> $TMP_FILE
|
|
# fi
|
|
|
|
echo "# Make sure anti-virus and spam are enabled
|
|
@bypass_virus_checks_acl = [ 1 ];
|
|
@bypass_spam_checks_acl = [ 1 ];
|
|
|
|
# need to check to see if the variables exist, and set them properly if they do
|
|
{
|
|
no strict 'refs';
|
|
my \$ref=\"bypass_virus_checks_maps\";
|
|
if (defined @\$ref)
|
|
{
|
|
@\$ref = (
|
|
\\%bypass_virus_checks, \\@bypass_virus_checks_acl, \\\$bypass_virus_checks_re);
|
|
}
|
|
\$ref=\"bypass_spam_checks_maps\";
|
|
if (defined @\$ref)
|
|
{
|
|
@\$ref = (
|
|
\\%bypass_spam_checks, \\@bypass_spam_checks_acl, \\\$bypass_spam_checks_re);
|
|
}
|
|
}
|
|
|
|
" >> $TMP_FILE
|
|
|
|
echo "# End of DTC configuration $VERSION" >> $TMP_FILE
|
|
echo "1; # insure a defined return" >> $TMP_FILE
|
|
|
|
# now to insert it at the end of the actual amavisd.conf
|
|
cat < $TMP_FILE >>$PATH_AMAVISD_CONF
|
|
rm ${TMP_FILE}
|
|
fi
|
|
fi
|
|
|
|
if [ -f "$PATH_CLAMAV_CONF" ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "===> Checking user and group configuration for clamav..."
|
|
fi
|
|
|
|
# make sure our users exist for amavis
|
|
set +e
|
|
# turn back on error handling, these users probably exist already
|
|
$GROUP_ADD_CMD clamav > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Group clamav already exists..."
|
|
fi
|
|
fi
|
|
$USER_ADD_CMD -g clamav clamav > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "User clamav already exists..."
|
|
fi
|
|
fi
|
|
$PASSWD_CMD -l clamav > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Change password failed for clamav user"
|
|
fi
|
|
fi
|
|
# now add amavisd to the clamav group and vice versa
|
|
$USER_MOD_CMD -G clamav,amavis clamav > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Change group failed for clamav user"
|
|
fi
|
|
fi
|
|
$USER_MOD_CMD -G amavis,clamav amavis > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "Change group failed for amavis user"
|
|
fi
|
|
fi
|
|
# need to add the following to the config file:
|
|
# AllowSupplementaryGroups
|
|
# LocalSocket /var/run/clamav/clamd.ctl
|
|
|
|
# need to fix a problem with a previous version
|
|
|
|
if grep "^1;" "$PATH_CLAMAV_CONF" > /dev/null; then
|
|
perl -i -p -e 's/^1;[^\n]*\n//' $PATH_CLAMAV_CONF
|
|
fi
|
|
|
|
if grep "Configured by DTC" "$PATH_CLAMAV_CONF" >/dev/null; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ]; then
|
|
echo "$PATH_CLAMAV_CONF already configured..."
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting configuration into $PATH_CLAMAV_CONF"
|
|
fi
|
|
|
|
TMP_FILE=`${MKTEMP} dtc_install.clamav.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC $VERSION" >> $TMP_FILE
|
|
echo "AllowSupplementaryGroups" >> $TMP_FILE
|
|
echo "LocalSocket /var/run/clamav/clamd.ctl" >> $TMP_FILE
|
|
|
|
echo "# End of DTC configuration $VERSION" >> $TMP_FILE
|
|
|
|
# now to insert it at the end of the actual clamav.conf
|
|
cat < $TMP_FILE >>$PATH_CLAMAV_CONF
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Modify the cyrus imapd.conf
|
|
#
|
|
|
|
if [ -f "$PATH_CYRUS_CONF" ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> modifying cyrus config"
|
|
fi
|
|
if grep "Configured by DTC" "$PATH_CYRUS_CONF" >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Cyrus imapd.conf has been configured before"
|
|
fi
|
|
else
|
|
if grep "unixhierarchysep: no" "$PATH_CYRUS_CONF" >/dev/null; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Changing unixhierarchysep from no to yes"
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.imapd.conf.XXXXXX` || exit 1
|
|
sed "s/unixhierarchysep: no/unixhierarchysep: yes/" "$PATH_CYRUS_CONF" >$TMP_FILE
|
|
cat <$TMP_FILE >"$PATH_CYRUS_CONF"
|
|
rm $TMP_FILE
|
|
fi
|
|
if grep "sasl_pwcheck_method: auxprop" "$PATH_CYRUS_CONF" >/dev/null; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Changing sasl_pwcheck_method from auxprop to saslauthd"
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.imapd.conf.XXXXXX` || exit 1
|
|
sed "s/sasl_pwcheck_method: auxprop/sasl_pwcheck_method: saslauthd/" "$PATH_CYRUS_CONF" >$TMP_FILE
|
|
cat <$TMP_FILE >"$PATH_CYRUS_CONF"
|
|
rm $TMP_FILE
|
|
fi
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside $PATH_CYRUS_CONF"
|
|
fi
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.imapd.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.20 : Please don't touch this line !" > $TMP_FILE
|
|
echo "virtdomains: yes
|
|
quotawarn: 90
|
|
admins: cyrus
|
|
sasl_mech_list: PLAIN LOGIN" >> $TMP_FILE
|
|
echo "# End of DTC configuration v0.20 : Please don't touch this line !" >> $TMP_FILE
|
|
# now to insert it at the end of the actual imapd.conf
|
|
cat < $TMP_FILE >>$PATH_CYRUS_CONF
|
|
rm $TMP_FILE
|
|
fi
|
|
else
|
|
echo "$PATH_CYRUS_CONF NOT FOUND"
|
|
fi
|
|
|
|
if [ -f "$PATH_SASL_START_CONF" ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> modifying saslauthd startup parameters"
|
|
fi
|
|
if grep "Configured by DTC" $PATH_SASL_START_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_SASL_START_CONF has been configured before..."
|
|
fi
|
|
else
|
|
TMP_FILE=`${MKTEMP} DTC_install.saslauthd.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.20 : Please don't touch this line !" > $TMP_FILE
|
|
echo "START=yes
|
|
PARAMS=\"-r -c \"" >> $TMP_FILE
|
|
echo "# End of DTC configuration v0.20 : Please don't touch this line !" >> $TMP_FILE
|
|
# now to insert it at the end of the actual saslauthd startup file
|
|
cat < $TMP_FILE >>$PATH_SASL_START_CONF
|
|
rm $TMP_FILE
|
|
fi
|
|
if [ -f $PATH_SASL_STARTUP ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "modifying saslatuhd startup file"
|
|
fi
|
|
# create the direcotry for postfix to access SASL socket
|
|
mkdir -p $PATH_SASL_SOCKET
|
|
|
|
# get the md5sum of the file, if it's original do the change
|
|
# else we have a problem and report it to do the change manualy
|
|
sasl_start_md5sum=`md5sum $PATH_SASL_STARTUP|cut -d " " -f1`
|
|
# ### CL find a better place for this !
|
|
sasl_orginal_m5="6307086733ad29bbd57f81b6c38334a1";
|
|
if [ ""$sasl_orginal_m5 = "$sasl_start_md5sum" ]
|
|
then
|
|
# ok file is original so we can "patch" it.
|
|
patch $PATH_SASL_STARTUP <$PATH_DTC_ADMIN/patch_saslatuhd_startup
|
|
else
|
|
echo "Can not modify the saslauthd startupfile"
|
|
echo "Please edit $PATH_SASL_STARTUP by hand and add folowing after startup:"
|
|
echo "rm -f /var/spool/postfix/var/run/saslauthd/mux
|
|
ln /var/run/saslauthd/mux /var/spool/postfix/var/run/saslauthd/mux"
|
|
echo "for more informations contact DTC development and DTC forums"
|
|
fi
|
|
fi
|
|
else
|
|
if [ ""$conf_use_cyrus = "true" ]; then
|
|
echo "Big Problem: Cyrus install selected bo no saslauthd startup file";
|
|
echo "Workaround: make saslauth start with -r -c -a pam";
|
|
fi
|
|
fi
|
|
#
|
|
# Modify the postfix main.cf to include virtual delivery options
|
|
#
|
|
|
|
# Declare this makes the test when appenning the configuration for SASL
|
|
# works if you don't have SASL
|
|
|
|
SASLTMP_FILE="/thisfiledoesnotexists"
|
|
if [ -f "$PATH_POSTFIX_CONF" ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Linking postfix control files to DTC generated files"
|
|
fi
|
|
touch $PATH_DTC_ETC/postfix_virtual.db
|
|
touch $PATH_DTC_ETC/postfix_aliases.db
|
|
# fix default /etc/aliases
|
|
touch /etc/aliases
|
|
newaliases
|
|
touch $PATH_DTC_ETC/postfix_relay_recipients.db
|
|
touch $PATH_DTC_ETC/postfix_vmailbox.db
|
|
touch $PATH_DTC_ETC/postfix_virtual_uid_mapping.db
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_DTC_ETC/postfix_*.db
|
|
if grep "Configured by DTC" "$PATH_POSTFIX_CONF" >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Postfix main.cf has been configured before, not adding virtual mailbox options"
|
|
fi
|
|
else
|
|
|
|
if grep "recipient_delimiter = +" "$PATH_POSTFIX_ETC/main.cf" >/dev/null; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Changing recipient delimiter from + to -"
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.main.cf.XXXXXX` || exit 1
|
|
sed "s/recipient_delimiter = +/recipient_delimiter = -/" "$PATH_POSTFIX_ETC/main.cf" >$TMP_FILE
|
|
cat <$TMP_FILE >"$PATH_POSTFIX_ETC/main.cf"
|
|
rm $TMP_FILE
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside $PATH_POSTFIX_CONF"
|
|
fi
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.postfix_main.cf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.12 : Please don't touch this line !" > $TMP_FILE
|
|
# CL: this is general config, for courier and cyrus
|
|
# for mailname to be mx.$main_domain_name
|
|
echo "mx.$main_domain_name" > /etc/mailname
|
|
echo "# DTC virtual configuration
|
|
myhostname = mx.$main_domain_name
|
|
# disable the following functionality by default (otherwise can't match subdomains correctly)
|
|
parent_domain_matches_subdomains=
|
|
|
|
# disable mailbox size limit by default (user can add to postfix_config_snippets)
|
|
mailbox_size_limit = 0
|
|
|
|
# stuff for amavis
|
|
content_filter=smtp-amavis:[127.0.0.1]:10024
|
|
|
|
virtual_mailbox_domains = hash:$PATH_DTC_ETC/postfix_virtual_mailbox_domains
|
|
" >> $TMP_FILE
|
|
|
|
if [ ""$conf_use_cyrus = "true" ]; then
|
|
echo "virtual_transport = cyrus
|
|
mailbox_transport = cyrus
|
|
# local_recipient_maps = $alias_maps, ... ### CL ToDo! " >> $TMP_FILE
|
|
else
|
|
# courier/postfix only!
|
|
echo "virtual_mailbox_base = /
|
|
virtual_mailbox_maps = hash:$PATH_DTC_ETC/postfix_vmailbox
|
|
virtual_minimum_uid = 98
|
|
virtual_uid_maps = static:$nobodygid
|
|
virtual_gid_maps = static:$nobodygid
|
|
virtual_uid_maps = hash:$PATH_DTC_ETC/postfix_virtual_uid_mapping" >> $TMP_FILE
|
|
fi
|
|
# CL continue with global part
|
|
echo "virtual_alias_maps = hash:$PATH_DTC_ETC/postfix_virtual
|
|
alias_maps = hash:/etc/aliases, hash:$PATH_DTC_ETC/postfix_aliases
|
|
relay_domains = $PATH_DTC_ETC/postfix_relay_domains
|
|
relay_recipient_maps = hash:$PATH_DTC_ETC/postfix_relay_recipients " >> $TMP_FILE
|
|
if [ -n $conf_dnsbl_list ]; then
|
|
IFS=,
|
|
for i in $conf_dnsbl_list; do
|
|
dnsbl_list="$dnsbl_list reject_rbl_client $i,"
|
|
done
|
|
unset IFS
|
|
fi
|
|
|
|
if [ "$PATH_SASL_PASSWD2" = "" ]; then
|
|
echo -n ""
|
|
elif [ -f $PATH_SASL_PASSWD2 ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Found sasl2passwd at $PATH_SASL_PASSWD2"
|
|
fi
|
|
|
|
mkdir -p $PATH_POSTFIX_ETC/sasl
|
|
|
|
if [ -e $PATH_POSTFIX_ETC/sasl/smtpd.conf ]; then
|
|
if ! [ -e $PATH_POSTFIX_ETC/sasl/smtpd.conf.dtcbackup ]; then
|
|
cp $PATH_POSTFIX_ETC/sasl/smtpd.conf $PATH_POSTFIX_ETC/sasl/smtpd.conf.dtcbackup
|
|
fi
|
|
fi
|
|
|
|
# prepare some sasldb2 files, so that our script latter can fix them
|
|
|
|
if [ -e /var/spool/postfix/etc ]; then
|
|
touch /var/spool/postfix/etc/sasldb2
|
|
chown postfix:${CONF_DTC_SYSTEM_GROUPNAME} /var/spool/postfix/etc/sasldb2
|
|
chmod 664 /var/spool/postfix/etc/sasldb2
|
|
if [ ! -e $PATH_DTC_ETC/sasldb2 ]; then
|
|
cp /var/spool/postfix/etc/sasldb2 $PATH_DTC_ETC/sasldb2
|
|
fi
|
|
else
|
|
if [ -d /etc/sasl2 ]; then
|
|
touch /etc/sasl2/sasldb2
|
|
chown postfix:${CONF_DTC_SYSTEM_GROUPNAME} /etc/sasl2/sasldb2
|
|
chmod 664 /etc/sasl2/sasldb2
|
|
else
|
|
touch /etc/sasldb2
|
|
chown postfix:${CONF_DTC_SYSTEM_GROUPNAME} /etc/sasldb2
|
|
chmod 664 /etc/sasldb2
|
|
fi
|
|
if [ ! -e $PATH_DTC_ETC/sasldb2 ]; then
|
|
if [ -d /etc/sasl2 ]; then
|
|
cp /etc/sasl2/sasldb2 $PATH_DTC_ETC/sasldb2
|
|
else
|
|
cp /etc/sasldb2 $PATH_DTC_ETC/sasldb2
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
SASLTMP_FILE=`${MKTEMP} DTC_install.postfix_sasl.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.15 : Please don't touch this line !" > ""$SASLTMP_FILE
|
|
# CL: for cyrus use saslauthd instead of auxprop!
|
|
if [ ""$conf_use_cyrus = "true" ]; then
|
|
echo "pwcheck_method: saslauthd
|
|
mech_list: login plain" >> $SASLTMP_FILE
|
|
else
|
|
echo "pwcheck_method: auxprop
|
|
mech_list: plain login digest-md5 cram-md5" >> $SASLTMP_FILE
|
|
fi
|
|
echo "# End of DTC configuration v0.15 : please don't touch this line !" >> $SASLTMP_FILE
|
|
echo "smtpd_recipient_restrictions = permit_mynetworks,
|
|
permit_sasl_authenticated,
|
|
$dnsbl_list
|
|
reject_unauth_destination" >> $TMP_FILE
|
|
echo "smtp_sasl_auth_enable = no
|
|
smtpd_sasl_security_options = noanonymous
|
|
smtpd_sasl_local_domain = /etc/mailname
|
|
smtpd_sasl_auth_enable = yes
|
|
smtpd_tls_auth_only = no
|
|
" >> $TMP_FILE
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "No saslpasswd2 found"
|
|
fi
|
|
echo "smtpd_recipient_restrictions = permit_mynetworks,
|
|
$dnsbl_list
|
|
reject_unauth_destination" >> $TMP_FILE
|
|
fi
|
|
# this adds supports for "config" snippets to append to main.cf
|
|
if [ -f $PATH_DTC_ETC/postfix_config_snippets ]; then
|
|
cat $PATH_DTC_ETC/postfix_config_snippets >> $TMP_FILE
|
|
else
|
|
echo "# /usr/share/dtc/etc/postfix_config_snippets
|
|
# this file is appended to the postfix configure, in case you need to override some configure parameters in the postfix main.cf" > $PATH_DTC_ETC/postfix_config_snippets
|
|
fi
|
|
|
|
|
|
if grep "Configured by DTC 0.21" "$PATH_POSTFIX_ETC/master.cf" >/dev/null; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Postfix master.cf has been configured before, not adding maildrop options"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside $PATH_POSTFIX_ETC/master.cf"
|
|
fi
|
|
|
|
TMP_FILE2=`${MKTEMP} DTC_install.postfix_master.cf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.17 : Please don't touch this line !" > $TMP_FILE2
|
|
# if we have maildrop, we should use it!
|
|
if [ -n ""$PATH_USERDB_BIN -a -f "$PATH_USERDB_BIN" -a -n ""$PATH_MAILDROP_BIN -a -f "$PATH_MAILDROP_BIN" ]; then
|
|
echo "maildrop unix - n n - - pipe
|
|
flags=DRhu user=${CONF_DTC_SYSTEM_USERNAME} argv=$PATH_MAILDROP_BIN -d \${user}@\${nexthop} \${extension} \${recipient} \${user} \${nexthop}
|
|
" >> $TMP_FILE2
|
|
fi
|
|
# CL do we use cyrus?
|
|
if [ ""$conf_use_cyrus = "true" ]; then
|
|
echo "cyrus unix - n n - - pipe
|
|
flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m \${extension} \${recipient}" >> $TMP_FILE2
|
|
fi
|
|
|
|
# Insert our amavis stuff inside the master.cf
|
|
echo "# amavisd-new
|
|
smtp-amavis unix - - - - 2 smtp
|
|
-o smtp_data_done_timeout=1200
|
|
-o smtp_send_xforward_command=yes
|
|
-o disable_dns_lookups=yes
|
|
-o max_use=20
|
|
|
|
127.0.0.1:10025 inet n - - - - smtpd
|
|
-o content_filter=
|
|
-o local_recipient_maps=
|
|
-o relay_recipient_maps=
|
|
-o smtpd_restriction_classes=
|
|
-o smtpd_client_restrictions=
|
|
-o smtpd_helo_restrictions=
|
|
-o smtpd_sender_restrictions=
|
|
-o smtpd_recipient_restrictions=permit_mynetworks,reject
|
|
-o mynetworks=127.0.0.0/8
|
|
-o strict_rfc821_envelopes=yes
|
|
-o smtpd_error_sleep_time=0
|
|
-o smtpd_soft_error_limit=1001
|
|
-o smtpd_hard_error_limit=1000
|
|
-o smtpd_client_connection_count_limit=0
|
|
-o smtpd_client_connection_rate_limit=0
|
|
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
|
|
" >> $TMP_FILE2
|
|
echo "# End of DTC configuration v0.17 : please don't touch this line !" >> $TMP_FILE2
|
|
cat < $TMP_FILE2 >>"$PATH_POSTFIX_ETC/master.cf"
|
|
rm $TMP_FILE2
|
|
fi
|
|
# if we have maildrop, we should use it!
|
|
if [ -n ""$PATH_USERDB_BIN -a -f "$PATH_USERDB_BIN" -a -n ""$PATH_MAILDROP_BIN -a -f "$PATH_MAILDROP_BIN" ]; then
|
|
echo "virtual_transport = maildrop" >> $TMP_FILE
|
|
echo "## Set to 1 because Maildrop only delivers one message at a time.
|
|
maildrop_destination_recipient_limit = 1" >> $TMP_FILE
|
|
fi
|
|
|
|
echo "# End of DTC configuration v0.12 : please don't touch this line !" >> $TMP_FILE
|
|
|
|
# now to insert it at the end of the actual main.cf
|
|
cat < $TMP_FILE >>$PATH_POSTFIX_CONF
|
|
rm $TMP_FILE
|
|
# over-write the configuration for SASL
|
|
if [ -e $SASLTMP_FILE ]; then
|
|
cat $SASLTMP_FILE > $PATH_POSTFIX_ETC/sasl/smtpd.conf
|
|
rm $SASLTMP_FILE
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# prepare mlmmj environment to work with dtc
|
|
#
|
|
if [ -f "/usr/bin/mlmmj-make-ml" -o -f "/usr/bin/mlmmj-make-ml.sh" ] ; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Detected presence of mlmmj... prepping environment..."
|
|
fi
|
|
# symlink the .sh to the non .sh, for the genfiles
|
|
if [ ! -e "/usr/bin/mlmmj-make-ml" ] ; then
|
|
ln -s "/usr/bin/mlmmj-make-ml.sh" "/usr/bin/mlmmj-make-ml"
|
|
fi
|
|
mkdir -p /etc/mlmmj/lists
|
|
chown -R root:${CONF_DTC_SYSTEM_GROUPNAME} /etc/mlmmj/lists
|
|
chmod -R g+w /etc/mlmmj/lists
|
|
fi
|
|
# create mlmmj spool directory if it doesn't exist yet
|
|
if [ ! -e /var/spool/mlmmj/ ]; then
|
|
mkdir -p /var/spool/mlmmj
|
|
fi
|
|
if [ -e /var/spool/mlmmj/ ] ;then
|
|
chown ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} /var/spool/mlmmj/
|
|
fi
|
|
|
|
# This avoid hanging when (re)starting daemons under debian
|
|
if [ "$UNIX_TYPE" = "debian" ]
|
|
then
|
|
db_stop
|
|
fi
|
|
|
|
# check to see if we have a userdb FILE, rather than a directory
|
|
# move it out of the way, if so
|
|
if [ -f "$PATH_COURIER_AUTHD_CONF_PATH/userdb" ]; then
|
|
mv $PATH_COURIER_AUTHD_CONF_PATH/userdb $PATH_COURIER_AUTHD_CONF_PATH/userdb.existing
|
|
fi
|
|
|
|
#
|
|
# Install courier mysql authenticaion
|
|
#
|
|
if [ -f "$PATH_COURIER_AUTHD_CONF_PATH/authdaemonrc" ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding directives to Courier authdaemonrc"
|
|
fi
|
|
if grep "Configured by DTC" $PATH_COURIER_AUTHD_CONF_PATH/authdaemonrc >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "authdaemonrc has been configure before: skipping include insertion !"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside "$PATH_COURIER_AUTHD_CONF_PATH/authdaemonrc
|
|
fi
|
|
if ! [ -f $PATH_COURIER_AUTHD_CONF_PATH.DTC.backup ]
|
|
then
|
|
cp -f $PATH_COURIER_AUTHD_CONF_PATH/authdaemonrc $PATH_COURIER_AUTHD_CONF_PATH.DTC.backup
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.courier.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.12 : Please don't touch this line !" > $TMP_FILE
|
|
echo "authmodulelist=\"authmysql authpam\"" >> $TMP_FILE
|
|
echo "# End of DTC configuration v0.12 : please don't touch this line !" >> $TMP_FILE
|
|
# now append this to the existing configuration file
|
|
cat < $TMP_FILE >> $PATH_COURIER_AUTHD_CONF_PATH/authdaemonrc
|
|
rm $TMP_FILE
|
|
echo "
|
|
# DB details for dtc mysql DB
|
|
MYSQL_SERVER $conf_mysql_host
|
|
MYSQL_PORT 3306
|
|
MYSQL_DATABASE $conf_mysql_db
|
|
MYSQL_USERNAME dtcdaemons
|
|
MYSQL_PASSWORD ${MYSQL_DTCDAEMONS_PASS}
|
|
MYSQL_USER_TABLE pop_access
|
|
MYSQL_LOGIN_FIELD id
|
|
MYSQL_CRYPT_PWFIELD crypt
|
|
MYSQL_HOME_FIELD home
|
|
MYSQL_UID_FIELD uid
|
|
MYSQL_GID_FIELD gid
|
|
MYSQL_DEFAULT_DOMAIN $main_domain_name
|
|
|
|
# use the experimental query
|
|
MYSQL_SELECT_CLAUSE SELECT concat(id, '@', mbox_host), crypt, passwd, uid, gid, home, '', quota_size, '' FROM pop_access WHERE (id = '\$(local_part)' AND mbox_host = '\$(domain)') OR (id = SUBSTRING_INDEX('\$(local_part)', '%', 1) AND mbox_host = SUBSTRING_INDEX('\$(local_part)', '%', -1))
|
|
|
|
MYSQL_CHPASS_CLAUSE UPDATE pop_access SET passwd='\$(newpass)', crypt='\$(newpass_crypt)' WHERE (id = '\$(local_part)' AND mbox_host = '\$(domain)') OR (id = SUBSTRING_INDEX('\$(local_part)', '%', 1) AND mbox_host = SUBSTRING_INDEX('\$(local_part)', '%', -1))
|
|
" > $PATH_COURIER_AUTHD_CONF_PATH/authmysqlrc
|
|
if [ -x "/etc/init.d/courier-authdaemon" ] ; then
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d courier-authdaemon restart
|
|
else
|
|
if [ -x /etc/init.d/courier-authdaemon ]; then
|
|
/etc/init.d/courier-authdaemon restart
|
|
fi
|
|
fi
|
|
fi
|
|
if [ -x "/etc/init.d/courier-authlib" ] ; then
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d courier-authlib restart
|
|
else
|
|
if [ -x /etc/init.d/courier-authlib ]; then
|
|
/etc/init.d/courier-authlib restart
|
|
fi
|
|
fi
|
|
fi
|
|
if [ -x "/etc/init.d/courier-imap" ] ; then
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d courier-imap restart
|
|
else
|
|
/etc/init.d/courier-imap restart
|
|
fi
|
|
fi
|
|
if [ -x "/etc/init.d/courier-pop" ] ; then
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d courier-pop restart
|
|
else
|
|
/etc/init.d/courier-pop restart
|
|
fi
|
|
fi
|
|
if [ -x "/etc/init.d/courier" ]; then
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d courier stop
|
|
else
|
|
/etc/init.d/courier stop
|
|
fi
|
|
fi
|
|
|
|
# try to disable courierd using chkconfig
|
|
if [ -x /sbin/chkconfig ]; then
|
|
/sbin/chkconfig courier off
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# need to remove the paths for courier in /etc/profile.d/
|
|
# since the MTA really breaks postfix paths and handling
|
|
if [ -e /etc/profile.d/courier.sh ]; then
|
|
mv /etc/profile.d/courier.sh /etc/profile.d/courier.sh.DTC.disabled
|
|
fi
|
|
|
|
if [ -e /etc/profile.d/courier.csh ]; then
|
|
mv /etc/profile.d/courier.csh /etc/profile.d/courier.csh.DTC.disabled
|
|
fi
|
|
|
|
# Generate the OpenSSL test certificate if it does not exists
|
|
if [ ""$conf_gen_ssl_cert = "true" ]; then
|
|
if [ ! -e $PATH_DTC_ETC"/ssl" ]; then
|
|
mkdir -p $PATH_DTC_ETC"/ssl"
|
|
fi
|
|
cwd=`pwd`
|
|
cd $PATH_DTC_ETC"/ssl"
|
|
if [ ! -e "./"new.cert.csr ]; then
|
|
if [ ! -e "./"new.cert.cert ]; then
|
|
if [ ! -e "./"new.cert.key ]; then
|
|
CERTPASS_TMP_FILE=`${MKTEMP} certfilepass.XXXXXX` || exit 1
|
|
echo $conf_gen_ssl_cert"" >$CERTPASS_TMP_FILE
|
|
( echo $conf_cert_countrycode;
|
|
echo "the state";
|
|
echo $conf_cert_locality;
|
|
echo $conf_cert_organization;
|
|
echo $conf_cert_unit;
|
|
echo $dtc_admin_subdomain"."$main_domain_name;
|
|
echo $conf_cert_email;
|
|
echo $conf_cert_challenge_pass;
|
|
echo $conf_cert_organization; ) | openssl req -passout file:$CERTPASS_TMP_FILE -new > new.cert.csr
|
|
openssl rsa -passin file:$CERTPASS_TMP_FILE -in privkey.pem -out new.cert.key
|
|
openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 3650
|
|
rm $CERTPASS_TMP_FILE
|
|
# Copy the certificates to make them available for qmail
|
|
if [ -d /var/qmail/control ] ; then
|
|
if ! [ -e /var/qmail/control/servercert.pem ] ; then
|
|
cat $PATH_DTC_ETC/ssl/new.cert.key $PATH_DTC_ETC/ssl/new.cert.cert >/var/qmail/control/servercert.pem
|
|
chown qmaild:qmail /var/qmail/control/servercert.pem
|
|
chmod 400 /var/qmail/control/servercert.pem
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
cd $cwd
|
|
fi
|
|
|
|
#
|
|
# Install dovecot mysql authenticaion
|
|
#
|
|
if [ -f $PATH_DOVECOT_CONF ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Detecting dovecot version..."
|
|
fi
|
|
DOVECOT_VERSION=`dovecot --version`
|
|
DOVECOT_POSTONE=false
|
|
case $DOVECOT_VERSION in
|
|
1.*)
|
|
echo "Found version 1.0 or greater"
|
|
DOVECOT_POSTONE=true
|
|
;;
|
|
0.*)
|
|
echo "Found pre 1.0 version"
|
|
;;
|
|
|
|
esac
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding directives to dovecot.conf"
|
|
fi
|
|
if grep "Configured by DTC" $PATH_DOVECOT_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "dovecot.conf has been configure before: skipping include insertion !"
|
|
fi
|
|
else
|
|
|
|
if [ ""$DOVECOT_POSTONE ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Version 1.x needs a new config file... replacing existing"
|
|
fi
|
|
if ! [ -f $PATH_DOVECOT_CONF.DTC.backup ]; then
|
|
cp -f $PATH_DOVECOT_CONF $PATH_DOVECOT_CONF.DTC.backup
|
|
fi
|
|
echo "
|
|
# Configured by DTC v0.x : Please don't touch this line !
|
|
protocols = imap imaps pop3 pop3s
|
|
default_mail_env = maildir:%h/Maildir
|
|
maildir_copy_with_hardlinks = yes
|
|
protocol imap {
|
|
}
|
|
protocol pop3 {
|
|
}
|
|
auth default {
|
|
mechanisms = plain
|
|
passdb pam {
|
|
args = \"*\"
|
|
}
|
|
userdb passwd {
|
|
}
|
|
user = root
|
|
userdb sql {
|
|
args = $PATH_DTC_ETC/dovecot-mysql.conf
|
|
}
|
|
passdb sql {
|
|
args = $PATH_DTC_ETC/dovecot-mysql.conf
|
|
}
|
|
}
|
|
plugin {
|
|
}
|
|
# End of DTC configuration v0.x : please don't touch this line !
|
|
" > $PATH_DOVECOT_CONF
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside "$PATH_DOVECOT_CONF
|
|
fi
|
|
if ! [ -f $PATH_DOVECOT_CONF.DTC.backup ]
|
|
then
|
|
cp -f $PATH_DOVECOT_CONF $PATH_DOVECOT_CONF.DTC.backup
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.dovecot.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.12 : Please don't touch this line !" > $TMP_FILE
|
|
echo "auth_userdb = mysql $PATH_DTC_ETC/dovecot-mysql.conf" >> $TMP_FILE
|
|
echo "auth_passdb = mysql $PATH_DTC_ETC/dovecot-mysql.conf" >> $TMP_FILE
|
|
echo "# End of DTC configuration v0.12 : please don't touch this line !" >> $TMP_FILE
|
|
# now append this to the existing configuration file
|
|
cat < $TMP_FILE >> $PATH_DOVECOT_CONF
|
|
rm $TMP_FILE
|
|
fi
|
|
if [ ""$DOVECOT_POSTONE ]; then
|
|
# there is a new configuration for 1.0.x
|
|
echo "
|
|
connect = host=$MYSQL_DB_SOCKET_PATH port=3306 dbname=$conf_mysql_db user=dtcdaemons password=${MYSQL_DTCDAEMONS_PASS} client_flags=0
|
|
driver = mysql
|
|
default_pass_scheme = PLAIN
|
|
password_query = SELECT passwd AS password FROM pop_access WHERE id = '%n' AND mbox_host = '%d'
|
|
user_query = SELECT home, uid, gid FROM pop_access WHERE id = '%n' AND mbox_host = '%d'
|
|
" > $PATH_DTC_ETC/dovecot-mysql.conf
|
|
else
|
|
echo "
|
|
# DB details for dtc mysql DB
|
|
db_host = $conf_mysql_host
|
|
db_port = 3306
|
|
db_unix_socket = $MYSQL_DB_SOCKET_PATH
|
|
db = $conf_mysql_db
|
|
db_user = dtcdaemons
|
|
db_passwd = ${MYSQL_DTCDAEMONS_PASS}
|
|
db_client_flags = 0
|
|
|
|
default_pass_scheme = PLAIN
|
|
password_query = SELECT passwd AS password FROM pop_access WHERE id = '%n' AND mbox_host = '%d'
|
|
user_query = SELECT home, uid, gid FROM pop_access WHERE id = '%n' AND mbox_host = '%d'
|
|
" > $PATH_DTC_ETC/dovecot-mysql.conf
|
|
fi
|
|
# need to restart dovecot too
|
|
if [ -x "/etc/init.d/dovecot" ] ; then
|
|
/etc/init.d/dovecot restart
|
|
else
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d dovecot restart
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Install pure-ftpd-mysql
|
|
#
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding directives to pure-ftpd-mysql"
|
|
fi
|
|
PURE_FTPD_ETC="/etc/pure-ftpd"
|
|
if [ -e $PURE_FTPD_ETC ] ;then
|
|
if [ -e /etc/pure-ftpd/conf/ ] ;then
|
|
echo "yes" >/etc/pure-ftpd/conf/ChrootEveryone
|
|
fi
|
|
if [ -e $PURE_FTPD_ETC/db/ ] ;then
|
|
echo "# Configured by DTC v0.10 : Please don't touch this line !
|
|
|
|
MYSQLSocket /var/run/mysqld/mysqld.sock
|
|
MYSQLUser dtcdaemons
|
|
MYSQLPassword ${MYSQL_DTCDAEMONS_PASS}
|
|
MYSQLDatabase dtc
|
|
MYSQLCrypt cleartext
|
|
MYSQLGetPW SELECT password FROM ftp_access WHERE login=\"\L\"
|
|
MYSQLGetUID SELECT uid FROM ftp_access WHERE login=\"\L\"
|
|
MYSQLGetGID SELECT gid FROM ftp_access WHERE login=\"\L\"
|
|
MYSQLGetDir SELECT homedir FROM ftp_access WHERE login=\"\L\"
|
|
|
|
" >$PURE_FTPD_ETC/db/mysql.conf;
|
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
/usr/sbin/invoke-rc.d pure-ftpd-mysql restart
|
|
else
|
|
if [ -x /etc/init.d/pure-ftpd-mysql ] ;then
|
|
/etc/init.d/pure-ftpd-mysql restart
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Install proftpd.conf to access to the database
|
|
#
|
|
|
|
if [ -f $PATH_PROFTPD_CONF ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding directives to proftpd.conf"
|
|
fi
|
|
if grep "Configured by DTC" $PATH_PROFTPD_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "proftpd.conf has been configured before : skiping include inssertion !"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside "$PATH_PROFTPD_CONF
|
|
fi
|
|
if ! [ -f $PATH_PROFTPD_CONF.DTC.backup ]
|
|
then
|
|
cp -f $PATH_PROFTPD_CONF $PATH_PROFTPD_CONF.DTC.backup
|
|
fi
|
|
|
|
# Generate the OpenSSL test certificate if it does not exists
|
|
if [ ""$conf_gen_ssl_cert = "true" ]; then
|
|
if [ ! -e $PATH_DTC_ETC"/ssl" ]; then
|
|
mkdir -p $PATH_DTC_ETC"/ssl"
|
|
fi
|
|
if [ ! -e $PATH_DTC_ETC"/ssl/proftpd" ] ; then
|
|
mkdir -p $PATH_DTC_ETC"/ssl/proftpd"
|
|
fi
|
|
cwd=`pwd`
|
|
cd $PATH_DTC_ETC"/ssl/proftpd"
|
|
if [ ! -e "./"new.cert.csr ]; then
|
|
if [ ! -e "./"new.cert.cert ]; then
|
|
if [ ! -e "./"new.cert.key ]; then
|
|
CERTPASS_TMP_FILE=`${MKTEMP} certfilepass.XXXXXX` || exit 1
|
|
echo $conf_gen_ssl_cert"" >$CERTPASS_TMP_FILE
|
|
( echo $conf_cert_countrycode;
|
|
echo "the state";
|
|
echo $conf_cert_locality;
|
|
echo $conf_cert_organization;
|
|
echo $conf_cert_unit;
|
|
echo $dtc_admin_subdomain"."$main_domain_name;
|
|
echo $conf_cert_email;
|
|
echo $conf_cert_challenge_pass;
|
|
echo $conf_cert_organization; ) | openssl req -passout file:$CERTPASS_TMP_FILE -new > new.cert.csr
|
|
openssl rsa -passin file:$CERTPASS_TMP_FILE -in privkey.pem -out new.cert.key
|
|
openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 3650
|
|
rm $CERTPASS_TMP_FILE
|
|
fi
|
|
fi
|
|
fi
|
|
cd $cwd
|
|
fi
|
|
|
|
# need to comment out any existing AuthOrder, since we are changing it
|
|
perl -i -p -e 's/AuthOrder/#AuthOrder/' $PATH_PROFTPD_CONF
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.proftp.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.10 : Please don't touch this line !" > $TMP_FILE
|
|
# This directive is not used anymore in newer version of proftpd
|
|
# echo "#UserReverseDNS off" >> $TMP_FILE
|
|
echo "AuthOrder mod_sql.c mod_auth_pam.c* mod_auth_unix.c" >> $TMP_FILE
|
|
echo "IdentLookups off" >> $TMP_FILE
|
|
echo "DefaultRoot ~" >> $TMP_FILE
|
|
echo "SQLAuthenticate on" >> $TMP_FILE
|
|
echo "SQLConnectInfo "$conf_mysql_db"@"$conf_mysql_host" dtcdaemons "${MYSQL_DTCDAEMONS_PASS} >> $TMP_FILE
|
|
echo "SQLAuthTypes Plaintext" >> $TMP_FILE
|
|
echo "SQLUserInfo ftp_access login password uid gid homedir shell" >> $TMP_FILE
|
|
if [ -e $PATH_DTC_ETC"/ssl/proftpd/new.cert.cert" ] ; then
|
|
if [ -e $PATH_DTC_ETC"/ssl/proftpd/new.cert.key" ] ; then
|
|
if [ ""$conf_gen_ssl_cert = "true" ]; then
|
|
echo "# This is the TLS auth support. Thanks to Erwan Gurcuff (gort) for the tip!
|
|
<IfModule mod_tls.c>
|
|
TLSEngine on
|
|
TLSLog /var/log/proftpd-tls.log
|
|
TLSProtocol TLSv1
|
|
TLSRequired off
|
|
TLSRSACertificateFile "$PATH_DTC_ETC"/ssl/proftpd/new.cert.cert
|
|
TLSRSACertificateKeyFile "$PATH_DTC_ETC"/ssl/proftpd/new.cert.key
|
|
TLSVerifyClient on
|
|
</IfModule>" >> $TMP_FILE
|
|
fi
|
|
fi
|
|
fi
|
|
echo "# // Transfer Log to Proftpd
|
|
SQLLog RETR,STOR transfer1
|
|
SQLNamedQuery transfer1 INSERT \"'%u', '%f', '%b', '%h', '%a', '%m', '%T',now(), 'c', NULL\" ftp_logs
|
|
|
|
# // Count Logins per User
|
|
SQLLog PASS logincount
|
|
SQLNamedQuery logincount UPDATE \"count=count+1 WHERE login='%u'\" ftp_access
|
|
|
|
# // Remember the last login time
|
|
SQLLog PASS lastlogin
|
|
SQLNamedQuery lastlogin UPDATE \"last_login=now() WHERE login='%u'\" ftp_access
|
|
|
|
# // Count the downloaded bytes
|
|
SQLLog RETR dlbytescount
|
|
SQLNamedQuery dlbytescount UPDATE \"dl_bytes=dl_bytes+%b WHERE login='%u'\" ftp_access
|
|
|
|
# // Count the downloaded files
|
|
SQLLog RETR dlcount
|
|
SQLNamedQuery dlcount UPDATE \"dl_count=dl_count+1 WHERE login='%u'\" ftp_access
|
|
|
|
# // Count the uploaded bytes
|
|
SQLLog STOR ulbytescount
|
|
SQLNamedQuery ulbytescount UPDATE \"ul_bytes=ul_bytes+%b WHERE login='%u'\" ftp_access
|
|
|
|
# // Count the uploaded files
|
|
SQLLog STOR ulcount
|
|
SQLNamedQuery ulcount UPDATE \"ul_count=ul_count+1 WHERE login='%u'\" ftp_access
|
|
|
|
# End of DTC configuration v0.10 : please don't touch this line !" >> $TMP_FILE
|
|
cat < $TMP_FILE >>$PATH_PROFTPD_CONF
|
|
rm $TMP_FILE
|
|
# This restarts proftpd if under debian like system
|
|
# work has to be done under other OS to restart the ftp daemon
|
|
if [ -x "/etc/init.d/proftpd" ] ; then
|
|
if [ -x "`which /usr/sbin/invoke-rc.d 2>/dev/null`" ]; then
|
|
invoke-rc.d proftpd restart
|
|
else
|
|
/etc/init.d/proftpd restart
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Install and configuration of FreeRadius 1.0
|
|
#
|
|
if [ -e ""$FREERADIUS_ETC ] ;then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "DTC has found you are using Freeradius and it's now configuring it"
|
|
fi
|
|
|
|
FREERADIUS_CONF=$FREERADIUS_ETC/radiusd.conf
|
|
FREERADIUS_SQL_DOT_CONF=$FREERADIUS_ETC/sql.conf
|
|
|
|
# Backup of freeradius config files
|
|
if [ -e $FREERADIUS_CONF ] ;then
|
|
if ! [ -e $FREERADIUS_CONF".DTCbackup" ] ;then
|
|
cp $FREERADIUS_CONF $FREERADIUS_CONF".DTCbackup"
|
|
fi
|
|
fi
|
|
|
|
if [ -e $FREERADIUS_SQL_DOT_CONF ] ;then
|
|
if ! [ -e $FREERADIUS_SQL_DOT_CONF".DTCbackup" ] ;then
|
|
cp $FREERADIUS_SQL_DOT_CONF $FREERADIUS_SQL_DOT_CONF".DTCbackup"
|
|
fi
|
|
fi
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.radius.conf.XXXXXX` || exit 1
|
|
TMP_FILE2=`${MKTEMP} DTC_install.radius.conf.XXXXXX` || exit 1
|
|
TMP_FILE3=`${MKTEMP} DTC_install.radius.conf.XXXXXX` || exit 1
|
|
TMP_FILE4=`${MKTEMP} DTC_install.radius.conf.XXXXXX` || exit 1
|
|
TMP_FILE5=`${MKTEMP} DTC_install.radius.conf.XXXXXX` || exit 1
|
|
TMP_FILE6=`${MKTEMP} DTC_install.radius.conf.XXXXXX` || exit 1
|
|
|
|
if [ -e /var/log/radacct ] ;then
|
|
chown -R ${CONF_DTC_SYSTEM_USERNAME} /var/log/radacct
|
|
fi
|
|
|
|
sed "s/#user = nobody/user = nobody/" $FREERADIUS_CONF >$TMP_FILE
|
|
if grep "group = nobody" $TMP_FILE >/dev/null ;then
|
|
sed "s/#group = nobody/group = nobody/" $TMP_FILE >$TMP_FILE2
|
|
else
|
|
sed "s/#group = nogroup/group = nogroup/" $TMP_FILE >$TMP_FILE2
|
|
fi
|
|
sed "s/log_auth = no/log_auth = yes/" $TMP_FILE2 >$TMP_FILE3
|
|
sed "s/log_auth_badpass = no/log_auth_badpass = yes/" $TMP_FILE3 >$TMP_FILE4
|
|
sed "s/log_auth_goodpass = no/log_auth_goodpass = yes/" $TMP_FILE4 >$TMP_FILE5
|
|
sed "s/# sql/ sql/" $TMP_FILE5 >$TMP_FILE6
|
|
|
|
cat <$TMP_FILE6 >$FREERADIUS_CONF
|
|
|
|
rm $TMP_FILE $TMP_FILE2 $TMP_FILE3 $TMP_FILE4 $TMP_FILE5 $TMP_FILE6
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Adding directives to sql.conf"
|
|
fi
|
|
|
|
if grep "Configured by DTC" $FREERADIUS_SQL_DOT_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "sql.conf has been configured before : skiping include inssertion !"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC configuration inside "$FREERADIUS_SQL_DOT_CONF
|
|
fi
|
|
|
|
TMP_FILE1=`${MKTEMP} DTC_install.sql.conf.XXXXXX` || exit 1
|
|
TMP_FILE2=`${MKTEMP} DTC_install.sql.conf.XXXXXX` || exit 1
|
|
TMP_FILE3=`${MKTEMP} DTC_install.sql.conf.XXXXXX` || exit 1
|
|
TMP_FILE4=`${MKTEMP} DTC_install.sql.conf.XXXXXX` || exit 1
|
|
TMP_FILE5=`${MKTEMP} DTC_install.sql.conf.XXXXXX` || exit 1
|
|
|
|
# Remove the default config
|
|
grep -v "server =" $FREERADIUS_SQL_DOT_CONF >$TMP_FILE1
|
|
grep -v "login =" $TMP_FILE1 >$TMP_FILE2
|
|
grep -v "password =" $TMP_FILE2 >$TMP_FILE3
|
|
grep -v "radius_db = " $TMP_FILE3 >$TMP_FILE4
|
|
grep -v "}" $TMP_FILE4 >$TMP_FILE5
|
|
|
|
# Install the DTC db config
|
|
TMP_FILE=`${MKTEMP} DTC_install.sql.conf.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.10 : Please don't touch this line !
|
|
# Connect info
|
|
server = "$conf_mysql_host"
|
|
login = "$conf_mysql_login"
|
|
password = "$conf_mysql_pass"" >> $TMP_FILE5
|
|
# echo "SQLConnectInfo "$conf_mysql_db"@"$conf_mysql_host" "$conf_mysql_login" "$conf_mysql_pass >> $TMP_FILE4
|
|
echo " # Database table configuration
|
|
radius_db = "$conf_mysql_db"
|
|
# End of DTC configuration v0.10 : please don't touch this line !
|
|
}
|
|
" >> $TMP_FILE5
|
|
|
|
cat <$TMP_FILE5 >$FREERADIUS_SQL_DOT_CONF
|
|
rm $TMP_FILE $TMP_FILE1 $TMP_FILE2 $TMP_FILE3 $TMP_FILE4 $TMP_FILE5
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Generate default config file for awstats (if we have it installed)
|
|
#
|
|
|
|
if [ -f $PATH_AWSTATS_ETC/awstats.conf ]; then
|
|
# now if we don't already have a dtc awstats config, create one based on the installed package config
|
|
if ! [ -f $PATH_AWSTATS_ETC/awstats.dtc.conf ]; then
|
|
# we will use the environment variables while calling awstats...
|
|
# Parameter="__ENVNAME__"
|
|
cp $PATH_AWSTATS_ETC/awstats.conf $PATH_AWSTATS_ETC/awstats.dtc.conf
|
|
perl -i -p -e 's/^LogFile=\"[^\"]*\"/LogFile=\"__AWSTATS_LOG_FILE__\"/' $PATH_AWSTATS_ETC/awstats.dtc.conf
|
|
perl -i -p -e 's/^SiteDomain=\"[^\"]*\"/SiteDomain=\"__AWSTATS_FULL_DOMAIN__\"/' $PATH_AWSTATS_ETC/awstats.dtc.conf
|
|
perl -i -p -e 's/^DirData=\"[^\"]*\"/DirData=\"__AWSTATS_DIR_DATA__\"/' $PATH_AWSTATS_ETC/awstats.dtc.conf
|
|
perl -i -p -e 's/^CreateDirDataIfNotExists=0/CreateDirDataIfNotExists=1/' $PATH_AWSTATS_ETC/awstats.dtc.conf
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# create the rrd file for queuegraph.cgi
|
|
#
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Setting up rrdtools and graphs"
|
|
fi
|
|
if [ ! -e $PATH_DTC_ETC/mailqueues.rrd ]; then
|
|
$PATH_DTC_ADMIN/queuegraph/createrrd.sh $PATH_DTC_ETC
|
|
fi
|
|
if [ ! -e $PATH_CGIBIN/queuegraph.cgi ]; then
|
|
ln -s $PATH_DTC_ADMIN/queuegraph.cgi $PATH_CGIBIN/queuegraph.cgi
|
|
fi
|
|
if [ -e $PATH_CGIBIN/queuegraph.cgi ]; then
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_CGIBIN/queuegraph.cgi
|
|
fi
|
|
|
|
|
|
|
|
# fix path for mailqueues.rrd
|
|
perl -i -p -e "s|/etc/postfix|$PATH_DTC_ETC|" $PATH_DTC_ADMIN/queuegraph.cgi
|
|
|
|
if [ -z "$conf_eth2monitor" ] ; then
|
|
echo "No interface selected: skiping the netusage.rrd setup!!!"
|
|
else
|
|
#
|
|
# create the rrd file for netusegraph.cgi
|
|
#
|
|
if [ ! -e $PATH_DTC_ETC/netusage.rrd ]; then
|
|
$PATH_DTC_ADMIN/netusegraph/createrrd.sh $PATH_DTC_ETC
|
|
fi
|
|
if [ ! -e $PATH_CGIBIN/netusegraph.cgi ]; then
|
|
ln -s $PATH_DTC_ADMIN/netusegraph.cgi $PATH_CGIBIN/netusegraph.cgi
|
|
fi
|
|
|
|
if [ -e $PATH_CGIBIN/netusegraph.cgi ]; then
|
|
# fix path for netusage.rrd
|
|
perl -i -p -e "s|/etc/postfix|$PATH_DTC_ETC|" $PATH_DTC_ADMIN/netusegraph.cgi
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_CGIBIN/netusegraph.cgi
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# create the rrd file for cpugraph.cgi
|
|
#
|
|
if [ ! -e $PATH_DTC_ETC/cpu.rrd ]; then
|
|
$PATH_DTC_ADMIN/cpugraph/createrrd.sh $PATH_DTC_ETC
|
|
fi
|
|
if [ ! -e $PATH_CGIBIN/cpugraph.cgi ]; then
|
|
ln -s $PATH_DTC_ADMIN/cpugraph.cgi $PATH_CGIBIN/cpugraph.cgi
|
|
fi
|
|
|
|
if [ -e $PATH_DTC_ADMIN/cpugraph.cgi ]; then
|
|
# fix path for cpugraph.cgi
|
|
perl -i -p -e "s|/etc/postfix|$PATH_DTC_ETC|" $PATH_DTC_ADMIN/cpugraph.cgi
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_CGIBIN/cpugraph.cgi
|
|
fi
|
|
|
|
|
|
#
|
|
# Create the rrd file for memgraph.cgi
|
|
#
|
|
if [ ! -e $PATH_DTC_ETC/memusage.rrd ]; then
|
|
$PATH_DTC_ADMIN/memgraph/createrrd.sh $PATH_DTC_ETC
|
|
fi
|
|
if [ ! -e $PATH_CGIBIN/memgraph.cgi ]; then
|
|
ln -s $PATH_DTC_ADMIN/memgraph.cgi $PATH_CGIBIN/memgraph.cgi
|
|
fi
|
|
if [ -e $PATH_DTC_ADMIN/memgraph.cgi ]; then
|
|
# fix path for memgraph.cgi
|
|
perl -i -p -e "s|/etc/postfix|$PATH_DTC_ETC|" $PATH_DTC_ADMIN/memgraph.cgi
|
|
chown -hR ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} $PATH_CGIBIN/memgraph.cgi
|
|
fi
|
|
|
|
#
|
|
# Modify the SSH default option to make sure the UsePAM and turn on Password auth
|
|
#
|
|
|
|
# default to /etc/ssh/sshd_config if it's not set by the installer
|
|
if [ -z ""$PATH_SSH_CONF ]; then
|
|
PATH_SSH_CONF=/etc/ssh/sshd_config
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Modifying SSH config to allow chroot logins... "$PATH_SSH_CONF
|
|
fi
|
|
|
|
# first we want to comment out any previously set variables
|
|
# PasswordAuthentication
|
|
# UsePAM
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.sshd_conf.XXXXXX` || exit 1
|
|
|
|
if grep "^PasswordAuthentication" $PATH_SSH_CONF >/dev/null 2>&1
|
|
then
|
|
sed -e "s/^PasswordAuthentication/#PasswordAuthentication/" $PATH_SSH_CONF > $TMP_FILE
|
|
cat <$TMP_FILE >$PATH_SSH_CONF
|
|
fi
|
|
|
|
if grep "^UsePAM" $PATH_SSH_CONF >/dev/null 2>&1
|
|
then
|
|
sed -e "s/^UsePAM/#UsePAM/" $PATH_SSH_CONF > $TMP_FILE
|
|
cat <$TMP_FILE >$PATH_SSH_CONF
|
|
fi
|
|
|
|
# now that we have removed the conflicting entries, add it back with the DTC required switches
|
|
|
|
if grep "Configured by DTC" $PATH_SSH_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_SSH_CONF has been configured before..."
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_SSH_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_SSH_CONF
|
|
fi
|
|
cp -f "$PATH_SSH_CONF" "$PATH_SSH_CONF.DTC.backup"
|
|
fi
|
|
echo "# Configured by DTC 0.21 : please do not touch this line !" > $TMP_FILE
|
|
echo "UsePAM yes" >> $TMP_FILE
|
|
echo "PasswordAuthentication yes" >> $TMP_FILE
|
|
echo "# End of DTC configuration : please don't touch this line !" >> $TMP_FILE
|
|
cat <$TMP_FILE >>$PATH_SSH_CONF
|
|
fi
|
|
|
|
rm $TMP_FILE
|
|
|
|
#
|
|
# Modify /etc/nsswitch.conf
|
|
#
|
|
TMP_FILE=`${MKTEMP} DTC_install.nsswitch.conf.XXXXXX` || exit 1
|
|
|
|
if [ -z "$PATH_NSSWITCH_CONF" ]; then
|
|
PATH_NSSWITCH_CONF=/etc/nsswitch.conf
|
|
fi
|
|
|
|
if grep "Configured by DTC" $PATH_NSSWITCH_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_NSSWITCH_CONF has been configured before..."
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_NSSWITCH_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_NSSWITCH_CONF
|
|
fi
|
|
cp -f "$PATH_NSSWITCH_CONF" "$PATH_NSSWITCH_CONF.DTC.backup"
|
|
fi
|
|
echo "# Configured by DTC 0.21 : please do not touch this line !" > $TMP_FILE
|
|
echo "
|
|
passwd: compat mysql
|
|
group: compat mysql
|
|
shadow: compat mysql
|
|
" >> $TMP_FILE
|
|
echo "# End of DTC configuration : please don't touch this line !" >> $TMP_FILE
|
|
cat <$TMP_FILE >>$PATH_NSSWITCH_CONF
|
|
fi
|
|
|
|
rm $TMP_FILE
|
|
|
|
#
|
|
# Modify /etc/nss-mysql.conf and /etc/nss-mysql-root.conf
|
|
#
|
|
|
|
TMP_FILE=`${MKTEMP} DTC_install.nss-mysql.conf.XXXXXX` || exit 1
|
|
|
|
if [ -z "$PATH_NSS_CONF" ]; then
|
|
PATH_NSS_CONF=/etc/nss-mysql.conf
|
|
fi
|
|
|
|
if [ -z "$PATH_NSS_ROOT_CONF" ]; then
|
|
PATH_NSS_ROOT_CONF=/etc/nss-mysql-root.conf
|
|
fi
|
|
|
|
NSSMYSQL_VERSION=nss-mysql
|
|
|
|
if [ ! -e $PATH_NSS_CONF ]; then
|
|
if [ -e /etc/libnss-mysql.cfg ]; then
|
|
PATH_NSS_CONF=/etc/libnss-mysql.cfg
|
|
NSSMYSQL_VERSION=libnss-mysql
|
|
# mv the existing config out of the way
|
|
mv $PATH_NSS_CONF $PATH_NSS_CONF.before.dtc
|
|
fi
|
|
fi
|
|
|
|
if [ ! -e $PATH_NSS_ROOT_CONF ]; then
|
|
if [ -e /etc/libnss-mysql-root.cfg ]; then
|
|
PATH_NSS_ROOT_CONF=/etc/libnss-mysql-root.cfg
|
|
NSSMYSQL_VERSION=libnss-mysql
|
|
mv $PATH_NSS_ROOT_CONF $PATH_NSS_ROOT_CONF.before.dtc
|
|
fi
|
|
fi
|
|
|
|
if grep "Configured by DTC" $PATH_NSS_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_NSS_CONF has been configured before..."
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_NSS_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_NSS_CONF
|
|
fi
|
|
cp -f "$PATH_NSS_CONF" "$PATH_NSS_CONF.DTC.backup"
|
|
fi
|
|
|
|
echo "# Configured by DTC 0.21 : please do not touch this line !" > $TMP_FILE
|
|
if [ ""$NSSMYSQL_VERSION = "nss-mysql" ]; then
|
|
echo "
|
|
users.host = inet:localhost:3306;
|
|
users.database = ${conf_mysql_db};
|
|
users.db_user = dtcdaemons;
|
|
users.db_password = ${MYSQL_DTCDAEMONS_PASS};
|
|
users.backup_host =;
|
|
users.backup_database =;
|
|
users.table = ssh_access;
|
|
users.where_clause =;
|
|
users.user_column = ssh_access.login;
|
|
users.password_column = ssh_access.crypt;
|
|
users.userid_column = ssh_access.uid;
|
|
users.uid_column = ssh_access.uid;
|
|
users.gid_column = ssh_access.gid;
|
|
users.realname_column = \"DTC User\";
|
|
users.homedir_column = ssh_access.homedir;
|
|
users.shell_column = ssh_access.shell;
|
|
groups.group_info_table = ssh_groups;
|
|
groups.where_clause =;
|
|
groups.group_name_column = ssh_groups.group_name;
|
|
groups.groupid_column = ssh_groups.group_id;
|
|
groups.gid_column = ssh_groups.gid;
|
|
groups.password_column = ssh_groups.group_password;
|
|
groups.members_table = ssh_user_group;
|
|
groups.member_userid_column = ssh_user_group.user_id;
|
|
groups.member_groupid_column = ssh_user_group.group_id;
|
|
" >> $TMP_FILE
|
|
else
|
|
# this is the libnss version
|
|
echo "
|
|
[queries]
|
|
getpwnam SELECT login,'*',uid,gid,'DTC User',homedir,shell FROM ssh_access WHERE login='%1$s' LIMIT 1
|
|
getpwuid SELECT login,'*',uid,gid,'DTC User',homedir,shell FROM ssh_access WHERE uid='%1$u' LIMIT 1
|
|
getpwent SELECT login,'*',uid,gid,'DTC User',homedir,shell FROM ssh_access
|
|
getgrnam SELECT group_name,group_password,group_id FROM ssh_groups WHERE group_name='%1$s' LIMIT 1
|
|
getgrgid SELECT group_name,group_password,group_id FROM ssh_groups WHERE group_id='%1$u' LIMIT 1
|
|
getgrent SELECT group_name,group_password,group_id FROM ssh_groups
|
|
memsbygid SELECT login FROM ssh_access WHERE gid='%1$u'
|
|
gidsbymem SELECT gid FROM ssh_access WHERE login='%1$s'
|
|
getspnam SELECT login,crypt,UNIX_TIMESTAMP() - 10,1,2,7,-1,-1,0 FROM ssh_access WHERE ssh_access.login='%1$s' LIMIT 1
|
|
getspent SELECT login,crypt,UNIX_TIMESTAMP() - 10,1,2,7,-1,-1,0 FROM ssh_access
|
|
|
|
[server]
|
|
host localhost
|
|
port 3306
|
|
database ${conf_mysql_db}
|
|
username dtcdaemons
|
|
password ${MYSQL_DTCDAEMONS_PASS}
|
|
" >> $TMP_FILE
|
|
|
|
fi
|
|
echo "# End of DTC configuration : please don't touch this line !" >> $TMP_FILE
|
|
cat <$TMP_FILE >>$PATH_NSS_CONF
|
|
fi
|
|
|
|
# fix perm for the nss root configuration
|
|
chmod 400 $PATH_NSS_CONF
|
|
|
|
if grep "Configured by DTC" $PATH_NSS_ROOT_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "$PATH_NSS_ROOT_CONF has been configured before..."
|
|
fi
|
|
else
|
|
if ! [ -f $PATH_NSS_ROOT_CONF.DTC.backup ]
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Backuping "$PATH_NSS_ROOT_CONF
|
|
fi
|
|
cp -f "$PATH_NSS_ROOT_CONF" "$PATH_NSS_ROOT_CONF.DTC.backup"
|
|
fi
|
|
echo "# Configured by DTC 0.21 : please do not touch this line !" > $TMP_FILE
|
|
if [ ""$NSSMYSQL_VERSION = "nss-mysql" ]; then
|
|
echo "
|
|
shadow.host = inet:localhost:3306;
|
|
shadow.database = ${conf_mysql_db};
|
|
shadow.db_user = dtcdaemons;
|
|
shadow.db_password = ${MYSQL_DTCDAEMONS_PASS};
|
|
shadow.backup_host =;
|
|
shadow.backup_database =;
|
|
shadow.table = ssh_access;
|
|
shadow.where_clause =;
|
|
shadow.userid_column = ssh_access.uid;
|
|
shadow.user_column = ssh_access.login;
|
|
shadow.password_column = ssh_access.crypt;
|
|
shadow.lastchange_column = UNIX_TIMESTAMP()-10;
|
|
shadow.min_column = 1;
|
|
shadow.max_column = 2;
|
|
shadow.warn_column = 7;
|
|
shadow.inact_column = -1;
|
|
shadow.expire_column = -1;
|
|
" >> $TMP_FILE
|
|
else
|
|
# libnss version
|
|
echo "[server]
|
|
host localhost
|
|
port 3306
|
|
database ${conf_mysql_db}
|
|
username dtcdaemons
|
|
password ${MYSQL_DTCDAEMONS_PASS}
|
|
" >> $TMP_FILE
|
|
|
|
fi
|
|
|
|
echo "# End of DTC configuration : please don't touch this line !" >> $TMP_FILE
|
|
cat <$TMP_FILE >>$PATH_NSS_ROOT_CONF
|
|
fi
|
|
|
|
# fix perm for the nss root configuration
|
|
chmod 400 $PATH_NSS_ROOT_CONF
|
|
|
|
rm $TMP_FILE
|
|
|
|
|
|
|
|
|
|
#
|
|
# Install the cron php4 scripts in the $PATH_CRONTAB_CONF
|
|
#
|
|
|
|
# just in case we haven't specified PATH_CRONTAB_CONF, default to /etc/crontab
|
|
if [ -z ""$PATH_CRONTAB_CONF ]; then
|
|
PATH_CRONTAB_CONF=/etc/crontab
|
|
fi
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "===> Installing cron script in "$PATH_CRONTAB_CONF
|
|
fi
|
|
if grep "Configured by DTC " $PATH_CRONTAB_CONF >/dev/null
|
|
then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "/etc/crontab has been configured before : skinping include inssertion"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Inserting DTC cronjob in "$PATH_CRONTAB_CONF
|
|
fi
|
|
if ! [ -f $PATH_CRONTAB_CONF.DTC.backup ]
|
|
then
|
|
cp -f $PATH_CRONTAB_CONF $PATH_CRONTAB_CONF.DTC.backup
|
|
fi
|
|
TMP_FILE=`${MKTEMP} DTC_install.crontab.XXXXXX` || exit 1
|
|
echo "# Configured by DTC v0.10 : Please don't touch this line !" > $TMP_FILE
|
|
# Under Debian, we use cron.d in the rules file as much as possible
|
|
# (unfortunatly, I don't know if it's possible to make it dynamic)
|
|
if [ ! ""$UNIX_TYPE = "debian" ] ; then
|
|
echo "00,10,20,30,40,50 * * * * root cd $PATH_DTC_ADMIN; $PATH_PHP_CGI $PATH_DTC_ADMIN/cron.php >>/var/log/dtc.log" >> $TMP_FILE
|
|
echo "9 4 * * * ${CONF_DTC_SYSTEM_USERNAME} cd $PATH_DTC_ADMIN; nice -n+20 $PATH_PHP_CGI $PATH_DTC_ADMIN/accesslog.php" >> $TMP_FILE
|
|
echo "* * * * * root cd $PATH_DTC_ADMIN; nice -n+20 $PATH_DTC_ADMIN/cpugraph/get_cpu_load.sh $PATH_DTC_ETC >>/var/log/dtc.log" >> $TMP_FILE
|
|
echo "* * * * * root cd $PATH_DTC_ADMIN; nice -n+20 $PATH_DTC_ADMIN/netusegraph/get_net_usage.sh $PATH_DTC_ETC \"$conf_eth2monitor\" >>/var/log/dtc.log" >> $TMP_FILE
|
|
echo "* * * * * root cd $PATH_DTC_ADMIN; nice -n+20 $PATH_DTC_ADMIN/memgraph/get_meminfo.sh $PATH_DTC_ETC >>/var/log/dtc.log" >> $TMP_FILE
|
|
echo "9 3 * * * root cd $PATH_DTC_ADMIN; $PATH_PHP_CGI $PATH_DTC_ADMIN/reminders.php" >> $TMP_FILE
|
|
fi
|
|
|
|
if [ ""$conf_mta_type = "postfix" -o ""$conf_mta_type = "p" ]; then
|
|
echo "* * * * * root cd $PATH_DTC_ADMIN; $PATH_DTC_ADMIN/queuegraph/count_postfix.sh $PATH_DTC_ETC >>/var/log/dtc.log" >> $TMP_FILE
|
|
fi
|
|
if [ ""$conf_mta_type = "qmail" -o ""$conf_mta_type = "q" ]; then
|
|
echo "* * * * * root cd $PATH_DTC_ADMIN; nice -n+20 $PATH_DTC_ADMIN/queuegraph/count_qmail.sh $PATH_DTC_ETC >>/var/log/dtc.log" >> $TMP_FILE
|
|
fi
|
|
cat < $TMP_FILE >>/etc/crontab
|
|
rm $TMP_FILE
|
|
fi
|
|
|
|
# add the default password to .htpasswd if it doesn't exist already
|
|
if [ -e $conf_hosting_path/.htpasswd ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "OK, you have your "$conf_hosting_path"/.htpasswd setup already!"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Creating "$conf_hosting_path"/.htpasswd with username '$conf_adm_login' and password '$conf_adm_pass'"
|
|
fi
|
|
if [ -e "/usr/local/bin/htpasswd" ] ;then
|
|
HTPASSWD="/usr/local/bin/htpasswd"
|
|
else
|
|
if [ -e "/usr/bin/htpasswd" ] ;then
|
|
HTPASSWD="/usr/bin/htpasswd"
|
|
else
|
|
if [ -e "/usr/sbin/htpasswd" ] ;then
|
|
HTPASSWD="/usr/sbin/htpasswd"
|
|
else
|
|
if [ -e "/usr/sbin/htpasswd2" ] ;then
|
|
HTPASSWD="/usr/sbin/htpasswd2"
|
|
else
|
|
HTPASSWD="htpasswd"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
$HTPASSWD -cb "$conf_hosting_path"/.htpasswd "$conf_adm_login" $conf_adm_pass
|
|
fi
|
|
|
|
if [ -e $PATH_DTC_ADMIN/.htaccess ]; then
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "OK, you have your "$PATH_DTC_ADMIN"/.htaccess setup already!"
|
|
fi
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Creating "$PATH_DTC_ADMIN"/.htaccess file."
|
|
fi
|
|
echo "AuthName \"DTC root control panel login!\"
|
|
AuthType Basic
|
|
AuthUserFile "$conf_hosting_path"/.htpasswd
|
|
require valid-user" >$PATH_DTC_ADMIN/.htaccess
|
|
fi
|
|
|
|
# Alias the ncftp login file in etc to the path of the DTC /etc
|
|
if [ ! -e /etc/ncftpput_login.cfg ] ; then
|
|
ln -s $PATH_DTC_ETC/ncftpput_login.cfg /etc/ncftpput_login.cfg
|
|
fi
|
|
|
|
# Chown the imgcache folder so the script can write in it
|
|
chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} ${PATH_DTC_SHARED}/shared/imgcache
|
|
chown -R ${CONF_DTC_SYSTEM_USERNAME}:${CONF_DTC_SYSTEM_GROUPNAME} ${PATH_DTC_ETC}
|
|
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "***********************************************************"
|
|
echo "*** Please wait while DTC configures all the daemons... ***"
|
|
echo "***********************************************************"
|
|
|
|
cd $PATH_DTC_ADMIN; $PATH_PHP_CGI $PATH_DTC_ADMIN/cron.php
|
|
echo "--- --- --- INSTALLATION FINISHED --- --- ---"
|
|
else
|
|
cd $PATH_DTC_ADMIN; $PATH_PHP_CGI $PATH_DTC_ADMIN/cron.php 2>&1 >/var/log/dtc.log
|
|
echo "done!"
|
|
fi
|
|
|
|
if [ ""$conf_report_setup = "true" ]; then
|
|
if [ -e /usr/bin/wget ] ; then
|
|
WGET="/usr/bin/wget"
|
|
else
|
|
WGET=`which wget`
|
|
fi
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Reporting install using $WGET -b -q --output-document=/dev/null http://www.gplhost.com/dtc-install-stats.php?ostype=${UNIX_TYPE}"
|
|
fi
|
|
$WGET -b -q --output-document=/dev/null "http://www.gplhost.com/dtc-install-stats.php?ostype=${UNIX_TYPE}" -o /dev/null >/dev/null
|
|
else
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo "Not reporting install this time..."
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "Browse to: \"http://"$dtc_admin_subdomain"."$main_domain_name"/dtcadmin/\""
|
|
echo " or to: \"https://"$dtc_admin_subdomain"."$main_domain_name"/dtcadmin/\""
|
|
echo "with login/pass of the main domain admin."
|
|
echo "Remember to relaunch this installer if you"
|
|
echo "install some other mail servers, whatever"
|
|
echo "it is (qmail, postfix, courier, etc...)."
|
|
echo "NOTE: please check sshd_config and then restart ssh"
|
|
if [ ""$VERBOSE_INSTALL = "yes" ] ;then
|
|
echo ""
|
|
echo "Visit DTC Home page"
|
|
fi
|
|
echo "http://www.gplhost.com/software-dtc.html"
|
|
|
|
exit 0
|