Skip to content

Commit eee2ce8

Browse files
authored
Merge pull request #361 from datlechin/fix/pgpass-host-matching
fix: resolve pgpass password app-side with original host
2 parents 72320ad + 7861baf commit eee2ce8

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

TablePro/Core/Database/DatabaseDriver.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,15 @@ enum DatabaseDriverFactory {
336336

337337
private static func resolvePassword(for connection: DatabaseConnection) -> String {
338338
if connection.usePgpass {
339-
return ""
339+
let pgpassHost = connection.additionalFields["pgpassOriginalHost"] ?? connection.host
340+
let pgpassPort = connection.additionalFields["pgpassOriginalPort"]
341+
.flatMap(Int.init) ?? connection.port
342+
return PgpassReader.resolve(
343+
host: pgpassHost.isEmpty ? "localhost" : pgpassHost,
344+
port: pgpassPort,
345+
database: connection.database,
346+
username: connection.username
347+
) ?? ""
340348
}
341349
return ConnectionStorage.shared.loadPassword(for: connection.id) ?? ""
342350
}

TablePro/Core/Database/DatabaseManager.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,12 @@ final class DatabaseManager {
440440
tunnelSSL.clientKeyPath = ""
441441
}
442442

443+
var effectiveFields = connection.additionalFields
444+
if connection.usePgpass {
445+
effectiveFields["pgpassOriginalHost"] = connection.host
446+
effectiveFields["pgpassOriginalPort"] = String(connection.port)
447+
}
448+
443449
return DatabaseConnection(
444450
id: connection.id,
445451
name: connection.name,
@@ -450,7 +456,7 @@ final class DatabaseManager {
450456
type: connection.type,
451457
sshConfig: SSHConfiguration(),
452458
sslConfig: tunnelSSL,
453-
additionalFields: connection.additionalFields
459+
additionalFields: effectiveFields
454460
)
455461
}
456462

0 commit comments

Comments
 (0)