@mailprotector/haraka-plugin-secrets-manager
Version:
A Haraka plugin for parsing config files with EJS to inject environment variables into config files on initialize
38 lines (27 loc) • 1.13 kB
JavaScript
((fs, ejs) => {
let parseConfig = async (configPath, writeFileSync, plugin) => {
await ejs.renderFile(`${process.env.CONFIG_PATH}/${configPath}`, process.env, (ejs_err, fileContents) => {
if (ejs_err) {
plugin.logerror(`Error loading config - ${process.env.CONFIG_PATH}/config/${configPath}`, plugin);
}
writeFileSync(`${process.env.CONFIG_PATH}/${configPath}`, fileContents);
plugin.loginfo(`${process.env.CONFIG_PATH}/${configPath}`)
});
};
let buildPluginFunction = ({ readdirSync, writeFileSync }, ejs) => {
return function (done) {
let plugin = this;
let results = readdirSync(process.env.CONFIG_PATH, { withFileTypes: true });
results = results.filter(f => { return f.isFile() });
results.forEach(f => {
parseConfig(f.name, writeFileSync, plugin);
});
done();
};
};
exports.load_secrets_test = buildPluginFunction;
exports.register = function () {
this.register_hook('init_master', 'load_secrets', -100);
};
exports.load_secrets = buildPluginFunction(fs, ejs);
})(require('fs'), require('ejs'));