From 99082f39f64bcc6d5b65c3fdbab931905b3ea822 Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Wed, 16 Apr 2025 02:17:28 +0530 Subject: [PATCH 1/6] feat: wrap DB_PASSWORD with encodeURIComponent --- server/src/storage/db.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/storage/db.ts b/server/src/storage/db.ts index 25c1d104..bd4b885a 100644 --- a/server/src/storage/db.ts +++ b/server/src/storage/db.ts @@ -3,7 +3,7 @@ import dotenv from 'dotenv'; dotenv.config(); -const databaseUrl = `postgresql://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; +const databaseUrl = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; // Extract the hostname using the URL constructor const host = new URL(databaseUrl).hostname; @@ -42,4 +42,4 @@ export const syncDB = async () => { }; -export default sequelize; \ No newline at end of file +export default sequelize; From b859e918b7134985d4a38fd552425008b7f7482a Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Wed, 16 Apr 2025 02:18:24 +0530 Subject: [PATCH 2/6] feat: throw error if env vars missing --- server/src/storage/db.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/src/storage/db.ts b/server/src/storage/db.ts index bd4b885a..72b9f22e 100644 --- a/server/src/storage/db.ts +++ b/server/src/storage/db.ts @@ -3,6 +3,10 @@ import dotenv from 'dotenv'; dotenv.config(); +if (!process.env.DB_USER || !process.env.DB_PASSWORD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) { + throw new Error('One or more required environment variables are missing.'); +} + const databaseUrl = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; // Extract the hostname using the URL constructor From 2cf8f483801fcfb642ef9c3f36c5e67c68bc1a68 Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Wed, 16 Apr 2025 02:19:57 +0530 Subject: [PATCH 3/6] feat: use encodeURIComponent for connection string --- server/src/pgboss-worker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/pgboss-worker.ts b/server/src/pgboss-worker.ts index 0771cc27..133df973 100644 --- a/server/src/pgboss-worker.ts +++ b/server/src/pgboss-worker.ts @@ -21,7 +21,7 @@ import { airtableUpdateTasks, processAirtableUpdates } from './workflow-manageme import { RemoteBrowser } from './browser-management/classes/RemoteBrowser'; import { io as serverIo } from "./server"; -const pgBossConnectionString = `postgres://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; +const pgBossConnectionString = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; interface InitializeBrowserData { userId: string; @@ -522,4 +522,4 @@ process.on('SIGINT', async () => { }); // For use in other files -export { pgBoss }; \ No newline at end of file +export { pgBoss }; From c2556e58ed3410aea566ce7b25ef8394dbf04b96 Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Wed, 16 Apr 2025 02:20:49 +0530 Subject: [PATCH 4/6] feat: throw error if env vars missing --- server/src/pgboss-worker.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/src/pgboss-worker.ts b/server/src/pgboss-worker.ts index 133df973..43dfbe73 100644 --- a/server/src/pgboss-worker.ts +++ b/server/src/pgboss-worker.ts @@ -21,6 +21,10 @@ import { airtableUpdateTasks, processAirtableUpdates } from './workflow-manageme import { RemoteBrowser } from './browser-management/classes/RemoteBrowser'; import { io as serverIo } from "./server"; +if (!process.env.DB_USER || !process.env.DB_PASSWORD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) { + throw new Error('Failed to start pgboss worker: one or more required environment variables are missing.'); +} + const pgBossConnectionString = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; interface InitializeBrowserData { From 394a7f26dafc2a7f0b5f9e19ba2ce7137387a664 Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Wed, 16 Apr 2025 02:21:29 +0530 Subject: [PATCH 5/6] feat: wrap DB_PASSWORD with encodeURIComponent --- server/src/schedule-worker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/schedule-worker.ts b/server/src/schedule-worker.ts index 73afd872..85a294c4 100644 --- a/server/src/schedule-worker.ts +++ b/server/src/schedule-worker.ts @@ -7,7 +7,7 @@ import Robot from './models/Robot'; import { handleRunRecording } from './workflow-management/scheduler'; import { computeNextRun } from './utils/schedule'; -const pgBossConnectionString = `postgres://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; +const pgBossConnectionString = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; const pgBoss = new PgBoss({connectionString: pgBossConnectionString }); From dcf4969fbf0426e581c23ca891f447f4b68b0107 Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Wed, 16 Apr 2025 02:21:53 +0530 Subject: [PATCH 6/6] feat: throw error if env vars missing --- server/src/schedule-worker.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/src/schedule-worker.ts b/server/src/schedule-worker.ts index 85a294c4..91c3c224 100644 --- a/server/src/schedule-worker.ts +++ b/server/src/schedule-worker.ts @@ -7,6 +7,10 @@ import Robot from './models/Robot'; import { handleRunRecording } from './workflow-management/scheduler'; import { computeNextRun } from './utils/schedule'; +if (!process.env.DB_USER || !process.env.DB_PASSWORD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) { + throw new Error('One or more required environment variables are missing.'); +} + const pgBossConnectionString = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; const pgBoss = new PgBoss({connectionString: pgBossConnectionString });