# # set tabstop=5 # #!/bin/bash # Criado por João Alfredo Knopik Junior # Colaborações: # "William Fernando Merlotto" # "Alexandre Felipe Muller de Souza" # # # # Adaptação feita para o Red Hat EL 5 e Centos 5 # Cássio Luiz # - Alterações feitas por M. Rodrigo Monteiro # - 14/09/09 - Reescrita por William Fernando Merlotto # # LC_TELEPHONE=es_VE.UTF-8 LC_CTYPE=es_VE.UTF-8 LANGUAGE=es_VE:pt_PT:pt LC_MONETARY=es_VE.UTF-8 LC_ADDRESS=es_VE.UTF-8 LC_COLLATE=es_VE.UTF-8 LC_PAPER=es_VE.UTF-8 LC_NAME=es_VE.UTF-8 LC_NUMERIC=es_VE.UTF-8 SYSFONT=lat1-16 LC_MEASUREMENT=es_VE.UTF-8 LC_TIME=es_VE.UTF-8 LANG=es_VE.UTF-8 LC_IDENTIFICATION=es_VE.UTF-8 LC_MESSAGES=es_VE.UTF-8 export LC_TELEPHONE LC_CTYPE LANGUAGE LC_MONETARY LC_ADDRESS LC_COLLATE LC_PAPER LC_NAME LC_NUMERIC SYSFONT LC_MEASUREMENT LC_TIME LANG LC_IDENTIFICATION LC_MESSAGES #alterado - mostrar as msgs de erro #set -e # Para caso de erro if [ $UID != 0 ]; then { echo "Este script debe ser ejecutado como superusuario, root o sudo"; exit 1; } fi # # Testa se o Dialog esta instalado #alterado testadialog=$(/usr/bin/which dialog | grep "^/usr/bin/dialog$") #alterado if [ "$testadialog" != "/usr/bin/dialog" ]; then echo "Dialog no está instalado." echo "" echo "" echo "Instalando Dialog!!!" #alterado - tenta instalar o Dialog com o yum, caso contrario instala com o rpm e mostra a msg se foi instalado ou nao yum -y install dialog || rpm -ivh arqs-conf-rhel5/rpms/dialog-1.0.20051107-1.2.2.i386.rpm && echo "Dialog foi instalado instalado!!!" || echo "No fue posible instalar Dialog" && exit 0 else echo "Dialog instalado!!!" fi BACKTITLE='Instalación de ExpressoLivre 2.0' INTRO=' Bienvenido(a) a la instalación de ExpressoLivre! 3 (tres) preguntas seran hechas a usted. - Escriba una contraseña. - Escriba una organización. - Escriba un dominio. Con estas informaciones el script podrá instalar y configurar el ExpressoLivre. ' #..................................................................... dialog --backtitle "$BACKTITLE" \ --cr-wrap \ --msgbox "$INTRO" \ 17 55 && #..................................................................... #alterado - confirmar a senha LDAP_PWD=$( dialog --stdout --passwordbox 'Escriba una contraseña:' 0 0 ) LDAP_PWD_CONF=$( dialog --stdout --passwordbox 'Confirme la contraseña:' 0 0 ) if [ "$LDAP_PWD" != "$LDAP_PWD_CONF" ] ; then dialog \ --title 'Las contraseñas no son iguales ' \ --msgbox 'Favor escribir dos contraseñas iguales!!!' \ 6 40 exit 0 fi #..................................................................... ORG=$( dialog --stdout --inputbox 'Escriba una organización:(ej.: celepar)' 0 55 ) #..................................................................... DOMAIN=$( dialog --stdout --inputbox 'Escriba su Dominio:(ej.: '$ORG'.com.br)' 0 55 ) # Instala os pacotes necessarios pacotes () { dialog --yesno 'Desea que el script instale automaticamente los paquetes disponibles de la distribución?' 7 70 # yes if [ $? = 0 ] then dialog \ --title 'Aguarde' \ --infobox '\nVerificando la instalación de los paquetes nesesarios...' \ 0 0 yum clean all yum -y install httpd mod_ssl \ unzip zip \ openldap openldap-clients openldap-servers \ cyrus-imapd cyrus-imapd-perl cyrus-imapd-utils cyrus-sasl cyrus-sasl-ldap cyrus-sasl-plain perl-IO-Socket-SSL \ postfix \ postgresql postgresql-server \ php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd php-xml else dialog \ --title 'Aviso' \ --yesno 'Ok, no será realizada la instalación de los paquetes y eso ocasionara que Expresso Livre no funcione!!!\n\nDesea continuar ?' \ 10 40 # no, sai do script [ $? = 1 ] && exit 1 fi } # POSTGRES postgres () { service postgresql stop service postgresql start sleep 3 service postgresql stop cp -f ./arqs-conf-rhel5/var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/ cp -f ./arqs-conf-rhel5/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/ service postgresql start su - postgres -c 'dropdb expresso' || { echo "Base de datos expresso no existia. [OK]"; } su - postgres -c 'createdb -E LATIN1 expresso' || { echo "Problemas en la creación de base de datos expresso. [Fallo]"; exit 1;} sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/LDAP_PWD/$LDAP_PWD/g" -e "s/ORG/$ORG/g" -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/expresso.dump > /tmp/expresso.dump service postgresql start chkconfig postgresql on su - postgres -c 'psql -f /tmp/expresso.dump expresso' rm /tmp/expresso.dump } # APACHE apache () { cp -r -p ../../../expresso/ /var/www/ #TODO: Verificar erro: sed -e "s/HEADER_PWD/$HEADER_PWD/g" ./arqs-conf-rhel5/header.inc.php > /var/www/expresso/header.inc.php mkdir /home/expressolivre || { echo "Diretório já existe. [OK]"; } cp ./arqs-conf-rhel5/home/expressolivre/* /home/expressolivre/ cp ./arqs-conf-rhel5/etc/httpd/conf/httpd.conf /etc/httpd/conf/ cp ./arqs-conf-rhel5/etc/httpd/conf.d/expresso.conf /etc/httpd/conf.d/ cp ./arqs-conf-rhel5/etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ cp ./arqs-conf-rhel5/etc/php.ini /etc/ chown -R apache.apache /var/www/expresso /home/expressolivre #mkdir /php_sessions/ || { echo "Diretório já existe. [OK]"; } #chmod -R 777 /php_sessions/ service httpd restart chkconfig httpd on } # OPENLDAP ldap () { service ldap stop rm -rf /var/lib/ldap/* sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/LDAP_PWD_MD5/$LDAP_PWD_MD5/g" ./arqs-conf-rhel5/etc/openldap/slapd.conf > /etc/openldap/slapd.conf cp ./arqs-conf-rhel5/etc/openldap/schema/* /etc/openldap/schema/ cp ./arqs-conf-rhel5/etc/openldap/DB_CONFIG /var/lib/ldap/ sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/LDAP_PWD_MD5/$LDAP_PWD_MD5/g" -e "s/ORG/$ORG/g" -e "s/DOMAIN/$DOMAIN/g" -e "s/LDAP_DC/$LDAP_DC/g" ./arqs-conf-rhel5/expresso.ldif > /tmp/expresso.ldif slapadd -v -l /tmp/expresso.ldif chown -R ldap.ldap /var/lib/ldap/ service ldap start chkconfig ldap on rm /tmp/expresso.ldif } # CYRUS cyrus () { cp ./arqs-conf-rhel5/etc/imapd.conf /etc/ cp ./arqs-conf-rhel5/etc/cyrus.conf /etc/ sed -e "s/LDAP_DN/$LDAP_DN/g" ./arqs-conf-rhel5/etc/saslauthd.conf > /etc/saslauthd.conf cp ./arqs-conf-rhel5/etc/sysconfig/saslauthd /etc/sysconfig/ cp -p ./arqs-conf-rhel5/usr/bin/cyradm_expresso /usr/bin/ service saslauthd restart chkconfig saslauthd on sleep 4 service cyrus-imapd restart chkconfig cyrus-imapd on #./arqs-conf-rhel5/cyrus.pl $LDAP_PWD } # POSTFIX postfix () { sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/etc/postfix/main.cf > /etc/postfix/main.cf sed -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/etc/postfix/expresso-dominios > /etc/postfix/expresso-dominios #cp ./arqs-conf-rhel5/etc/postfix/master.cf /etc/postfix/ postmap /etc/postfix/expresso-dominios service postfix restart chkconfig postfix on } # Especifico para instalacao do PHP de pacotes de terceiros, nao oficiais da distribuicao pacotes_php () { dialog --yesno 'Los paquetes de PHP disponibles en esta distribucion possee versiones inferiores a las requeridas por Expresso. Expresso necessita de PHP-5.2.1 o superior.\nPor lo que, este script podrá configurar automaticamente un repositório externo, de terceros y sin soporte (en este caso, el REMI-Enterprise), para instalar versiones mas recientes de PHP.\n\nA equipo de Expresso Livre recomienda el uso de este repositório y la instalación de los nuevos paquetes, por eso, no nos responsabilizamos por qualquier dano. En caso de que usted no utilize los paquetes mas recientes de PHP, Expresso no funcionara correctamente!!\n\nUsted desea proseguir, por su cuenta y riesgo, la instalación del PHP mas reciente?' 20 70 # yes if [ $? = 0 ] then # Utiliza o repositorio do Remi, que possui (em 10/09/09) o php-5.3.0 # http://blog.famillecollet.com/pages/Config-en rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm wget http://rpms.famillecollet.com/remi-enterprise.repo -O /etc/yum.repos.d/remi-enterprise.repo # Atualiza os pacotes... yum --enablerepo=remi install php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd libtool else dialog --infobox 'Ok! A versão mais recente do PHP não foi instalada!' 0 0 fi } # Outros outros () { # Deixa o SELinux permissivo cp -f ./arqs-conf-rhel5/etc/selinux/config /etc/selinux/config setenforce 0 # Desativa o sendmail service sendmail stop chkconfig --del sendmail yum -y erase sendmail } ########################################################################################### # # # MAIN # # # ########################################################################################### alias cp="cp" pacotes outros # Uma solução alternativa para a versão do PHP pacotes_php # GET VARs LDAP_DN=`php ./arqs-conf-rhel5/makedn.php $DOMAIN` LDAP_DC=`php ./arqs-conf-rhel5/makedc.php $DOMAIN` LDAP_PWD_MD5=`slappasswd -v -s $LDAP_PWD -h {MD5}` LDAP_PWD_MD5=`php ./arqs-conf-rhel5/regexp.php $LDAP_PWD_MD5` HEADER_PWD=`php ./arqs-conf-rhel5/pass.php $LDAP_PWD` dialog --yesno 'Deseja escolher quais serviços (apache, ldap, postfix, cyrus e postgres) serão configurados pelo script?' 7 70 # no if [ $? = 1 ] then apache ldap postfix cyrus postgres else for I in apache ldap postfix cyrus postgres do dialog --yesno "Deseja configurar o $I?" 7 70 if [ $? = 0 ] then dialog --infobox "Configurando o serviço: $I. Aguarde..." 0 0 $I fi done fi # Por algum motivo, ainda desconhecido para mim, esta chamada não é executada corretamente dentro da função "cyrus" ./arqs-conf-rhel5/cyrus.pl $LDAP_PWD ############################################################################################ dialog --backtitle "$BACKTITLE" --cr-wrap --msgbox "FIM. www.expressolivre.org" 7 55 && #dialog \ # --title 'Aviso Importante!!!' \ # --textbox arqs-conf-rhel5/rpms/listalang.txt \ # 0 0 echo '.'