_common.sh 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #!/bin/bash
  2. # Get guest user state
  3. #
  4. # return 0 if enable, else 1
  5. #
  6. get_state_guest_user () {
  7. $mysqlconn -BN -e "SELECT count(id) from \`users_groups\` where userid=2 and usrgrpid=9"
  8. }
  9. # Disable guest user
  10. #
  11. disable_guest_user () {
  12. if [ $(get_state_guest_user) = "0" ]
  13. then
  14. ynh_print_info --message="Disable guest user"
  15. lastid=$($mysqlconn -BN -e "SELECT max(id) from \`users_groups\`")
  16. lastid=$(("$lastid" + 1 ))
  17. $mysqlconn -e "INSERT INTO \`users_groups\` (\`id\` , \`usrgrpid\`, \`userid\`) VALUES ($lastid ,9, 2);"
  18. ynh_print_info --message="Guest user disabled"
  19. else
  20. ynh_print_info --message="Guest user already disabled"
  21. fi
  22. }
  23. # Get admin user state
  24. #
  25. # return 0 if enable, else 1
  26. #
  27. get_state_admin_user () {
  28. $mysqlconn -BN -e "SELECT count(id) from \`users_groups\` where userid=1 and usrgrpid=9"
  29. }
  30. # Disable admin user
  31. #
  32. disable_admin_user () {
  33. if [ $(get_state_admin_user) = "0" ]
  34. then
  35. ynh_print_info --message="Disable admin user"
  36. lastid=$($mysqlconn -BN -e "SELECT max(id) from \`users_groups\`")
  37. lastid=$((lastid + 1 ))
  38. $mysqlconn -e "INSERT INTO \`users_groups\` (\`id\` , \`usrgrpid\`, \`userid\`) VALUES ($lastid ,9, 1);"
  39. ynh_print_info --message="Admin user disabled"
  40. else
  41. ynh_print_info --message="Admin user already disabled"
  42. fi
  43. }
  44. # Enable admin user
  45. #
  46. enable_admin_user () {
  47. if [ $(get_state_admin_user) = "1" ]
  48. then
  49. ynh_print_info --message="Enable admin user"
  50. #enable default admin temporaly
  51. $mysqlconn -e "DELETE FROM users_groups where usrgrpid=9 and userid=1;"
  52. ynh_print_info --message="Admin user enabled"
  53. else
  54. ynh_print_info --message="Admin user already enable"
  55. fi
  56. }
  57. # Import YunoHost template in the agent
  58. #
  59. import_template () {
  60. ynh_print_info --message="Import YunoHost template in the agent"
  61. zabbixFullpath=https://$domain$path
  62. localpath="../conf/Template_Yunohost.xml"
  63. sudoUserPpath="../conf/etc_sudoers.d_zabbix"
  64. confUserPpath="../conf/etc_zabbix_zabbix_agentd.d_userP_yunohost.conf"
  65. bashUserPpath="../conf/etc_zabbix_zabbix_agentd.d_yunohost.sh"
  66. cp "$sudoUserPpath" /etc/sudoers.d/zabbix
  67. chmod 400 /etc/sudoers.d/zabbix
  68. if [ -d /etc/zabbix/zabbix_agentd.d ]
  69. then
  70. mv /etc/zabbix/zabbix_agentd.d /etc/zabbix/zabbix_agentd.conf.d
  71. fi
  72. if [ ! -L /etc/zabbix/zabbix_agentd.d ]
  73. then
  74. ln -s /etc/zabbix/zabbix_agentd.conf.d /etc/zabbix/zabbix_agentd.d
  75. fi
  76. cp "$confUserPpath" /etc/zabbix/zabbix_agentd.d/userP_yunohost.conf
  77. cp "$bashUserPpath" /etc/zabbix/zabbix_agentd.d/yunohost.sh
  78. chown -R $app:$app "/etc/zabbix/zabbix_agentd.d/"
  79. chmod a+x /etc/zabbix/zabbix_agentd.d/yunohost.sh
  80. systemctl restart zabbix-agent
  81. /usr/share/zabbix-cli/bin/zabbix-cli --config /usr/share/zabbix-cli/zabbix-cli.toml import_configuration $localpath
  82. }
  83. # Link YunoHost template to Zabbix server
  84. #
  85. link_template () {
  86. ynh_print_info --message="Link YunoHost template to Zabbix server"
  87. /usr/share/zabbix-cli/bin/zabbix-cli --config /usr/share/zabbix-cli/zabbix-cli.toml link_template_to_host "Template Yunohost" "Zabbix server"
  88. }
  89. # Check if Zabbix server is started
  90. #
  91. check_proc_zabbixserver () {
  92. pgrep zabbix_server >/dev/null
  93. if [ $? -eq 0 ]
  94. then
  95. ynh_print_info --message="Zabbix server is started !"
  96. else
  97. ynh_print_err --message="Zabbix server not started, try to start it with the YunoHost interface."
  98. ynh_print_err --message="If Zabbix server can't start, please open a issue on https://github.com/YunoHost-Apps/zabbix_ynh/issues"
  99. fi
  100. }
  101. # Check if Zabbix agent is started
  102. #
  103. check_proc_zabbixagent () {
  104. pgrep zabbix_agentd >/dev/null
  105. if [ $? -eq 0 ]
  106. then
  107. ynh_print_info --message="Zabbix agent is started"
  108. else
  109. ynh_print_err --message="Zabbix agent not started, try to start it with the YunoHost interface."
  110. ynh_print_err --message="If Zabbix agent can't start, please open a issue on https://github.com/YunoHost-Apps/zabbix_ynh/issues"
  111. fi
  112. }
  113. # Update Zabbix configuration initialisation
  114. #
  115. update_initZabbixConf () {
  116. ynh_print_info --message="Update Zabbix configuration initialisation !"
  117. if [ ! -d /etc/zabbix/web ]
  118. then
  119. mkdir -p /etc/zabbix/web
  120. fi
  121. cp "../conf/etc_zabbix_web_init.zabbix.conf.php.sh" /etc/zabbix/web/init.zabbix.conf.php.sh
  122. chmod 700 /etc/zabbix/web/init.zabbix.conf.php.sh
  123. cp "../conf/etc_apt_apt.conf.d_100update_force_init_zabbix_frontend_config" /etc/apt/apt.conf.d/100update_force_init_zabbix_frontend_config
  124. ynh_print_info --message="Zabbix configuration initialisation updated !"
  125. }
  126. # Delete Zabbix configuration initialisation
  127. #
  128. delete_initZabbixConf () {
  129. ynh_print_info --message="Delete Zabbix configuration initialisation !"
  130. if [ -f /etc/zabbix/web/init.zabbix.conf.php.sh ]
  131. then
  132. ynh_secure_remove --file="/etc/zabbix/web/init.zabbix.conf.php.sh"
  133. fi
  134. if [ -f /etc/apt/apt.conf.d/100update_force_init_zabbix_frontend_config ]
  135. then
  136. ynh_secure_remove --file="/etc/apt/apt.conf.d/100update_force_init_zabbix_frontend_config"
  137. fi
  138. ynh_print_info --message="Zabbix configuration initialisation deleted !"
  139. }
  140. # Patch timeout too short for Zabbix agent if needed
  141. #
  142. change_timeoutAgent () {
  143. timeout_ok=$(grep "^Timeout" /etc/zabbix/zabbix_agentd.conf 2>/dev/null || true;)
  144. if [ -z "$timeout_ok" ]
  145. then
  146. ynh_replace_string --match_string="# Timeout=3" --replace_string="Timeout=10" --target_file=/etc/zabbix/zabbix_agentd.conf
  147. grep -C 2 "Timeout" /etc/zabbix/zabbix_agentd.conf
  148. systemctl restart zabbix-agent
  149. ynh_print_info --message="Zabbix agent timeout updated !"
  150. fi
  151. }
  152. # Update Zabbix database character set
  153. #
  154. convert_ZabbixDB () {
  155. ynh_print_info --message="Zabbix database character set will be updated !"
  156. $mysqlconn -e "ALTER DATABASE $db_name CHARACTER SET utf8 COLLATE utf8_general_ci;"
  157. for t in $($mysqlconn -BN -e "show tables";)
  158. do
  159. $mysqlconn -e "ALTER TABLE $t CONVERT TO character set utf8 collate utf8_bin;"
  160. done
  161. ynh_print_info --message="Zabbix database character set has been updated !"
  162. }
  163. # Add email media type with the YunoHost server mail.
  164. #
  165. set_mediatype_default_yunohost () {
  166. set -x
  167. if [ $($mysqlconn -BN -e "SELECT count(*) FROM media_type WHERE smtp_server LIKE 'mail.example.com' AND status=1;") -eq 1 ]
  168. then
  169. $mysqlconn -BN -e "UPDATE media_type SET smtp_server = 'localhost', smtp_helo = '"$domain"', smtp_email = 'zabbix@"$domain"', smtp_port = '587', status=0 , smtp_security=1 WHERE smtp_server LIKE 'mail.example.com' AND status=1;"
  170. ynh_print_info --message="Default Media type added !"
  171. fi
  172. set +x
  173. }