File size: 2,893 Bytes
93409a3
30b021f
3f98e3c
d7c97be
3f98e3c
4581739
d7c97be
 
 
 
3f98e3c
d7c97be
3f98e3c
 
d7c97be
3f98e3c
 
d7c97be
 
dbcbb03
d7c97be
3f98e3c
d7c97be
88739ff
3f98e3c
 
 
d7c97be
 
3f98e3c
 
 
88739ff
3f98e3c
 
 
 
d7c97be
88739ff
3f98e3c
d7c97be
 
 
 
 
 
 
ab007ce
 
d7c97be
 
 
ab007ce
 
 
d7c97be
ab007ce
d7c97be
 
ab007ce
d7c97be
3f98e3c
d7c97be
 
ab007ce
d7c97be
 
 
 
 
 
 
 
 
 
 
 
ab007ce
 
d7c97be
3f98e3c
 
 
d7c97be
3f98e3c
d7c97be
 
 
 
 
 
 
 
 
 
3f98e3c
dbcbb03
d7c97be
 
 
dbcbb03
 
d7c97be
3f98e3c
d7c97be
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/bash

# ========================================
# 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 "✅ جاهز"