Advertisement
Guest User

Untitled

a guest
Sep 12th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.46 KB | None | 0 0
  1. #!/bin/bash
  2. # Leggo le opzioni
  3. function verbose () {
  4. if [[ $_V -eq 1 ]]; then
  5. echo "--- $@"
  6. fi
  7. }
  8.  
  9. _V=0
  10. while getopts "v" OPTION
  11. do
  12. case $OPTION in
  13. v) _V=1
  14. ;;
  15. esac
  16. done
  17.  
  18. # Messaggi
  19. mes_annullata="L'installazione e' stata annullata e nessuna operazione e' stata effettuata"
  20.  
  21. echo "------------------------------"
  22. echo "- INSTALLAZIONE PROCEDURA EG -"
  23. echo "------------------------------"
  24.  
  25. # NOME ENTE
  26. echo ""
  27. echo "Qual'e' il nome dell'ente? (es.: Matelica)"
  28. read nomeEnte
  29. if [ -z "$nomeEnte" ]
  30. then
  31. echo "Il parametro inserito non e' corretto"
  32. exit
  33. fi
  34. nomeEnteBackslashed=$(echo $nomeEnte | sed -e s/\'/"\\\'"/g)
  35.  
  36. # REGIONE
  37. echo ""
  38. echo "Qual'e' la regione? (es.: Marche)"
  39. read regione
  40. if [ -z "$regione" ]
  41. then
  42. echo "Il parametro inserito non e' corretto"
  43. exit
  44. fi
  45.  
  46. # PROVINCIA
  47. echo ""
  48. echo "Qual'e' la provincia? (es.: MC)"
  49. read provincia
  50. if [ -z "$provincia" ]
  51. then
  52. echo "Il parametro inserito non e' corretto"
  53. exit
  54. fi
  55.  
  56. # CODICE ISTAT
  57. echo ""
  58. echo "Qual'e' il codice dell'ente da installare? (es.: c999999)"
  59. read dbuser
  60. if [ -z "$dbuser" ]
  61. then
  62. echo "Il parametro ente inserito non e' corretto"
  63. exit
  64. else
  65. if [[ -e "/u/ghx/apache/htdocs/$dbuser" ]]; then
  66. echo "La cartella $dbuser e' gia' presente in u/ghx/apache/htdocs. Eliminare la cartella e ripetere l'installazione"
  67. exit
  68. fi
  69. fi
  70.  
  71. # CODICE CLIENTE
  72. echo ""
  73. echo "Qual'e' il codice cliente Halley?"
  74. read codiceCliente
  75. if [ -z "$codiceCliente" ]
  76. then
  77. echo "Il parametro inserito non e' corretto"
  78. exit
  79. fi
  80.  
  81. # INDIRIZZO SERVER WEB
  82. echo ""
  83. echo "Qual'e' l'indirizzo del server web (es.: www.halleyweb.com)?"
  84. read indirizzoServerWeb
  85. if [ -z "$indirizzoServerWeb" ]
  86. then
  87. echo "Il parametro inserito non e' corretto"
  88. exit
  89. fi
  90.  
  91. # DSDOC
  92. echo ""
  93. echo "E' possibile installare la DSDOC in un path alternativo (es.: /DSDOC/c999999/)"
  94. echo "Qual'e' il path della DSDOC dell'ente? (lasciare vuoto per mantenere le impostazioni di default)"
  95. read dsdoc
  96. dsdocBackslashed=$(echo $dsdoc | sed -e 's/\//\\\//g')
  97.  
  98. # Parametri database
  99. # DBHOST
  100. echo ""
  101. echo "Qual e' l'indirizzo del database (es.: 127.0.0.1)?"
  102. read dbhost
  103. if [ -z "$dbhost" ]
  104. then
  105. echo "Il parametro inserito non e' corretto"
  106. exit
  107. fi
  108.  
  109. # DBPOST
  110. echo ""
  111. echo "Qual'e' la porta del database (es.: 4081)?"
  112. read dbport
  113. if [ -z "$dbport" ]
  114. then
  115. echo "Il parametro inserito non e' corretto"
  116. exit
  117. fi
  118.  
  119. # DBPASS
  120. echo ""
  121. echo "Verra' creato l'utente mysql '$dbuser'. Quale password si vuole utilizzare per la connessione al database?"
  122. read dbpass
  123. if [ -z "$dbpass" ]
  124. then
  125. echo "Il parametro inserito non e' corretto"
  126. exit
  127. fi
  128.  
  129. # MIRRORPASS
  130. echo ""
  131. echo "Qual'e' la password del mirror?"
  132. read mirrorPass
  133. if [ -z "$mirrorPass" ]
  134. then
  135. echo "Il parametro inserito non e' corretto"
  136. exit
  137. fi
  138.  
  139. # Conferma installazione ente
  140. echo ""
  141. echo "------PARAMETRI INSERITI------"
  142. echo "Nome: $nomeEnte"
  143. echo "Regione: $regione"
  144. echo "Provincia: $provincia"
  145. echo "Codice Halley: $codiceCliente"
  146. echo "Server web: $indirizzoServerWeb"
  147. echo "DSDOC: $dsdoc"
  148. echo "-----------DATABASE----------"
  149. echo "Utente: $dbuser"
  150. echo "Host: $dbhost"
  151. echo "Porta: $dbport"
  152. echo "Password: $dbpass"
  153. echo "-----------MIRROR------------"
  154. echo "Password: $mirrorPass"
  155. echo "-----------------------------"
  156. echo "Controlla i parametri inseriti sopra. Sei sicuro di voler aggiungere l'ente $dbuser? [s,n]"
  157. read sn2
  158. if [ "$sn2" != "s" ]
  159. then
  160. echo "$mes_annullata"
  161. exit
  162. fi
  163.  
  164. echo "Installazione dell'ente $dbuser in corso..."
  165.  
  166. # Estrazione dati di connessione all'ente principale
  167. while read line || [ -n "$line" ]
  168. do
  169. varName=$(echo $line | cut -f1 -d=)
  170. varValue=$(echo $line | cut -f2 -d=)
  171. case $varName in
  172. DBHOST) dbhostHalley=$varValue
  173. ;;
  174. DBNAME) dbnameHalley=$varValue
  175. ;;
  176. DBUSER) dbuserHalley=$varValue
  177. ;;
  178. DBPASS) dbpassHalley=$varValue
  179. ;;
  180. DBPORT) dbportHalley=$varValue
  181. ;;
  182. esac
  183. done </u/sys/sql.ini
  184.  
  185. # Aggiunto i privilegi per mysql
  186. verbose "aggiunta dei privilegi al database $dbuser e log"
  187. /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;"
  188. /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;"
  189.  
  190.  
  191. # Controllo connessione al database
  192. verbose "controllo connessione al dabase log"
  193. 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 "$?")
  194. if [ $dbstatus -eq 1 ]
  195. then
  196. echo ""
  197. echo "Si e' verificato un errore durante la connessione con il database log"
  198. echo "$mes_annullata"
  199. exit
  200. fi
  201.  
  202. # Controllo esistenza DB dell'ente
  203. verbose "controllo esistenza database $dbuser"
  204. 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 "$?")
  205. if [ $dbexists -eq 0 ]
  206. then
  207. echo ""
  208. echo "ATTENZIONE: Esiste gia' un database con il nome $dbuser."
  209. echo "Vuoi eliminarlo? [s,n]"
  210. read sn0
  211. if [ "$sn0" = "s" ]
  212. then
  213. echo "Sei sicuro? Il database $dbuser verra completamente distrutto!!! Continuo? [s,n]"
  214. read sn1
  215. if [ "$sn1" = "s" ]
  216. then
  217. /u/ghx/mysql/bin/mysql -u $dbuser -P $dbport -p$dbpass -h $dbhost -e "DROP DATABASE $dbuser"
  218. echo "Il database $dbuser e' stato elimianto con successo"
  219. else
  220. echo "Il database non e' stato eliminato"
  221. echo "$mes_annullata"
  222. exit
  223. fi
  224. else
  225. echo "Il database non e' stato eliminato"
  226. echo "$mes_annullata"
  227. exit
  228. fi
  229. fi
  230.  
  231. # Creazione cartelle per l'ente
  232. verbose "creazione cartella htdocs /u/ghx/apache/htdocs/$dbuser"
  233. mkdir -p /u/ghx/apache/htdocs/$dbuser
  234. mkdir -p /u/ghx/apache/htdocs/$dbuser/include
  235. mkdir -p /u/ghx/apache/htdocs/$dbuser/images
  236. mkdir -p /u/ghx/apache/htdocs/$dbuser/immagini/slideshow
  237. mkdir -p /u/ghx/apache/htdocs/$dbuser/km
  238. mkdir -p /u/ghx/apache/htdocs/$dbuser/lg
  239. mkdir -p /u/ghx/apache/htdocs/$dbuser/ev/images
  240. mkdir -p /u/ghx/apache/htdocs/$dbuser/zf/data
  241. mkdir -p /u/ghx/apache/htdocs/$dbuser/zf/immagini/homepage
  242. cp "/u/ghx/apache/htdocs/EGINST/files/index.sample.php" "/u/ghx/apache/htdocs/$dbuser/index.php"
  243. cp "/u/ghx/apache/htdocs/images/at_banner.png" "/u/ghx/apache/htdocs/$dbuser/images/at_banner.png"
  244. cp "/u/ghx/apache/htdocs/images/banner-bandi-di-gara.png" "/u/ghx/apache/htdocs/$dbuser/images/banner-bandi-di-gara.png"
  245. cp "/u/ghx/apache/htdocs/images/mlf_banner.jpg" "/u/ghx/apache/htdocs/$dbuser/images/mlf_banner.jpg"
  246. cp "/u/ghx/apache/htdocs/images/tvm_banner.jpg" "/u/ghx/apache/htdocs/$dbuser/images/tvm_banner.jpg"
  247. cp "/u/ghx/apache/htdocs/images/statistics.png" "/u/ghx/apache/htdocs/$dbuser/images/statistics.png"
  248. cp "/u/ghx/apache/htdocs/images/banner_menu.jpg" "/u/ghx/apache/htdocs/$dbuser/images/banner_menu.jpg"
  249.  
  250. # Copio la sys e correggo sql.ini
  251. verbose "creazione cartella sys /u/ghx/$dbuser/sys"
  252. mkdir -p /u/ghx/$dbuser/sys
  253. cp -Rf /u/sys/* /u/ghx/$dbuser/sys
  254. rm /u/ghx/$dbuser/sys/sql.ini
  255. echo "[Variabili]
  256. DBTYPE=MYSQL
  257. DBHOST=$dbhost
  258. DBNAME=$dbuser
  259. DBUSER=$dbuser
  260. DBPASS=$dbpass
  261. DBPORT=$dbport" >> /u/ghx/$dbuser/sys/sql.ini
  262. chmod -R 777 /u/ghx/$dbuser
  263.  
  264. # Gestione degli utenti mediante digest nel file passwd
  265. # se esiste passwd lo utilizzo, altrimenti lo creo
  266. verbose "creazione passwd per htdigest"
  267. touch /u/ghx/apache/htdocs/services/passwd
  268. digestLine=$(echo -n "$dbuser:services:" && echo -n "$dbuser:services:$mirrorPass" | md5sum | awk '{print $1}')
  269. sed -i -e "/^$dbuser:services:/ c$digestLine" "/u/ghx/apache/htdocs/services/passwd"
  270. grep -q "$dbuser:services" "/u/ghx/apache/htdocs/services/passwd" || echo $digestLine >> "/u/ghx/apache/htdocs/services/passwd"
  271.  
  272. # Copio e configuro il config_inc.php
  273. verbose "configurazione /u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  274. cp "/u/ghx/apache/htdocs/EGINST/files/config_inc.sample.php" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  275. sed -i "/DBHOST/ s/.*/define(\"_DBHOST\",\"$dbhost:$dbport\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  276. sed -i "/ENTEDEFAULT/ s/.*/define(\"_ENTEDEFAULT\",\"$dbuser\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  277. sed -i "/DBUSR/ s/.*/define(\"_DBUSR\",\"$dbuser\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  278. sed -i "/DBPWD/ s/.*/define(\"_DBPWD\",\"$dbpass\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  279. if [ -z "$dsdocBackslashed" ]
  280. then
  281. sed -i "/DSDOC/ s/.*//" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  282. else
  283. sed -i "/DSDOC/ s/.*/define(\"_DSDOC\",\"$dsdocBackslashed\");/" "/u/ghx/apache/htdocs/$dbuser/include/config_inc.php"
  284. fi
  285.  
  286. # Sistemazione permessi e proprietario
  287. verbose "configurazione proprietario e permessi /u/ghx/apache/htdocs/$dbuser"
  288. chmod -R 777 /u/ghx/apache/htdocs/$dbuser
  289. chown -R apache:apache /u/ghx/apache/htdocs/$dbuser
  290.  
  291. # Aggiungo l'ente a HHHOMPG
  292. verbose "aggiunta dell'ente a HALLEY.HHHOMPG"
  293. /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;"
  294.  
  295. # Creo il database dell'ente
  296. verbose "creazione del database $dbuser"
  297. /u/ghx/mysql/bin/mysql -u $dbuser -P $dbport -p$dbpass -h $dbhost -e "CREATE DATABASE IF NOT EXISTS $dbuser"
  298.  
  299. # Copio il database installazione_eg
  300. verbose "copia del database installazione_eg"
  301. /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
  302. /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
  303.  
  304. # Correzione assign su HHADISC
  305. verbose "correzione $dbuser.HHADISC"
  306. /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'"
  307. /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'"
  308. /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'"
  309.  
  310. # Correzione link del menu orizzonale
  311. verbose "correzione link menu orizzontale"
  312. /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')"
  313. /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE EAPMENU SET HHPLINK = REPLACE(HHPLINK, 'installazione_eg', '$dbuser')"
  314.  
  315. # Correzione data ultimo accesso
  316. verbose "correzione data ultimo accesso alla Intranet"
  317. /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE DODIPOPEG SET DODIREG=CURDATE(), DODIDUA=CURDATE()"
  318.  
  319. # Inserimento nome comune
  320. verbose "correzione $dbuser.EAPOINI"
  321. /u/ghx/mysql/bin/mysql -u $dbuser -p$dbpass -h $dbhost -P $dbport $dbuser -e "UPDATE EAPOINI SET NOMEBREVE='$nomeEnteBackslashed ($provincia)',NOMECOMUNE='$nomeEnteBackslashed ($provincia)'"
  322.  
  323. # Per halleyweb.com creo sposto la cartella in HTDOCS_ENTI e creo il link
  324. if [ "$indirizzoServerWeb" = "www.halleyweb.com" ]
  325. then
  326. verbose "Sposto $dbuser in HTDOCS_ENTI"
  327. mv /u/ghx/apache/htdocs/$dbuser /HTDOCS_ENTI
  328. ln -s /HTDOCS_ENTI/$dbuser /HTDOCS/$dbuser
  329. chown -h apache:apache /HTDOCS/$dbuser
  330. ssh ap2 ln -s /HTDOCS_ENTI/$dbuser /HTDOCS/$dbuser
  331. ssh ap2 chown -h apache:apache /HTDOCS/$dbuser
  332. fi
  333.  
  334. # Aggiungo l'ente a TECUTI
  335. 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"
  336.  
  337. echo ""
  338. echo "---------------------------------------------------"
  339. echo "- L'ente $dbuser e' stato installato con successo! -"
  340. echo "---------------------------------------------------"
  341. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement