dsql-admin/dsql-app/package-shared/shell/updateSSLUsers.js
Benjamin Toby eb723c8195 Updates
2024-12-08 20:39:44 +01:00

71 lines
1.9 KiB
JavaScript
Executable File

// @ts-check
require("dotenv").config({ path: "./../.env" });
const grabDbSSL = require("../utils/backend/grabDbSSL");
const mysql = require("serverless-mysql");
const connection = mysql({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
charset: "utf8mb4",
ssl: grabDbSSL(),
},
});
/**
* # Main DB Handler Function
* @async
*
* @param {object} params
* @param {string} params.query
* @param {string[] | object} [params.values]
* @param {string} [params.database]
*
* @returns {Promise<object|null>}
*/
(async () => {
/**
* Switch Database
*
* @description If a database is provided, switch to it
*/
try {
const result = await connection.query(
"SELECT user,host,ssl_type FROM mysql.user"
);
const parsedResults = JSON.parse(JSON.stringify(result));
for (let i = 0; i < parsedResults.length; i++) {
const user = parsedResults[i];
if (
user.User !== process.env.DSQL_DB_READ_ONLY_USERNAME ||
user.User !== process.env.DSQL_DB_FULL_ACCESS_USERNAME ||
!user.User?.match(/dsql_user_.*/i)
) {
continue;
}
const { User, Host, ssl_type } = user;
if (ssl_type === "ANY") {
continue;
}
const addUserSSL = await connection.query(
`ALTER USER '${User}'@'${Host}'`
);
console.log(`addUserSSL => ${User}@${Host}`, addUserSSL);
}
} catch (/** @type {any} */ error) {
console.log("Connection query ERROR =>", error.message);
} finally {
connection.end();
process.exit();
}
})();