#!/usr/bin/env python3
"""
Тихая проверка FTP credentials - только логин, без скачивания файлов
"""
import ftplib
import socket
from pathlib import Path

def test_ftp_login(host, port, username, password):
    """Тихая проверка FTP login без скачивания файлов"""
    try:
        # Подключаемся к FTP серверу
        ftp = ftplib.FTP()
        ftp.connect(host, port, timeout=10)
        
        # Пробуем залогиниться
        ftp.login(username, password)
        
        # Получаем приветственное сообщение
        welcome = ftp.getwelcome()
        
        # Закрываем соединение
        ftp.quit()
        
        return True, f"Login successful: {welcome}"
        
    except ftplib.error_perm as e:
        return False, f"Permission denied: {str(e)}"
    except ftplib.error_temp as e:
        return False, f"Temporary error: {str(e)}"
    except socket.timeout:
        return False, "Connection timeout"
    except ConnectionRefusedError:
        return False, "Connection refused"
    except Exception as e:
        return False, f"Error: {str(e)}"

def main():
    print("=== Тихая проверка FTP credentials ===\n")
    
    # FTP credentials из нашего набора
    ftp_creds = [
        {
            'db': '2210PIGOTTOILUAP01',
            'username': 'marketmax',
            'password': 'IMP$1220mm',
            'host': 'ftp.imperialtrading.com',
            'type': 'ftp_vendor'
        },
        {
            'db': '2610PIGOTTOILUAP01',
            'username': 'marketmaxinv',
            'password': 'IMP$0606ma',
            'host': 'ftp.imperialtrading.com',
            'type': 'ftp_vendor'
        },
        {
            'db': '2610DALLMYRUAP01',
            'username': 'irelyadmin',
            'password': 'i21By2015',
            'host': 'localhost',  # Локальный FTP сервер
            'type': 'ftp_global'
        },
        {
            'db': 'JMREYNOLDSUAP01',
            'username': 'Raunak',
            'password': 'Raunak1!',
            'host': 'localhost',  # Локальный FTP сервер
            'type': 'ftp_global'
        }
    ]
    
    successful_logins = []
    failed_logins = []
    
    for cred in ftp_creds:
        print(f"Testing: {cred['username']}@{cred['host']}")
        print(f"Database: {cred['db']}, Type: {cred['type']}")
        
        # Определяем порт (по умолчанию 21)
        port = 21
        
        success, message = test_ftp_login(
            cred['host'], 
            port, 
            cred['username'], 
            cred['password']
        )
        
        if success:
            print(f"  ✅ {message}")
            successful_logins.append(cred)
        else:
            print(f"  ❌ {message}")
            failed_logins.append(cred)
        
        print()
    
    # Результаты
    print("=== Результаты ===")
    print(f"Успешных логинов: {len(successful_logins)}")
    print(f"Неудачных логинов: {len(failed_logins)}")
    
    if successful_logins:
        print("\n✅ Рабочие credentials:")
        for cred in successful_logins:
            print(f"  - {cred['username']}@{cred['host']} (db: {cred['db']})")
    
    if failed_logins:
        print("\n❌ Нерабочие credentials:")
        for cred in failed_logins:
            print(f"  - {cred['username']}@{cred['host']} (db: {cred['db']})")

if __name__ == '__main__':
    main()
