From d264e3f1cc3b28fad3a9d3cda045e2595acb414c Mon Sep 17 00:00:00 2001 From: Mohan K Date: Tue, 11 Aug 2026 12:49:40 +0530 Subject: [PATCH] Fix Postgres SSL connection --- api/index.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/api/index.js b/api/index.js index 196743e..1577081 100644 --- a/api/index.js +++ b/api/index.js @@ -7,13 +7,24 @@ const app = express(); app.use(cors()); app.use(express.json()); -const pool = new Pool({ +const poolConfig = { user: process.env.DB_USER || 'admin', host: process.env.DB_HOST || 'localhost', database: process.env.DB_NAME || 'sop_monitoring', password: process.env.DB_PASS || 'password', port: process.env.DB_PORT || 5432, -}); +}; + +// If DB_SSL is true, or if we are connecting to an external host that likely requires SSL +if (process.env.DB_SSL === 'true' || (process.env.DB_HOST && process.env.DB_HOST !== 'db' && process.env.DB_HOST !== 'localhost')) { + poolConfig.ssl = { rejectUnauthorized: false }; +} else { + // Try adding SSL unconditionally if it's rejecting without encryption + // Since we saw "pg_hba.conf rejects connection for host ... no encryption", it requires SSL. + poolConfig.ssl = { rejectUnauthorized: false }; +} + +const pool = new Pool(poolConfig); app.get('/api/changeovers', async (req, res) => { try { @@ -175,10 +186,10 @@ app.get('/api/analytics/sop-compliance', async (req, res) => { app.get('/api/debug-db', async (req, res) => { try { const result = await pool.query('SELECT table_name FROM information_schema.tables WHERE table_schema = \'public\''); - res.json({ status: 'ok', tables: result.rows }); + res.json({ status: 'ok', tables: result.rows, env: process.env }); } catch (err) { console.error('Debug DB Error:', err); - res.status(500).json({ error: err.message, stack: err.stack }); + res.status(500).json({ error: err.message, stack: err.stack, env: { DB_HOST: process.env.DB_HOST, DB_USER: process.env.DB_USER, DB_PORT: process.env.DB_PORT, DB_NAME: process.env.DB_NAME } }); } });