#!/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