1
0
mirror of git://f0xx.org/ac/ac-deploy synced 2026-07-29 02:18:40 +03:00
Files
ac-deploy/sim/cluster0/scripts/deploy-ac-broadcast.sh
2026-07-04 11:28:07 +02:00

100 lines
3.8 KiB
Bash
Executable File

#!/bin/sh
# Deploy ac-ms-broadcast service to /var/www/ac/broadcast/
# Creates DB schema on primary node; copies files on all nodes.
set -eu
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
# shellcheck source=/dev/null
. "$ROOT/scripts/lib/common.sh"
load_cluster_env
WS="${AC_WORKSPACE_ROOT:-/var/www/ac/workspace}"
BROADCAST_DEST="/var/www/ac/broadcast"
# Prefer NFS monorepo path (ac-ms-broadcast is a directory in the main ac monorepo, not a separate submodule)
AC_REPO="${AC_MONOREPO_ROOT:-/mnt/repos/ac}"
if [ -d "${AC_REPO}/ac-ms-broadcast" ]; then
BROADCAST_SRC="${AC_REPO}/ac-ms-broadcast"
elif [ -d "${WS}/ac-ms-broadcast" ]; then
BROADCAST_SRC="${WS}/ac-ms-broadcast"
else
log "skip deploy-ac-broadcast: ac-ms-broadcast not found"
return 0
fi
log "deploy ac-ms-broadcast → ${BROADCAST_DEST}"
mkdir -p "$BROADCAST_DEST"
rsync -a --delete \
--exclude='.git' \
--exclude='config/config.php' \
"${BROADCAST_SRC}/" "${BROADCAST_DEST}/" 2>/dev/null || \
{ mkdir -p "$BROADCAST_DEST"; cp -r "${BROADCAST_SRC}/." "${BROADCAST_DEST}/"; }
# Config from cluster env / secrets
DB_PASS="$(read_cred mariadb_app password 2>/dev/null || echo 'CHANGE_ME')"
SHORTENER_BEARER="$(read_cred shortener_bearer token 2>/dev/null || echo 'CHANGE_ME')"
TELEGRAM_TOKEN="$(read_cred telegram_bot token 2>/dev/null || echo '')"
TELEGRAM_CHAT="$(read_cred telegram_chat_id value 2>/dev/null || echo '')"
cat > "${BROADCAST_DEST}/config/config.php" <<PHPEOF
<?php
return [
'db' => [
'host' => '${PRIMARY_DB_HOST:-127.0.0.1}',
'port' => 3306,
'name' => 'broadcast',
'user' => 'broadcast_svc',
'password' => '${DB_PASS}',
],
'public_base' => 'https://notify.f0xx.org',
'shortener_url' => 'http://10.7.16.236/api/v1/shorten',
'shortener_bearer' => '${SHORTENER_BEARER}',
'telegram_token' => '${TELEGRAM_TOKEN}',
'telegram_chat_id' => '${TELEGRAM_CHAT}',
'smtp_host' => 'smtp.gmail.com',
'smtp_port' => 587,
'smtp_user' => 'bestcastr@gmail.com',
'smtp_password' => 'wnxv caln tcmt ldpn',
'smtp_from' => 'bestcastr@gmail.com',
'smtp_from_name' => 'AndroidCast',
'vapid_public' => 'BNncoy2XgjxGUdvmXtqtaOIM16k0MpA31KKm2C8N3I7HK56NXgj69etBoseASxibS_ypPNHJ38tol8mL3AZNx3E',
'vapid_private' => 'sgNXNbD29znCJfAEFI5kHb4IzrbkpYJxgroKCx8YJjk',
'vapid_subject' => 'mailto:a.afanasieff@gmail.com',
'worker_interval' => 30,
'push_batch_size' => 100,
'max_retries' => 3,
'port' => 8201,
];
PHPEOF
chown -R nginx:nginx "$BROADCAST_DEST" 2>/dev/null || true
# DB schema + user — primary node only
if is_primary_node; then
log "broadcast: create DB + user on primary"
DB_SCHEMA="${BROADCAST_SRC}/sql/schema.mariadb.sql"
if [ -f "$DB_SCHEMA" ]; then
mariadb -u root < "$DB_SCHEMA" || true
mariadb -u root <<SQLEOF
CREATE USER IF NOT EXISTS 'broadcast_svc'@'%' IDENTIFIED BY '${DB_PASS}';
CREATE USER IF NOT EXISTS 'broadcast_svc'@'localhost' IDENTIFIED BY '${DB_PASS}';
GRANT ALL PRIVILEGES ON broadcast.* TO 'broadcast_svc'@'%';
GRANT ALL PRIVILEGES ON broadcast.* TO 'broadcast_svc'@'localhost';
FLUSH PRIVILEGES;
SQLEOF
log "broadcast: DB schema applied"
fi
# Start / restart delivery worker
if [ -f /etc/init.d/broadcast-worker ]; then
rc-service broadcast-worker restart 2>/dev/null || true
else
install -m 755 "${BROADCAST_DEST}/deploy/openrc/broadcast-worker" /etc/init.d/broadcast-worker
# Point worker to correct PHP binary
sed -i 's|/usr/bin/php83|'"$(which php83 2>/dev/null || echo /usr/bin/php83)"'|g' /etc/init.d/broadcast-worker
rc-service broadcast-worker start 2>/dev/null || true
rc-update add broadcast-worker default 2>/dev/null || true
fi
log "broadcast: worker (re)started"
fi
log "deploy-ac-broadcast_ok $(host_short)"