diff --git a/src/server/utils/dbUtils.ts b/src/server/utils/dbUtils.ts index c165e1f1..678fc6e8 100644 --- a/src/server/utils/dbUtils.ts +++ b/src/server/utils/dbUtils.ts @@ -38,3 +38,17 @@ export const parseUri = (connectionUri: string) => { return connectionInfo; }, {}); }; + +export const getSslParam = (paramsStr: string) => { + if (!paramsStr?.length) { + return; + } + + const params = new URLSearchParams(paramsStr); + const ssl = params.get('ssl'); + if (!ssl) { + return; + } + + return JSON.parse(ssl); +}; diff --git a/src/server/utils/pool.ts b/src/server/utils/pool.ts index 0766b723..db8bdbab 100644 --- a/src/server/utils/pool.ts +++ b/src/server/utils/pool.ts @@ -1,5 +1,5 @@ import { Sequelize } from 'sequelize'; -import { CONNECTION_STRING, parseUri } from './dbUtils'; +import { CONNECTION_STRING, getSslParam, parseUri } from './dbUtils'; const mysqlConnectionString = GetConvar(CONNECTION_STRING, 'none'); @@ -11,6 +11,8 @@ if (mysqlConnectionString === 'none') { const config = parseUri(mysqlConnectionString); +const ssl = getSslParam(config.params); + export const sequelize = new Sequelize({ dialect: 'mysql', dialectModule: require('mysql2'), @@ -20,6 +22,10 @@ export const sequelize = new Sequelize({ username: config.user, password: config.password, database: config.database, + ssl: !!ssl, + dialectOptions: { + ssl, + }, pool: { max: 5, min: 0,