infra/archive/@home-pc.connector/scripts/hub-connect.sh
#!/bin/bash
# home-pc-connector: подключить PC к единому hub на S3
# Запуск: bash <(curl -s http://91.218.142.168/files/hub-connect.sh)

S3_REMOTE="beget-s3"
S3_BUCKET="fe2c1d30dc11-s3-0kt"
S3_PATH="hub"
MOUNT_DIR="$HOME/hub"
SERVICE_NAME="hub-mount"

ok()  { echo "  ✅ $1"; }
err() { echo "  ❌ $1"; }
hdr() { echo ""; echo "=== $1 ==="; }

hdr "home-pc-connector: подключение к hub"

# 1. rclone
hdr "1. rclone"
if command -v rclone &>/dev/null; then
    ok "rclone $(rclone --version 2>/dev/null | head -1)"
else
    err "rclone не найден — устанавливаю..."
    curl https://rclone.org/install.sh | sudo bash
fi

# 2. beget-s3 remote
hdr "2. S3 remote ($S3_REMOTE)"
if rclone listremotes 2>/dev/null | grep -q "^${S3_REMOTE}:"; then
    ok "remote $S3_REMOTE настроен"
else
    err "remote $S3_REMOTE не найден — настрой вручную:"
    echo ""
    echo "  rclone config"
    echo "  → New remote → name: $S3_REMOTE → type: s3 → provider: Other"
    echo "  → endpoint: https://s3.ru1.storage.beget.cloud"
    echo "  → access_key_id / secret_access_key: получи у админа"
    echo ""
    exit 1
fi

# 3. Проверить доступ к hub
hdr "3. Проверка S3 hub"
if rclone lsd "${S3_REMOTE}:${S3_BUCKET}/${S3_PATH}" &>/dev/null; then
    ok "hub доступен: ${S3_REMOTE}:${S3_BUCKET}/${S3_PATH}"
else
    err "hub недоступен — проверь S3 credentials"
    exit 1
fi

# 4. Папка монтирования
hdr "4. Точка монтирования"
fusermount -uz "$MOUNT_DIR" 2>/dev/null || true
mkdir -p "$MOUNT_DIR"
ok "$MOUNT_DIR"

# 5. Systemd user сервис
hdr "5. Systemd user сервис ($SERVICE_NAME)"
mkdir -p ~/.config/systemd/user

cat > ~/.config/systemd/user/${SERVICE_NAME}.service << EOF
[Unit]
Description=Hub S3 Mount (home-pc-connector)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStartPre=/bin/mkdir -p ${MOUNT_DIR}
ExecStart=$(command -v rclone) mount ${S3_REMOTE}:${S3_BUCKET}/${S3_PATH} ${MOUNT_DIR} \
  --vfs-cache-mode full \
  --vfs-cache-max-size 1G \
  --vfs-cache-max-age 24h \
  --dir-cache-time 30s \
  --poll-interval 15s \
  --allow-non-empty \
  --log-level INFO \
  --log-file /tmp/hub-mount.log
ExecStop=/bin/fusermount -uz ${MOUNT_DIR}
Restart=on-failure
RestartSec=10

[Install]
WantedBy=default.target
EOF

systemctl --user daemon-reload
systemctl --user enable ${SERVICE_NAME}.service
systemctl --user restart ${SERVICE_NAME}.service
ok "сервис запущен и включён в автозапуск"

# 6. Проверить монтирование
hdr "6. Проверка"
sleep 4
if mountpoint -q "$MOUNT_DIR"; then
    ok "~/hub примонтирован"
    echo ""
    echo "  Содержимое ~/hub:"
    ls "$MOUNT_DIR/" | sed 's/^/    /'
    echo ""
    echo "  Папка коннектора:"
    ls "$MOUNT_DIR/homepc/connector/" 2>/dev/null | sed 's/^/    /' || echo "    (пусто)"
else
    err "не смонтировался — смотри лог:"
    echo "  cat /tmp/hub-mount.log"
    systemctl --user status ${SERVICE_NAME} --no-pager | tail -10
    exit 1
fi

echo ""
echo "════════════════════════════════════════"
echo "  ГОТОВО. Hub подключён."
echo ""
echo "  ~/hub/                   — весь hub"
echo "  ~/hub/homepc/connector/  — обмен с Claude"
echo ""
echo "  Управление:"
echo "  systemctl --user status ${SERVICE_NAME}"
echo "  systemctl --user restart ${SERVICE_NAME}"
echo "════════════════════════════════════════"