mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-07-08 08:32:15 -04:00
allow dns names in userallowedip,userblockedip,agentallowedip,agentblockedip #5089
Signed-off-by: si458 <simonsmith5521@gmail.com>
This commit is contained in:
parent
3e07d92e6f
commit
f2bb94c8ca
@ -855,7 +855,7 @@ function CreateMeshCentralServer(config, args) {
|
||||
}
|
||||
|
||||
// Look for easy command line instructions and do them here.
|
||||
obj.StartEx = function () {
|
||||
obj.StartEx = async function () {
|
||||
var i;
|
||||
//var wincmd = require('node-windows');
|
||||
//wincmd.list(function (svc) { console.log(svc); }, true);
|
||||
@ -916,6 +916,13 @@ function CreateMeshCentralServer(config, args) {
|
||||
if (typeof obj.args.trustedproxy == 'string') { obj.args.trustedproxy = obj.args.trustedproxy.split(' ').join('').split(','); }
|
||||
if (typeof obj.args.tlsoffload == 'string') { obj.args.tlsoffload = obj.args.tlsoffload.split(' ').join('').split(','); }
|
||||
|
||||
// Check IP lists and ranges and if DNS return IP addresses
|
||||
config.settings.userallowedip = await resolveDomainsToIps(config.settings.userallowedip);
|
||||
config.settings.userblockedip = await resolveDomainsToIps(config.settings.userblockedip);
|
||||
config.settings.agentallowedip = await resolveDomainsToIps(config.settings.agentallowedip);
|
||||
config.settings.agentblockedip = await resolveDomainsToIps(config.settings.agentblockedip);
|
||||
config.settings.swarmallowedip = await resolveDomainsToIps(config.settings.swarmallowedip);
|
||||
|
||||
// Check the "cookieIpCheck" value
|
||||
if ((obj.args.cookieipcheck === false) || (obj.args.cookieipcheck == 'none')) { obj.args.cookieipcheck = 'none'; }
|
||||
else if ((typeof obj.args.cookieipcheck != 'string') || (obj.args.cookieipcheck.toLowerCase() != 'strict')) { obj.args.cookieipcheck = 'lax'; }
|
||||
@ -1472,6 +1479,11 @@ function CreateMeshCentralServer(config, args) {
|
||||
if (typeof obj.config.domains[i].userblockedip == 'string') { if (obj.config.domains[i].userblockedip == '') { delete obj.config.domains[i].userblockedip; } else { obj.config.domains[i].userblockedip = obj.config.domains[i].userblockedip.split(' ').join('').split(','); } }
|
||||
if (typeof obj.config.domains[i].agentallowedip == 'string') { if (obj.config.domains[i].agentallowedip == '') { delete obj.config.domains[i].agentallowedip; } else { obj.config.domains[i].agentallowedip = obj.config.domains[i].agentallowedip.split(' ').join('').split(','); } }
|
||||
if (typeof obj.config.domains[i].agentblockedip == 'string') { if (obj.config.domains[i].agentblockedip == '') { delete obj.config.domains[i].agentblockedip; } else { obj.config.domains[i].agentblockedip = obj.config.domains[i].agentblockedip.split(' ').join('').split(','); } }
|
||||
// Check IP lists and ranges and if DNS return IP addresses
|
||||
obj.config.domains[i].userallowedip = await resolveDomainsToIps(obj.config.domains[i].userallowedip);
|
||||
obj.config.domains[i].userblockedip = await resolveDomainsToIps(obj.config.domains[i].userblockedip);
|
||||
obj.config.domains[i].agentallowedip = await resolveDomainsToIps(obj.config.domains[i].agentallowedip);
|
||||
obj.config.domains[i].agentblockedip = await resolveDomainsToIps(obj.config.domains[i].agentblockedip);
|
||||
if (typeof obj.config.domains[i].ignoreagenthashcheck == 'string') { if (obj.config.domains[i].ignoreagenthashcheck == '') { delete obj.config.domains[i].ignoreagenthashcheck; } else { obj.config.domains[i].ignoreagenthashcheck = obj.config.domains[i].ignoreagenthashcheck.split(','); } }
|
||||
if (typeof obj.config.domains[i].allowedorigin == 'string') { if (obj.config.domains[i].allowedorigin == '') { delete obj.config.domains[i].allowedorigin; } else { obj.config.domains[i].allowedorigin = obj.config.domains[i].allowedorigin.split(','); } }
|
||||
if ((obj.config.domains[i].passwordrequirements != null) && (typeof obj.config.domains[i].passwordrequirements == 'object')) {
|
||||
@ -4033,6 +4045,25 @@ function checkResolveAll(names, func) {
|
||||
}
|
||||
}
|
||||
|
||||
// Resolve a list of domains to IP addresses, return a flat array of IPs.
|
||||
async function resolveDomainsToIps(originalArray) {
|
||||
if (!Array.isArray(originalArray)) { return undefined; }
|
||||
const flatResult = [];
|
||||
for (const item of originalArray) {
|
||||
if (new require('ipcheck')(item).valid) {
|
||||
flatResult.push(item);
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
const results = await require('dns').promises.lookup(item, { all: true });
|
||||
flatResult.push(...results.map(r => r.address));
|
||||
} catch (err) {
|
||||
console.log(`Could not resolve ${item}`);
|
||||
}
|
||||
}
|
||||
return flatResult;
|
||||
}
|
||||
|
||||
// Return the server configuration
|
||||
function getConfig(createSampleConfig) {
|
||||
// Figure out the datapath location
|
||||
|
Loading…
x
Reference in New Issue
Block a user