diff --git a/src/dbeaver-client.ts b/src/dbeaver-client.ts index 9831972..8151d26 100644 --- a/src/dbeaver-client.ts +++ b/src/dbeaver-client.ts @@ -340,10 +340,17 @@ export class DBeaverClient { const password = connection.properties?.password || process.env.PGPASSWORD; // SSL handling + // DBeaver's JSON config format stores driver properties under a nested `properties` key, + // and SSL handler config under `handlers.postgre_ssl`. Check all locations. + const nestedProps = (connection.properties?.['properties'] as unknown as Record) || {}; + const sslHandler = (connection.properties?.['handlers'] as unknown as Record | undefined)?.['postgre_ssl'] as Record | undefined; const sslModeRaw = connection.properties?.['ssl.mode'] || connection.properties?.['sslmode'] || - connection.properties?.['ssl']; + connection.properties?.['ssl'] || + nestedProps['sslmode'] || + nestedProps['ssl'] || + (sslHandler?.enabled ? ((sslHandler?.properties as Record)?.['sslMode'] || 'require') : undefined); const sslMode = String(sslModeRaw ?? '').toLowerCase(); const sslRootCert = connection.properties?.['sslrootcert'] || diff --git a/src/pools/connection-pool.ts b/src/pools/connection-pool.ts index 7870ab1..ccc3ded 100644 --- a/src/pools/connection-pool.ts +++ b/src/pools/connection-pool.ts @@ -130,7 +130,16 @@ export class ConnectionPoolManager { private getPostgresSslConfig(connection: DBeaverConnection): object { const props = connection.properties || {}; - const sslMode = props.sslmode || props.ssl; + // DBeaver's JSON config format stores driver properties under a nested `properties` key, + // and SSL handler config under `handlers.postgre_ssl`. Check all locations. + const nestedProps = (props.properties as unknown as Record) || {}; + const sslHandler = (props.handlers as unknown as Record | undefined)?.['postgre_ssl'] as Record | undefined; + const sslMode = + props.sslmode || + props.ssl || + nestedProps['sslmode'] || + nestedProps['ssl'] || + (sslHandler?.enabled ? ((sslHandler?.properties as Record)?.['sslMode'] || 'require') : undefined); if (sslMode === 'disable' || sslMode === 'false') { return { ssl: false };