upgrade 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #!/bin/bash
  2. #=================================================
  3. # GENERIC START
  4. #=================================================
  5. # IMPORT GENERIC HELPERS
  6. #=================================================
  7. source _common.sh
  8. source /usr/share/yunohost/helpers
  9. #=================================================
  10. # LOAD SETTINGS
  11. #=================================================
  12. app=$YNH_APP_INSTANCE_NAME
  13. trustedversion="4.4-1+stretch"
  14. forceupdate=0
  15. export domain=$(ynh_app_setting_get "$app" domain)
  16. export path_url=$(ynh_app_setting_get "$app" path)
  17. #admin=$(ynh_app_setting_get "$app" admin) #not used
  18. is_public=$(ynh_app_setting_get "$app" is_public)
  19. final_path=$(ynh_app_setting_get "$app" final_path)
  20. #language=$(ynh_app_setting_get "$app" language) #not used
  21. db_name=$(ynh_app_setting_get "$app" db_name)
  22. db_user=$(ynh_app_setting_get "$app" db_user)
  23. db_pwd=$(ynh_app_setting_get "$app" mysqlpwd)
  24. #=================================================
  25. # ENSURE DOWNWARD COMPATIBILITY
  26. #=================================================
  27. # Fix is_public as a boolean value
  28. if [ "$is_public" = "Yes" ]; then
  29. ynh_app_setting_set "$app" is_public 1
  30. is_public=1
  31. elif [ "$is_public" = "No" ]; then
  32. ynh_app_setting_set "$app" is_public 0
  33. is_public=0
  34. fi
  35. # If db_name doesn't exist, create it
  36. if [ -z "$db_name" ]; then
  37. db_name=$(ynh_sanitize_dbid "$app")
  38. ynh_app_setting_set "$app" db_name "$db_name"
  39. fi
  40. # If final_path doesn't exist, create it
  41. if [ -z "$final_path" ]; then
  42. final_path=/var/www/$app
  43. ynh_app_setting_set "$app" final_path "$final_path"
  44. fi
  45. export mysqlconn="mysql -u$db_user -p$db_pwd $db_name"
  46. #=================================================
  47. # DISABLED SSOWAT
  48. #=================================================
  49. ynh_print_info "disable SSOWAT temporaly"
  50. ynh_app_setting_set "$app" unprotected_uris "/"
  51. systemctl reload nginx
  52. yunohost app ssowatconf
  53. #=================================================
  54. # Enable default admin temporaly
  55. #=================================================
  56. enable_admin_user
  57. #=================================================
  58. # Import Yunohost template
  59. #=================================================
  60. import_template
  61. #=================================================
  62. # Link Yunohost template to the ZAbbix Server Host
  63. #=================================================
  64. link_template
  65. #=================================================
  66. # Disable default admin for security issue
  67. #=================================================
  68. disable_admin_user
  69. #=================================================
  70. # Disable default guest for security issue
  71. #=================================================
  72. disable_guest_user
  73. #=================================================
  74. # CHECK THE PATH
  75. #=================================================
  76. # Normalize the URL path syntax
  77. path_url=$(ynh_normalize_url_path "$path_url")
  78. #Patch timeout too short for zabbix agent if needed
  79. change_timeoutAgent
  80. #patch if zabbix-release installed
  81. if [ "$(dpkg -l zabbix-release 2>/dev/null | wc -l)" -ne 0 ];then
  82. DEBIAN_FRONTEND=noninteractive apt purge zabbix-release -y
  83. install_zabbix_repo
  84. fi
  85. #patch if zabbix-release has Candidate version but no Installed version
  86. if [ -f "/etc/apt/sources.list.d/zabbix.list" ];then
  87. if [ "$(grep -c "4.2" /etc/apt/sources.list.d/zabbix.list)" -eq 1 ];then
  88. install_zabbix_repo
  89. forceupdate=1
  90. fi
  91. fi
  92. #patch to remove old zabbix-client service
  93. if [ ! -z "$(yunohost service status | grep zabbix-client)" ];then
  94. ynh_print_info "remove zabbix-client old service"
  95. yunohost service remove zabbix-client
  96. fi
  97. #=================================================
  98. # STANDARD UPGRADE STEPS
  99. #=================================================
  100. #REMOVE DUPLICATE LOG ENTRY IN LOGROTATE PATCH IF NEEDED
  101. ynh_remove_logrotate
  102. ynh_print_info "Check if new zabbix version is available on repo"
  103. ynh_package_update
  104. zabbixReleaseInstalledVersion=$(apt-cache policy zabbix-release | sed -n '2p' | grep -Po ".* \K(.*)")
  105. if [[ "$trustedversion" > "$zabbixReleaseInstalledVersion" ]] || [[ "$forceupdate" == "1" ]]
  106. then
  107. #=================================================
  108. # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
  109. #=================================================
  110. # Backup the current version of the app
  111. ynh_backup_before_upgrade
  112. ynh_clean_setup () {
  113. # restore it if the upgrade fails
  114. ynh_restore_upgradebackup
  115. }
  116. # Exit if an error occurs during the execution of the script
  117. ynh_abort_if_errors
  118. yunohost service stop zabbix-server
  119. yunohost service stop zabbix-agent
  120. cp -rp /etc/zabbix /tmp/
  121. cp -p /usr/share/zabbix/conf/zabbix.conf.php /tmp/
  122. DEBIAN_FRONTEND=noninteractive apt-mark unhold zabbix-server-mysql zabbix-frontend-php
  123. ynh_package_remove zabbix-server-mysql zabbix-frontend-php
  124. ynh_print_info "Update zabbix via apt package"
  125. ynh_install_app_dependencies libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 ttf-dejavu-core php7.0-bcmath patch smistrip unzip wget fping libcap2-bin libiksemel3 libopenipmi0 libpam-cap libsnmp-base libsnmp30 snmptrapd snmpd libjs-prototype jq zabbix-server-mysql zabbix-agent zabbix-frontend-php
  126. rm /usr/share/zabbix/conf/zabbix.conf.php
  127. cp -rpf /tmp/zabbix /etc/
  128. cp -pf /tmp/zabbix.conf.php /usr/share/zabbix/conf/
  129. rm -fr /tmp/zabbix*
  130. #If needed.
  131. yunohost service add snmpd -d "Management of SNMP Daemon"
  132. yunohost service add zabbix-server -d "Management Zabbix server daemon : Collect, agregate, compute and notify"
  133. yunohost service add zabbix-agent -d "Management Zabbix agent daemon : send informations about this host to the server"
  134. yunohost service start zabbix-server
  135. yunohost service start zabbix-agent
  136. #test if zabbix server is started
  137. check_proc_zabbixagent
  138. #test if zabbix agent is started
  139. check_proc_zabbixserver
  140. else
  141. ynh_print_info "No repo update ! (Trusted version)"
  142. fi
  143. #=================================================
  144. # INSTALL hook to verify if conf file is broken (after an update for example)
  145. #=================================================
  146. update_initZabbixConf
  147. #=================================================
  148. # Update db to utf8
  149. #=================================================
  150. convert_ZabbixDB
  151. #=================================================
  152. # Update php-fpm confi
  153. #=================================================
  154. ynh_print_info "Update php-fpm config"
  155. # Remove the dedicated php-fpm config
  156. ynh_remove_fpm_config
  157. # Create a dedicated php-fpm config
  158. ynh_add_fpm_config
  159. #=================================================
  160. # Update nginx config
  161. #=================================================
  162. ynh_print_info "Update nginx config"
  163. # Remove the dedicated nginx config
  164. ynh_remove_nginx_config
  165. # Create a dedicated nginx config
  166. ynh_add_nginx_config
  167. #=================================================
  168. # RE-ENABLE SSOWAT
  169. #=================================================
  170. ynh_print_info "re-enable SSOWAT"
  171. # Make app private if necessary
  172. if [ $is_public -eq 0 ]
  173. then
  174. # unprotected_uris allows SSO credentials to be passed anyway.
  175. ynh_app_setting_delete "$app" unprotected_uris
  176. else
  177. ynh_app_setting_set "$app" unprotected_uris "/"
  178. fi
  179. ynh_add_nginx_config
  180. systemctl reload nginx
  181. yunohost app ssowatconf