2012-12-07 16:49:45 +00:00
|
|
|
#! /bin/bash -x
|
2006-04-26 12:28:53 +00:00
|
|
|
|
|
|
|
set -e
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2006-04-26 12:28:53 +00:00
|
|
|
# Source debconf library.
|
|
|
|
. /usr/share/debconf/confmodule
|
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
db_capb backup
|
2006-04-26 12:28:53 +00:00
|
|
|
|
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
#Return if everything is good, exit error number otherwise
|
|
|
|
function valid_ip()
|
|
|
|
{
|
|
|
|
local ip=$1
|
|
|
|
local stat=1
|
|
|
|
|
|
|
|
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
|
|
|
OIFS=$IFS
|
|
|
|
IFS='.'
|
|
|
|
ip=($ip)
|
|
|
|
IFS=$OIFS
|
|
|
|
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
|
|
|
|
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
|
|
|
|
stat=$?
|
|
|
|
fi
|
|
|
|
return $stat
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#checking mysql connectivity and updating local.sh variables accordingly
|
|
|
|
check_mysql(){
|
|
|
|
|
|
|
|
STATE=0
|
|
|
|
while [ "$STATE" -eq 0 ]; do
|
|
|
|
db_input high alternc/mysql/host || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/mysql/host || true
|
|
|
|
MYSQL_HOST="$RET"
|
|
|
|
db_input high alternc/mysql/remote_user || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/mysql/remote_user || true
|
|
|
|
MYSQL_USER="$RET"
|
|
|
|
db_input high alternc/mysql/remote_password || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/mysql/remote_password || true
|
|
|
|
MYSQL_PASSWORD="$RET"
|
|
|
|
db_input high alternc/mysql/client || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/mysql/client || true
|
|
|
|
MYSQL_CLIENT="$RET"
|
|
|
|
if [ "`mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -h"$MYSQL_HOST" -Bse 'SELECT "OK";' 2>/dev/null`" = "OK" ]; then
|
|
|
|
STATE=`expr $STATE + 1`
|
|
|
|
else
|
|
|
|
db_input high alternc/remote_mysql_error || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/remote_mysql_error || true
|
|
|
|
if [ "$RET" = "false" ]; then
|
|
|
|
exit 4
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
}
|
2006-04-26 12:28:53 +00:00
|
|
|
|
|
|
|
# default values for local.sh
|
|
|
|
MYSQL_HOST=127.0.0.1
|
|
|
|
MYSQL_DATABASE=alternc
|
|
|
|
MYSQL_USER=sysusr
|
|
|
|
MYSQL_PASS="`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..10)' `"
|
2012-04-24 15:51:47 +00:00
|
|
|
MYSQL_MAIL_USER=alternc_user
|
2012-04-16 14:21:10 +00:00
|
|
|
MYSQL_MAIL_PASS="`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..10)' `"
|
2006-04-26 12:28:53 +00:00
|
|
|
MYSQL_CLIENT=localhost
|
2013-01-21 16:23:23 +00:00
|
|
|
FQDN="`(cat /etc/mailname 2>/dev/null || hostname -f)|tr '[:upper:]' '[:lower:]'`"
|
2010-01-15 00:08:25 +00:00
|
|
|
INTERNAL_IP="`env LANG=C /sbin/ifconfig|grep inet | grep -v 127.0.0.1| head -1 | cut -d: -f2 | sed -e 's/\([0-9\.]*\).*$/\1/' 2>/dev/null || hostname -f`"
|
2006-04-26 12:28:53 +00:00
|
|
|
PUBLIC_IP="$INTERNAL_IP"
|
|
|
|
DEFAULT_MX="`cat /etc/mailname 2>/dev/null || hostname -f`"
|
|
|
|
ALTERNC_LOC=/var/alternc
|
|
|
|
NS1_HOSTNAME="$FQDN"
|
|
|
|
NS2_HOSTNAME="$FQDN"
|
|
|
|
HOSTING="AlternC"
|
2008-07-10 21:18:42 +00:00
|
|
|
SQLBACKUP_TYPE="rotate"
|
|
|
|
SQLBACKUP_OVERWRITE="no"
|
2013-01-29 13:54:27 +00:00
|
|
|
QUEST_STATE=1
|
|
|
|
|
|
|
|
while [ "$QUEST_STATE" != 0 -a "$QUEST_STATE" != 14 ]; do
|
|
|
|
case "$QUEST_STATE" in
|
|
|
|
1)
|
|
|
|
db_title AlternC
|
|
|
|
db_input critical alternc/welcomeconfirm || true
|
|
|
|
#db_go
|
|
|
|
;;
|
|
|
|
2)
|
|
|
|
# Check the answer.
|
|
|
|
db_get alternc/welcomeconfirm || true
|
2006-04-26 12:28:53 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
if [ "$RET" = "false" ]; then
|
|
|
|
# reset the welcomeconfirm flag if user refuses so it gets asked again next time
|
|
|
|
db_reset alternc/welcomeconfirm || true
|
|
|
|
db_fset alternc/welcomeconfirm "seen" "false" || true
|
|
|
|
exit 3
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
3)
|
|
|
|
if [ -r /etc/alternc/local.sh ]; then
|
|
|
|
# source the current config
|
|
|
|
. /etc/alternc/local.sh
|
|
|
|
fi
|
2013-01-21 16:23:23 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
#We ask for the hosting name and the FQDN
|
|
|
|
db_set alternc/hostingname "$HOSTING"
|
|
|
|
db_set alternc/desktopname "$FQDN"
|
|
|
|
db_input high alternc/hostingname || true
|
|
|
|
;;
|
|
|
|
4)
|
|
|
|
# Get the FQDN
|
|
|
|
db_input high alternc/desktopname || true
|
|
|
|
# Be sure that the FQDN is lowercase (Bug #1405)
|
|
|
|
db_get alternc/desktopname
|
|
|
|
db_set alternc/desktopname "`echo $RET | tr '[:upper:]' '[:lower:]'`"
|
|
|
|
# End bug #1405
|
|
|
|
;;
|
|
|
|
5)
|
|
|
|
#we ask for the public and private ip
|
|
|
|
db_set alternc/public_ip "$PUBLIC_IP"
|
|
|
|
STATE=0
|
|
|
|
while [ $STATE -eq 0 ]; do
|
|
|
|
db_input high alternc/public_ip || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/public_ip
|
|
|
|
ip="$RET"
|
|
|
|
if valid_ip $ip ; then
|
|
|
|
if [ $(echo $ip |egrep '(^127\.)|(^192\.168\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^::1)$') ]; then
|
|
|
|
db_input high alternc/use_private_ip || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/use_private_ip
|
|
|
|
if [ "$RET" = "true" ]; then
|
|
|
|
STATE=1
|
2013-02-01 13:41:53 +00:00
|
|
|
else
|
|
|
|
db_reset alternc/use_private_ip || true
|
|
|
|
db_fset alternc/use_private_ip "seen" "false" || true
|
2013-01-29 13:54:27 +00:00
|
|
|
fi
|
|
|
|
else
|
|
|
|
STATE=1
|
|
|
|
fi
|
|
|
|
else
|
2012-09-19 12:09:36 +00:00
|
|
|
STATE=1
|
|
|
|
fi
|
2013-01-29 13:54:27 +00:00
|
|
|
done
|
|
|
|
;;
|
|
|
|
6)
|
|
|
|
#private IP
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
db_set alternc/internal_ip "$INTERNAL_IP"
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
STATE=0
|
|
|
|
while [ $STATE -eq 0 ]; do
|
|
|
|
db_input high alternc/internal_ip || true
|
|
|
|
db_go
|
|
|
|
db_get alternc/internal_ip
|
|
|
|
ip="$RET"
|
|
|
|
if valid_ip $ip ; then
|
|
|
|
STATE=1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
7)
|
|
|
|
#We ask for the DNS server for the ip
|
|
|
|
#
|
|
|
|
db_set alternc/ns1 "$NS1_HOSTNAME"
|
|
|
|
|
|
|
|
db_input high alternc/ns1 || true
|
|
|
|
;;
|
|
|
|
8)
|
|
|
|
db_set alternc/ns1 "$NS2_HOSTNAME"
|
|
|
|
db_input high alternc/ns2 || true
|
|
|
|
;;
|
|
|
|
9)
|
|
|
|
db_set alternc/default_mx "$DEFAULT_MX"
|
|
|
|
db_input high alternc/default_mx || true
|
|
|
|
;;
|
|
|
|
10)
|
|
|
|
if [ "`mysql --defaults-file=/etc/mysql/debian.cnf -Bse 'SELECT "OK";' 2>/dev/null`" = "OK" ]; then
|
|
|
|
db_input critical alternc/use_local_mysql || true
|
|
|
|
else
|
|
|
|
db_input critical alternc/use_remote_mysql || true
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
11)
|
|
|
|
db_get alternc/use_local_mysql || true
|
|
|
|
if [ "$RET" = "false" ]; then
|
|
|
|
#user want to use a remote server
|
|
|
|
check_mysql
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
12)
|
|
|
|
db_input low alternc/alternc_location || true
|
|
|
|
;;
|
|
|
|
13)
|
|
|
|
# We need to check the alternc_location here because we have to test for quotas and acls
|
|
|
|
db_get alternc/alternc_location
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/alternc_location "$ALTERNC_LOC"
|
|
|
|
fi
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
db_get alternc/alternc_location
|
|
|
|
LOCATION="$RET"
|
|
|
|
#checking acl and quota activation, does't work with NFS yet. should now work with lxc
|
|
|
|
MOUNT_POINT=$(df -P ${LOCATION%/*} | tail -n 1 | awk '{print $6}')
|
|
|
|
|
|
|
|
# Get the mount options for the path: (warning, / may have multiple declarations, take the last one only :
|
|
|
|
MOUNT_OPTS=$(awk '$2=="'$MOUNT_POINT'" { print $4 }' /proc/mounts | tail -1)
|
|
|
|
|
|
|
|
# Check to see if acl is one of the mount points:
|
|
|
|
ACL="$(echo "$MOUNT_OPTS" | tr "," "\\n" | egrep '^acl|attr2|user_xattr$')" || true
|
|
|
|
if [ -z "$ACL" ]; then
|
|
|
|
db_input critical alternc/acluninstalled || true
|
|
|
|
db_title AlternC
|
|
|
|
db_reset alternc/acluninstalled || true
|
|
|
|
db_fset alternc/acluninstalled "seen" "false" || true
|
|
|
|
exit 2
|
|
|
|
fi
|
|
|
|
quota_activation=$(quotaon -pa 2>/dev/null |grep '^group.*on$' | /usr/bin/awk '$4 ~ /^\'$MOUNT_POINT'$/ {print $4}')
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
if [ -z "$quota_activation" -o "$quota_activation" != "$MOUNT_POINT" ]; then
|
|
|
|
db_input critical alternc/quotauninstalled || true
|
|
|
|
db_go
|
|
|
|
db_reset alternc/quotauninstalled || true
|
|
|
|
db_fset alternc/quotauninstalled "seen" "false" || true
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if db_go; then
|
|
|
|
QUEST_STATE=$(($QUEST_STATE + 1))
|
|
|
|
else
|
|
|
|
QUEST_STATE=$(($QUEST_STATE - 1))
|
|
|
|
fi
|
|
|
|
done
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2008-04-13 04:35:19 +00:00
|
|
|
if [ -r /etc/alternc/my.cnf ]; then
|
|
|
|
# make mysql configuration available as shell variables
|
|
|
|
# to convert from .cnf to shell syntax, we:
|
|
|
|
# * match only lines with "equal" in them (/=/)
|
|
|
|
# * remove whitespace around the = and add a left quote operator ' (;s)
|
|
|
|
# * add a right quote operator at the end of line (;s)
|
|
|
|
# * convert mysql variables into our MYSQL_ naming convention (;s)
|
|
|
|
# * print the result (;p)
|
2008-04-17 23:08:10 +00:00
|
|
|
eval `sed -n -e "/=/{s/ *= *\"\?/='/;s/\"\?\$/'/;s/host/MYSQL_HOST/;s/user/MYSQL_USER/;s/password/MYSQL_PASS/;s/database/MYSQL_DATABASE/;p}" /etc/alternc/my.cnf`
|
2008-04-13 04:35:19 +00:00
|
|
|
fi
|
2006-04-26 12:28:53 +00:00
|
|
|
|
2012-04-16 14:21:10 +00:00
|
|
|
if [ -r /etc/alternc/my_mail.cnf ]; then
|
|
|
|
# make mysql configuration available as shell variables
|
|
|
|
# to convert from .cnf to shell syntax, we:
|
|
|
|
# * match only lines with "equal" in them (/=/)
|
|
|
|
# * remove whitespace around the = and add a left quote operator ' (;s)
|
|
|
|
# * add a right quote operator at the end of line (;s)
|
|
|
|
# * convert mysql variables into our MYSQL_ naming convention (;s)
|
|
|
|
# * print the result (;p)
|
|
|
|
eval `sed -n -e "/=/{s/ *= *\"\?/='/;s/\"\?\$/'/;s/host/MYSQL_HOST/;s/user/MYSQL_MAIL_USER/;s/password/MYSQL_MAIL_PASS/;s/database/MYSQL_DATABASE/;p}" /etc/alternc/my_mail.cnf`
|
|
|
|
fi
|
2011-05-22 19:18:43 +00:00
|
|
|
|
2012-08-06 09:54:09 +00:00
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
#if [ "`mysql --defaults-file=/etc/mysql/debian.cnf -Bse 'SELECT "OK";' 2>/dev/null`" = "OK" ]; then
|
|
|
|
# db_input critical alternc/use_local_mysql || true
|
|
|
|
# db_go
|
|
|
|
# db_get alternc/use_local_mysql || true
|
|
|
|
# if [ "$RET" = "false" ]; then
|
|
|
|
# #user want to use a remote server
|
|
|
|
# check_mysql
|
|
|
|
# fi
|
|
|
|
#else
|
|
|
|
#db_input critical alternc/use_remote_mysql || true
|
|
|
|
#db_go
|
|
|
|
#db_get alternc/use_remote_mysql || true
|
|
|
|
# if [ "$RET" = "true" ]; then
|
|
|
|
# #user want to use a remote server
|
|
|
|
# check_mysql
|
|
|
|
# fi
|
|
|
|
#fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if [ -z "$ACL" ]; then
|
|
|
|
# db_input critical alternc/acluninstalled || true
|
|
|
|
# db_go
|
|
|
|
# db_title AlternC
|
|
|
|
# db_reset alternc/acluninstalled || true
|
|
|
|
# db_fset alternc/acluninstalled "seen" "false" || true
|
|
|
|
# exit 2
|
|
|
|
#fi
|
|
|
|
#quota_activation=$(quotaon -pa 2>/dev/null |grep '^group.*on$' | /usr/bin/awk '$4 ~ /^\'$MOUNT_POINT'$/ {print $4}')
|
|
|
|
#
|
|
|
|
#if [ -z "$quota_activation" -o "$quota_activation" != "$MOUNT_POINT" ]; then
|
|
|
|
# db_input critical alternc/quotauninstalled || true
|
|
|
|
# db_go
|
|
|
|
# db_reset alternc/quotauninstalled || true
|
|
|
|
# db_fset alternc/quotauninstalled "seen" "false" || true
|
|
|
|
#fi
|
2012-08-06 09:54:09 +00:00
|
|
|
|
2006-04-26 12:28:53 +00:00
|
|
|
db_get alternc/hostingname
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/hostingname "$HOSTING"
|
|
|
|
fi
|
|
|
|
|
|
|
|
db_get alternc/desktopname
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
2013-01-21 16:23:23 +00:00
|
|
|
db_set alternc/desktopname "$FQDN"
|
2006-04-26 12:28:53 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
db_get alternc/monitor_ip
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/monitor_ip "$MONITOR_IP"
|
|
|
|
fi
|
|
|
|
|
|
|
|
db_get alternc/ns2
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/ns2 "$NS2_HOSTNAME"
|
|
|
|
fi
|
|
|
|
|
2011-06-04 08:59:12 +00:00
|
|
|
db_get alternc/default_mx2
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/default_mx2 "$DEFAULT_SECONDARY_MX"
|
|
|
|
fi
|
|
|
|
|
2006-04-26 12:28:53 +00:00
|
|
|
db_get alternc/mysql/host
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/host "$MYSQL_HOST"
|
|
|
|
fi
|
|
|
|
|
2013-01-29 13:54:27 +00:00
|
|
|
#Even if we asked the question concerning the database earlier in the process
|
|
|
|
#those calls are needed to pass the variable of remote sql server to AlternC
|
2006-04-26 12:28:53 +00:00
|
|
|
db_get alternc/mysql/db
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/db "$MYSQL_DATABASE"
|
|
|
|
fi
|
|
|
|
|
|
|
|
db_get alternc/mysql/user
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/user "$MYSQL_USER"
|
|
|
|
fi
|
|
|
|
|
|
|
|
db_get alternc/mysql/password
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/password "$MYSQL_PASS"
|
|
|
|
fi
|
|
|
|
|
|
|
|
db_get alternc/mysql/client
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/client "$MYSQL_CLIENT"
|
|
|
|
fi
|
|
|
|
|
2008-07-10 21:18:42 +00:00
|
|
|
db_get alternc/sql/backup_type
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/sql/backup_type "$SQLBACKUP_TYPE"
|
|
|
|
fi
|
|
|
|
|
|
|
|
db_get alternc/sql/backup_overwrite
|
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/sql/backup_overwrite "$SQLBACKUP_OVERWRITE"
|
|
|
|
fi
|
|
|
|
|
2012-04-24 15:51:47 +00:00
|
|
|
db_get alternc/mysql/alternc_mail_user
|
2012-04-16 14:21:10 +00:00
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/alternc_mail_user "$MYSQL_MAIL_USER"
|
|
|
|
fi
|
|
|
|
|
2012-04-24 15:51:47 +00:00
|
|
|
db_get alternc/mysql/alternc_mail_password
|
2012-04-16 14:21:10 +00:00
|
|
|
if [ -z "$RET" ]
|
|
|
|
then
|
|
|
|
db_set alternc/mysql/alternc_mail_password "$MYSQL_MAIL_PASS"
|
|
|
|
fi
|
2012-09-19 12:09:36 +00:00
|
|
|
|
2011-06-04 08:59:12 +00:00
|
|
|
db_input low alternc/default_mx2 || true
|
2006-04-26 12:28:53 +00:00
|
|
|
db_input low alternc/mysql/host || true
|
|
|
|
db_input low alternc/mysql/db || true
|
|
|
|
db_input low alternc/mysql/user || true
|
|
|
|
db_input low alternc/mysql/password || true
|
2012-04-16 14:21:10 +00:00
|
|
|
db_input low alternc/mysql/alternc_mail_password || true
|
|
|
|
db_input low alternc/mysql/alternc_mail_user || true
|
2007-11-15 02:53:04 +00:00
|
|
|
db_input low alternc/mysql/client || true
|
2008-07-10 22:02:38 +00:00
|
|
|
db_input low alternc/sql/backup_type || true
|
|
|
|
db_input low alternc/sql/overwrite || true
|
2006-04-26 12:28:53 +00:00
|
|
|
db_input low alternc/monitor_ip || true
|
2009-08-04 18:02:11 +00:00
|
|
|
db_input low alternc/slaves || true
|
2006-04-26 12:28:53 +00:00
|
|
|
db_go
|
|
|
|
|
|
|
|
# vim: et sw=4
|