Files
Omika/tools/probe_license_read.ps1
T
2026-10-23 18:46:50 +02:00

81 lines
2.5 KiB
PowerShell

# ============================================================
# Probe de LECTURE SEULE de la base Licence HFSQL via OLEDB.
# N'effectue AUCUNE écriture. N'expose aucun secret.
# ============================================================
param(
[string]$ConfigPath = "config/hfsql-test.local.json",
[string]$Section = "LicenseConnection",
[string]$DatabaseOverride = ""
)
$ErrorActionPreference = "Stop"
# --- Lecture de la config locale (contient les secrets) ---
$config = Get-Content $ConfigPath -Raw | ConvertFrom-Json
$db = $config.$Section
if ($null -eq $db) {
Write-Output "SECTION $Section : ABSENTE"
exit 1
}
$server = $db.Server
$port = $db.Port
$database = if ([string]::IsNullOrWhiteSpace($DatabaseOverride)) { $db.DatabaseName } else { $DatabaseOverride }
$login = $db.Login
$password = $db.Password
Write-Output "=== PROBE LECTURE SEULE OLEDB HFSQL ==="
Write-Output "Section : $Section"
Write-Output "Server : $server"
Write-Output "Port : $port"
Write-Output "Database : $database"
Write-Output "Login : $login"
Write-Output "Provider : PCSOFT.HFSQL"
Write-Output "Mode : LECTURE SEULE (aucune ecriture)"
Write-Output ""
# --- Construction de la connection string OLEDB ---
$connStr = "Provider=PCSOFT.HFSQL;Data Source=$server`:$port;Initial Catalog=$database;User ID=$login;Password=$password"
try {
$conn = New-Object System.Data.OleDb.OleDbConnection($connStr)
$conn.Open()
Write-Output "CONNEXION : OUVERTE"
Write-Output "State : $($conn.State)"
Write-Output ""
# --- Liste des tables ---
$schema = $conn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::Tables, $null)
if ($null -eq $schema) {
Write-Output "TABLES : schema non disponible"
} else {
Write-Output "TABLES ($($schema.Rows.Count)) :"
foreach ($row in $schema.Rows) {
$tableName = $row["TABLE_NAME"]
$tableType = $row["TABLE_TYPE"]
Write-Output " - $tableName [$tableType]"
}
}
Write-Output ""
# --- Test SELECT 1 ---
$cmd = $conn.CreateCommand()
$cmd.CommandText = "SELECT 1"
$result = $cmd.ExecuteScalar()
Write-Output "SELECT 1 : $result"
$conn.Close()
Write-Output ""
Write-Output "CONNEXION : FERMEE"
Write-Output "RESULTAT : OK (lecture seule)"
exit 0
}
catch {
Write-Output "CONNEXION : ECHEC"
Write-Output "Erreur : $($_.Exception.Message)"
Write-Output "RESULTAT : KO"
exit 3
}