Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Leggo le opzioni
- function verbose () {
- if [[ $_V -eq 1 ]]; then
- echo "--- $@"
- fi
- }
- _V=0
- while getopts "v" OPTION
- do
- case $OPTION in
- v) _V=1
- ;;
- esac
- done
- # Messaggi
- mes_annullata="L'installazione e' stata annullata e nessuna operazione e' stata effettuata"
- echo "------------------------------"
- echo "- INSTALLAZIONE PROCEDURA EG -"
- echo "------------------------------"
- # NOME ENTE
- echo ""
- echo "Qual'e' il nome dell'ente? (es.: Matelica)"
- read nomeEnte
- if [ -z "$nomeEnte" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- nomeEnteBackslashed=$(echo $nomeEnte | sed -e s/\'/"\\\'"/g)
- # REGIONE
- echo ""
- echo "Qual'e' la regione? (es.: Marche)"
- read regione
- if [ -z "$regione" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # PROVINCIA
- echo ""
- echo "Qual'e' la provincia? (es.: MC)"
- read provincia
- if [ -z "$provincia" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # CODICE ISTAT
- echo ""
- echo "Qual'e' il codice dell'ente da installare? (es.: c999999)"
- read dbuser
- if [ -z "$dbuser" ]
- then
- echo "Il parametro ente inserito non e' corretto"
- exit
- else
- if [[ -e "/u/ghx/apache/htdocs/$dbuser" ]]; then
- echo "La cartella $dbuser e' gia' presente in u/ghx/apache/htdocs. Eliminare la cartella e ripetere l'installazione"
- exit
- fi
- fi
- # CODICE CLIENTE
- echo ""
- echo "Qual'e' il codice cliente Halley?"
- read codiceCliente
- if [ -z "$codiceCliente" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # INDIRIZZO SERVER WEB
- echo ""
- echo "Qual'e' l'indirizzo del server web (es.: www.halleyweb.com)?"
- read indirizzoServerWeb
- if [ -z "$indirizzoServerWeb" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # DSDOC
- echo ""
- echo "E' possibile installare la DSDOC in un path alternativo (es.: /DSDOC/c999999/)"
- echo "Qual'e' il path della DSDOC dell'ente? (lasciare vuoto per mantenere le impostazioni di default)"
- read dsdoc
- dsdocBackslashed=$(echo $dsdoc | sed -e 's/\//\\\//g')
- # Parametri database
- # DBHOST
- echo ""
- echo "Qual e' l'indirizzo del database (es.: 127.0.0.1)?"
- read dbhost
- if [ -z "$dbhost" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # DBPOST
- echo ""
- echo "Qual'e' la porta del database (es.: 4081)?"
- read dbport
- if [ -z "$dbport" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # DBPASS
- echo ""
- echo "Verra' creato l'utente mysql '$dbuser'. Quale password si vuole utilizzare per la connessione al database?"
- read dbpass
- if [ -z "$dbpass" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # MIRRORPASS
- echo ""
- echo "Qual'e' la password del mirror?"
- read mirrorPass
- if [ -z "$mirrorPass" ]
- then
- echo "Il parametro inserito non e' corretto"
- exit
- fi
- # Conferma installazione ente
- echo ""
- echo "------PARAMETRI INSERITI------"
- echo "Nome: $nomeEnte"
- echo "Regione: $regione"
- echo "Provincia: $provincia"
- echo "Codice Halley: $codiceCliente"
- echo "Server web: $indirizzoServerWeb"
- echo "DSDOC: $dsdoc"
- echo "-----------DATABASE----------"
- echo "Utente: $dbuser"
- echo "Host: $dbhost"
- echo "Porta: $dbport"
- echo "Password: $dbpass"
- echo "-----------MIRROR------------"
- echo "Password: $mirrorPass"
- echo "-----------------------------"
- echo "Controlla i parametri inseriti sopra. Sei sicuro di voler aggiungere l'ente $dbuser? [s,n]"
- read sn2
- if [ "$sn2" != "s" ]
- then
- echo "$mes_annullata"
- exit
- fi
- echo "Installazione dell'ente $dbuser in corso..."
- # Estrazione dati di connessione all'ente principale
- while read line || [ -n "$line" ]
- do
- varName=$(echo $line | cut -f1 -d=)
- varValue=$(echo $line | cut -f2 -d=)
- case $varName in
- DBHOST) dbhostHalley=$varValue
- ;;
- DBNAME) dbnameHalley=$varValue
- ;;
- DBUSER) dbuserHalley=$varValue
- ;;
- DBPASS) dbpassHalley=$varValue
- ;;
- DBPORT) dbportHalley=$varValue
- ;;
- esac
- done </u/sys/sql.ini
- # Aggiunto i privilegi per mysql
- verbose "aggiunta dei privilegi al database $dbuser e log"
- /u/ghx/mysql/bin/mysql -u $dbuserHalley -P $dbport -p$dbpassHalley -h $dbhost -e "GRANT ALL PRIVILEGES ON $dbuser.* TO '$dbuser'@'%' IDENTIFIED BY '$dbpass' WITH GRANT OPTION;"
- /u/ghx/mysql/bin/mysql -u $dbuserHalley -P $dbport -p$dbpassHalley -h $dbhost -e "GRANT ALL PRIVILEGES ON log.* TO '$dbuser'@'%' IDENTIFIED BY '$dbpass' WITH GRANT OPTION;"
- # Controllo connessione al database
- verbose "controllo connessione al dabase log"
- dbstatus=$(/u/ghx/mysql/bin/mysql -u $dbuser -P $dbport -p$dbpass -h $dbhost --batch --skip-column-names -e "SHOW DATABASES LIKE 'log';" | grep "log" > /dev/null; echo "$?")
- if [ $dbstatus -eq 1 ]
- then
- echo ""
- echo "Si e' verificato un errore durante la connessione con il database log"
- echo "$mes_annullata"
- exit
- fi
- # Controllo esistenza DB dell'ente
- verbose "controllo esistenza database $dbuser"
- dbexists=$(/u/ghx/mysql/bin/mysql -u $dbuser -P $dbport -p$dbpass -h $dbhost --batch --skip-column-names -e "SHOW DATABASES LIKE '"$dbuser"';" | grep "$dbuser" > /dev/null; echo "$?")
- if [ $dbexists -eq 0 ]
- then
- echo ""
- echo "ATTENZIONE: Esiste gia' un database con il nome $dbuser."
- echo "Vuoi eliminarlo? [s,n]"
- read sn0
- if [ "$sn0" = "s" ]
- then
- echo "Sei sicuro? Il database $dbuser verra completamente distrutto!!! Continuo? [s,n]"
- read sn1
- if [ "$sn1" = "s" ]
- then
- /u/ghx/mysql/bin/mysql -u $dbuser -P $dbport -p$dbpass -h $dbhost -e "DROP DATABASE $dbuser"
- echo "Il database $dbuser e' stato elimianto con successo"
- else
- echo "Il database non e' stato eliminato"
- echo "$mes_annullata"
- exit
- fi
- else
- echo "Il database non e' stato eliminato"
- echo "$mes_annullata"
- exit
- fi
- fi
- # Creazione cartelle per l'ente
- verbose "creazione cartella htdocs /u/ghx/apache/htdocs/$dbuser"
- mkdir -p /u/ghx/apache/htdocs/$dbuser
- mkdir -p /u/ghx/apache/htdocs/$dbuser/include
- mkdir -p /u/ghx/apache/htdocs/$dbuser/images
- mkdir -p /u/ghx/apache/htdocs/$dbuser/immagini/slideshow
- mkdir -p /u/ghx/apache/htdocs/$dbuser/km
- mkdir -p /u/ghx/apache/htdocs/$dbuser/lg
- mkdir -p /u/ghx/apache/htdocs/$dbuser/ev/images
- mkdir -p /u/ghx/apache/htdocs/$dbuser/zf/data
- mkdir -p /u/ghx/apache/htdocs/$dbuser/zf/immagini/homepage
- cp "/u/ghx/apache/htdocs/EGINST/files/index.sample.php" "/u/ghx/apache/htdocs/$dbuser/index.php"
- cp "/u/ghx/apache/htdocs/images/at_banner.png" "/u/ghx/apache/htdocs/$dbuser/images/at_banner.png"
- cp "/u/ghx/apache/htdocs/images/banner-bandi-di-gara.png" "/u/ghx/apache/htdocs/$dbuser/images/banner-bandi-di-gara.png"
- cp "/u/ghx/apache/htdocs/images/mlf_banner.jpg" "/u/ghx/apache/htdocs/$dbuser/images/mlf_banner.jpg"
- cp "/u/ghx/apache/htdocs/images/tvm_banner.jpg" "/u/ghx/apache/htdocs/$dbuser/images/tvm_banner.jpg"
- cp "/u/ghx/apache/htdocs/images/statistics.png" "/u/ghx/apache/htdocs/$dbuser/images/statistics.png"
- cp "/u/ghx/apache/htdocs/images/banner_menu.jpg" "/u/ghx/apache/htdocs/$dbuser/images/banner_menu.jpg"
- # Copio la sys e correggo sql.ini
- verbose "creazione cartella sys /u/ghx/$dbuser/sys"
- mkdir -p /u/ghx/$dbuser/sys
- cp -Rf /u/sys/* /u/ghx/$dbuser/sys
- rm /u/ghx/$dbuser/sys/sql.ini
- echo "[Variabili]
- DBTYPE=MYSQL
- DBHOST=$dbhost
- DBNAME=$dbuser
- DBUSER=$dbuser
- DBPASS=$dbpass
- DBPORT=$dbport" >> /u/ghx/$dbuser/sys/sql.ini
- chmod -R 777 /u/ghx/$dbuser
- # Gestione degli utenti mediante digest nel file passwd
- # se esiste passwd lo utilizzo, altrimenti lo creo
- verbose "creazione passwd per htdigest"
- touch /u/ghx/apache/htdocs/services/passwd
- digestLine=$(echo -n "$dbuser:services:" && echo -n "$dbuser:services:$mirrorPass" | md5sum | awk '{print $1}')
- sed -i -e "/^$dbuser:services:/ c$digestLine" "/u/ghx/apache/htdocs/services/passwd"
- grep -q "$dbuser:services" "/u/ghx/apache/htdocs/services/passwd" || echo $digestLine >> "/u/ghx/apache/htdocs/services/passwd"
- # Copio e configuro il config_inc.php
- verbose "configurazione /u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- cp "/u/ghx/apache/htdocs/EGINST/files/config_inc.sample.php" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- sed -i "/DBHOST/ s/.*/define(\"_DBHOST\",\"$dbhost:$dbport\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- sed -i "/ENTEDEFAULT/ s/.*/define(\"_ENTEDEFAULT\",\"$dbuser\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- sed -i "/DBUSR/ s/.*/define(\"_DBUSR\",\"$dbuser\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- sed -i "/DBPWD/ s/.*/define(\"_DBPWD\",\"$dbpass\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- if [ -z "$dsdocBackslashed" ]
- then
- sed -i "/DSDOC/ s/.*//" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- else
- sed -i "/DSDOC/ s/.*/define(\"_DSDOC\",\"$dsdocBackslashed\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
- fi
- # Sistemazione permessi e proprietario
- verbose "configurazione proprietario e permessi /u/ghx/apache/htdocs/$dbuser"
- chmod -R 777 /u/ghx/apache/htdocs/$dbuser
- chown -R apache:apache /u/ghx/apache/htdocs/$dbuser
- # Aggiungo l'ente a HHHOMPG
- verbose "aggiunta dell'ente a HALLEY.HHHOMPG"
- /u/ghx/mysql/bin/mysql -u $dbuserHalley -p$dbpassHalley -h $dbhostHalley -P $dbportHalley $dbnameHalley -e "INSERT INTO HHHOMPG (HHHOTIT,HHHOENT,HHHODTB,HHHOENU,HHHOSYS,HHHONOAGG,HHHDOCSER) SELECT '$dbuser', '$dbuser', '$dbuser', '$dbuser','/u/ghx/$dbuser/sys','0',CONCAT('ds',(SELECT MAX(HHHOSRL)+1 FROM (SELECT * FROM HHHOMPG) as HH)) FROM HHHOMPG WHERE NOT EXISTS (SELECT 1 FROM HHHOMPG WHERE HHHODTB = '$dbuser') LIMIT 1;"
- # Creo il database dell'ente
- verbose "creazione del database $dbuser"
- /u/ghx/mysql/bin/mysql -u $dbuser -P $dbport -p$dbpass -h $dbhost -e "CREATE DATABASE IF NOT EXISTS $dbuser"
- # Copio il database installazione_eg
- verbose "copia del database installazione_eg"
- /u/ghx/mysql/bin/mysqldump -u $dbuserHalley -p$dbpassHalley -h $dbhostHalley -P $dbportHalley --compact --max_allowed_packet=512M --default-character-set=latin1 installazione_eg -r /tmp/installazione_eg.sql
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport --max_allowed_packet=512M --default-character-set=latin1 $dbuser < /tmp/installazione_eg.sql
- # Correzione assign su HHADISC
- verbose "correzione $dbuser.HHADISC"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE HHADISC SET HHADFIS='/u/ghx/$dbuser/sys' WHERE HHADDLO='SYS'"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE HHADISC SET HHADFIS='/u/ghx/$dbuser/sys/sym' WHERE HHADDLO='SYM'"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE HHADISC SET HHADFIS='/u/ghx/$dbuser/sys/syb' WHERE HHADDLO='SYB'"
- # Correzione link del menu orizzonale
- verbose "correzione link menu orizzontale"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE EAPMENU SET HHPLINK = CONCAT('https://$indirizzoServerWeb',REPLACE(HHPLINK, 'installazione_eg', '$dbuser')) WHERE HHPMKEY IN ('C','I','E','T','P')"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE EAPMENU SET HHPLINK = REPLACE(HHPLINK, 'installazione_eg', '$dbuser')"
- # Correzione data ultimo accesso
- verbose "correzione data ultimo accesso alla Intranet"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE DODIPOPEG SET DODIREG=CURDATE(), DODIDUA=CURDATE()"
- # Inserimento nome comune
- verbose "correzione $dbuser.EAPOINI"
- /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE EAPOINI SET NOMEBREVE='$nomeEnteBackslashed ($provincia)',NOMECOMUNE='$nomeEnteBackslashed ($provincia)'"
- # Per halleyweb.com creo sposto la cartella in HTDOCS_ENTI e creo il link
- if [ "$indirizzoServerWeb" = "www.halleyweb.com" ]
- then
- verbose "Sposto $dbuser in HTDOCS_ENTI"
- mv /u/ghx/apache/htdocs/$dbuser /HTDOCS_ENTI
- ln -s /HTDOCS_ENTI/$dbuser /HTDOCS/$dbuser
- chown -h apache:apache /HTDOCS/$dbuser
- ssh ap2 ln -s /HTDOCS_ENTI/$dbuser /HTDOCS/$dbuser
- ssh ap2 chown -h apache:apache /HTDOCS/$dbuser
- fi
- # Aggiungo l'ente a TECUTI
- wget -q -O /dev/stdout "http://halleyweb.it/tecuti/aggiornamento/at_a_comune_add.php?k=f04b28a9a41083b40a8905fbd8c40e50&e=$dbuser&f=$indirizzoServerWeb&cc=$codiceCliente&r=$regione&p=$provincia&nc=$nomeEnte&mirror=$mirrorPass"
- echo ""
- echo "---------------------------------------------------"
- echo "- L'ente $dbuser e' stato installato con successo! -"
- echo "---------------------------------------------------"
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement