#!/bin/bash
#########################################################################################
## Script repris de http://www.tatane.com/index.php/script-de-creation-de-comptes-web ##
## modifié pour l'ajout du DNS, mod_vhost_alias, creation de compte vpopmail. ##
## Evolution et modifications à prevoir biensur :) ##
## Nicolas Martinez (at) 01fr.com - Generation-Libre.com ##
## ------------- ##
## Prerequis: ##
## Apache avec mod_vhost_alias + ajout "Include /etc/apache/vhosts" dans httpd.conf ##
## >> (creer biensur le repertoire /et/apache/vhosts) ##
## MySql ##
## Bind9 ##
## >> creer le repertoire /etc/bind/zone/ ##
## Vpopmail installé dans /var/vpopmail ##
## ------------- ##
## Permet de: ##
## >> Creer un compte user avec sa home directory ##
## Site accessible en www (www.domaine.com pointe vers /home/user/www) ##
## Alias illimités (ex: linux.domaine.com pointe vers /home/user/linux) ##
## >> Creation de la zone DNS dans Bind ##
## >> Creation d'une base MySql ##
## >> Creation du domaine virtuel mail avec compte postmaster sous Vpopmail ##
## dans la home du user: /home/user/domains/domaine.com (permet sauvegarde / comtpe) ##
## >> Log par creation dans le fichier /home/creation-user-domaine-jour-mois-annee.log ##
#########################################################################################
# petit nettoyage d'écran
clear
# seul root peux exécuter ce script
if test `id -u` != "0"; then
echo "Vous n'êtes pas root, désolé..."
fi
echo "################################## Creation d'utilisateur"
# récupération des paramètres
echo -n "Entrez le compte à créer : ";
read login;
echo -n "Entrez son mot de passe : ";
read password;
passmysql=$password
echo -n "Entrez le nom de domaine (sans \"www\", par exemple domaine.com) : ";
read domaine;
# vérification
echo "
Domaine : $domaine
Compte : $login
Passwd : $password
" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log
echo -n "Est-ce correct ? (o/[n]) "
read ans
if [ _$ans != _o -a _$ans != _O ]
then
echo "Création de compte annulée" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log
fi
# création du user (le programme s'arrête par sécurité si le user existe déjà)
/usr/sbin/useradd $login -p `perl -e "print crypt('$password',pwet)"` -g www-data -d /home/$login -m -s /bin/bash
if [ $? -ne 0 ]
then
echo "L'utilisateur $login existe déjà !" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log
fi
echo " + Utilisateur \"$login\" créé"
echo "################################## Terminé "
# création des répertoires
/bin/mkdir /home/$login/logs /home/$login/www
echo " + Répertoires créés"
# -- modifications des droits sur les dossiers
chown -R $login /home/$login/
echo " + Droits modifiés"
echo "################################## Creation VirtualHost Apache "
# création du virtual host (inclus dans httpd.conf)
echo "
ServerName $domaine
DocumentRoot /home/$login/www/
ServerAlias *.$domaine
VirtualDocumentRoot /home/$login/%1
UseCanonicalName off
ErrorLog /home/$login/logs/error.log
CustomLog /home/$login/logs/access.log combined
User $login
Group www-data
ScriptAlias /cgi-bin/ /home/$login/cgi-bin/
AllowOverride All
Options -Indexes +ExecCGI
Order Deny,Allow
Allow from all
" > /etc/apache/vhosts/$login.conf
echo " + VirtualHost Apache créé"
echo "################################## Terminé "
######################################## DNS
echo -n "Faut-il créer le domaine en local ? (o/[n]) "
read ans
if [ _$ans = _o -o _$ans = _O ]
then
echo "################################## Creation de la zone DNS dans BIND "
echo -n "Entrez l'adresse ip pour le serveur MAIL : ";
read ipmail;
echo -n "Entrez l'adresse ip pour le serveur WWW : ";
read ipwww;
echo '
zone "'$domaine'" {
type master;
file "/etc/bind/'$domaine'.zone";
// allow-transfer {194.206.137.42;};
};
' > /etc/bind/zone/$domaine.conf
echo 'include "/etc/bind/zone/'$domaine'.conf";' >> /etc/bind/named.conf
echo " + Domaine rajouté dans named.conf\n\n"
echo '
$TTL 3D
@ IN SOA ns.'$domaine'. postmaster.'$domaine'. (
'`date +%Y%m%d`'01; serial
3600 ; refresh
3600 ; retry
1209600 ; expire
604800 ; default_ttl
)
@ IN NS ns.'$domaine'.
NS ns2.registrar.com.
@ IN MX 0 mail.'$domaine'.
IN A '$ipwww'
* IN A '$ipwww'
mail IN A '$ipmail'
www IN A '$ipwww'
'$domaine'. IN TXT "v=spf1 a mx a:mail.'$domaine' ~all"
' > /etc/bind/$domaine.zone
echo " + Zone du domaine créée"
else
echo "Choix: Domaine non créé" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log
fi
echo "################################## Terminé "
######################################## MySql
echo -n "Faut-il installer une base de donnée mySQL ? (o/[n]) "
read ans
if [ _$ans = _o -o _$ans = _O ]
then
echo "################################## Creation de la base MySql "
echo -n "Entrez le password root mysql :";
read passroot;
# création de la base
/usr/bin/mysqladmin -u root -p$passroot create $login
echo "Base MySQL \"$login\" créée"
# création du compte + db + droits
/usr/bin/mysql -u root --password=$passroot mysql <> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log
fi
echo "################################## Terminé "
######################################## Vpopmail
echo -n "Faut-il créer un compte mail(vpopmail) ? (o/[n]) "
read ans
if [ _$ans = _o -o _$ans = _O ]
then
echo "################################## Creation du domaine virtuel dans Vpopmail "
echo -n "Entrez le quota pour le compte postmaster en bytes (10 000 000 = 10M) :";
read quotapostmaster;
echo -n "Entrez le password pour le compte postmaster :";
read passpostmaster;
/var/vpopmail/bin/vadddomain -q $quotapostmaster -d /home/$login/ $domaine $passpostmaster
echo "Compte/domaine créé"
# on envoie un petit mail de bienvenue tant qu'à faire
echo "Message de bienvenue pour le compte mail"|mail -s "Votre messagerie" postmaster@$domaine
else
echo "Choix: Compte mail non créé" >> /home/creation-$login-$domaine-`date +%d-%m-%Y`.log
fi
echo "################################## Terminé "
echo "Création du nouvel utilisateur \"$login\" terminée."
/etc/init.d/apache reload
echo "Apache relancé"
/etc/init.d/bind9 reload
echo " + Bind relancé"