feature/integracion-cpanel-asrecovery

This commit is contained in:
2026-06-30 11:29:06 -06:00
parent 072be5b5db
commit 034a5ca5bb
35 changed files with 2416 additions and 320 deletions

View File

@@ -4,8 +4,28 @@ import pyodbc
from typing import Optional, Tuple, List
import time
from dataclasses import dataclass
from ..utils.logger import app_logger
_ODBC_DRIVER_CANDIDATES = (
"ODBC Driver 18 for SQL Server",
"ODBC Driver 17 for SQL Server",
"ODBC Driver 13 for SQL Server",
"FreeTDS",
)
def resolve_odbc_driver() -> str:
"""Devuelve el primer driver ODBC de SQL Server disponible."""
installed = set(pyodbc.drivers())
for name in _ODBC_DRIVER_CANDIDATES:
if name in installed:
return name
raise RuntimeError(
"No se encontró driver ODBC para SQL Server. "
f"Instalados: {', '.join(pyodbc.drivers()) or 'ninguno'}"
)
@dataclass
class LogicalFile:
@@ -50,10 +70,13 @@ class SQLServerManager:
Returns:
Cadena de conexión ODBC
"""
driver = resolve_odbc_driver()
parts = [
f"DRIVER={{ODBC Driver 17 for SQL Server}}",
f"SERVER={self.server}"
f"DRIVER={{{driver}}}",
f"SERVER={self.server}",
]
if "18" in driver:
parts.append("TrustServerCertificate=yes")
if database:
parts.append(f"DATABASE={database}")