#!/bin/bash # # mkuser 0.1: cria um login numa shell para um sito criado com o mksite # feedback: rhatto at riseup.net | gpl # TMP="/tmp" MKSITE_BASE="/etc/mksite" CONF="$MKSITE_BASE/mksite.conf" MESSAGES="/usr/share/mksite/mksite.messages" LOCKFILE="$TMP/mksite.lock" HELPER_FUNCTIONS="/usr/libexec/mksite/mksite-helper" if [ ! -f "$CONF" ]; then echo Error: config file $CONFIG not found. echo Erro: arquivo de configuracao $CONF nao encontrado. exit 1 fi source $CONF if [ "$?" != "0" ]; then echo Error loading config file. echo Erro ao carregar o arquivo de configuracoes. exit 1 fi if [ -f "$MESSAGES" ]; then source $MESSAGES $LANG else echo Fatal error: message file not found, aborting. echo Erro fatal: arquivo de mensagens nao encontrado, abortando. exit 1 fi if [ -f "$HELPER_FUNCTIONS" ]; then source $HELPER_FUNCTIONS else echo Fatal error: function file not found, aborting. echo Erro fatal: arquivo de funcoes nao encontrado, abortando. exit 1 fi mksite_create_lockfile $LOCKFILE function mkuser.usage { echo usage: `basename $0` sitename } if [ -z "$1" ]; then mkuser.usage safe_exit 1 else USER="$1" fi if ! grep -qe "^$GROUP:" /etc/group; then groupadd $GROUP fi # checa se o arquivo de configuracao existe mksite_check_site_config # checa se o usuario existe mksite_check_user # checa se a pastas existem mksite_check_site_folder # checa se o grupo existe mksite_check_site_group if [ "$CONFIG_EXIST" != "1" ]; then echo $MESSAGE_SITE_NOT_EXIST mksite_safe_exit 1 else mksite_eval_site_config $MKSITE_BASE/sites/$USER if [ -z "$CONTACT" ]; then echo $MESSAGE_SITE_CONFIG_ERROR mksite_safe_exit 1 fi fi # cria o usuario if [ "$USER_EXIST" != "1" ]; then echo $MESAGE_CREATING_USER $USER... useradd -d $HOME/$USER -g $GROUP -s $SHELL -c $CONTACT $USER echo $MESSAGE_USER_CREATED read -resp "$MESSAGE_ENTER_USER_PASSWD" PASSWD echo " " expect -nN -- << EOF log_user 0 spawn passwd $USER expect { "New password:" { send "$PASSWD\r" ; exp_continue } "Re-enter new password:" { send "$PASSWD\r" ; exp_continue } } EOF else echo $MESSAGE_USER_ALREADY_EXIST mksite_safe_exit 1 fi if [ "$FOLDER_EXIST" != "1" ]; then echo $MESSAGE_FOLDER_NOT_EXIST else chown -R $USER.$GROUP $HOME/$USER fi # TODO: internacionalizar o resto do script function message_user_added { MESSAGE=( "Pronto, criamos o usuario $USER para o site http://$USER.$DOMAIN / http://$DOMAIN/$USER Os arquivos podem ser transferidos utilizando um dos seguintes programas: - No Windowz: WinSCP, que pode ser baixado em http://winscp.sourceforge.net - No GNU/Linux: gFTP ou sftp, disponiveis na maioria das distribuicoes - No MacOSX: Fugu, http://rsug.itd.umich.edu/software/fugu/ ou Cyberduck, http://cyberduck.ch/ Num desses programas, utilize os seguintes dados: servidor : $DOMAIN porta : $SFTP_PORT protocolo: sftp usuario : $USER senha : $PASSWD Observacoes: - Os arquivos do site ficam na pasta \"site\". - Linha de comando para o sftp (GNU/Linux): sftp -o Port=$SFTP_PORT $USER@$DOMAIN - Lista de discussao para webmasters do $DOMAIN: $MAILING_LIST" ) echo "Usuario $USER criado." echo "${MESSAGE[@]}" | mailx -s "Seu sitio no $DOMAIN foi criado" -r hostmaster@$DOMAIN $CONTACT echo "Email de boas vindas e com instrucoes de login enviado para $CONTACT." } message_user_added mksite_safe_exit 0