[3665] | 1 | # |
---|
| 2 | # set tabstop=5 |
---|
| 3 | # |
---|
| 4 | #!/bin/bash |
---|
| 5 | # Criado por João Alfredo Knopik Junior <jakjr@celepar.pr.gov.br> |
---|
| 6 | # Colaborações: |
---|
| 7 | # "William Fernando Merlotto" <william@prognus.com.br> |
---|
| 8 | # "Alexandre Felipe Muller de Souza" <amuller@celepar.pr.gov.br> |
---|
| 9 | # |
---|
| 10 | # |
---|
| 11 | # |
---|
| 12 | # Adaptação feita para o Red Hat EL 5 e Centos 5 |
---|
| 13 | # Cássio Luiz <cassiolp@cnpq.br> |
---|
| 14 | # - Alterações feitas por M. Rodrigo Monteiro <mrodrigom@gmail.com> |
---|
| 15 | # - 14/09/09 - Reescrita por William Fernando Merlotto <william@prognus.com.br> |
---|
| 16 | # |
---|
| 17 | # |
---|
| 18 | |
---|
| 19 | LC_TELEPHONE=es_VE.UTF-8 |
---|
| 20 | LC_CTYPE=es_VE.UTF-8 |
---|
| 21 | LANGUAGE=es_VE:pt_PT:pt |
---|
| 22 | LC_MONETARY=es_VE.UTF-8 |
---|
| 23 | LC_ADDRESS=es_VE.UTF-8 |
---|
| 24 | LC_COLLATE=es_VE.UTF-8 |
---|
| 25 | LC_PAPER=es_VE.UTF-8 |
---|
| 26 | LC_NAME=es_VE.UTF-8 |
---|
| 27 | LC_NUMERIC=es_VE.UTF-8 |
---|
| 28 | SYSFONT=lat1-16 |
---|
| 29 | LC_MEASUREMENT=es_VE.UTF-8 |
---|
| 30 | LC_TIME=es_VE.UTF-8 |
---|
| 31 | LANG=es_VE.UTF-8 |
---|
| 32 | LC_IDENTIFICATION=es_VE.UTF-8 |
---|
| 33 | LC_MESSAGES=es_VE.UTF-8 |
---|
| 34 | |
---|
| 35 | 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 |
---|
| 36 | |
---|
| 37 | #alterado - mostrar as msgs de erro |
---|
| 38 | #set -e # Para caso de erro |
---|
| 39 | |
---|
| 40 | if [ $UID != 0 ]; then { |
---|
| 41 | echo "Este script debe ser ejecutado como superusuario, root o sudo"; |
---|
| 42 | exit 1; |
---|
| 43 | } |
---|
| 44 | fi |
---|
| 45 | |
---|
| 46 | # |
---|
| 47 | # Testa se o Dialog esta instalado |
---|
| 48 | |
---|
| 49 | #alterado |
---|
| 50 | testadialog=$(/usr/bin/which dialog | grep "^/usr/bin/dialog$") |
---|
| 51 | |
---|
| 52 | #alterado |
---|
| 53 | if [ "$testadialog" != "/usr/bin/dialog" ]; then |
---|
| 54 | echo "Dialog no está instalado." |
---|
| 55 | echo "" |
---|
| 56 | echo "" |
---|
| 57 | echo "Instalando Dialog!!!" |
---|
| 58 | #alterado - tenta instalar o Dialog com o yum, caso contrario instala com o rpm e mostra a msg se foi instalado ou nao |
---|
| 59 | 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 |
---|
| 60 | else |
---|
| 61 | echo "Dialog instalado!!!" |
---|
| 62 | fi |
---|
| 63 | |
---|
| 64 | BACKTITLE='Instalación de ExpressoLivre 2.0' |
---|
| 65 | INTRO=' |
---|
| 66 | Bienvenido(a) a la instalación de ExpressoLivre! |
---|
| 67 | |
---|
| 68 | 3 (tres) preguntas seran hechas a usted. |
---|
| 69 | - Escriba una contraseña. |
---|
| 70 | - Escriba una organización. |
---|
| 71 | - Escriba un dominio. |
---|
| 72 | |
---|
| 73 | Con estas informaciones el script podrá |
---|
| 74 | instalar y configurar el ExpressoLivre. |
---|
| 75 | ' |
---|
| 76 | #..................................................................... |
---|
| 77 | dialog --backtitle "$BACKTITLE" \ |
---|
| 78 | --cr-wrap \ |
---|
| 79 | --msgbox "$INTRO" \ |
---|
| 80 | 17 55 && |
---|
| 81 | #..................................................................... |
---|
| 82 | #alterado - confirmar a senha |
---|
| 83 | LDAP_PWD=$( dialog --stdout --passwordbox 'Escriba una contraseña:' 0 0 ) |
---|
| 84 | LDAP_PWD_CONF=$( dialog --stdout --passwordbox 'Confirme la contraseña:' 0 0 ) |
---|
| 85 | if [ "$LDAP_PWD" != "$LDAP_PWD_CONF" ] ; then |
---|
| 86 | dialog \ |
---|
| 87 | --title 'Las contraseñas no son iguales ' \ |
---|
| 88 | --msgbox 'Favor escribir dos contraseñas iguales!!!' \ |
---|
| 89 | 6 40 |
---|
| 90 | exit 0 |
---|
| 91 | fi |
---|
| 92 | #..................................................................... |
---|
| 93 | ORG=$( dialog --stdout --inputbox 'Escriba una organización:(ej.: celepar)' 0 55 ) |
---|
| 94 | #..................................................................... |
---|
| 95 | DOMAIN=$( dialog --stdout --inputbox 'Escriba su Dominio:(ej.: '$ORG'.com.br)' 0 55 ) |
---|
| 96 | |
---|
| 97 | |
---|
| 98 | # Instala os pacotes necessarios |
---|
| 99 | pacotes () { |
---|
| 100 | dialog --yesno 'Desea que el script instale automaticamente los paquetes disponibles de la distribución?' 7 70 |
---|
| 101 | # yes |
---|
| 102 | if [ $? = 0 ] |
---|
| 103 | then |
---|
| 104 | dialog \ |
---|
| 105 | --title 'Aguarde' \ |
---|
| 106 | --infobox '\nVerificando la instalación de los paquetes nesesarios...' \ |
---|
| 107 | 0 0 |
---|
| 108 | yum clean all |
---|
| 109 | yum -y install httpd mod_ssl \ |
---|
| 110 | unzip zip \ |
---|
| 111 | openldap openldap-clients openldap-servers \ |
---|
| 112 | cyrus-imapd cyrus-imapd-perl cyrus-imapd-utils cyrus-sasl cyrus-sasl-ldap cyrus-sasl-plain perl-IO-Socket-SSL \ |
---|
| 113 | postfix \ |
---|
| 114 | postgresql postgresql-server \ |
---|
| 115 | php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd php-xml |
---|
| 116 | else |
---|
| 117 | dialog \ |
---|
| 118 | --title 'Aviso' \ |
---|
| 119 | --yesno 'Ok, no será realizada la instalación de los paquetes y eso ocasionara que Expresso Livre no funcione!!!\n\nDesea continuar ?' \ |
---|
| 120 | 10 40 |
---|
| 121 | # no, sai do script |
---|
| 122 | [ $? = 1 ] && exit 1 |
---|
| 123 | fi |
---|
| 124 | } |
---|
| 125 | |
---|
| 126 | # POSTGRES |
---|
| 127 | postgres () { |
---|
| 128 | service postgresql stop |
---|
| 129 | service postgresql start |
---|
| 130 | sleep 3 |
---|
| 131 | service postgresql stop |
---|
| 132 | |
---|
| 133 | cp -f ./arqs-conf-rhel5/var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/ |
---|
| 134 | cp -f ./arqs-conf-rhel5/var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/ |
---|
| 135 | |
---|
| 136 | service postgresql start |
---|
| 137 | |
---|
| 138 | su - postgres -c 'dropdb expresso' || { echo "Base de datos expresso no existia. [OK]"; } |
---|
| 139 | su - postgres -c 'createdb -E LATIN1 expresso' || { echo "Problemas en la creación de base de datos expresso. [Fallo]"; exit 1;} |
---|
| 140 | |
---|
| 141 | 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 |
---|
| 142 | |
---|
| 143 | service postgresql start |
---|
| 144 | chkconfig postgresql on |
---|
| 145 | |
---|
| 146 | su - postgres -c 'psql -f /tmp/expresso.dump expresso' |
---|
| 147 | |
---|
| 148 | rm /tmp/expresso.dump |
---|
| 149 | } |
---|
| 150 | |
---|
| 151 | # APACHE |
---|
| 152 | apache () { |
---|
| 153 | cp -r -p ../../../expresso/ /var/www/ |
---|
| 154 | #TODO: Verificar erro: |
---|
| 155 | sed -e "s/HEADER_PWD/$HEADER_PWD/g" ./arqs-conf-rhel5/header.inc.php > /var/www/expresso/header.inc.php |
---|
| 156 | |
---|
| 157 | mkdir /home/expressolivre || { echo "Diretório já existe. [OK]"; } |
---|
| 158 | cp ./arqs-conf-rhel5/home/expressolivre/* /home/expressolivre/ |
---|
| 159 | |
---|
| 160 | cp ./arqs-conf-rhel5/etc/httpd/conf/httpd.conf /etc/httpd/conf/ |
---|
| 161 | cp ./arqs-conf-rhel5/etc/httpd/conf.d/expresso.conf /etc/httpd/conf.d/ |
---|
| 162 | cp ./arqs-conf-rhel5/etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ |
---|
| 163 | cp ./arqs-conf-rhel5/etc/php.ini /etc/ |
---|
| 164 | |
---|
| 165 | chown -R apache.apache /var/www/expresso /home/expressolivre |
---|
| 166 | |
---|
| 167 | #mkdir /php_sessions/ || { echo "Diretório já existe. [OK]"; } |
---|
| 168 | #chmod -R 777 /php_sessions/ |
---|
| 169 | |
---|
| 170 | service httpd restart |
---|
| 171 | chkconfig httpd on |
---|
| 172 | } |
---|
| 173 | |
---|
| 174 | # OPENLDAP |
---|
| 175 | ldap () { |
---|
| 176 | service ldap stop |
---|
| 177 | |
---|
| 178 | rm -rf /var/lib/ldap/* |
---|
| 179 | 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 |
---|
| 180 | cp ./arqs-conf-rhel5/etc/openldap/schema/* /etc/openldap/schema/ |
---|
| 181 | cp ./arqs-conf-rhel5/etc/openldap/DB_CONFIG /var/lib/ldap/ |
---|
| 182 | 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 |
---|
| 183 | slapadd -v -l /tmp/expresso.ldif |
---|
| 184 | chown -R ldap.ldap /var/lib/ldap/ |
---|
| 185 | |
---|
| 186 | service ldap start |
---|
| 187 | chkconfig ldap on |
---|
| 188 | |
---|
| 189 | rm /tmp/expresso.ldif |
---|
| 190 | } |
---|
| 191 | |
---|
| 192 | # CYRUS |
---|
| 193 | cyrus () { |
---|
| 194 | cp ./arqs-conf-rhel5/etc/imapd.conf /etc/ |
---|
| 195 | cp ./arqs-conf-rhel5/etc/cyrus.conf /etc/ |
---|
| 196 | sed -e "s/LDAP_DN/$LDAP_DN/g" ./arqs-conf-rhel5/etc/saslauthd.conf > /etc/saslauthd.conf |
---|
| 197 | cp ./arqs-conf-rhel5/etc/sysconfig/saslauthd /etc/sysconfig/ |
---|
| 198 | cp -p ./arqs-conf-rhel5/usr/bin/cyradm_expresso /usr/bin/ |
---|
| 199 | |
---|
| 200 | service saslauthd restart |
---|
| 201 | chkconfig saslauthd on |
---|
| 202 | sleep 4 |
---|
| 203 | |
---|
| 204 | service cyrus-imapd restart |
---|
| 205 | chkconfig cyrus-imapd on |
---|
| 206 | |
---|
| 207 | #./arqs-conf-rhel5/cyrus.pl $LDAP_PWD |
---|
| 208 | } |
---|
| 209 | |
---|
| 210 | # POSTFIX |
---|
| 211 | postfix () { |
---|
| 212 | sed -e "s/LDAP_DN/$LDAP_DN/g" -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/etc/postfix/main.cf > /etc/postfix/main.cf |
---|
| 213 | sed -e "s/DOMAIN/$DOMAIN/g" ./arqs-conf-rhel5/etc/postfix/expresso-dominios > /etc/postfix/expresso-dominios |
---|
| 214 | #cp ./arqs-conf-rhel5/etc/postfix/master.cf /etc/postfix/ |
---|
| 215 | |
---|
| 216 | postmap /etc/postfix/expresso-dominios |
---|
| 217 | |
---|
| 218 | service postfix restart |
---|
| 219 | chkconfig postfix on |
---|
| 220 | } |
---|
| 221 | |
---|
| 222 | # Especifico para instalacao do PHP de pacotes de terceiros, nao oficiais da distribuicao |
---|
| 223 | pacotes_php () { |
---|
| 224 | 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 |
---|
| 225 | # yes |
---|
| 226 | if [ $? = 0 ] |
---|
| 227 | then |
---|
| 228 | # Utiliza o repositorio do Remi, que possui (em 10/09/09) o php-5.3.0 |
---|
| 229 | # http://blog.famillecollet.com/pages/Config-en |
---|
| 230 | rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm |
---|
| 231 | wget http://rpms.famillecollet.com/remi-enterprise.repo -O /etc/yum.repos.d/remi-enterprise.repo |
---|
| 232 | # Atualiza os pacotes... |
---|
| 233 | yum --enablerepo=remi install php php-cli php-ldap php-pgsql php-imap php-mbstring php-gd libtool |
---|
| 234 | else |
---|
| 235 | |
---|
| 236 | dialog --infobox 'Ok! A versão mais recente do PHP não foi instalada!' 0 0 |
---|
| 237 | fi |
---|
| 238 | } |
---|
| 239 | |
---|
| 240 | # Outros |
---|
| 241 | outros () { |
---|
| 242 | # Deixa o SELinux permissivo |
---|
| 243 | cp -f ./arqs-conf-rhel5/etc/selinux/config /etc/selinux/config |
---|
| 244 | setenforce 0 |
---|
| 245 | # Desativa o sendmail |
---|
| 246 | service sendmail stop |
---|
| 247 | chkconfig --del sendmail |
---|
| 248 | yum -y erase sendmail |
---|
| 249 | } |
---|
| 250 | |
---|
| 251 | ########################################################################################### |
---|
| 252 | # # |
---|
| 253 | # MAIN # |
---|
| 254 | # # |
---|
| 255 | ########################################################################################### |
---|
| 256 | |
---|
| 257 | alias cp="cp" |
---|
| 258 | |
---|
| 259 | pacotes |
---|
| 260 | outros |
---|
| 261 | # Uma solução alternativa para a versão do PHP |
---|
| 262 | pacotes_php |
---|
| 263 | |
---|
| 264 | # GET VARs |
---|
| 265 | LDAP_DN=`php ./arqs-conf-rhel5/makedn.php $DOMAIN` |
---|
| 266 | LDAP_DC=`php ./arqs-conf-rhel5/makedc.php $DOMAIN` |
---|
| 267 | LDAP_PWD_MD5=`slappasswd -v -s $LDAP_PWD -h {MD5}` |
---|
| 268 | LDAP_PWD_MD5=`php ./arqs-conf-rhel5/regexp.php $LDAP_PWD_MD5` |
---|
| 269 | HEADER_PWD=`php ./arqs-conf-rhel5/pass.php $LDAP_PWD` |
---|
| 270 | |
---|
| 271 | dialog --yesno 'Deseja escolher quais serviços (apache, ldap, postfix, cyrus e postgres) serão configurados pelo script?' 7 70 |
---|
| 272 | # no |
---|
| 273 | if [ $? = 1 ] |
---|
| 274 | then |
---|
| 275 | apache |
---|
| 276 | ldap |
---|
| 277 | postfix |
---|
| 278 | cyrus |
---|
| 279 | postgres |
---|
| 280 | else |
---|
| 281 | for I in apache ldap postfix cyrus postgres |
---|
| 282 | do |
---|
| 283 | dialog --yesno "Deseja configurar o $I?" 7 70 |
---|
| 284 | if [ $? = 0 ] |
---|
| 285 | then |
---|
| 286 | dialog --infobox "Configurando o serviço: $I. Aguarde..." 0 0 |
---|
| 287 | $I |
---|
| 288 | fi |
---|
| 289 | done |
---|
| 290 | fi |
---|
| 291 | |
---|
| 292 | # Por algum motivo, ainda desconhecido para mim, esta chamada não é executada corretamente dentro da função "cyrus" |
---|
| 293 | ./arqs-conf-rhel5/cyrus.pl $LDAP_PWD |
---|
| 294 | |
---|
| 295 | ############################################################################################ |
---|
| 296 | |
---|
| 297 | dialog --backtitle "$BACKTITLE" --cr-wrap --msgbox "FIM. www.expressolivre.org" 7 55 && |
---|
| 298 | |
---|
| 299 | #dialog \ |
---|
| 300 | # --title 'Aviso Importante!!!' \ |
---|
| 301 | # --textbox arqs-conf-rhel5/rpms/listalang.txt \ |
---|
| 302 | # 0 0 |
---|
| 303 | |
---|
| 304 | echo '.' |
---|