Spaces:
Running
Running
| # ======================================== | |
| # Open WebUI GitHub Sync - Simple | |
| # ======================================== | |
| DB_FILE="/app/backend/data/webui.db" | |
| DATA_DIR="./data" | |
| TEMP_DIR="$DATA_DIR/git_temp" | |
| SYNC_INTERVAL=10800 # 3 ساعات | |
| log() { echo "[$(date '+%H:%M:%S')] $1"; } | |
| # ======================================== | |
| # رفع إلى GitHub | |
| # ======================================== | |
| push_to_github() { | |
| [[ -z "${G_NAME:-}" ]] || [[ -z "${G_TOKEN:-}" ]] && return 1 | |
| [[ ! -f "$DB_FILE" ]] && return 1 | |
| log "📤 رفع البيانات إلى GitHub..." | |
| rm -rf "$TEMP_DIR" | |
| mkdir -p "$TEMP_DIR" | |
| local repo_url="https://${G_TOKEN}@github.com/${G_NAME}.git" | |
| # Clone أو Init | |
| if ! git clone --depth 1 --quiet "$repo_url" "$TEMP_DIR" 2>/dev/null; then | |
| cd "$TEMP_DIR" | |
| git init --quiet | |
| git remote add origin "$repo_url" | |
| echo "# Open WebUI Backup" > README.md | |
| cd - > /dev/null | |
| fi | |
| cd "$TEMP_DIR" | |
| git config user.name "Sync" | |
| git config user.email "sync@local" | |
| # نسخ الملف | |
| cp "$DB_FILE" ./webui.db 2>/dev/null | |
| git add -A | |
| git commit -m "Sync $(date '+%Y-%m-%d %H:%M')" --quiet 2>/dev/null || true | |
| git push origin HEAD:main --force --quiet 2>/dev/null || \ | |
| git push -u origin HEAD:main --force --quiet 2>/dev/null || \ | |
| git push origin HEAD:master --force --quiet 2>/dev/null | |
| cd - > /dev/null | |
| rm -rf "$TEMP_DIR" | |
| log "✅ تم الرفع" | |
| } | |
| # ======================================== | |
| # تحميل من GitHub | |
| # ======================================== | |
| pull_from_github() { | |
| [[ -z "${G_NAME:-}" ]] || [[ -z "${G_TOKEN:-}" ]] && return 1 | |
| log "📥 تحميل البيانات من GitHub..." | |
| rm -rf "$TEMP_DIR" | |
| mkdir -p "$TEMP_DIR" "$(dirname "$DB_FILE")" | |
| local repo_url="https://${G_TOKEN}@github.com/${G_NAME}.git" | |
| if git clone --depth 1 --quiet "$repo_url" "$TEMP_DIR" 2>/dev/null; then | |
| if [[ -f "$TEMP_DIR/webui.db" ]]; then | |
| cp "$TEMP_DIR/webui.db" "$DB_FILE" | |
| chmod 666 "$DB_FILE" 2>/dev/null | |
| log "✅ تم التحميل ($(du -h "$DB_FILE" | cut -f1))" | |
| else | |
| log "ℹ️ لا يوجد ملف محفوظ" | |
| fi | |
| else | |
| log "ℹ️ المستودع فارغ" | |
| fi | |
| rm -rf "$TEMP_DIR" | |
| } | |
| # ======================================== | |
| # التشغيل | |
| # ======================================== | |
| log "🚀 بدء المزامنة" | |
| mkdir -p "$DATA_DIR" | |
| # تحميل عند البداية | |
| pull_from_github | |
| # المزامنة الدورية | |
| ( | |
| sleep 300 # انتظار 5 دقائق | |
| while true; do | |
| log "🔄 مزامنة..." | |
| push_to_github | |
| log "⏰ القادمة بعد 3 ساعات" | |
| sleep $SYNC_INTERVAL | |
| done | |
| ) & | |
| log "✅ جاهز" |