read config from mg conf
diff --git a/eurekaclient/index.js b/eurekaclient/index.js index 49d1969..b582390 100644 --- a/eurekaclient/index.js +++ b/eurekaclient/index.js
@@ -7,39 +7,46 @@ var debug = require('debug')('plugin:eurekeclient'); var util = require('util'); var os = require('os'); -var config = require('./eureka-client.json'); -const lookup = require('./servicelookup.json'); const port = 8000; const Eureka = require('eureka-js-client').Eureka; - -function getIPAddr() { - var interfaces = os.networkInterfaces(); - var addresses = []; - for (var k in interfaces) { - for (var k2 in interfaces[k]) { - var address = interfaces[k][k2]; - if (address.family === 'IPv4' && !address.internal) { - addresses.push(address.address); - } - } - } - return addresses[0]; -} - -config.instance.hostName = os.hostname(); -config.instance.ipAddr = getIPAddr(); -config.instance.port["$"] = port; -config.instance.port["@enabled"] = true; -config.instance.dataCenterInfo["@class"] = "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"; - -const client = new Eureka(config); - -client.start(); - module.exports.init = function (config, logger, stats) { + const lookup = config.servicemap; + + config.instance.hostName = os.hostname(); + debug('local hostName: ' + config.instance.hostName); + config.instance.ipAddr = getIPAddr(); + config.instance.port = {}; + config.instance.port["$"] = port; + config.instance.port["@enabled"] = true; + config.instance.dataCenterInfo["@class"] = "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"; + + const client = new Eureka(config); + + try { + client.start(); + } catch (err) { + console.error(err); + client.stop(); + } + + function getIPAddr() { + var interfaces = os.networkInterfaces(); + var addresses = []; + for (var k in interfaces) { + for (var k2 in interfaces[k]) { + var address = interfaces[k][k2]; + if (address.family === 'IPv4' && !address.internal) { + addresses.push(address.address); + } + } + } + debug ('localhost ip: ' + addresses[0]); + return addresses[0]; + } + function getAppName(url) { for (var index in lookup) { if (url.includes(lookup[index].uri) || url == lookup[index].uri) { @@ -68,13 +75,19 @@ var appInfo = getAppName(req.url); var endpoint = getTarget(appInfo.app, appInfo.secure); - req.targetHostname = endpoint.hostName; - req.targetPort = endpoint.port; - req.targetPath = req.url; - if (appInfo.secure) { - req.targetSecure = true; + if (endpoint.hostName) { + debug("target hostname: " + endpoint.hostName); + req.targetHostname = endpoint.hostName; + debug("target port: " + endpoint.port); + req.targetPort = endpoint.port; + req.targetPath = req.url; + if (appInfo.secure) { + req.targetSecure = true; + } else { + req.targetSecure = false; + } } else { - req.targetSecure = false; + console.warn("Target enpoint from Eureka not found"); } next(); }