Use server side resolving only, add proper support for nexthop resolving (#81)

* Revert "Use resolved data if gateway was already resolved (#78)"

This reverts commit 44bb8e9d3d.

* Revert "proportions: lookup gateway name"

This reverts commit 94662cb3dc.

* Revert "infobox/node: change mac used to lookup nodes"

This reverts commit 2ca2604403.

* Revert "infobox/node: resolve nexthop and gateway from data"

This reverts commit 9e7049c9e3.

* Resolve nexthop full chain if possible

requires hopglass/hopglass-server#79

* Correctly handle sidecase when nodes on route report inconsistent gateway
This commit is contained in:
Marvin W 2017-01-07 18:43:04 +01:00 committed by PetaByteBoy // Milan Pässler
parent 44bb8e9d3d
commit 5cb88e8d06
4 changed files with 28 additions and 51 deletions

View file

@ -85,7 +85,6 @@ function (chroma, Map, Sidebar, Tabs, Container, Meshstats, Legend, Linklist,
fanoutUnfiltered.add(meshstats) fanoutUnfiltered.add(meshstats)
fanoutUnfiltered.add(newnodeslist) fanoutUnfiltered.add(newnodeslist)
fanoutUnfiltered.add(lostnodeslist) fanoutUnfiltered.add(lostnodeslist)
fanoutUnfiltered.add(infobox)
fanout.add(nodelist) fanout.add(nodelist)
fanout.add(linklist) fanout.add(linklist)
fanout.add(statistics) fanout.add(statistics)

View file

@ -2,7 +2,6 @@ define(["infobox/link", "infobox/node", "infobox/location"], function (Link, Nod
return function (config, sidebar, router) { return function (config, sidebar, router) {
var self = this var self = this
var el var el
var nodeDict
function destroy() { function destroy() {
if (el && el.parentNode) { if (el && el.parentNode) {
@ -34,7 +33,7 @@ define(["infobox/link", "infobox/node", "infobox/location"], function (Link, Nod
self.gotoNode = function (d) { self.gotoNode = function (d) {
create() create()
new Node(config, el, router, d, nodeDict) new Node(config, el, router, d)
} }
self.gotoLink = function (d) { self.gotoLink = function (d) {
@ -47,14 +46,6 @@ define(["infobox/link", "infobox/node", "infobox/location"], function (Link, Nod
new Location(config, el, router, d) new Location(config, el, router, d)
} }
self.setData = function (d) {
nodeDict = {}
d.graph.nodes.forEach(function (d) {
nodeDict[d.id.substr(0, 8)] = d
})
}
return self return self
} }
}) })

View file

@ -313,21 +313,7 @@ define(["moment", "numeral", "tablesort", "tablesort.numeric"],
return document.createTextNode(text) return document.createTextNode(text)
} }
function lookupNode(d, nodeDict) { function showGateway(d, router) {
if (!d)
return null
if (d.node || d.id)
return d
var node = nodeDict[d.substr(0, 8)]
if (!node)
return d
return node
}
function showGateway(d, router, nodeDict) {
var nh var nh
if (dictGet(d.statistics, ["nexthop"])) if (dictGet(d.statistics, ["nexthop"]))
nh = dictGet(d.statistics, ["nexthop"]) nh = dictGet(d.statistics, ["nexthop"])
@ -337,13 +323,27 @@ define(["moment", "numeral", "tablesort", "tablesort.numeric"],
if (!gw) return null if (!gw) return null
return function (el) { return function (el) {
if (nh) { var num = 0
el.appendChild(createLink(lookupNode(nh, nodeDict), router)) while (gw && nh && gw.id !== nh.id && num < 10) {
if (nh.substr(0, 8) !== gw.substr(0, 8)) if (num !== 0) el.appendChild(document.createTextNode(" -> "))
el.appendChild(document.createTextNode(" -> ... -> ")) el.appendChild(createLink(nh, router))
num++
if (!nh.node || !nh.node.statistics) break
if (dictGet(nh.node.statistics, ["gateway"]).id !== gw.id) break
if (dictGet(nh.node.statistics, ["gateway_nexthop"]))
nh = dictGet(nh.node.statistics, ["gateway_nexthop"])
else if (dictGet(nh.node.statistics, ["nexthop"]))
nh = dictGet(nh.node.statistics, ["nexthop"])
else
break
} }
if (!nh || nh.substr(0, 8) !== gw.substr(0, 8)) if (gw && nh && gw.id !== nh.id) {
el.appendChild(createLink(lookupNode(gw, nodeDict), router)) if (num !== 0) el.appendChild(document.createTextNode(" -> "))
num++
el.appendChild(document.createTextNode("..."))
}
if (num !== 0) el.appendChild(document.createTextNode(" -> "))
el.appendChild(createLink(gw, router))
} }
} }
@ -424,7 +424,7 @@ define(["moment", "numeral", "tablesort", "tablesort.numeric"],
return showStat(o, subst) return showStat(o, subst)
} }
return function(config, el, router, d, nodeDict) { return function(config, el, router, d) {
var attributes = document.createElement("table") var attributes = document.createElement("table")
attributes.classList.add("attributes") attributes.classList.add("attributes")
@ -471,7 +471,7 @@ define(["moment", "numeral", "tablesort", "tablesort.numeric"],
attributeEntry(attributes, "Arbeitsspeicher", showRAM(d)) attributeEntry(attributes, "Arbeitsspeicher", showRAM(d))
attributeEntry(attributes, "IP Adressen", showIPs(d)) attributeEntry(attributes, "IP Adressen", showIPs(d))
attributeEntry(attributes, "Webseite", showPages(d)) attributeEntry(attributes, "Webseite", showPages(d))
attributeEntry(attributes, "Gewähltes Gateway", showGateway(d, router, nodeDict)) attributeEntry(attributes, "Gewähltes Gateway", showGateway(d, router))
attributeEntry(attributes, "Autom. Updates", showAutoupdate(d)) attributeEntry(attributes, "Autom. Updates", showAutoupdate(d))
attributeEntry(attributes, "Clients", showClients(d), showMeshClients(d)) attributeEntry(attributes, "Clients", showClients(d), showMeshClients(d))

View file

@ -23,7 +23,7 @@ define(["chroma-js", "virtual-dom", "numeral-intl", "filters/genericnode", "verc
var uplinkTable = document.createElement("table") var uplinkTable = document.createElement("table")
uplinkTable.classList.add("proportion") uplinkTable.classList.add("proportion")
var gwNodesTable = document.createElement("table") var gwNodesTable = document.createElement("table")
gwNodesTable.classList.add("proportion") gwNodesTable.classList.add("proportion")
var gwClientsTable = document.createElement("table") var gwClientsTable = document.createElement("table")
@ -119,8 +119,9 @@ define(["chroma-js", "virtual-dom", "numeral-intl", "filters/genericnode", "verc
var onlineNodes = data.nodes.all.filter(online) var onlineNodes = data.nodes.all.filter(online)
var nodes = onlineNodes.concat(data.nodes.lost) var nodes = onlineNodes.concat(data.nodes.lost)
var nodeDict = {} var nodeDict = {}
data.graph.nodes.forEach(function (d) {
nodeDict[d.id.substr(0, 8)] = d data.nodes.all.forEach(function (d) {
nodeDict[d.nodeinfo.node_id] = d
}) })
var statusDict = count(nodes, ["flags", "online"], function (d) { var statusDict = count(nodes, ["flags", "online"], function (d) {
@ -161,13 +162,6 @@ define(["chroma-js", "virtual-dom", "numeral-intl", "filters/genericnode", "verc
if (d.id) if (d.id)
return d.id return d.id
var n = nodeDict[d.substr(0, 8)]
if (!n)
return d
var name = dictGet(n, ["node", "nodeinfo", "hostname"])
if (name)
return name
return d return d
}) })
@ -181,13 +175,6 @@ define(["chroma-js", "virtual-dom", "numeral-intl", "filters/genericnode", "verc
if (d.id) if (d.id)
return d.id return d.id
var n = nodeDict[d.substr(0, 8)]
if (!n)
return d
var name = dictGet(n, ["node", "nodeinfo", "hostname"])
if (name)
return name
return d return d
}) })