]> git.proxmox.com Git - mirror_acme.sh.git/blob - notify/teams.sh
Merge pull request #4820 from acmesh-official/dev
[mirror_acme.sh.git] / notify / teams.sh
1 #!/usr/bin/env sh
2
3 #Support Microsoft Teams webhooks
4
5 #TEAMS_WEBHOOK_URL=""
6 #TEAMS_THEME_COLOR=""
7 #TEAMS_SUCCESS_COLOR=""
8 #TEAMS_ERROR_COLOR=""
9 #TEAMS_SKIP_COLOR=""
10
11 teams_send() {
12 _subject="$1"
13 _content="$2"
14 _statusCode="$3" #0: success, 1: error 2($RENEW_SKIP): skipped
15 _debug "_statusCode" "$_statusCode"
16
17 _color_success="2cbe4e" # green
18 _color_danger="cb2431" # red
19 _color_muted="586069" # gray
20
21 TEAMS_WEBHOOK_URL="${TEAMS_WEBHOOK_URL:-$(_readaccountconf_mutable TEAMS_WEBHOOK_URL)}"
22 if [ -z "$TEAMS_WEBHOOK_URL" ]; then
23 TEAMS_WEBHOOK_URL=""
24 _err "You didn't specify a Microsoft Teams webhook url TEAMS_WEBHOOK_URL yet."
25 return 1
26 fi
27 _saveaccountconf_mutable TEAMS_WEBHOOK_URL "$TEAMS_WEBHOOK_URL"
28
29 TEAMS_THEME_COLOR="${TEAMS_THEME_COLOR:-$(_readaccountconf_mutable TEAMS_THEME_COLOR)}"
30 if [ -n "$TEAMS_THEME_COLOR" ]; then
31 _saveaccountconf_mutable TEAMS_THEME_COLOR "$TEAMS_THEME_COLOR"
32 fi
33
34 TEAMS_SUCCESS_COLOR="${TEAMS_SUCCESS_COLOR:-$(_readaccountconf_mutable TEAMS_SUCCESS_COLOR)}"
35 if [ -n "$TEAMS_SUCCESS_COLOR" ]; then
36 _saveaccountconf_mutable TEAMS_SUCCESS_COLOR "$TEAMS_SUCCESS_COLOR"
37 fi
38
39 TEAMS_ERROR_COLOR="${TEAMS_ERROR_COLOR:-$(_readaccountconf_mutable TEAMS_ERROR_COLOR)}"
40 if [ -n "$TEAMS_ERROR_COLOR" ]; then
41 _saveaccountconf_mutable TEAMS_ERROR_COLOR "$TEAMS_ERROR_COLOR"
42 fi
43
44 TEAMS_SKIP_COLOR="${TEAMS_SKIP_COLOR:-$(_readaccountconf_mutable TEAMS_SKIP_COLOR)}"
45 if [ -n "$TEAMS_SKIP_COLOR" ]; then
46 _saveaccountconf_mutable TEAMS_SKIP_COLOR "$TEAMS_SKIP_COLOR"
47 fi
48
49 export _H1="Content-Type: application/json"
50
51 _subject=$(echo "$_subject" | _json_encode)
52 _content=$(echo "$_content" | _json_encode)
53
54 case "$_statusCode" in
55 0)
56 _color="${TEAMS_SUCCESS_COLOR:-$_color_success}"
57 ;;
58 1)
59 _color="${TEAMS_ERROR_COLOR:-$_color_danger}"
60 ;;
61 2)
62 _color="${TEAMS_SKIP_COLOR:-$_color_muted}"
63 ;;
64 esac
65
66 _color=$(echo "$_color" | tr -cd 'a-fA-F0-9')
67 if [ -z "$_color" ]; then
68 _color=$(echo "${TEAMS_THEME_COLOR:-$_color_muted}" | tr -cd 'a-fA-F0-9')
69 fi
70
71 _data="{\"title\": \"$_subject\","
72 if [ -n "$_color" ]; then
73 _data="$_data\"themeColor\": \"$_color\", "
74 fi
75 _data="$_data\"text\": \"$_content\"}"
76
77 if response=$(_post "$_data" "$TEAMS_WEBHOOK_URL"); then
78 if ! _contains "$response" error; then
79 _info "teams send success."
80 return 0
81 fi
82 fi
83 _err "teams send error."
84 _err "$response"
85 return 1
86 }