From bc12959147d3cae98fc0eac075bfb88aaa24ed80 Mon Sep 17 00:00:00 2001 From: ua1zbe Date: Wed, 23 Sep 2026 09:42:43 +0300 Subject: [PATCH] Improve broadcast push script --- tools/push.sh | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/tools/push.sh b/tools/push.sh index 1a0f9a6..0e94225 100755 --- a/tools/push.sh +++ b/tools/push.sh @@ -1,23 +1,37 @@ #!/usr/bin/env bash -# Рассылка пуша всем подписчикам топика "aprsmap" (RuStore Push). -# Использование: ./push.sh "Заголовок" "Текст" -# project_id и service token читаются из tools/.push.secrets (в git не хранится). +# Рассылка пуш-уведомления ВСЕМ подписчикам топика "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)" -[ -f "$DIR/.push.secrets" ] && . "$DIR/.push.secrets" +SECRETS="${PUSH_SECRETS:-$DIR/.push.secrets}" +[ -f "$SECRETS" ] && . "$SECRETS" SERVICE_TOKEN="${SERVICE_TOKEN:-${SSP:-}}" PROJECT_ID="${PROJECT_ID:-}" -[ -n "$SERVICE_TOKEN" ] || { echo "SERVICE_TOKEN is not set" >&2; exit 1; } -[ -n "$PROJECT_ID" ] || { echo "PROJECT_ID is not set" >&2; exit 1; } +[ -n "$SERVICE_TOKEN" ] || { echo "Ошибка: SERVICE_TOKEN не задан" >&2; exit 1; } +[ -n "$PROJECT_ID" ] || { echo "Ошибка: PROJECT_ID не задан" >&2; exit 1; } -title="${1:?usage: push.sh <body>}" +title="${1:?Использование: $0 \"Заголовок\" \"Текст\"}" body="${2:-}" -curl -s -X POST \ +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 \ No newline at end of file + -d "{\"message\":{\"notification\":{\"title\":\"${title}\",\"body\":\"${body}\"}}}") + +echo "$resp" | grep -q "successfully published" && { + echo "OK: пуш отправлен всем подписчикам топика aprsmap" +} || { echo "Ошибка отправки: $resp" >&2; exit 1; } \ No newline at end of file