Skip to content

Commit 6be3b90

Browse files
benjiebrianc
authored andcommittedOct 4, 2020
Add support for ?sslmode connection string param
1 parent f0fc470 commit 6be3b90

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed
 

‎packages/pg-connection-string/index.js

+19
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,25 @@ function parse(str) {
8181
config.ssl.ca = fs.readFileSync(config.sslrootcert).toString()
8282
}
8383

84+
switch (config.sslmode) {
85+
case 'disable': {
86+
config.ssl = false
87+
break
88+
}
89+
case 'prefer':
90+
case 'require':
91+
case 'verify-ca':
92+
case 'verify-full': {
93+
config.ssl = config.ssl || true
94+
break
95+
}
96+
case 'no-verify': {
97+
config.ssl = config.ssl || {}
98+
config.ssl.rejectUnauthorized = false
99+
break
100+
}
101+
}
102+
84103
return config
85104
}
86105

‎packages/pg-connection-string/test/parse.js

+46
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,52 @@ describe('parse', function () {
241241
})
242242
})
243243

244+
it('configuration parameter sslmode=no-verify', function () {
245+
var connectionString = 'pg:///?sslmode=no-verify'
246+
var subject = parse(connectionString)
247+
subject.ssl.should.eql({
248+
rejectUnauthorized: false,
249+
})
250+
})
251+
252+
it('configuration parameter sslmode=disable', function () {
253+
var connectionString = 'pg:///?sslmode=disable'
254+
var subject = parse(connectionString)
255+
subject.ssl.should.eql(false)
256+
})
257+
258+
it('configuration parameter sslmode=prefer', function () {
259+
var connectionString = 'pg:///?sslmode=prefer'
260+
var subject = parse(connectionString)
261+
subject.ssl.should.eql(true)
262+
})
263+
264+
it('configuration parameter sslmode=require', function () {
265+
var connectionString = 'pg:///?sslmode=require'
266+
var subject = parse(connectionString)
267+
subject.ssl.should.eql(true)
268+
})
269+
270+
it('configuration parameter sslmode=verify-ca', function () {
271+
var connectionString = 'pg:///?sslmode=verify-ca'
272+
var subject = parse(connectionString)
273+
subject.ssl.should.eql(true)
274+
})
275+
276+
it('configuration parameter sslmode=verify-full', function () {
277+
var connectionString = 'pg:///?sslmode=verify-full'
278+
var subject = parse(connectionString)
279+
subject.ssl.should.eql(true)
280+
})
281+
282+
it("configuration parameter sslmode=require doesn't overwrite sslrootcert=/path/to/ca", function () {
283+
var connectionString = 'pg:///?sslrootcert=' + __dirname + '/example.ca&sslmode=require'
284+
var subject = parse(connectionString)
285+
subject.ssl.should.eql({
286+
ca: 'example ca\n',
287+
})
288+
})
289+
244290
it('allow other params like max, ...', function () {
245291
var subject = parse('pg://myhost/db?max=18&min=4')
246292
subject.max.should.equal('18')

0 commit comments

Comments
 (0)