source: install/scripts/alternc.install @ 181

Revision 181, 16.7 KB checked in by anarcat, 8 years ago (diff)

[project @ alternc: changeset 2004-04-30 03:42:14 by anonymous]
Résoudre le bug #176: erreur dans le fichier mx.template. Le problème
était que le fichier n'était pas installé. De plus, il n'avait pas le
bon format. Celui-ci est compatible avec le rfc1035:
http://www.ietf.org/rfc/rfc1035.txt Je crois qu'il serait peut-être
une bonne idée de vérifier les formats des fichiers de config de bind,
pour vérifier la conformité avec les RFCs.

Original author: anonymous
Date: 2004-04-30 03:42:14

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         "myrandom" => "Debian : Mot de passe de l'utilisateur 'debian-maint' de mysql.",
91         "DATA_PART" => "General : Partition contenant /var/alternc (pour les quotas)"
92         );
93
94#########################################################################
95# 5. Read etclist and dirlist
96#########################################################################
97
98%conf_vars = (
99
100         # Squirrelmail Plugin changepass_ldap
101         "change_ldappass/config.php" => "[Squirrelmail] Change Ldap Password file",
102         "change_ldappass/options.php" => "[Squirrelmail] Change Ldap Password file",
103         "change_ldappass/setup.php" => "[Squirrelmail] Change Ldap Password file",
104         "change_ldappass/README" => "[Squirrelmail] Change Ldap Password file",
105         "change_ldappass/install" => "[Squirrelmail] Change Ldap Password file",
106
107         # PHPMYAdmin, Config file,
108         "config.inc.php" => "[PHPMyAdmin] Config File",
109
110         # Scripts-Shells generaux :
111         "local.php" => "[General] Fichier de configuration general du Bureau virtuel",
112
113         # Taches planifiees :
114         "etc/cron.d/domaines" => "[Cron] Gestion des domaines",
115         "etc/cron.d/webalizer" => "[Cron] Gestion des statistiques web",
116
117         # Externalisation des mots de passe utilises dans les shells systeme :
118         "etc/alternc/local.sh" => "[Pass] Mots de passe mysql utilisés par les shells systeme",
119
120         # Bind9 (serveur DNS)
121         "etc/bind/named.conf" => "[Bind9] Fichier de configuration principal",
122         "etc/bind/automatic.conf" => "[Bind9] Fichier (vide) dynamiquement genere par PHP",
123         "etc/bind/domaines.template" => "[Bind9] Patron pour les entrees de domaine dans named.conf",
124         "etc/bind/master/domaines.template" => "[Bind9] Patron de zone maitre",
125         "etc/bind/master/ip.template" => "[Bind9] Patron d'IP pour les zones maitre",
126         "etc/bind/master/mx.template" => "[Bind9] Patron d'IP pour les zones maitre",
127         "etc/bind/master/slave.template" => "[BInd9] Patron de zone pour les DNS esclaves",
128         "domaines.template" => "[Bind9] Patron de zone esclave, à recopier dans /usr/lib/alternc/bind2/",
129
130         # LdapAuth (LibNSS_Ldap LibPam_Ldap Authentification)
131
132         "etc/courier/authldaprc" => "[LdapAuth] Fichier de configuration de Courier Ldap",
133         "etc/courier/authdaemonrc" => "[LdapAuth] Fihcier de configuration de Courier",
134
135         # ProFTPd (serveur FTP)
136         "etc/proftpd.conf" => "[ProFTPd] Fichier de configuration du serveur FTP",
137         "etc/welcome.msg" => "[ProFTPd] Message de bienvenue du serveur FTP",
138
139         # MySQL (serveur de donnees)
140         "etc/mysql/my.cnf" => "[MySQL] Fichier de configuration du serveur de donnees",
141         "etc/mysql/debian.cnf" => "[MySQL] Fichier de configuration Debian",
142         "etc/cron.d/bcksql" => "[MySQL] Cron de Backup quotidien / hebdomadaire",
143
144         # PHP4 (Language server-side pour Apache)
145         "etc/php4/apache/php.ini" => "[PHP4] Fichier de configuration generale",
146         "etc/php4/cgi/php.ini" => "[PHP4] Fichier de configuratin en mode Shell-Script",
147         "etc/alternc/sendmail" => "[PHP4] Sendmail script perl pour php",
148
149         # Apache (serveur Web)
150         "etc/apache-ssl/httpd.conf" => "[Apache-SSL] Fichier de configuration principal d'Apache",
151         "etc/apache/httpd.conf" => "[Apache] Fichier de configuration principal d'Apache",
152
153         # Ldap (Base de donnees arborescente du systeme)
154         "etc/ldap/slapd.conf" => "[Ldap] Fichier de configuration principal de Ldap",
155         "etc/ldap/alternc.schema" => "[Ldap] Schema specifique a AlternC",
156         "etc/ldap/core.schema" => "[Ldap] Schema general de Ldap",
157         "etc/ldap/conf/postfix.conf" => "[Ldap] Fichier de configuration de la base Ldap Postfix",
158         "etc/ldap/conf/system.conf" => "[Ldap] Fichier de configuration de la base Ldap System",
159         "ldap.ldif" => "[Ldap] Fichier LDIF contenant les entrees de base de l'arbre.",
160         "ldap.sh" => "[Ldap] Script Shell de creation des entrees de base de l'arbre.",
161
162         # [IPTables] Firewall de base...
163         "etc/init.d/iptables" => "[IPTables] Firewall lance au demarrage. ",
164
165         # Postfix (serveur SMTP)
166         "etc/postfix/main.cf" => "[ProFTPd] Fichier de configuration principal de postfix",
167         "etc/postfix/body_checks" => "[Postfix] Regles de filtrage des mails",
168         "etc/postfix/header_checks" => "[Postfix] Regles de filtrage des en-tetes",
169         "etc/postfix/master.cf" => "[Postfix] Fichier de configuration des services MTA",
170
171         "redir.htaccess" => "[WebMail] Redirection url interne",
172         "etc/logrotate.d/apache" => "[Apache] Rotation quotidienne des logs",
173
174         "etc/webalizer/template.conf" => "[Webalizer] Fichier de configuration modèle",
175         "etc/squirrelmail/apache.conf" => "[Squirrelmail] Fichier de conf apache",
176
177         );
178
179@etcdir = (
180        "etc/alternc", "etc/bind", "etc/bind/master", "etc/mysql", "etc/courier",
181        "etc/php4",     "etc/php4/apache", "etc/apache-ssl", "etc/apache", "etc/ldap",
182        "etc/ldap/conf", "etc/init.d","etc/ldap/tmp","etc/postfix","etc/cron.d",
183        "etc/logrotate.d", "etc/webalizer", "etc/squirrelmail", "etc/php4/cgi",
184        "change_ldappass", "etc/pop-before-smtp"
185        );
186
187
188#########################################################################
189# 6. Compute some stuffs.
190#########################################################################
191
192%varscalc = (
193             "ldap_tree" => "Racine de l'arbre Ldap du systeme",  # dc=alternc,dc=globenet,dc=org
194             "fqdn_lettre" => "Premiere lettre de l'avant dernier membre du fqdn" # a
195             );
196
197@fq=split /\./, $conf{fqdn};
198
199$ldap_tree="";
200for($i=0;$i<scalar @fq;$i++) {
201    if ($i) {
202        $ldap_tree.=",";
203    }
204    $ldap_tree .= "dc=".$fq[$i];
205}
206
207$conf{ldap_tree}   = $ldap_tree;
208$conf{fqdn_lettre} = substr($fq[(scalar @fq)-2],0,1);
209
210if ($conf{bind_internal}) {
211    $conf{bind_internal} .= ";";
212}
213if ($conf{bind_slaves}) { 
214    $conf{bind_slaves} .= ";";
215}
216if (!$conf{monitor_ip}) {
217    $conf{monitor_ip} = "127.0.0.1";
218}
219
220#########################################################################
221# 7. Create the temporary etc files, and parse them
222#########################################################################
223
224system("rm -rf /tmp/alternc.install.tmp");
225mkdir("/tmp/alternc.install.tmp",0777);
226mkdir("/tmp/alternc.install.tmp/etc",0777);
227
228for ($i=0;$i<scalar @etcdir;$i++) {
229    print "creating directory /".$etcdir[$i]."\n";
230    mkdir("/tmp/alternc.install.tmp/".$etcdir[$i]."",0777);
231}
232
233while (($key,$val) = each(%conf_vars)) {
234    print "parsing configuration file /$key    $val  ";
235    open F,"</usr/share/alternc/1.0/install/$key" || die "Erreur Ouverture R";
236    open G,">/tmp/alternc.install.tmp/$key" || die "Erreur Ouverture W";
237    while ($buffer = <F>) {
238        # Replace user variables :
239        while (($kv,$vv)=each(%vars)) {
240            $buffer=~ s/%%$kv%%/$conf{$kv}/;
241        }
242        # Replace computed variables :
243        while (($kv,$vv)=each(%varscalc)) {
244        # printf $kv." : ".$conf{$kv}."\n";
245            $buffer=~ s/%%$kv%%/$conf{$kv}/;
246        }
247        print G $buffer;
248    }
249    close(F);
250    close(G);
251    print "\n";
252}
253# Chmod the shell scripts (a+x)
254system("find /tmp/alternc.install.tmp/ -name \"*.sh\" -exec chmod a+x {} \\;");
255
256
257#########################################################################
258# 8. Backup current conf files
259#########################################################################
260
261print "backup current system files (/etc)\n";
262
263# Creation des dossiers dans /tmp/system.DATEDUJOUR
264chop($TS=`date +%Y%m%d-%H%M`);
265$TMP="/tmp/system.$TS";
266system("rm -rf $TMP >/dev/null 2>&1");
267mkdir($TMP,0777);
268mkdir("$TMP/etc",0777);
269for ($i=0;$i<scalar @etcdir;$i++) {
270    mkdir("$TMP/etc/".$etcdir[$i]."",0777);
271}
272# Copie des fichiers de /etc/... vers /tmp/system.DATE
273while (($key,$val) = each(%conf_vars)) {
274    system("cp /$key /$TMP/$key >/dev/null 2>&1");
275}
276mkdir("/usr/lib/alternc/backups");
277system("tar -czf /usr/lib/alternc/backups/system.$TS.tgz $TMP >/dev/null 2>&1");
278system("rm -rf $TMP >/dev/null 2>&1");
279system("/usr/share/alternc/1.0/install/dopo.sh");
280
281#########################################################################
282# 9. Stop services
283#########################################################################
284
285print "Stopping services : \n";
286
287print "--Apache :\n";
288system("/etc/init.d/apache stop");
289print "--Apache-ssl :\n";
290system("/etc/init.d/apache-ssl stop");
291print "--Postfix :\n";
292system("/etc/init.d/postfix stop");
293print "--Bind :\n";
294system("/etc/init.d/bind9 stop");
295print "--Courier :\n";
296system("/etc/init.d/courier-authdaemon stop");
297system("/etc/init.d/courier-imap stop");
298system("/etc/init.d/courier-imap-ssl stop");
299system("/etc/init.d/courier-pop stop");
300system("/etc/init.d/courier-pop-ssl stop");
301print "--Ldap :\n";
302system("/etc/init.d/slapd stop");
303print "--Cron :\n";
304system("/etc/init.d/cron stop");
305print "--ProFTPd :\n";
306system("/etc/init.d/proftpd stop");
307print "--MySQL :\n";
308system("/etc/init.d/mysql stop");
309print "\n";
310
311
312#########################################################################
313# 10. Create dir structure and copy panel files
314#########################################################################
315
316print "Creating directory structure in /var/alternc\n";
317system("/usr/share/alternc/1.0/install/initrep.sh");
318
319
320#########################################################################
321# 11. Send etc files to /etc :)
322#########################################################################
323
324print "Copying files to /etc\n";
325system("rsync /tmp/alternc.install.tmp/etc/* /etc/ -a");
326system("rsync /tmp/alternc.install.tmp/change_ldappass /usr/share/squirrelmail/plugins/ -a");
327system("rsync /tmp/alternc.install.tmp/config.inc.php /usr/share/phpmyadmin/ -a");
328system("cp /tmp/alternc.install.tmp/redir.htaccess /var/alternc/bureau/admin/webmail/.htaccess");
329system("cp /tmp/alternc.install.tmp/domaines.template /usr/lib/alternc/system/bind2/");
330system("cp /tmp/alternc.install.tmp/local.php /var/alternc/bureau/class");
331system("chmod a+x /etc/init.d/iptables");
332system("chmod 750 /etc/alternc -R");
333system("chown root.root /etc/alternc -R");
334system("mkdir /var/run/alternc");
335system("mkdir /var/log/alternc");
336system("chown www-data.www-data /var/alternc/bureau/admin/webmail/.htaccess /etc/webalizer /var/alternc/bureau /var/alternc/html /var/alternc/mail /var/alternc/dns /var/run/alternc /var/log/alternc -R");
337system("chown root.www-data /usr/lib/alternc/ -R");
338system("chmod 0750 /usr/lib/alternc");
339system("chmod 0750 /usr/lib/alternc/*");
340system("chmod 4750 /usr/lib/alternc/mem_add");
341system("chmod 4750 /usr/lib/alternc/quota_edit");
342system("chmod 4750 /usr/lib/alternc/quota_get");
343system("chmod 4750 /usr/lib/alternc/mail_add");
344system("chmod 4750 /usr/lib/alternc/mail_del");
345system("chmod 4750 /usr/lib/alternc/mem_del");
346system("chmod 4750 /usr/lib/alternc/db_create");
347system("chmod 0640 /var/alternc/bureau/class/*.php");
348system("chown root.www-data /var/alternc/bureau/class/*.php");
349system("chown root.www-data /var/alternc/bureau/class");
350system("chgrp www-data /etc/alternc");
351system("chgrp www-data /etc/alternc/local.sh");
352system("chgrp www-data /etc/alternc/sendmail");
353
354
355@fq=split /\./, $conf{fqdn};
356$fl=substr($fq[(scalar @fq)-2],0,1);
357system("ln /var/alternc/bureau /var/alternc/dns/$fl/$conf{fqdn} -s");
358
359#########################################################################
360# 13. Create Ldap database, restart ldap and add default values
361#########################################################################
362
363print "Creating ldap db, starting ldap, then add the default tree\n";
364system("/tmp/alternc.install.tmp/ldap.sh");
365
366#########################################################################
367# 14. Create MySQL database, restart mysql and add default users
368#########################################################################
369
370print "Creating MySQL db, restarting mysql.\n";
371system("/usr/share/alternc/1.0/install/mysql.sh '".$conf{dbuser}."' '".$conf{dbpwd}."' '".$conf{dbname}."' '".$conf{myrandom}."'");
372
373
374#########################################################################
375# 15. Start services
376#########################################################################
377
378print "Starting services : \n";
379
380print "--Apache :\n";
381system("/etc/init.d/apache start");
382print "--Apache-ssl :\n";
383system("/etc/init.d/apache-ssl start");
384print "--Postfix :\n";
385system("/etc/init.d/postfix start");
386print "--Bind :\n";
387system("/etc/init.d/bind9 start");
388print "--Courier :\n";
389system("/etc/init.d/courier-authdaemon start");
390system("/etc/init.d/courier-imap start");
391system("/etc/init.d/courier-imap-ssl start");
392system("/etc/init.d/courier-pop start");
393system("/etc/init.d/courier-pop-ssl start");
394print "--Cron :\n";
395system("/etc/init.d/cron start");
396print "--ProFTPd :\n";
397system("/etc/init.d/proftpd start");
398print "\n";
399
400#########################################################################
401# 16. Create the first user
402#########################################################################
403
404print "Creating user root, with password root (change it as soon as possible)\n";
405
406system("su www-data -c /usr/share/alternc/1.0/install/newone.php");
407
408#########################################################################
409# 17. Job's done ! Ready to serve...
410#########################################################################
411
412print "
413  AlternC Install complete.
414  You may use you server now. Don't forget to change your root password
415  as soon as possible.
416  If you use this software, please send a mail to tech\@alternc.org
417  so that we know who use it :) and build some kind of statistics. Thanks.
418
419";
420
Note: See TracBrowser for help on using the repository browser.