forked from AlternC/AlternC
-
Notifications
You must be signed in to change notification settings - Fork 0
/
alternc-slave.postinst
214 lines (175 loc) · 6.49 KB
/
alternc-slave.postinst
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#!/bin/sh
set -e
# Source debconf library.
. /usr/share/debconf/confmodule
CONFIGFILE="/etc/alternc/local.sh"
update_var() {
local question
local var
question="$1"
var="$2"
db_get "$question"
if [ ! -z "$RET" ]; then
grep -Eq "^ *$var=" $CONFIGFILE || echo "$var=" >> $CONFIGFILE
SED_SCRIPT="$SED_SCRIPT;s\\^ *$var=.*\\$var=\"$RET\"\\"
fi
}
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
#
# quoting from the policy:
# Any necessary prompting should almost always be confined to the
# post-installation script, and should be protected with a conditional
# so that unnecessary prompting doesn't happen if a package's
# installation fails and the `postinst' is called with `abort-upgrade',
# `abort-remove' or `abort-deconfigure'.
case "$1" in
configure)
# Create AlternC Panel user for web server
if ! getent group alterncpanel; then
addgroup --system --gid 1999 alterncpanel
fi
if ! getent passwd alterncpanel; then
adduser --system --home "/etc/alternc/.alterncpanel" \
--disabled-password --uid 1999 --ingroup alterncpanel alterncpanel
fi
# ajoute l'user postfix au groupe sasl
adduser --quiet postfix sasl
# corriger les permissions du chroot
mkdir -p /var/spool/postfix/var/run/saslauthd || true
dpkg-statoverride --quiet --update --add root sasl 710 /var/spool/postfix/var/run/saslauthd || true
# build local.sh if it does not exist
if [ ! -f $CONFIGFILE ]; then
cat > $CONFIGFILE <<EOF
#!/bin/sh
#
# AlternC - Web Hosting System - Configuration
# This file will be modified on package configuration
# (e.g. upgrade or dpkg-reconfigure alternc)
# Hosting service name
HOSTING=""
# Primary hostname for this box (will be used to access the management panel)
FQDN=""
# Public IP
PUBLIC_IP=""
# Internal IP
# (most of the time, should be equal to PUBLIC_IP, unless you are behind
# firewall doing address translation)
INTERNAL_IP=""
# Monitoring IP or network (will be allowed to access Apache status)
MONITOR_IP=""
# Primary DNS hostname
NS1_HOSTNAME=""
# Secondary DNS hostname
NS2_HOSTNAME=""
# Mail server hostname
DEFAULT_MX=""
# Note: MySQL username/password configuration now stored in /etc/alternc/my.cnf
# quels clients mysql sont permis (%, localhost, etc)
MYSQL_CLIENT=""
# Folder holding data (used for quota management)
ALTERNC_LOC=""
# the type of backup created by the sql backup script
# valid options are "rotate" (newsyslog-style) or "date" (suffix is the date)
SQLBACKUP_TYPE=""
# overwrite existing files when backing up
SQLBACKUP_OVERWRITE=""
EOF
chown root:www-data $CONFIGFILE
chmod 640 $CONFIGFILE
fi
# Update local.sh
# 1. use cp to keep permissions
# 2. add missing variable to local.sh
# 3. use sed to set variables with current values
echo "Updating $CONFIGFILE"
cp -a -f $CONFIGFILE $CONFIGFILE.tmp
# SED_SCRIPT will be modified by update_var
SED_SCRIPT=""
update_var alternc-slave/hostingname HOSTING
update_var alternc-slave/desktopname FQDN
update_var alternc-slave/public_ip PUBLIC_IP
update_var alternc-slave/internal_ip INTERNAL_IP
update_var alternc-slave/monitor_ip MONITOR_IP
update_var alternc-slave/ns1 NS1_HOSTNAME
update_var alternc-slave/ns2 NS2_HOSTNAME
update_var alternc-slave/default_mx DEFAULT_MX
update_var alternc-slave/mysql/client MYSQL_CLIENT
update_var alternc-slave/sql/backup_type SQLBACKUP_TYPE
update_var alternc-slave/sql/backup_overwrite SQLBACKUP_OVERWRITE
update_var alternc-slave/alternc_location ALTERNC_LOC
sed -e "$SED_SCRIPT" < $CONFIGFILE > $CONFIGFILE.tmp
mv -f $CONFIGFILE.tmp $CONFIGFILE
if [ -e $CONFIGFILE ]; then
# source local.sh variables
. $CONFIGFILE
fi
if grep -q alternc-mergelog /etc/passwd ; then
echo "Reusing the alternc-mergelog account as a generic alternc account"
# the uid is ugly. we should request allocation from
# base-passwd instead
usermod --uid 342 --shell /bin/rbash --login alternc alternc-mergelog
# this is a separate step otherwise usermod will look for
# files to chown in /var/alternc, which takes a long time
usermod --home $ALTERNC_LOC alternc
fi
if [ -d /var/run/alternc-mergelog/.ssh ]; then
echo "Cleaning up old alternc-mergelog home"
mv /var/run/alternc-mergelog/.ssh $ALTERNC_LOC/.ssh && rmdir /var/run/alternc-mergelog
fi
if ! grep -q alternc /etc/passwd ; then
echo "Creating alternc account"
# this uid is ugly. we should request allocation from
# base-password instead
adduser --quiet --system --uid 342 --home $ALTERNC_LOC --shell /bin/rbash --ingroup adm alternc
fi
echo "config phpmyadmin"
include_str='include("/etc/alternc/phpmyadmin.inc.php")'
pma_config=/etc/phpmyadmin/config.inc.php
if ! grep -e "$include_str" $pma_config > /dev/null 2>&1; then
echo "<?php $include_str ?>" >> $pma_config
fi
if ! grep -q '## ALTERNC START' /etc/sudoers; then
# XXX: this is not proper locking
if [ -e /etc/sudoers.tmp ]; then
echo "sudoers file being edited, aborting"
exit 1
else
cp /etc/sudoers /etc/sudoers.tmp
cat >> /etc/sudoers.tmp <<EOF
## ALTERNC START
## do not change anything between those lines
alternc ALL=NOPASSWD: /usr/sbin/invoke-rc.d apache reload
alternc ALL=NOPASSWD: /usr/sbin/invoke-rc.d apache2 reload
alternc ALL=NOPASSWD: /usr/sbin/rndc reload *
alternc ALL=NOPASSWD: /usr/sbin/rndc reload
## ALTERNC END
EOF
mv /etc/sudoers.tmp /etc/sudoers
fi
fi
# important: postinst gele sans ca
db_stop
echo "running alternc.install"
alternc.install -s
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
# vim: et sw=4