diff --git a/backend/src/ee/services/dynamic-secret/dynamic-secret-fns.ts b/backend/src/ee/services/dynamic-secret/dynamic-secret-fns.ts index eae74d36c..57c05b6fb 100644 --- a/backend/src/ee/services/dynamic-secret/dynamic-secret-fns.ts +++ b/backend/src/ee/services/dynamic-secret/dynamic-secret-fns.ts @@ -47,4 +47,5 @@ export const verifyHostInputValidity = async (host: string, isGateway = false) = const isAppUsedIps = inputHostIps.some((el) => exclusiveIps.includes(el)); if (isAppUsedIps) throw new BadRequestError({ message: "Invalid db host" }); + return inputHostIps; }; diff --git a/backend/src/ee/services/dynamic-secret/providers/sql-database.ts b/backend/src/ee/services/dynamic-secret/providers/sql-database.ts index 86a810b98..852a844ce 100644 --- a/backend/src/ee/services/dynamic-secret/providers/sql-database.ts +++ b/backend/src/ee/services/dynamic-secret/providers/sql-database.ts @@ -119,7 +119,7 @@ export const SqlDatabaseProvider = ({ gatewayService }: TSqlDatabaseProviderDTO) const validateProviderInputs = async (inputs: unknown) => { const providerInputs = await DynamicSecretSqlDBSchema.parseAsync(inputs); - await verifyHostInputValidity(providerInputs.host, Boolean(providerInputs.projectGatewayId)); + const [hostIp] = await verifyHostInputValidity(providerInputs.host, Boolean(providerInputs.projectGatewayId)); validateHandlebarTemplate("SQL creation", providerInputs.creationStatement, { allowedExpressions: (val) => ["username", "password", "expiration", "database"].includes(val) }); @@ -131,7 +131,8 @@ export const SqlDatabaseProvider = ({ gatewayService }: TSqlDatabaseProviderDTO) validateHandlebarTemplate("SQL revoke", providerInputs.revocationStatement, { allowedExpressions: (val) => ["username", "database"].includes(val) }); - return providerInputs; + + return { ...providerInputs, host: hostIp }; }; const $getClient = async (providerInputs: z.infer) => { @@ -158,15 +159,7 @@ export const SqlDatabaseProvider = ({ gatewayService }: TSqlDatabaseProviderDTO) : undefined }, acquireConnectionTimeout: EXTERNAL_REQUEST_TIMEOUT, - pool: { - afterCreate: (conn: unknown, done: (err: unknown, arg0: unknown) => void) => { - void verifyHostInputValidity(providerInputs.host, Boolean(providerInputs.projectGatewayId)) - .catch((err) => { - done(err, conn); - }) - .then(() => done(null, conn)); - } - } + pool: { min: 0, max: 7 } }); return db; };