110 lines
2.5 KiB
Bash
110 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Determine Icon based on Status
|
|
ICON="🚀"
|
|
if [ "$STATUS" = "failure" ]; then
|
|
ICON="❌"
|
|
fi
|
|
|
|
# Prepare Text for Telegram (Markdown)
|
|
TEXT="$ICON *$TITLE*%0A%0A$MESSAGE"
|
|
|
|
echo "Starting notifications..."
|
|
|
|
# Function: Send to Ntfy
|
|
send_ntfy() {
|
|
if [ -n "$NTFY_URL" ] && [ -n "$NTFY_TOPIC" ]; then
|
|
local click_url="$GIT_URL/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}"
|
|
local auth_args=""
|
|
|
|
# Check for Basic Auth
|
|
if [ -n "$NTFY_USERNAME" ] && [ -n "$NTFY_PASSWORD" ]; then
|
|
auth_args="-u $NTFY_USERNAME:$NTFY_PASSWORD"
|
|
fi
|
|
|
|
echo "[Ntfy] Sending..."
|
|
if curl -s $auth_args -X POST "$NTFY_URL/$NTFY_TOPIC" \
|
|
-H "Title: $ICON $TITLE" \
|
|
-H "Priority: 4" \
|
|
-H "Click: $click_url" \
|
|
-H "Actions: view, Open Logs, $click_url" \
|
|
-d "$MESSAGE"; then
|
|
echo "[Ntfy] Sent."
|
|
else
|
|
echo "[Ntfy] Failed."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
# Function: Send to Gmail
|
|
send_gmail() {
|
|
if [ -n "$GMAIL_USER" ] && [ -n "$GMAIL_TO" ] && [ -n "$GMAIL_PASS" ]; then
|
|
echo -e "${YELLOW}======================================${NC}"
|
|
echo -e "${YELLOW}Gmail SMTP Email${NC}"
|
|
echo -e "${YELLOW}======================================${NC}"
|
|
echo ""
|
|
echo -e "From: ${GREEN}$GMAIL_USER${NC}"
|
|
echo -e "To: ${GREEN}$GMAIL_TO${NC}"
|
|
echo -e "SMTP: ${GREEN}smtp.gmail.com:587${NC}"
|
|
echo ""
|
|
|
|
SUBJECT="$ICON $TITLE"
|
|
BODY="$MESSAGE"
|
|
|
|
email_content="To: $GMAIL_TO\nSubject: $SUBJECT\n\n$MESSAGE"
|
|
response=$(echo "$email_content" | curl --ssl-reqd \
|
|
--url "smtp://smtp.gmail.com:587" \
|
|
--user "$GMAIL_USER:$GMAIL_PASS" \
|
|
--mail-from "$GMAIL_USER" \
|
|
--mail-rcpt "$GMAIL_TO" \
|
|
--upload-file - \
|
|
--silent \
|
|
--show-error 2>&1)
|
|
|
|
exit_code=$?
|
|
|
|
if [ $exit_code -eq 0 ]; then
|
|
echo "[Gmail] Sent."
|
|
else
|
|
echo "[Gmail] Failed."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Function: Send to Telegram
|
|
send_telegram() {
|
|
if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
|
|
echo "[Telegram] Sending..."
|
|
if curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
|
-d chat_id="$TELEGRAM_CHAT_ID" \
|
|
-d parse_mode="Markdown" \
|
|
-d text="$TEXT"; then
|
|
echo "[Telegram] Sent."
|
|
else
|
|
echo "[Telegram] Failed."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Execute in parallel
|
|
send_gmail &
|
|
PID_GMAIL=$!
|
|
|
|
send_telegram &
|
|
PID_TG=$!
|
|
|
|
send_ntfy &
|
|
PID_NTFY=$!
|
|
|
|
# Wait for completion
|
|
wait $PID_GMAIL
|
|
wait $PID_TG
|
|
wait $PID_NTFY
|
|
|
|
echo "All notifications processed." |