source: install/scripts/alternc.install @ 27

Revision 27, 17.3 KB checked in by anarcat, 7 years ago (diff)

[project @ alternc: changeset 2003-04-03 19:24:47 by jonathan]
Modification de alternc.install pour resoudre le bug #56 (remplissage
de la variable de configuration monitor_ip).

Original author: jonathan
Date: 2003-04-03 19:24:47

Line 
1#!/usr/bin/perl
2#
3# AlternC Main install perl script.
4# This script should be launched only once, when installing AlternC
5# on a new server. THIS SCRIPT ERASE ALL DATA ON THE AlternC SYSTEM !!
6# YOU HAVE BEEN WARNED !
7#
8#
9
10
11#########################################################################
12# 1. Confirmation
13#########################################################################
14
15print "
16-------------------------------------------------------------------------
17This is the main install perl script for AlternC
18This script should be launched only once, when installing AlternC
19on a new server. THIS SCRIPT ERASE ALL DATA ON THE AlternC SYSTEM !!
20(/var/alternc) YOU HAVE BEEN WARNED !
21-------------------------------------------------------------------------
22
23Are you sure that you want to install AlternC software on this computer ?
24(y/n) ";
25
26chop($c=<STDIN>);
27if ($c ne "y") {
28    exit();
29} 
30
31
32#########################################################################
33# 2. Check that the user changed /etc/alternc/alternc.conf
34#########################################################################
35
36open C,"</etc/alternc/alternc.conf";
37if (<C> eq "exit\n") {
38    print "
39    YOU DID NOT CHANGE THE MAIN CONFIGURATION FILE OF ALTERNC.
40    PLEASE READ AND CHANGE /etc/alternc/alternc.conf
41    AND LAUNCH THIS SCRIPT AGAIN.
42
43";
44    close(C);
45    exit();
46}
47close(C);
48
49
50#########################################################################
51# 3. Parse the conf file
52#########################################################################
53
54print "reading configuration file\n";
55
56open C,"</etc/alternc/alternc.conf";
57while ($c=<C>) {
58    chop($c);
59    if ($c !~ /^#/) {
60        if ($c =~ /^(.*)= *([^ ].*)$/) {
61            # print "[$1] = $2\n";
62            $conf{$1}=$2;
63        }
64    }
65}
66close(C);
67
68
69#########################################################################
70# 4. Read the conf variables
71#########################################################################
72
73%vars = (
74         "hosting" => "Nom du service d'hebergement ",
75         "mx" => "Nom du serveur de mail ",
76         "ns1" => "Nom du serveur DNS primaire ",
77         "ns2" => "Nom du serveur DNS secondaire ",
78         "myip" => "Adresse ip de moi-meme !  ",
79         "mynetwork" => "Liste des réseaux autorisés en SMTP",
80         "fqdn" => "Nom de domaine du serveur hébergé ",
81         "ldap_userpwd" => "Mot de passe de l'utilisateur non root du serveur ldap ",
82         "ldap_rootpwd" => "Mot de passe de root du serveur ldap ",
83         "bind_internal" => "Adresse IP ou classe d'IP des machines à l'intérieur de notre réseau de confiance DNS, séparés par ';', facultatif ",
84         "bind_slaves" => "Adresse IP ou classe d'IP des machines esclaves DNS, séparés par ';', facultatif ",
85         "data_part" => "Nom de la partition contenant /%DATA/, pour la gestion des quotas (ex: /dev/hda3)",
86         "dbname" => "Base de données systeme de MySQL à créer",
87         "dbuser" => "Nom d'utilisateur mysql réservé pour le Bureau",
88         "dbpwd" => "Mot de passe de l'utilisateur mysql du Bureau",
89         "monitor_ip" => "Adresse IP (ou ip/prefixe) du(des) serveur(s) dont on veut autoriser le ping vers nous et le status apache (pour le monitoring de serveur.) ",
90         "QUOTA_DOMAINS" => "Quota : Nombre de Domaines autorisés par défaut",
91         "QUOTA_MAILS" => "Quota : Nombre de Comptes Mails autorisés par défaut",
92         "QUOTA_FTP" => "Quota : Nombre de Comptes FTP autorisés par défaut",
93         "QUOTA_ML" => "Quota : Nombre de Listes de Diffusion autorisées par défaut",
94         "QUOTA_STATS" => "Quota : Nombre de jeux de statistiques autorisés par défaut",
95         "QUOTA_WEB" => "Quota : Nombre de Kilos-Octets d'espace disque autorisés par défaut",
96         "myrandom" => "Debian : Mot de passe de l'utilisateur 'debian-maint' de mysql.",
97         "DATA_PART" => "General : Partition contenant /var/alternc (pour les quotas)"
98         );
99
100#########################################################################
101# 5. Read etclist and dirlist
102#########################################################################
103
104%conf_vars = (
105         # Sympa
106         "etc/sympa/sympa.conf" => "[Sympa] Fichier de configuration de Sympa",
107         "etc/sympa/wwsympa.conf" => "[Sympa] Fichier de config de wwsympa",
108
109         # Squirrelmail Plugin changepass_ldap
110         "change_ldappass/config.php" => "[Squirrelmail] Change Ldap Password file",
111         "change_ldappass/options.php" => "[Squirrelmail] Change Ldap Password file",
112         "change_ldappass/setup.php" => "[Squirrelmail] Change Ldap Password file",
113         "change_ldappass/README" => "[Squirrelmail] Change Ldap Password file",
114         "change_ldappass/install" => "[Squirrelmail] Change Ldap Password file",
115
116         # PHPMYAdmin, Config file,
117         "config.inc.php" => "[PHPMyAdmin] Config File",
118
119         # Scripts-Shells generaux :
120         "local.php" => "[General] Fichier de configuration general du Bureau virtuel",
121
122         # Taches planifiees :
123         "etc/cron.d/domaines" => "[Cron] Gestion des domaines",
124         "etc/cron.d/webalizer" => "[Cron] Gestion des statistiques web",
125
126         # Externalisation des mots de passe utilises dans les shells systeme :
127         "etc/alternc/local.sh" => "[Pass] Mots de passe mysql utilisés par les shells systeme",
128
129         # Bind9 (serveur DNS)
130         "etc/bind/named.conf" => "[Bind9] Fichier de configuration principal",
131         "etc/bind/automatic.conf" => "[Bind9] Fichier (vide) dynamiquement genere par PHP",
132         "etc/bind/domaines.template" => "[Bind9] Patron pour les entrees de domaine dans named.conf",
133         "etc/bind/master/domaines.template" => "[Bind9] Patron de zone maitre",
134         "etc/bind/master/ip.template" => "[Bind9] Patron d'IP pour les zones maitre",
135         "etc/bind/master/slave.template" => "[BInd9] Patron de zone pour les DNS esclaves",
136         "domaines.template" => "[Bind9] Patron de zone esclave, à recopier dans /usr/lib/alternc/bind2/",
137
138         # LdapAuth (LibNSS_Ldap LibPam_Ldap Authentification)
139
140         "etc/courier/authldaprc" => "[LdapAuth] Fichier de configuration de Courier Ldap",
141         "etc/courier/authdaemonrc" => "[LdapAuth] Fihcier de configuration de Courier",
142
143         # ProFTPd (serveur FTP)
144         "etc/proftpd.conf" => "[ProFTPd] Fichier de configuration du serveur FTP",
145         "etc/welcome.msg" => "[ProFTPd] Message de bienvenue du serveur FTP",
146
147         # MySQL (serveur de donnees)
148         "etc/mysql/my.cnf" => "[MySQL] Fichier de configuration du serveur de donnees",
149         "etc/mysql/debian.cnf" => "[MySQL] Fichier de configuration Debian",
150         "etc/cron.d/bcksql" => "[MySQL] Cron de Backup quotidien / hebdomadaire",
151
152         # PHP4 (Language server-side pour Apache)
153         "etc/php4/apache/php.ini" => "[PHP4] Fichier de configuration generale",
154         "etc/php4/cgi/php.ini" => "[PHP4] Fichier de configuratin en mode Shell-Script",
155         "etc/alternc/sendmail" => "[PHP4] Sendmail script perl pour php",
156
157         # Apache (serveur Web)
158         "etc/apache-ssl/httpd.conf" => "[Apache-SSL] Fichier de configuration principal d'Apache",
159         "etc/apache/httpd.conf" => "[Apache] Fichier de configuration principal d'Apache",
160
161         # Ldap (Base de donnees arborescente du systeme)
162         "etc/ldap/slapd.conf" => "[Ldap] Fichier de configuration principal de Ldap",
163         "etc/ldap/alternc.schema" => "[Ldap] Schema specifique a AlternC",
164         "etc/ldap/core.schema" => "[Ldap] Schema general de Ldap",
165         "etc/ldap/conf/postfix.conf" => "[Ldap] Fichier de configuration de la base Ldap Postfix",
166         "etc/ldap/conf/system.conf" => "[Ldap] Fichier de configuration de la base Ldap System",
167         "ldap.ldif" => "[Ldap] Fichier LDIF contenant les entrees de base de l'arbre.",
168         "ldap.sh" => "[Ldap] Script Shell de creation des entrees de base de l'arbre.",
169
170         # [IPTables] Firewall de base...
171         "etc/init.d/iptables" => "[IPTables] Firewall lance au demarrage. ",
172
173         # Postfix (serveur SMTP)
174         "etc/postfix/main.cf" => "[ProFTPd] Fichier de configuration principal de postfix",
175         "etc/postfix/body_checks" => "[Postfix] Regles de filtrage des mails",
176         "etc/postfix/header_checks" => "[Postfix] Regles de filtrage des en-tetes",
177         "etc/postfix/master.cf" => "[Postfix] Fichier de configuration des services MTA",
178
179         "redir.htaccess" => "[WebMail] Redirection url interne",
180         "etc/logrotate.d/apache" => "[Apache] Rotation quotidienne des logs",
181
182         "etc/webalizer/template.conf" => "[Webalizer] Fichier de configuration modèle",
183         "etc/squirrelmail/apache.conf" => "[Squirrelmail] Fichier de conf apache",
184
185         );
186
187@etcdir = (
188        "etc/alternc", "etc/bind", "etc/bind/master", "etc/mysql", "etc/courier",
189        "etc/php4",     "etc/php4/apache", "etc/apache-ssl", "etc/apache", "etc/ldap",
190        "etc/ldap/conf", "etc/init.d","etc/ldap/tmp","etc/postfix","etc/cron.d",
191        "etc/logrotate.d", "etc/sympa", "etc/webalizer", "etc/squirrelmail", "etc/php4/cgi",
192        "change_ldappass"
193        );
194
195
196#########################################################################
197# 6. Compute some stuffs.
198#########################################################################
199
200%varscalc = (
201             "ldap_tree" => "Racine de l'arbre Ldap du systeme",  # dc=alternc,dc=globenet,dc=org
202             "fqdn_lettre" => "Premiere lettre de l'avant dernier membre du fqdn" # a
203             );
204
205@fq=split /\./, $conf{fqdn};
206
207$ldap_tree="";
208for($i=0;$i<scalar @fq;$i++) {
209    if ($i) {
210        $ldap_tree.=",";
211    }
212    $ldap_tree .= "dc=".$fq[$i];
213}
214
215$conf{ldap_tree}   = $ldap_tree;
216$conf{fqdn_lettre} = substr($fq[(scalar @fq)-2],0,1);
217
218if ($conf{bind_internal}) {
219    $conf{bind_internal} .= ";";
220}
221if ($conf{bind_slaves}) { 
222    $conf{bind_slaves} .= ";";
223}
224if (!$conf{monitor_ip}) {
225    $conf{monitor_ip} = "127.0.0.1";
226}
227
228#########################################################################
229# 7. Create the temporary etc files, and parse them
230#########################################################################
231
232system("rm -rf /tmp/alternc.install.tmp");
233mkdir("/tmp/alternc.install.tmp",0777);
234mkdir("/tmp/alternc.install.tmp/etc",0777);
235
236for ($i=0;$i<scalar @etcdir;$i++) {
237    print "creating directory /".$etcdir[$i]."\n";
238    mkdir("/tmp/alternc.install.tmp/".$etcdir[$i]."",0777);
239}
240
241while (($key,$val) = each(%conf_vars)) {
242    print "parsing configuration file /$key    $val  ";
243    open F,"</usr/share/alternc/1.0/install/$key" || die "Erreur Ouverture R";
244    open G,">/tmp/alternc.install.tmp/$key" || die "Erreur Ouverture W";
245    while ($buffer = <F>) {
246        # Replace user variables :
247        while (($kv,$vv)=each(%vars)) {
248            $buffer=~ s/%%$kv%%/$conf{$kv}/;
249        }
250        # Replace computed variables :
251        while (($kv,$vv)=each(%varscalc)) {
252        # printf $kv." : ".$conf{$kv}."\n";
253            $buffer=~ s/%%$kv%%/$conf{$kv}/;
254        }
255        print G $buffer;
256    }
257    close(F);
258    close(G);
259    print "\n";
260}
261# Chmod the shell scripts (a+x)
262system("find /tmp/alternc.install.tmp/ -name \"*.sh\" -exec chmod a+x {} \\;");
263
264
265#########################################################################
266# 8. Backup current conf files
267#########################################################################
268
269print "backup current system files (/etc)\n";
270
271# Creation des dossiers dans /tmp/system.DATEDUJOUR
272chop($TS=`date +%Y%m%d-%H%M`);
273$TMP="/tmp/system.$TS";
274system("rm -rf $TMP >/dev/null 2>&1");
275mkdir($TMP,0777);
276mkdir("$TMP/etc",0777);
277for ($i=0;$i<scalar @etcdir;$i++) {
278    mkdir("$TMP/etc/".$etcdir[$i]."",0777);
279}
280# Copie des fichiers de /etc/... vers /tmp/system.DATE
281while (($key,$val) = each(%conf_vars)) {
282    system("cp /$key /$TMP/$key >/dev/null 2>&1");
283}
284mkdir("/usr/lib/alternc/backups");
285system("tar -czf /usr/lib/alternc/backups/system.$TS.tgz $TMP >/dev/null 2>&1");
286system("rm -rf $TMP >/dev/null 2>&1");
287
288
289#########################################################################
290# 9. Stop services
291#########################################################################
292
293print "Stopping services : \n";
294
295print "--Apache :\n";
296system("/etc/init.d/apache stop");
297print "--Apache-ssl :\n";
298system("/etc/init.d/apache-ssl stop");
299print "--Postfix :\n";
300system("/etc/init.d/postfix stop");
301print "--Sympa :\n";
302system("/etc/init.d/sympa stop");
303print "--WWSympa :\n";
304system("/etc/init.d/wwsympa stop");
305print "--Bind :\n";
306system("/etc/init.d/bind9 stop");
307print "--Courier :\n";
308system("/etc/init.d/courier-authdaemon stop");
309system("/etc/init.d/courier-imap stop");
310system("/etc/init.d/courier-imap-ssl stop");
311system("/etc/init.d/courier-pop stop");
312system("/etc/init.d/courier-pop-ssl stop");
313print "--Ldap :\n";
314system("/etc/init.d/slapd stop");
315print "--Cron :\n";
316system("/etc/init.d/cron stop");
317print "--ProFTPd :\n";
318system("/etc/init.d/proftpd stop");
319print "--MySQL :\n";
320system("/etc/init.d/mysql stop");
321print "\n";
322
323
324#########################################################################
325# 10. Create dir structure and copy panel files
326#########################################################################
327
328print "Creating directory structure in /var/alternc and copying panel files\n";
329system("/usr/share/alternc/1.0/install/initrep.sh");
330system("cp /usr/share/alternc/1.0/bureau /var/alternc/ -R");
331
332
333#########################################################################
334# 11. Send etc files to /etc :)
335#########################################################################
336
337print "Copying files to /etc\n";
338system("rsync /tmp/alternc.install.tmp/etc/* /etc/ -a");
339system("rsync /tmp/alternc.install.tmp/change_ldappass /usr/share/squirrelmail/plugins/ -a");
340system("rsync /tmp/alternc.install.tmp/config.inc.php /usr/share/phpmyadmin/ -a");
341system("cp /tmp/alternc.install.tmp/redir.htaccess /var/alternc/bureau/admin/webmail/.htaccess");
342system("cp /tmp/alternc.install.tmp/domaines.template /usr/lib/alternc/system/bind2/");
343system("cp /tmp/alternc.install.tmp/local.php /var/alternc/bureau/class");
344system("chmod a+x /etc/init.d/iptables");
345system("chmod 750 /etc/alternc -R");
346system("chown root.www-data /etc/alternc -R");
347system("mkdir /var/run/alternc");
348system("mkdir /var/log/alternc");
349system("chown www-data.www-data /var/alternc/bureau/admin/webmail/.htaccess /var/alternc/bureau/class/local.php /etc/webalizer /var/alternc/bureau /var/alternc/html /var/alternc/mail /var/alternc/dns /var/run/alternc /var/log/alternc -R");
350system("chown sympa.sympa /etc/sympa");
351
352@fq=split /\./, $conf{fqdn};
353$fl=substr($fq[(scalar @fq)-2],0,1);
354system("ln /var/alternc/bureau /var/alternc/dns/$fl/$conf{fqdn} -s");
355
356#########################################################################
357# 12. Patch sympa and squirrelmail
358#########################################################################
359
360print "Patching Squirrelmail 1.2.6\n";
361system("patch -f -s /usr/share/squirrelmail/functions/display_messages.php </usr/share/alternc/1.0/install/diff.display_messages.php");
362
363print "Patching Sympa Archived\n";
364system("patch -f -s /usr/lib/sympa/bin/archived.pl </usr/share/alternc/1.0/install/diff.archives.sympa");
365
366
367#########################################################################
368# 13. Create Ldap database, restart ldap and add default values
369#########################################################################
370
371print "Creating ldap db, starting ldap, then add the default tree\n";
372system("/tmp/alternc.install.tmp/ldap.sh");
373
374#########################################################################
375# 14. Create MySQL database, restart mysql and add default users
376#########################################################################
377
378print "Creating MySQL db, restarting mysql.\n";
379system("/usr/share/alternc/1.0/install/mysql.sh '".$conf{dbuser}."' '".$conf{dbpwd}."' '".$conf{dbname}."' '".$conf{myrandom}."'");
380
381
382#########################################################################
383# 15. Start services
384#########################################################################
385
386print "Starting services : \n";
387
388print "--Apache :\n";
389system("/etc/init.d/apache start");
390print "--Apache-ssl :\n";
391system("/etc/init.d/apache-ssl start");
392print "--Postfix :\n";
393system("/etc/init.d/postfix start");
394print "--Sympa :\n";
395system("/etc/init.d/sympa start");
396print "--WWSympa :\n";
397system("/etc/init.d/wwsympa start");
398print "--Bind :\n";
399system("/etc/init.d/bind9 start");
400print "--Courier :\n";
401system("/etc/init.d/courier-authdaemon start");
402system("/etc/init.d/courier-imap start");
403system("/etc/init.d/courier-imap-ssl start");
404system("/etc/init.d/courier-pop start");
405system("/etc/init.d/courier-pop-ssl start");
406print "--Cron :\n";
407system("/etc/init.d/cron start");
408print "--ProFTPd :\n";
409system("/etc/init.d/proftpd start");
410print "\n";
411
412#########################################################################
413# 16. Create the first user
414#########################################################################
415
416print "Creating user root, with password root (change it as soon as possible)\n";
417
418system("/usr/share/alternc/1.0/install/newone.php");
419
420#########################################################################
421# 17. Job's done ! Ready to serve...
422#########################################################################
423
424print "
425  AlternC Install complete.
426  You may use you server now. Don't forget to change your root password
427  as soon as possible.
428  If you use this software, please send a mail to tech\@alternc.org
429  so that we know who use it :) and build some kind of statistics. Thanks.
430
431";
432
Note: See TracBrowser for help on using the repository browser.