upgrade 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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. #=================================================
  93. # STANDARD UPGRADE STEPS
  94. #=================================================
  95. #REMOVE DUPLICATE LOG ENTRY IN LOGROTATE PATCH IF NEEDED
  96. ynh_remove_logrotate
  97. ynh_print_info "Check if new zabbix version is available on repo"
  98. ynh_package_update
  99. zabbixReleaseInstalledVersion=$(apt-cache policy zabbix-release | sed -n '2p' | grep -Po ".* \K(.*)")
  100. if [[ "$trustedversion" > "$zabbixReleaseInstalledVersion" ]] || [[ "$forceupdate" == "1" ]]
  101. then
  102. #=================================================
  103. # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
  104. #=================================================
  105. # Backup the current version of the app
  106. ynh_backup_before_upgrade
  107. ynh_clean_setup () {
  108. # restore it if the upgrade fails
  109. ynh_restore_upgradebackup
  110. }
  111. # Exit if an error occurs during the execution of the script
  112. ynh_abort_if_errors
  113. yunohost service stop zabbix-server
  114. yunohost service stop zabbix-agent
  115. cp -rp /etc/zabbix /tmp/
  116. cp -p /usr/share/zabbix/conf/zabbix.conf.php /tmp/
  117. DEBIAN_FRONTEND=noninteractive apt-mark unhold zabbix-server-mysql zabbix-frontend-php
  118. ynh_package_remove zabbix-server-mysql zabbix-frontend-php
  119. ynh_print_info "Update zabbix via apt package"
  120. 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
  121. rm /usr/share/zabbix/conf/zabbix.conf.php
  122. cp -rpf /tmp/zabbix /etc/
  123. cp -pf /tmp/zabbix.conf.php /usr/share/zabbix/conf/
  124. rm -fr /tmp/zabbix*
  125. #If needed.
  126. yunohost service add snmpd -d "Management of SNMP Daemon"
  127. yunohost service add zabbix-server -d "Management Zabbix server daemon : Collect, agregate, compute and notify"
  128. yunohost service add zabbix-agent -d "Management Zabbix agent daemon : send informations about this host to the server"
  129. yunohost service start zabbix-server
  130. yunohost service start zabbix-agent
  131. #test if zabbix server is started
  132. check_proc_zabbixagent
  133. #test if zabbix agent is started
  134. check_proc_zabbixserver
  135. else
  136. ynh_print_info "No repo update ! (Trusted version)"
  137. fi
  138. #=================================================
  139. # INSTALL hook to verify if conf file is broken (after an update for example)
  140. #=================================================
  141. update_initZabbixConf
  142. #=================================================
  143. # Update db to utf8
  144. #=================================================
  145. convert_ZabbixDB
  146. #=================================================
  147. # Update php-fpm confi
  148. #=================================================
  149. ynh_print_info "Update php-fpm config"
  150. # Remove the dedicated php-fpm config
  151. ynh_remove_fpm_config
  152. # Create a dedicated php-fpm config
  153. ynh_add_fpm_config
  154. #=================================================
  155. # Update nginx config
  156. #=================================================
  157. ynh_print_info "Update nginx config"
  158. # Remove the dedicated nginx config
  159. ynh_remove_nginx_config
  160. # Create a dedicated nginx config
  161. ynh_add_nginx_config
  162. #=================================================
  163. # RE-ENABLE SSOWAT
  164. #=================================================
  165. ynh_print_info "re-enable SSOWAT"
  166. # Make app private if necessary
  167. if [ $is_public -eq 0 ]
  168. then
  169. # unprotected_uris allows SSO credentials to be passed anyway.
  170. ynh_app_setting_delete "$app" unprotected_uris
  171. else
  172. ynh_app_setting_set "$app" unprotected_uris "/"
  173. fi
  174. ynh_add_nginx_config
  175. systemctl reload nginx
  176. yunohost app ssowatconf