]>
Commit | Line | Data |
---|---|---|
a9c4b8dd HH |
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 | ||
24925a17 HH |
17 | _color_success="2cbe4e" # green |
18 | _color_danger="cb2431" # red | |
19 | _color_muted="586069" # gray | |
20 | ||
a9c4b8dd HH |
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 | |
19c43451 | 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 | ;; | |
a9c4b8dd | 64 | esac |
24925a17 HH |
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 | |
a9c4b8dd HH |
70 | |
71 | _data="{\"title\": \"$_subject\"," | |
72 | if [ -n "$_color" ]; then | |
73 | _data="$_data\"themeColor\": \"$_color\", " | |
74 | fi | |
75 | _data="$_data\"text\": \"$_content\"}" | |
76 | ||
99793bb2 | 77 | if response=$(_post "$_data" "$TEAMS_WEBHOOK_URL"); then |
a9c4b8dd HH |
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 | } |