#!/usr/bin/env python3
# /opt/trueconf_bot/test_secure_connect.py

import sys
import os
import pymssql

# Добавляем путь к проекту для корректных импортов конфигурации
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

try:
    print("🔄 Загружаем конфигурацию и выгружаем секреты из Passwork...")
    import config.config as config
except ImportError as e:
    print(f"❌ Ошибка импорта config.py: {e}")
    sys.exit(1)

def main():
    # Технические параметры целевого сервера
    SERVER = '172.16.20.203'
    DATABASE = 'iskmdax_model'
    
    # Извлекаем данные из автоматически загруженного пула
    USER = getattr(config, 'DB_USER', None)
    PASSWORD = getattr(config, 'DB_PASSWORD', None)

    if not USER or not PASSWORD:
        print("❌ Ошибка: Учетные данные для подключения к БД не найдены в Passwork!")
        sys.exit(1)

    print(f"🔌 Устанавливаем ЗАЩИЩЕННОЕ соединение (encryption='require')...")
    print(f"   Сервер: {SERVER}")
    print(f"   База:   {DATABASE}")
    print(f"   Логин:  [ДАННЫЕ СКРЫТЫ]")
    print("-" * 60)
    
    try:
        conn = pymssql.connect(
            server=SERVER,
            user=USER,
            password=PASSWORD,
            database=DATABASE,
            charset='cp1251',
            encryption='require'  # Строгое требование SSL/TLS
        )
        cursor = conn.cursor()
        print("✅ Защищенное TLS/SSL соединение с сервером успешно установлено!")
        
        # Проверочный SQL-запрос
        query = "SELECT TOP(5) * FROM dbo.Layer;"
        print(f"🏃 Выполняем тестовый запрос: {query}\n")
        
        cursor.execute(query)
        rows = cursor.fetchall()
        
        if rows:
            print(f"🎯 Успешно получено строк: {len(rows)}")
            for idx, row in enumerate(rows, 1):
                # Печатаем содержимое строки как есть
                print(f"   🔹 Строка #{idx}: {row}")
        else:
            print("📭 Запрос выполнен успешно, но целевая таблица оказалась пустой.")
            
        conn.close()
        print("\n🏁 Тест защищенного соединения завершен успешно!")
        
    except Exception as e:
        print(f"\n❌ Ошибка подключения или выполнения запроса!")
        error_msg = str(e)
        if "Login failed" in error_msg or "18456" in error_msg:
            print("Детали: Ошибка аутентификации (проверьте корректность учетных данных в Passwork).")
        else:
            print(f"Детали: {error_msg}")
        sys.exit(1)

if __name__ == "__main__":
    main()