alert_slack.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #!/bin/bash
  2. # LinuxGSM alert_slack.sh module
  3. # Author: Daniel Gibbs
  4. # Contributors: http://linuxgsm.com/contrib
  5. # Website: https://linuxgsm.com
  6. # Description: Sends Slack alert.
  7. functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
  8. json=$(cat <<EOF
  9. {
  10. "blocks": [
  11. {
  12. "type": "context",
  13. "elements": [
  14. {
  15. "type": "image",
  16. "image_url": "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/master/lgsm/data/alert_discord_logo.jpg",
  17. "alt_text": "LinuxGSM"
  18. },
  19. {
  20. "type": "mrkdwn",
  21. "text": "*LinuxGSM Alert*"
  22. }
  23. ]
  24. },
  25. {
  26. "type": "header",
  27. "text": {
  28. "type": "plain_text",
  29. "text": "${servername}",
  30. "emoji": true
  31. }
  32. },
  33. {
  34. "type": "section",
  35. "text": {
  36. "type": "mrkdwn",
  37. "text": "*${alertemoji} ${alerttitle}*"
  38. }
  39. },
  40. {
  41. "type": "section",
  42. "text": {
  43. "type": "mrkdwn",
  44. "text": "*Game:* ${gamename}"
  45. }
  46. },
  47. {
  48. "type": "section",
  49. "fields": [
  50. {
  51. "type": "mrkdwn",
  52. "text": "*Maxplayers*"
  53. },
  54. {
  55. "type": "mrkdwn",
  56. "text": "*Map*"
  57. },
  58. {
  59. "type": "mrkdwn",
  60. "text": "${alertplayers}"
  61. },
  62. {
  63. "type": "mrkdwn",
  64. "text": "${alertmap}"
  65. }
  66. ]
  67. },
  68. {
  69. "type": "section",
  70. "fields": [
  71. {
  72. "type": "mrkdwn",
  73. "text": "*Server IP*"
  74. },
  75. {
  76. "type": "mrkdwn",
  77. "text": "*Hostname*"
  78. },
  79. {
  80. "type": "mrkdwn",
  81. "text": "${alertip}:${port}"
  82. },
  83. {
  84. "type": "mrkdwn",
  85. "text": "${HOSTNAME}"
  86. }
  87. ]
  88. },
  89. {
  90. "type": "section",
  91. "text": {
  92. "type": "mrkdwn",
  93. "text": "*Trigger Message*\n${alerttriggermessage} \n More info: ${alerturl}"
  94. }
  95. },
  96. {
  97. "type": "image",
  98. "image_url": "${alertimage}",
  99. "alt_text": "${gamename}"
  100. },
  101. {
  102. "type": "divider"
  103. },
  104. {
  105. "type": "context",
  106. "elements": [
  107. {
  108. "type": "image",
  109. "image_url": "https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/master/lgsm/data/alert_discord_logo.jpg",
  110. "alt_text": "LinuxGSM Logo"
  111. },
  112. {
  113. "type": "plain_text",
  114. "text": "Powered by LinuxGSM ${version}",
  115. "emoji": true
  116. }
  117. ]
  118. }
  119. ]
  120. }
  121. EOF
  122. )
  123. fn_print_dots "Sending Slack alert"
  124. slacksend=$(curl --connect-timeout 10 -sSL -H "Content-Type: application/json" -X POST -d "$(echo -n "${json}" | jq -c .)" "${slackwebhook}")
  125. if [ "${slacksend}" == "ok" ]; then
  126. fn_print_ok_nl "Sending Slack alert"
  127. fn_script_log_pass "Sending Slack alert"
  128. else
  129. fn_print_fail_nl "Sending Slack alert: ${slacksend}"
  130. fn_script_log_fatal "Sending Slack alert: ${slacksend}"
  131. fi