From f3f5eedb79d4795b09d3964f4e8c8dbc3e652de8 Mon Sep 17 00:00:00 2001 From: Claude Agent Date: Mon, 31 Aug 2026 18:16:07 +0000 Subject: [PATCH] =?UTF-8?q?feat(maria):=20ops/setup-drive.sh=20=E2=80=94?= =?UTF-8?q?=20configurare=20Drive=20dintr-un=20token,=20intr-un=20pas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pasii 2-4 din README (creare remote, verificare acces, scriere DRIVE_REMOTE, prima sincronizare) erau de facut de mana, cu ID-ul dosarului copiat corect de fiecare data. Scriptul ii face pe toti dintr-un token `rclone authorize`: valideaza ca tokenul e JSON, refuza devreme daca rclone sau env-ul lipsesc, face backup la env inainte de a-l rescrie, si e idempotent. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Q4uzvgm7AyJch5WH8QHRhY --- .../maria-whatsapp-bridge/README.md | 26 ++++---- .../maria-whatsapp-bridge/ops/setup-drive.sh | 60 +++++++++++++++++++ 2 files changed, 71 insertions(+), 15 deletions(-) create mode 100755 proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/setup-drive.sh diff --git a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md index c9a24fc..1059a19 100644 --- a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md +++ b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/README.md @@ -115,23 +115,19 @@ Pasi (o singura data): ``` Se deschide browserul; autentifica-te cu `mmarius28@gmail.com` si accepta. In consola apare un token JSON intre `--->` si `<---`. Copiaza-l intreg. -2. **Pe container**, creeaza remote-ul cu tokenul copiat: +2. **Pe container**, da tokenul scriptului de configurare: ``` - rclone config create gdrive drive scope=drive.readonly token='' + ops/setup-drive.sh '' ``` -3. Testeaza ca vede dosarul: - ``` - rclone lsf gdrive: --drive-root-folder-id=1C4e75zgH1_7ZK-_oBP5ZZBvUPh3iEo1O - ``` -4. Pune tinta in `~/.maria-bridge/env`: - ``` - DRIVE_REMOTE=gdrive,root_folder_id=1C4e75zgH1_7ZK-_oBP5ZZBvUPh3iEo1O: - ``` - (sintaxa „connection string" a rclone — fixeaza dosarul fara sa depinda de - structura de nume din My Drive.) -5. Testeaza: butonul „sincronizeaza din Drive acum" din dashboard, sau - `systemctl --user start maria-sync.service` apoi - `journalctl --user -u maria-sync -n 50`. + Face restul singur: creeaza remote-ul `gdrive`, verifica accesul la dosar, + scrie `DRIVE_REMOTE` in `~/.maria-bridge/env` (cu backup) si ruleaza prima + sincronizare cu reindexare. E idempotent — se poate rula din nou oricand. + + Tinta scrisa in env e `gdrive,root_folder_id=:` — sintaxa „connection + string" a rclone, care fixeaza dosarul dupa ID, fara sa depinda de structura + de nume din My Drive. +3. Verifica in dashboard: sectiunea Maria trebuie sa arate „Drive: …" in loc de + „Sincronizare Drive dezactivata". Tokenul se reimprospateaza singur (refresh token) cat timp aplicatia ramane autorizata in contul Google. Daca expira, dashboard-ul arata sincronizarea ca diff --git a/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/setup-drive.sh b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/setup-drive.sh new file mode 100755 index 0000000..6a2af02 --- /dev/null +++ b/proxmox/lxc171-claude-agent/maria-whatsapp-bridge/ops/setup-drive.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +# Configureaza sincronizarea depozitului Mariei cu Google Drive, dintr-un token +# obtinut cu `rclone authorize` pe o masina cu browser (containerul e headless). +# +# Pe Windows, in dosarul unde ai dezarhivat rclone.exe: +# rclone.exe authorize "drive" --drive-scope=drive.readonly +# Copiaza tokenul JSON dintre ---> si <--- si ruleaza aici: +# ops/setup-drive.sh '' +# +# Idempotent: rulat din nou, rescrie remote-ul si linia DRIVE_REMOTE. + +set -euo pipefail + +REMOTE_NAME="gdrive" +FOLDER_ID="1C4e75zgH1_7ZK-_oBP5ZZBvUPh3iEo1O" # document_store, cont mmarius28@gmail.com +ENV_FILE="${MARIA_BRIDGE_DIR:-$HOME/.maria-bridge}/env" +DRIVE_REMOTE="${REMOTE_NAME},root_folder_id=${FOLDER_ID}:" + +token="${1:-}" +if [ -z "$token" ]; then + echo "Uz: $0 ''" >&2 + exit 2 +fi +if ! printf '%s' "$token" | python3 -c 'import json,sys; json.load(sys.stdin)' 2>/dev/null; then + echo "Tokenul nu e JSON valid. Copiaza tot, inclusiv acoladele." >&2 + exit 2 +fi +command -v rclone >/dev/null || { echo "rclone nu e instalat" >&2; exit 1; } +[ -f "$ENV_FILE" ] || { echo "nu gasesc $ENV_FILE" >&2; exit 1; } + +echo "1/4 creez remote-ul rclone '$REMOTE_NAME'…" +rclone config delete "$REMOTE_NAME" 2>/dev/null || true +rclone config create "$REMOTE_NAME" drive scope=drive.readonly token="$token" --non-interactive >/dev/null + +echo "2/4 verific accesul la dosar…" +if ! rclone lsf "$DRIVE_REMOTE" >/tmp/.maria-drive-check 2>/tmp/.maria-drive-err; then + echo "nu pot citi dosarul:" >&2; cat /tmp/.maria-drive-err >&2; exit 1 +fi +echo " vad $(wc -l > "$ENV_FILE" +fi + +echo "4/4 sincronizez si reindexez…" +cd "$(dirname "$0")/../rag" +"${MARIA_BRIDGE_DIR:-$HOME/.maria-bridge}/venv/bin/python" sync.py --force + +echo +echo "Gata. Timer-ul maria-sync trage la 10 minute de acum inainte."