#!/usr/bin/sh
#
SRC=~/ydisk/my_eBooks
CRED_FILE=~/.reader_pw
READER_PORT=2222
READER_HOST="my-reader.home"
PING_TIMEOUT=2
CONNECT_TIMEOUT=5

# Читаем логин и пароль из файла
if [ -f "$CRED_FILE" ]; then
    USERNAME=$(grep "^username=" "$CRED_FILE" | cut -d'=' -f2- | tr -d '\r\n' | xargs)
    PASSWORD=$(grep "^passsword=" "$CRED_FILE" | cut -d'=' -f2- | tr -d '\r\n' | xargs)
else
    echo "❌ Credentials file not found: $CRED_FILE"
    exit 1
fi

if [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
    echo "❌ Username or password not found in $CRED_FILE"
    exit 1
fi

if ! command -v lftp >/dev/null 2>&1; then
    echo "❌ lftp is not installed."
    echo "   Install it with: sudo apt-get install lftp"
    exit 1
fi

if [ ! -f "$SRC/.rsync-filter" ]; then
    echo "❌ Book storage was not found: $SRC"
    exit 1
fi

# ============================================
# Функция проверки доступности устройства
# ============================================
check_device() {
    echo "🔍 Checking if reader is available..."
    
    # 1. Проверка по ping (быстрая, но может быть запрещена)
#    if ping -c 1 -W $PING_TIMEOUT $READER_HOST >/dev/null 2>&1; then
#        echo "   ✅ Device responds to ping"
#        return 0
#    fi
    
    # 2. Проверка порта (более точная)
    if command -v nc >/dev/null 2>&1; then
        if nc -zv -w $CONNECT_TIMEOUT $READER_HOST $READER_PORT 2>&1 | grep -q "succeeded\|Connected"; then
            echo "   ✅ Port $READER_PORT is open"
            return 0
        fi
    elif command -v timeout >/dev/null 2>&1; then
        if timeout $CONNECT_TIMEOUT sh -c "echo >/dev/tcp/$READER_HOST/$READER_PORT" 2>/dev/null; then
            echo "   ✅ Port $READER_PORT is open"
            return 0
        fi
    fi
    
    # 3. Проверка через SFTP (самая надёжная, но медленнее)
#    echo "   ⏳ Testing SFTP connection..."
#    if echo "quit" | timeout $CONNECT_TIMEOUT sshpass -p "$PASSWORD" sftp -o ConnectTimeout=$CONNECT_TIMEOUT -P $READER_PORT ${USERNAME}@${READER_HOST} 2>/dev/null; then
#        echo "   ✅ SFTP connection successful"
#        return 0
#    fi
    
    return 1
}

# ============================================
# Основная часть
# ============================================

echo "=========================================="
echo "📚 eBook Synchronization"
echo "=========================================="

# Проверяем доступность устройства
if ! check_device; then
    echo ""
    echo "❌ Device is not available!"
    echo "   Host: $READER_HOST:$READER_PORT"
    echo ""
    echo "   Please check:"
    echo "   📱 Is the reader powered on?"
    echo "   🌐 Is it connected to the network?"
    echo "   🔌 Is the IP address correct?"
    echo "   🔒 Is SFTP server running?"
    echo ""
    echo "   Manual test: ssh -p $READER_PORT ${USERNAME}@${READER_HOST}"
    exit 1
fi

echo ""
echo "✅ Device is available! Starting sync..."
echo ""

# Выполняем синхронизацию
cd "$SRC"

lftp -u "$USERNAME","$PASSWORD" -p $READER_PORT sftp://$READER_HOST <<EOF
mirror -R --verbose --delete --only-newer --parallel=2 . /
bye
EOF

# Проверяем результат
if [ $? -eq 0 ]; then
    echo ""
    echo "✅ Sync completed successfully!"
else
    echo ""
    echo "❌ Sync failed!"
    exit 1
fi


