Files
MathApp/ops/applogs/serve-archive.sh

18 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# روی ۲۴۹: فرمانِ اجباریِ کلیدِ zareian-applogs (authorized_keys با restrict,command="…این فایل").
# آن کلید (روی ۲۴۷) جز این سه کار هیچ کاری نمی‌تواند: شِل، پورت و فایلِ دیگری ندارد.
# list نامِ فایل‌های بایگانی
# get NAME محتوای یک فایل
# ack NAME «۲۴۷ گرفت و سالم بود» → NAME.shipped (پس از ۳۰ روز این‌جا پاک شود)
set -euo pipefail
ARCH=/home/administrator/mathapp-v2/logs/archive
read -r cmd name extra <<<"${SSH_ORIGINAL_COMMAND:-}"
[ -z "${extra:-}" ] || { echo "bad request" >&2; exit 2; }
valid() { [[ "$1" =~ ^app-[0-9]{8}T[0-9]{6}Z(-old[0-9]+)?\.log\.gz$ ]] && [ -f "$ARCH/$1" ]; }
case "$cmd" in
list) cd "$ARCH" && ls -1 app-*.log.gz 2>/dev/null || true ;;
get) valid "${name:-}" || { echo "no such file" >&2; exit 2; }; cat -- "$ARCH/$name" ;;
ack) valid "${name:-}" || { echo "no such file" >&2; exit 2; }; touch -- "$ARCH/$name.shipped" ;;
*) echo "bad request" >&2; exit 2 ;;
esac