#!/usr/bin/env bash # Рассылка пуш-уведомления ВСЕМ подписчикам топика "aprsmap" (RuStore Push). # Топик = все устройства, где установлено приложение APRS RadioRubka # и оно хотя бы раз запускалось (подписка на клиенте выполняется сама). # # Использование: # ./push.sh "Заголовок" "Текст" # # Пример для крон/автоматики: # */5 * * * * /home/ua1zbe/aprsmap/tools/push.sh "Новость" "$(cat /tmp/news.txt)" # # Project id и service token читаются из tools/.push.secrets (в git не хранится) # либо из переменных окружения PUSH_SECRETS / SERVICE_TOKEN / PROJECT_ID. set -euo pipefail DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SECRETS="${PUSH_SECRETS:-$DIR/.push.secrets}" [ -f "$SECRETS" ] && . "$SECRETS" SERVICE_TOKEN="${SERVICE_TOKEN:-${SSP:-}}" PROJECT_ID="${PROJECT_ID:-}" [ -n "$SERVICE_TOKEN" ] || { echo "Ошибка: SERVICE_TOKEN не задан" >&2; exit 1; } [ -n "$PROJECT_ID" ] || { echo "Ошибка: PROJECT_ID не задан" >&2; exit 1; } title="${1:?Использование: $0 \"Заголовок\" \"Текст\"}" body="${2:-}" resp=$(curl -s -X POST \ "https://vkpns-topics.rustore.ru/v1/projects/${PROJECT_ID}/topics/aprsmap/publish" \ -H "Authorization: Bearer ${SERVICE_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"message\":{\"notification\":{\"title\":\"${title}\",\"body\":\"${body}\"}}}") echo "$resp" | grep -q "successfully published" && { echo "OK: пуш отправлен всем подписчикам топика aprsmap" } || { echo "Ошибка отправки: $resp" >&2; exit 1; }