#!/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 } # 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."