Commit 060df26b authored by Benjamin Sonntag's avatar Benjamin Sonntag

Merge branch 'debconf' of https://github.com/pilou-/AlternC

parents 9a6d9adf a7d1a5c3
#! /bin/bash
#!/bin/bash
set -e
......@@ -8,61 +8,68 @@ set -e
db_capb backup
#Return if everything is good, exit error number otherwise
#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
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(){
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
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/retry_remote_mysql || true
if [ $? -eq 30 ]; then
db_input high alternc/remote_mysql_error || true
db_go || true
exit 4
fi
db_go
db_get alternc/retry_remote_mysql || true
if [ "$RET" = "false" ]; then
db_input high alternc/remote_mysql_error || true
db_go || true
exit 4
fi
fi
done
}
function get_first_existing_dir() {
function get_first_existing_dir()
{
# Prend en premier parametre un chemin
# Retourne le répertoire parent existant le plus "proche"
# Exemple: on lui donne /var/www/alternc/gerard/dupont/ mais
......@@ -79,7 +86,6 @@ function get_first_existing_dir() {
}
# default values for local.sh
MYSQL_HOST=127.0.0.1
MYSQL_DATABASE=alternc
......@@ -102,28 +108,33 @@ SQLBACKUP_TYPE="rotate"
SQLBACKUP_OVERWRITE="no"
QUEST_STATE=1
while [ "$QUEST_STATE" != 0 -a "$QUEST_STATE" != 13 ]; do
while [ "$QUEST_STATE" != 0 -a "$QUEST_STATE" != 14 ]; do
case "$QUEST_STATE" in
1)
if [ -r /etc/alternc/local.sh ]; then
# source the current config
. /etc/alternc/local.sh
# source the current config
. /etc/alternc/local.sh
fi
# upgrade <= 3.0 to >= 3.1
if [ "x$ALTERNC_LOC" != "x" ]
then
ALTERNC_HTML="$ALTERNC_LOC/html"
ALTERNC_MAIL="$ALTERNC_LOC/mail"
if [ "x$ALTERNC_LOC" != "x" ]; then
ALTERNC_HTML="$ALTERNC_LOC/html"
ALTERNC_MAIL="$ALTERNC_LOC/mail"
fi
#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
db_get alternc/hostingname
if [ -z "$RET" ]; then
db_set alternc/hostingname "$HOSTING"
db_input high alternc/hostingname || true
fi
;;
2)
# Get the FQDN
db_input high alternc/desktopname || true
db_get alternc/desktopname
if [ -z "$RET" ]; then
db_set alternc/desktopname "$FQDN"
db_input high alternc/desktopname || true
fi
# Be sure that the FQDN is lowercase (Bug #1405)
db_get alternc/desktopname
db_set alternc/desktopname "`echo $RET | tr '[:upper:]' '[:lower:]'`"
......@@ -131,24 +142,27 @@ while [ "$QUEST_STATE" != 0 -a "$QUEST_STATE" != 13 ]; do
;;
3)
#we ask for the public and private ip
db_set alternc/public_ip "$PUBLIC_IP"
db_get alternc/public_ip
if [ -z "$RET" ]; then
db_set alternc/public_ip "$PUBLIC_IP"
fi
STATE=0
while [ $STATE -eq 0 ]; do
db_input high alternc/public_ip || true
db_go
db_get alternc/public_ip
db_get alternc/public_ip
ip="$RET"
if valid_ip $ip ; then
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
else
db_reset alternc/use_private_ip || true
db_fset alternc/use_private_ip "seen" "false" || true
fi
if [ "$RET" = "true" ]; then
STATE=1
else
db_reset alternc/use_private_ip || true
db_fset alternc/use_private_ip "seen" "false" || true
fi
else
STATE=1
fi
......@@ -159,55 +173,69 @@ while [ "$QUEST_STATE" != 0 -a "$QUEST_STATE" != 13 ]; do
;;
4)
#private IP
db_set alternc/internal_ip "$INTERNAL_IP"
db_get alternc/internal_ip
if [ -z "$RET" ]; then
db_set alternc/internal_ip "$INTERNAL_IP"
fi
STATE=0
while [ $STATE -eq 0 ]; do
db_input high alternc/internal_ip || true
db_go
db_get alternc/internal_ip
db_get alternc/internal_ip
ip="$RET"
if valid_ip $ip ; then
if valid_ip $ip ; then
STATE=1
fi
fi
done
;;
5)
#We ask for the DNS server for the ip
db_set alternc/ns1 "$NS1_HOSTNAME"
db_input high alternc/ns1 || true
db_get alternc/ns1
if [ -z "$RET" ]; then
db_set alternc/ns1 "$NS1_HOSTNAME"
db_input high alternc/ns1 || true
fi
;;
6)
db_set alternc/ns2 "$NS2_HOSTNAME"
db_input high alternc/ns2 || true
db_get alternc/ns2
if [ -z "$RET" ]; then
db_set alternc/ns2 "$NS2_HOSTNAME"
db_input high alternc/ns2 || true
fi
;;
7)
db_set alternc/default_mx "$DEFAULT_MX"
db_input high alternc/default_mx || true
db_get alternc/default_mx
if [ -z "$RET" ]; then
db_set alternc/default_mx "$DEFAULT_MX"
db_input high alternc/default_mx || true
fi
;;
8)
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
;;
9)
db_get alternc/use_local_mysql || true
if [ -z "$RET" -o "$RET" == "false" ]
then
#user want to use a remote server
check_mysql
db_get alternc/use_local_mysql
if [ "$RET" != "true" ]; then
db_input critical alternc/use_remote_mysql || true
fi
;;
10)
# We need to set the alternc_location here because we have to test for quotas and acls
db_get alternc/use_remote_mysql
if [ "$RET" == "true" ]; then
# user want to use a remote server
check_mysql
fi
;;
11)
# We need to set the alternc_location here because we have to test for quotas and acls
db_get alternc/alternc_html
if [ -z "$RET" ];then
if [ -z "$RET" ]; then
db_set alternc/alternc_html $ALTERNC_HTML
db_input high alternc/alternc_html
db_input high alternc/alternc_html || true
fi
db_get alternc/alternc_html
......@@ -219,121 +247,93 @@ while [ "$QUEST_STATE" != 0 -a "$QUEST_STATE" != 13 ]; do
aclcheckfile="$basedir/test-acl"
touch "$aclcheckfile"
setfacl -m u:root:rwx "$aclcheckfile" 2>/dev/null || (
test -e "$aclcheckfile" && rm -f "$aclcheckfile" || true
db_input critical alternc/acluninstalled || true
db_go
db_reset alternc/acluninstalled || true
db_fset alternc/acluninstalled "seen" "false" || true
exit 2
test -e "$aclcheckfile" && rm -f "$aclcheckfile" || true
db_input high alternc/acluninstalled || true
db_go || true
exit 2
)
test -e "$aclcheckfile" && rm -f "$aclcheckfile" || true
quota -gA -f $MOUNT_POINT 2>/dev/null || (
db_get alternc/quotauninstalled
if [ -z "$RET" ]; then
db_input critical alternc/quotauninstalled || true
db_go
#db_reset alternc/quotauninstalled || true
db_set alternc/quotauninstalled "false" || true
fi
db_get alternc/quotauninstalled
if [ -z "$RET" ]; then
db_input critical alternc/quotauninstalled || true
db_go
#db_reset alternc/quotauninstalled || true
db_set alternc/quotauninstalled "false" || true
fi
)
;;
11)
12)
db_get alternc/alternc_mail
if [ -z "$RET" ];then
if [ -z "$RET" ]; then
db_set alternc/alternc_mail $ALTERNC_MAIL
db_input high alternc/alternc_mail
db_input high alternc/alternc_mail || true
fi
;;
12)
13)
db_get alternc/alternc_logs
if [ -z "$RET" ];then
db_set alternc/alternc_logs $ALTERNC_LOGS
db_input high alternc/alternc_logs
db_input high alternc/alternc_logs || true
fi
;;
esac
if db_go; then
QUEST_STATE=$(($QUEST_STATE + 1))
else
else
QUEST_STATE=$(($QUEST_STATE - 1))
fi
done
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)
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`
# 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_USER/;s/password/MYSQL_PASS/;s/database/MYSQL_DATABASE/;p}" /etc/alternc/my.cnf`
fi
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`
# 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
db_get alternc/hostingname
if [ -z "$RET" ]
then
db_set alternc/hostingname "$HOSTING"
fi
db_get alternc/desktopname
if [ -z "$RET" ]
then
db_set alternc/desktopname "$FQDN"
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"
if [ -z "$RET" ]; then
db_set alternc/monitor_ip "$MONITOR_IP"
fi
db_get alternc/default_mx2
if [ -z "$RET" ]
then
db_set alternc/default_mx2 "$DEFAULT_SECONDARY_MX"
if [ -z "$RET" ]; then
db_set alternc/default_mx2 "$DEFAULT_SECONDARY_MX"
fi
db_get alternc/mysql/host
if [ -z "$RET" ]
then
db_set alternc/mysql/host "$MYSQL_HOST"
if [ -z "$RET" ]; then
db_set alternc/mysql/host "$MYSQL_HOST"
fi
#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
db_get alternc/mysql/db
if [ -z "$RET" ]
then
db_set alternc/mysql/db "$MYSQL_DATABASE"
if [ -z "$RET" ]; then
db_set alternc/mysql/db "$MYSQL_DATABASE"
fi
db_get alternc/mysql/user
if [ -z "$RET" ]
then
if [ -z "$RET" ]; then
db_get alternc/mysql/remote_user
if [ -z "$RET" ]
then
if [ -z "$RET" ]; then
db_set alternc/mysql/user "$MYSQL_USER"
else
db_set alternc/mysql/user "$RET"
......@@ -341,11 +341,9 @@ if [ -z "$RET" ]
fi
db_get alternc/mysql/password
if [ -z "$RET" ]
then
if [ -z "$RET" ]; then
db_get alternc/mysql/remote_password
if [ -z "$RET" ]
then
if [ -z "$RET" ]; then
db_set alternc/mysql/password "$MYSQL_PASS"
else
db_set alternc/mysql/password "$RET"
......@@ -353,33 +351,28 @@ if [ -z "$RET" ]
fi
db_get alternc/mysql/client
if [ -z "$RET" ]
then
db_set alternc/mysql/client "$MYSQL_CLIENT"
if [ -z "$RET" ]; then
db_set alternc/mysql/client "$MYSQL_CLIENT"
fi
db_get alternc/sql/backup_type
if [ -z "$RET" ]
then
db_set alternc/sql/backup_type "$SQLBACKUP_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"
if [ -z "$RET" ]; then
db_set alternc/sql/backup_overwrite "$SQLBACKUP_OVERWRITE"
fi
db_get alternc/mysql/alternc_mail_user
if [ -z "$RET" ]
then
db_set alternc/mysql/alternc_mail_user "$MYSQL_MAIL_USER"
if [ -z "$RET" ]; then
db_set alternc/mysql/alternc_mail_user "$MYSQL_MAIL_USER"
fi
db_get alternc/mysql/alternc_mail_password
if [ -z "$RET" ]
then
db_set alternc/mysql/alternc_mail_password "$MYSQL_MAIL_PASS"
if [ -z "$RET" ]; then
db_set alternc/mysql/alternc_mail_password "$MYSQL_MAIL_PASS"
fi
db_input low alternc/default_mx2 || true
......
Template: alternc/acluninstalled
Type: note
Type: error
_Description: AlternC need ACL on filesystem
AlternC can't work without ACL activated on its filesystem.
ACL are currently not enabled.
.
Also, you need to activate group quota (grpquota)
to be able to use disk quota (but that's not mandatory).
.
This is a fatal error and will cause the package installation
to fail.
Template: alternc/quotauninstalled
Type: note
......@@ -238,11 +241,10 @@ _Description: Use locally found MySQL server?
Template: alternc/use_remote_mysql
Type: boolean
_Description: Use a remote MySQL server?
No local Mysql server was found.
Please confirm you want to use a remote Mysql Server.
If not, AlternC cannot be installed.
Template: alternc/remote_mysql_error
Template: alternc/retry_remote_mysql
Type: boolean
_Description: MySQL connection error. Try again?
Remote connection to the MySQL server failed.
......@@ -255,3 +257,10 @@ _Description: Private IP detected, use it anyway?
this is an expected situation, since the server might not be reachable
from outside your network.
Template: alternc/remote_mysql_error
Type: error
_Description: Remote mysql: connection error
Connection to the remote MySQL server failed.
.
This is a fatal error and will cause the package installation
to fail.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment