File "apacheadmin.sh"

Full path: /www/wwwroot/fabriciovc.eti.br/downloads/apache/apacheadmin.sh
File size: 7.45 KiB (7633 bytes)
MIME-type: text/x-shellscript
Charset: utf-8

Download   Open   Back

#!/bin/bash
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Nota de Copyright                                                           #
# Copyright C 2008 Fabricio Vaccari Constanski                                #
# fabriciovc[em]fabriciovc.eti.br - 26/11/2008                                #
# Ultima atualizacao em : 26/01/2009 - fabriciovc                             #
#                                                                             #
# Este trabalho esta licenciado sob uma Licenca Creative Commons Atribuicao-  #
# Compartilhamento pela mesma Licenca 2.5 Brasil. Para ver uma copia desta    #
# licenca, visite http://creativecommons.org/licenses/by-sa/2.5/br/           #
# ou envie uma carta para Creative Commons, 171 Second Street, Suite 300,     #
# San Francisco, California 94105, USA.                                       #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

#- PATHS DE COMANDOS ----------------------------------------------------------
A2ENSITE=`which a2ensite`
A2DISSITE=`which a2dissite`
CAT=`which cat`
CHMOD=`which chmod`
CHOWN=`which chown`
CP=`which cp`
CUT=`which cut`
DATE=`which date`
LS=`which ls`
MKDIR=`which mkdir`
MYSQL=`which mysql`
MV=`which mv`
RM=`which rm`
SED=`which sed`

#- USUARIOS E GRUPOS PARA DEFINICAO DE PERMISSOES -----------------------------
WWW_USER='www-data'
WWW_GROUP='www-data'

#- PATHS DE ARQUIVOS E DIRETORIOS ---------------------------------------------
WWW_DIR="/srv/www"			# DocumentRoot do Apache2
WEBSITE_DIR="$WWW_DIR/website"		# DocumentRoot dos sites Apache2
SITES_AVAILABLE="/etc/apache2/sites-available" # Arquivos de hosts virtuais

#- FUNCAO _CHECKOK - VERIFICACAO DE COMANDOS EXECUTADOS -----------------------
_CHECKOK () {
if [ $? -eq 0 ]; then
  echo -e " \\033[1;32mOK\\033[0;39m"
else
  echo -e " \\033[1;31mFALHOU\\033[0;39m"
fi
}
#------------------------------------------------------------------------------

#- FUNCAO _GET_DOMAIN - OBTEM O DOMINIO A SE UTILIZADO ------------------------
_GET_DOMAIN () {
echo -n "Digite o nome do dominio: "
read DOMAIN

if [ -z $DOMAIN ]; then
  echo -e "\\033[1;31mDominio nao informado!!!\\033[0;39m"
  _MENU
fi

DOM=$(echo $DOMAIN | egrep '([^\.])+([0-9A-Za-z-]+)\.([A-Za-z]{3,})+(\.([A-Za-z]{2}))?$');

if [ -z $DOM ]; then
  echo -e "\\033[1;31mFormato do dominio invalido!!!\\033[0;39m"
  echo -e "O formato correto e: \\033[1;33mdominio.com(.br)\\033[0;39m"
  _MENU
fi

#echo -n "Digite o IP do endereço www.${DOMAIN}: "
#read IP_WWW

#if [ -z $IP_WWW ]; then
#  echo -e "\\033[1;31mFormato de IP invalido!!!\\033[0;39m"
#  echo -e "O formato correto e: \\033[1;33mx.y.w.z\\033[0;39m"
#  _MENU
#fi

#echo -n "Digite o IP do endereço mail.${DOMAIN}: "
#read IP_MAIL

#if [ -z $IP_MAIL ]; then
#  echo -e "\\033[1;31mFormato de IP invalido!!!\\033[0;39m"
#  echo -e "O formato correto e: \\033[1;33mx.y.w.z\\033[0;39m"
#  _MENU
#fi
}
#------------------------------------------------------------------------------

#- FUNCAO _APACHE -------------------------------------------------------------
_APACHE () {

if [ "$OPT" = "Criar Dominio" ]; then
  echo
  echo -n "Adicionando entrada www.${DOMAIN} no apache..."
  $CAT << EOF > $SITES_AVAILABLE/www.$DOMAIN
<VirtualHost www.$DOMAIN:80>
  ServerAdmin webmaster@$DOMAIN
  ServerName www.$DOMAIN
  ServerAlias $DOMAIN 
  ServerAlias ns1.$DOMAIN 
  ServerAlias ns2.$DOMAIN 
  
  DocumentRoot $WEBSITE_DIR/$DOMAIN
  <Directory $WEBSITE_DIR/$DOMAIN>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  ScriptAlias /cgi-bin/ "$WEBSITE_DIR/$DOMAIN/cgi-bin/"
  <Directory "$WEBSITE_DIR/$DOMAIN/cgi-bin/">
    AllowOverride All
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>

  ServerSignature Off
</VirtualHost>
EOF
  _CHECKOK
  echo -n "Adicionando entrada mail.${DOMAIN} no apache..."
  $CAT << EOF > $SITES_AVAILABLE/mail.$DOMAIN
<VirtualHost mail.$DOMAIN:80>
  ServerAdmin webmaster@$DOMAIN
  ServerName mail.$DOMAIN
  ServerAlias imap.$DOMAIN 
  ServerAlias pop.$DOMAIN 
  ServerAlias pop3.$DOMAIN 
  ServerAlias smtp.$DOMAIN 
  ServerAlias webmail.$DOMAIN 
  
  DocumentRoot $WWW_DIR/webmail/
  <Directory $WWW_DIR/webmail/>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  ServerSignature Off
</VirtualHost>
EOF
  _CHECKOK

  echo -n "Criando diretorio $WEBSITE_DIR/$DOMAIN..."
  $MKDIR -p $WEBSITE_DIR/$DOMAIN
  _CHECKOK

  echo -n "Copiando pagina de construcao para $WEBSITE_DIR/$DOMAIN..."
  $CP $WWW_DIR/construcao/* $WEBSITE_DIR/$DOMAIN/
  _CHECKOK

  echo -n "Ativando o dominio $DOMAIN no apache..."
  $A2ENSITE "*.${DOMAIN}" 2>&1 > /dev/null
  _CHECKOK

elif [ "$OPT" = "Excluir Dominio" ]; then

  echo -n "Removendo diretorio $WEBSITE_DIR/$DOMAIN..."
  $RM -rf $WEBSITE_DIR/$DOMAIN
  _CHECKOK

  echo -n "Desativando o dominio $DOMAIN no apache..."
  $A2DISSITE "*.${DOMAIN}" 2>&1 > /dev/null
  _CHECKOK

  echo -n "Removendo entradas do dominio ${DOMAIN} do apache2..."
  $RM -f $SITES_AVAILABLE/*.${DOMAIN}
  _CHECKOK
fi

echo -n "Relendo as configuracoes do apache2..."
/etc/init.d/apache2 reload 2>&1 > /dev/null
_CHECKOK
}
#------------------------------------------------------------------------------

#- FUNCAO _CREATE_DOMAIN ------------------------------------------------------
_CREATE_DOMAIN () {

_GET_DOMAIN

if [ -d $WEBSITE_DIR/$DOMAIN ]; then
  echo -e "\\033[1;33mDominio ja existe!!!\\033[0;39m"
else
  _APACHE
fi
}
#------------------------------------------------------------------------------

#- FUNCAO _LIST_DOMAIN --------------------------------------------------------
_LIST_DOMAIN () {
echo
echo -e "\\033[1;33mLista de dominios cadastrados no apache:\\033[0;39m"
for WWW_LIST in `$LS ${WEBSITE_DIR} 2> /dev/null`
do
  echo -e "-> \\033[1;34m$WWW_LIST\\033[0;39m"
done
}
#------------------------------------------------------------------------------

#- FUNCAO _DELETE_DOMAIN ------------------------------------------------------
_DELETE_DOMAIN () {

_LIST_DOMAIN
_GET_DOMAIN

if [ ! -d $WEBSITE_DIR/$DOMAIN ]; then
  echo -e "\\033[1;31mDominio nao removido!!!\\033[0;39m"
  echo -e "\\033[1;33mDominio inexistente!!!\\033[0;39m"
else
  echo -n "Deseja remover o dominio? (s/n): "
  read SN
  if [ -z $SN  ] || [ $SN != s ]; then
    echo -e "\\033[1;31mDominio nao removido!!!\\033[0;39m"
  else
    _APACHE
  fi
fi
}
#------------------------------------------------------------------------------

#- FUNCAO _MENU ---------------------------------------------------------------
_MENU () {
unset DOMAIN
echo
echo "Escolha uma opcao a seguir:"
select OPT in "Criar Dominio" "Listar Dominios" "Excluir Dominio" "Sair";
do
  case $OPT in
  "Criar Dominio") _CREATE_DOMAIN; _MENU ;;
  "Listar Dominios") _LIST_DOMAIN; _MENU ;;
  "Excluir Dominio") _DELETE_DOMAIN; _MENU ;;
  "Sair") exit 0;;
  *) echo -e "\\033[1;33mForneca uma opcao valida.\\033[0;39m" ;;
  esac
done
}
#------------------------------------------------------------------------------

#- EXEC -----------------------------------------------------------------------
clear
echo -e "\\033[1;33m-------------------------------------------------------------\\033[0;39m"
echo -e "\\033[1;33m            SISTEMA DE GERENCIAMENTO DO APACHE               \\033[0;39m"
echo -e "\\033[1;33m-------------------------------------------------------------\\033[0;39m"

_MENU
#------------------------------------------------------------------------------

PHP File Manager