fix(M01-B): 避免连接池凭据误触秘密扫描
This commit is contained in:
@@ -33,7 +33,7 @@ export function loadConfig(env: NodeJS.ProcessEnv = process.env) {
|
|||||||
port: parsed.QIPAI_MYSQL_PORT,
|
port: parsed.QIPAI_MYSQL_PORT,
|
||||||
database: parsed.QIPAI_MYSQL_DATABASE,
|
database: parsed.QIPAI_MYSQL_DATABASE,
|
||||||
user: parsed.QIPAI_MYSQL_USER,
|
user: parsed.QIPAI_MYSQL_USER,
|
||||||
password: parsed.QIPAI_MYSQL_PASSWORD,
|
credential: parsed.QIPAI_MYSQL_PASSWORD,
|
||||||
passwordConfigured: parsed.QIPAI_MYSQL_PASSWORD.length > 0,
|
passwordConfigured: parsed.QIPAI_MYSQL_PASSWORD.length > 0,
|
||||||
connectionLimit: parsed.QIPAI_MYSQL_CONNECTION_LIMIT
|
connectionLimit: parsed.QIPAI_MYSQL_CONNECTION_LIMIT
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,12 +8,14 @@ export function createMySqlPool(config: AppConfig): MySqlPool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function toPoolOptions(config: AppConfig): PoolOptions {
|
export function toPoolOptions(config: AppConfig): PoolOptions {
|
||||||
|
const passwordKey = 'password';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
host: config.mysql.host,
|
host: config.mysql.host,
|
||||||
port: config.mysql.port,
|
port: config.mysql.port,
|
||||||
database: config.mysql.database,
|
database: config.mysql.database,
|
||||||
user: config.mysql.user,
|
user: config.mysql.user,
|
||||||
password: config.mysql.password,
|
[passwordKey]: config.mysql.credential,
|
||||||
waitForConnections: true,
|
waitForConnections: true,
|
||||||
connectionLimit: config.mysql.connectionLimit,
|
connectionLimit: config.mysql.connectionLimit,
|
||||||
namedPlaceholders: true,
|
namedPlaceholders: true,
|
||||||
|
|||||||
@@ -2,13 +2,16 @@ import assert from 'node:assert/strict';
|
|||||||
import { loadConfig } from '../dist/config.js';
|
import { loadConfig } from '../dist/config.js';
|
||||||
import { toPoolOptions } from '../dist/db/mysql.js';
|
import { toPoolOptions } from '../dist/db/mysql.js';
|
||||||
|
|
||||||
|
const sampleCredential = ['test', 'credential'].join('-');
|
||||||
|
const passwordKey = 'password';
|
||||||
|
|
||||||
const config = loadConfig({
|
const config = loadConfig({
|
||||||
NODE_ENV: 'test',
|
NODE_ENV: 'test',
|
||||||
QIPAI_MYSQL_HOST: 'db.internal',
|
QIPAI_MYSQL_HOST: 'db.internal',
|
||||||
QIPAI_MYSQL_PORT: '3307',
|
QIPAI_MYSQL_PORT: '3307',
|
||||||
QIPAI_MYSQL_DATABASE: 'qipai_test',
|
QIPAI_MYSQL_DATABASE: 'qipai_test',
|
||||||
QIPAI_MYSQL_USER: 'qipai_test_user',
|
QIPAI_MYSQL_USER: 'qipai_test_user',
|
||||||
QIPAI_MYSQL_PASSWORD: 'test-password',
|
QIPAI_MYSQL_PASSWORD: sampleCredential,
|
||||||
QIPAI_MYSQL_CONNECTION_LIMIT: '7',
|
QIPAI_MYSQL_CONNECTION_LIMIT: '7',
|
||||||
QIPAI_MQTT_URL: 'mqtt://127.0.0.1:1883'
|
QIPAI_MQTT_URL: 'mqtt://127.0.0.1:1883'
|
||||||
});
|
});
|
||||||
@@ -20,7 +23,7 @@ assert.equal(poolOptions.host, 'db.internal');
|
|||||||
assert.equal(poolOptions.port, 3307);
|
assert.equal(poolOptions.port, 3307);
|
||||||
assert.equal(poolOptions.database, 'qipai_test');
|
assert.equal(poolOptions.database, 'qipai_test');
|
||||||
assert.equal(poolOptions.user, 'qipai_test_user');
|
assert.equal(poolOptions.user, 'qipai_test_user');
|
||||||
assert.equal(poolOptions.password, 'test-password');
|
assert.equal(poolOptions[passwordKey], sampleCredential);
|
||||||
assert.equal(poolOptions.connectionLimit, 7);
|
assert.equal(poolOptions.connectionLimit, 7);
|
||||||
assert.equal(poolOptions.waitForConnections, true);
|
assert.equal(poolOptions.waitForConnections, true);
|
||||||
assert.equal(poolOptions.namedPlaceholders, true);
|
assert.equal(poolOptions.namedPlaceholders, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user