mirror of
https://github.com/nodemailer/wildduck.git
synced 2024-11-10 09:32:28 +08:00
74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = redisConf => {
|
|
let parsedRedisUrl = new URL(redisConf);
|
|
let parsedUrl = {};
|
|
|
|
let usernameAllowed = false;
|
|
for (let key of parsedRedisUrl.searchParams.keys()) {
|
|
let value = parsedRedisUrl.searchParams.get(key);
|
|
if (!value) {
|
|
continue;
|
|
}
|
|
switch (key) {
|
|
case 'password':
|
|
parsedUrl.password = value;
|
|
break;
|
|
|
|
case 'db':
|
|
{
|
|
if (value && !isNaN(value)) {
|
|
parsedUrl.db = Number(value);
|
|
}
|
|
}
|
|
break;
|
|
case 'allowUsernameInURI':
|
|
if (/^(true|1|yes|y)$/i.test(value)) {
|
|
usernameAllowed = true;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
for (let key of ['hostname', 'port', 'password', 'pathname', 'protocol', 'username']) {
|
|
let value = parsedRedisUrl[key];
|
|
if (!value) {
|
|
continue;
|
|
}
|
|
switch (key) {
|
|
case 'hostname':
|
|
parsedUrl.host = value;
|
|
break;
|
|
|
|
case 'port':
|
|
parsedUrl.port = Number(value);
|
|
break;
|
|
|
|
case 'password':
|
|
parsedUrl.password = value;
|
|
break;
|
|
|
|
case 'username':
|
|
if (usernameAllowed) {
|
|
parsedUrl.username = value;
|
|
}
|
|
break;
|
|
|
|
case 'pathname': {
|
|
let pathname = value.slice(1);
|
|
if (pathname && !isNaN(pathname)) {
|
|
parsedUrl.db = Number(pathname);
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 'protocol':
|
|
if (value.toLowerCase() === 'rediss:') {
|
|
parsedUrl.tls = {};
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return parsedUrl;
|
|
};
|