#!/usr/bin/perl # # new_web_user # # Copyright 2008 Mathieu Rousseau # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # #### #16/11/2007 22:47:08 #Créer pour un nouvel utilisateur, son home, son accés ftp, sa base de donnée #lui attribuer un shell (false, zsh, bash) #activer un vhost pour l'user #envoyer un mail récapitulatif a l'user #### #récupérer les variables principales: print "Nom du nouvel utilisateur web:" . "\n"; $name = ; chomp($name); print "Login du nouvel utilisateur:" . "\n"; $nuser = ; chomp($nuser); print "Mot de passe:" . "\n"; $pass = ; chomp($pass); print "Shell (false, zsh, ou bash):" . "\n"; $shell = ; chomp($shell); print "Email du nouvel utilisateur:" . "\n"; $umail =; chomp($umail); print "Domaine du nouvel utilisateur:" . "\n"; $uhost = ; chomp($uhost); print "Mot de passe root de mysql:" ."\n"; $sql_passwd = ; chomp($sql_passwd); #################### #tester que $umail, $nuser et $pass sont valides: #non vides, non existant (d'autres critéres?) die "Le nom d'utilisateur n'est pas défini." unless ($name); die "Le login n'est pas défini." unless ($nuser); die "Le mot de passe n'est pas défini." unless ($pass); die "Le mail n'est pas défini." unless ($umail); die "Le domaine n'est pas défini." unless ($uhost); die "Le shell n'est pas défini." unless ($shell); die "Le password de mysql n'est pas défini." unless ($sql_passwd); ########################## #créer l'utilisateur UNIX (FTP): ########################## #penser a vérifier qu'il n'existe pas déja $mkuser="adduser --gecos \"$name\" --disabled-password --home /home/web/$nuser --shell /bin/$shell $nuser"; $mkpass="passwd $nuser >/dev/null 2>&1 < $batch"; while ($ligne = ) { $ligne =~ s/\@nuser\@/$nuser/g; $ligne =~ s/\@pass@\@/$pass/g; print OUT $ligne; } close IN; close OUT; system("mysql -u root -p$sql_passwd < /tmp/batch_mysql && rm /tmp/batch_mysql"); ########################## #créer et activer le vhost ########################## $tpl = "host.tpl"; $vhost = "/var/apache2/site-available/$uhost"; open IN, $tpl; open OUT, "> $vhost"; while ($ligne = ) { $ligne =~ s/\@uhost\@/$uhost/g; $ligne =~ s/\@nuser\@/$nuser/g; print OUT $ligne; } close IN; close OUT; $enable_vhost = "a2ensite $uhost"; $apache_reload = "/etc/init.d/apache2 reload"; system($enable_host); system($apache_reload); ############## #envoyer un email pour avertir de la création du compte #et rappeller login, password, accés ftp et adresse de la base #mail $umail -s "Votre compte sur effraie.org est activé"