diff options
author | David A. Madore <david+git@madore.org> | 2011-09-01 18:36:00 +0200 |
---|---|---|
committer | David A. Madore <david+git@madore.org> | 2011-09-01 18:36:00 +0200 |
commit | 7d269b2558b781d9f1265a12b1e245315412e02a (patch) | |
tree | f74c3d65cd552eb52a2b5aefc3b655897c50a310 /org/madore | |
parent | acdbedc507679be7b35a0fe10990bfb579bdc9d9 (diff) | |
download | damlengine-7d269b2558b781d9f1265a12b1e245315412e02a.tar.gz damlengine-7d269b2558b781d9f1265a12b1e245315412e02a.tar.bz2 damlengine-7d269b2558b781d9f1265a12b1e245315412e02a.zip |
Introduce (limited) support for PG* environment variables and .pgpass file.
Diffstat (limited to 'org/madore')
-rw-r--r-- | org/madore/damlengine/WeblogDatabaseConnection.java | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/org/madore/damlengine/WeblogDatabaseConnection.java b/org/madore/damlengine/WeblogDatabaseConnection.java index c88f5a8..9347406 100644 --- a/org/madore/damlengine/WeblogDatabaseConnection.java +++ b/org/madore/damlengine/WeblogDatabaseConnection.java @@ -1,6 +1,10 @@ package org.madore.damlengine; import java.util.Properties; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.io.BufferedReader; +import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import org.postgresql.Driver; @@ -16,10 +20,51 @@ public final class WeblogDatabaseConnection { public static Connection getConnection() throws SQLException { if ( conn == null ) { - final String dbUrl = "jdbc:postgresql://localhost/weblog"; + String dbHost = System.getenv("PGHOST"); + if ( dbHost == null ) + dbHost = "localhost"; + String dbPort = System.getenv("PGPORT"); + if ( dbPort == null ) + dbPort = "5432"; + String dbName = "weblog"; + String dbUser = System.getenv("PGUSER"); + if ( dbUser == null ) + dbUser = System.getenv("USER"); + if ( dbUser == null ) + dbUser = System.getProperty("user.name"); + if ( dbUser == null ) + dbUser = dbName; + String dbPass = System.getenv("PGPASSWORD"); + if ( dbPass == null ) + try { + String dbPassFile = System.getenv("PGPASSFILE"); + if ( dbPassFile == null ) + dbPassFile = System.getProperty("user.home") + + "/.pgpass"; + BufferedReader buf + = new BufferedReader(new InputStreamReader(new FileInputStream(dbPassFile))); + String line; + while ( ( line = buf.readLine() ) != null ) { + String[] elts = line.split(":"); + if ( elts.length == 5 + && ( elts[0].equals("*") || elts[0].equals(dbHost) ) + && ( elts[1].equals("*") || elts[1].equals(dbPort) ) + && ( elts[2].equals("*") || elts[2].equals(dbName) ) + && ( elts[3].equals("*") || elts[3].equals(dbUser) ) ) { + dbPass = elts[4]; + break; + } + } + } catch (IOException e) { + // Ignore + } + if ( dbPass == null ) + dbPass = ""; + final String dbUrl + = "jdbc:postgresql://"+dbHost+":"+dbPort+"/"+dbName; final Properties dbProps = new Properties(); - dbProps.setProperty("user", "david"); - dbProps.setProperty("password", "IHATETHISWHYCANTIUSEUNIXDOMAINSOCKETS"); + dbProps.setProperty("user", dbUser); + dbProps.setProperty("password", dbPass); dbProps.setProperty("ssl", "true"); dbProps.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory"); conn = (new Driver()).connect(dbUrl, dbProps); |