diff --git a/CHANGELOG.md b/CHANGELOG.md
index 500da4a..301f1ff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,11 +4,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
### Unreleased
-### [1.2.1] - 2024-04-24
-
-- config: guard against prototype pollution
-
-### [1.2.0] - 2024-04-14
+### [1.2.2] - 2024-04-24
- feat: getDir can parse different types of files in a dir
- feat: all file readers now have load and loadPromise, so that
@@ -29,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- lint: remove duplicate / stale rules from .eslintrc
- package.json: populate [files]
- deps: version bumps
+- config: guard against prototype pollution
### [1.1.0] - 2022-05-27
@@ -128,5 +125,4 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- reduce node required 4.3 -> 0.10.43
[1.1.0]: https://github.com/haraka/haraka-config/releases/tag/1.1.0
-[1.2.0]: https://github.com/haraka/haraka-config/releases/tag/v1.2.0
-[1.2.1]: https://github.com/haraka/haraka-config/releases/tag/v1.2.1
+[1.2.2]: https://github.com/haraka/haraka-config/releases/tag/v1.2.2
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 1f02864..06267fd 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -2,7 +2,7 @@
This handcrafted artisinal software is brought to you by:
-|
msimerson (53) |
PSSGCSim (7) |
baudehlo (1) |
Wesitos (1) |
oreoluwa (1) |
+|
msimerson (54) |
PSSGCSim (7) |
baudehlo (1) |
Wesitos (1) |
oreoluwa (1) |
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
this file is maintained by [.release](https://github.com/msimerson/.release)
diff --git a/lib/reader.js b/lib/reader.js
index e729024..2d7f70b 100644
--- a/lib/reader.js
+++ b/lib/reader.js
@@ -34,11 +34,11 @@ class Reader {
return
}
- // these work when this is loaded with require('haraka-config')
- if (/node_modules[\\/]haraka-config$/.test(__dirname)) {
+ // when loaded with require('haraka-config')
+ if (/node_modules\/haraka-config\/lib$/.test(__dirname)) {
config_dir_candidates = [
- path.join(__dirname, '..', '..', 'config'), // haraka/Haraka/*
- path.join(__dirname, '..', '..'), // npm packaged modules
+ path.join(__dirname, '..', '..', '..', 'config'), // haraka/Haraka/*
+ path.join(__dirname, '..', '..', '..'), // npm packaged modules
]
}
@@ -50,7 +50,7 @@ class Reader {
return
}
} catch (ignore) {
- console.error(ignore.message)
+ // console.error(ignore.message)
}
}
}
@@ -146,9 +146,10 @@ class Reader {
const contents = []
for (const file of fileList) {
const type = opts.type ?? this.getType(file)
- contents.push(
- this.load_config(path.resolve(name, file), type, opts),
- )
+ contents.push({
+ path: file,
+ data: this.load_config(path.resolve(name, file), type, opts),
+ })
}
return contents
})
diff --git a/package.json b/package.json
index 24e64f8..c2f05c4 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"name": "haraka-config",
"license": "MIT",
"description": "Haraka's config file loader",
- "version": "1.2.1",
+ "version": "1.2.2",
"homepage": "http://haraka.github.io",
"repository": {
"type": "git",
diff --git a/test/config.js b/test/config.js
index 41083cf..e54d71d 100644
--- a/test/config.js
+++ b/test/config.js
@@ -474,8 +474,8 @@ describe('getDir', function () {
assert.ifError(err)
assert.equal(err, null)
assert.equal(files.length, 3)
- assert.equal(files[0], `contents1${os.EOL}`)
- assert.equal(files[2], `contents3${os.EOL}`)
+ assert.equal(files[0].data, `contents1${os.EOL}`)
+ assert.equal(files[2].data, `contents3${os.EOL}`)
done()
})
})
@@ -508,15 +508,15 @@ describe('getDir', function () {
// console.log(files);
assert.equal(err, null)
assert.equal(files.length, 3)
- assert.equal(files[0], `contents1${os.EOL}`)
- assert.equal(files[2], `contents3${os.EOL}`)
+ assert.equal(files[0].data, `contents1${os.EOL}`)
+ assert.equal(files[2].data, `contents3${os.EOL}`)
fs.writeFile(tmpFile, 'contents4\n', (err2) => {
assert.equal(err2, null)
// console.log('file touched, waiting for callback');
})
}
if (callCount === 2) {
- assert.equal(files[3], 'contents4\n')
+ assert.equal(files[3].data, 'contents4\n')
fs.unlink(tmpFile, () => {})
done()
}
diff --git a/test/configfile.js b/test/reader.js
similarity index 96%
rename from test/configfile.js
rename to test/reader.js
index fd7e4dd..6e92233 100644
--- a/test/configfile.js
+++ b/test/reader.js
@@ -169,19 +169,23 @@ describe('reader', function () {
})
describe('read_dir', function () {
- it.skip('returns dir contents', async function () {
+ it('returns dir contents', async function () {
// may have race collission with config.getDir test
const result = await this.cfreader.read_dir(
path.resolve('test/config/dir'),
)
- assert.deepEqual(result, ['contents1', 'contents2', 'contents3'])
+ assert.deepEqual(result, [
+ {data: 'contents1', path: '1.ext' },
+ {data: 'contents2', path: '2.ext' },
+ {data: 'contents3', path: '3.ext' }
+ ])
})
it('returns dir with mixed types', async function () {
const result = await this.cfreader.read_dir('test/config/mixed')
assert.deepEqual(result, [
- { main: {}, sect: { one: 'true' } },
- { main: { two: false } },
+ { data: { main: {}, sect: { one: 'true' } }, path: '1.ini' },
+ { data: { main: { two: false } }, path: '2.yml' },
])
})
})
@@ -340,6 +344,7 @@ describe('reader', function () {
})
it('NODE_ENV=test', function () {
+ delete process.env.HARAKA
process.env.NODE_ENV = 'test'
this.cfreader.get_path_to_config_dir()
assert.ok(