server: Added DNS resolution when setting trust proxy since IPs are temporary in Docker.
the build failed

This commit is contained in:
2019-01-05 11:02:38 +01:00
parent 68a8e7ef97
commit c0e74f4756
3 changed files with 28 additions and 1 deletions
+5
View File
@@ -3405,6 +3405,11 @@
"loose-envify": "^1.0.0"
}
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
+1
View File
@@ -26,6 +26,7 @@
"express-session": "^1.15.6",
"graphql-query-compress": "^1.1.0",
"http-proxy-middleware": "^0.19.1",
"ip": "^1.1.5",
"isomorphic-fetch": "^2.2.1",
"jsonwebtoken": "^8.3.0",
"lasso": "^3.2.6",
+22 -1
View File
@@ -9,6 +9,8 @@ const config = require("./config")
const express = require("express")
const proxy = require("express-http-proxy")
const proxy2 = require("http-proxy-middleware")
const ip = require("ip")
const dns = require("dns")
const lasso = require("lasso")
const lassoMiddleware = require("lasso/middleware")
const markoExpress = require("marko/express")
@@ -26,7 +28,26 @@ lasso.configure(require("./marko-config"))
// Set trusted proxy
if (config.trustedProxy != null) {
app.set('trust proxy', config.trustedProxy)
if (ip.isV4Format(config.trustedProxy) || ip.isV6Format(config.trustedProxy)) {
app.set('trust proxy', config.trustedProxy)
console.log("Trusting proxy", config.trustedProxy);
} else {
dns.resolve4(config.trustedProxy, (err, res) => {
if (err != null) {
console.error("Failed to resolve trustedProxy hostname")
console.error(err)
process.exit(1)
}
if (res.length === 0) {
console.error("No results for trustedProxy hostname")
process.exit(1)
}
console.log("Trusting proxy", res[0], `(${config.trustedProxy})`);
app.set('trust proxy', res[0])
})
}
}
// Apply middleware