remove group foo and replace it with flags
parent
1a622da784
commit
523384d64c
|
@ -3,7 +3,6 @@
|
|||
"name" : "Meute-AP"
|
||||
},
|
||||
"8e:3d:c2:10:10:28" : {
|
||||
"name" : "holstentor",
|
||||
"group" : 2
|
||||
"name" : "holstentor"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,10 +9,11 @@ class D3MapBuilder:
|
|||
|
||||
nodes = self._db.get_nodes()
|
||||
|
||||
output['nodes'] = [{'group': x.group, 'name': x.name, 'id': x.id,
|
||||
output['nodes'] = [{'name': x.name, 'id': x.id,
|
||||
'macs': ', '.join(x.macs),
|
||||
'geo': x.gps.split(" ") if x.gps else None
|
||||
} for x in nodes if x.online]
|
||||
'geo': x.gps.split(" ") if x.gps else None,
|
||||
'flags': x.flags
|
||||
} for x in nodes if x.flags['online']]
|
||||
output['links'] = [{'source': x.pair[0], 'target': x.pair[1],
|
||||
'distance': x.distance,
|
||||
'strength': x.strength,
|
||||
|
|
|
@ -85,7 +85,7 @@ class GeoNode:
|
|||
raise
|
||||
|
||||
name = self._node.name
|
||||
status = "up" if self._node.online else "down"
|
||||
status = "up" if self._node.flags['online'] else "down"
|
||||
gps = gps_format(self._node.gps)
|
||||
text = " ".join(self._node.macs)
|
||||
|
||||
|
|
|
@ -17,16 +17,16 @@
|
|||
stroke-width: 5px !important;
|
||||
}
|
||||
|
||||
.node ellipse.group-0 {
|
||||
.node ellipse {
|
||||
fill: #fff;
|
||||
stroke: #04f;
|
||||
}
|
||||
|
||||
.node ellipse.group-2 {
|
||||
.node ellipse.gateway {
|
||||
stroke: #FF7F0E;
|
||||
}
|
||||
|
||||
.node ellipse.group-3 {
|
||||
.node ellipse.client {
|
||||
stroke: #ff0;
|
||||
fill: #ff0;
|
||||
stroke-width: 5px;
|
||||
|
|
|
@ -17,15 +17,15 @@
|
|||
stroke-opacity: 1;
|
||||
}
|
||||
|
||||
.node ellipse.group-0 {
|
||||
.node ellipse {
|
||||
stroke: #AEC7E8;
|
||||
}
|
||||
|
||||
.node ellipse.group-2 {
|
||||
.node ellipse.gateway {
|
||||
stroke: #FF7F0E;
|
||||
}
|
||||
|
||||
.node ellipse.group-3 {
|
||||
.node ellipse.client {
|
||||
stroke: #1F77B4;
|
||||
fill: #1F77B4;
|
||||
}
|
||||
|
|
|
@ -251,12 +251,12 @@ function reload() {
|
|||
json.links.forEach(function(d) {
|
||||
var node, other
|
||||
|
||||
if (d.source.group == 2) {
|
||||
if (d.source.flags.vpn) {
|
||||
node = d.target;
|
||||
other = d.source;
|
||||
}
|
||||
|
||||
if (d.target.group == 2) {
|
||||
if (d.target.flags.vpn) {
|
||||
node = d.source;
|
||||
other = d.target;
|
||||
}
|
||||
|
@ -280,10 +280,10 @@ function reload() {
|
|||
function update() {
|
||||
var links = data.links
|
||||
.filter(function (d) {
|
||||
if (!visible.clients && (d.source.group == 3 || d.target.group == 3))
|
||||
if (!visible.clients && (d.source.flags.client || d.target.flags.client))
|
||||
return false
|
||||
|
||||
if (!visible.vpn && (d.source.group == 2 || d.target.group == 2))
|
||||
if (!visible.vpn && (d.source.flags.vpn || d.target.flags.vpn))
|
||||
return false
|
||||
|
||||
return true
|
||||
|
@ -324,13 +324,13 @@ function update() {
|
|||
link.exit().remove()
|
||||
|
||||
var nodes = data.nodes.filter(function (d) {
|
||||
if (!visible.vpn && d.group == 2)
|
||||
if (!visible.vpn && d.flags.vpn)
|
||||
return false
|
||||
|
||||
if (!visible.vpn && d.group == 3 && d.uplinks)
|
||||
if (!visible.vpn && d.flags.client && d.uplinks)
|
||||
return false
|
||||
|
||||
if (!visible.clients && d.group == 3)
|
||||
if (!visible.clients && d.flags.client)
|
||||
return false
|
||||
|
||||
return true
|
||||
|
@ -353,21 +353,26 @@ function update() {
|
|||
|
||||
nodeEnter.append("ellipse")
|
||||
.attr("class", function(d) {
|
||||
return "group-" + d.group
|
||||
var s = []
|
||||
for (var key in d.flags)
|
||||
if (d.flags.hasOwnProperty(key) && d.flags[key])
|
||||
s.push(key)
|
||||
|
||||
return s.join(" ")
|
||||
})
|
||||
|
||||
node.selectAll("ellipse")
|
||||
.attr("rx", function(d) {
|
||||
if (d.group == 3) return 4
|
||||
if (d.flags.client) return 4
|
||||
else return Math.max(10, d.name.length * 5)
|
||||
})
|
||||
.attr("ry", function(d) {
|
||||
if (d.group == 3) return 4
|
||||
if (d.flags.client) return 4
|
||||
else return 10
|
||||
})
|
||||
|
||||
nodeEnter.filter(function(d) {
|
||||
return d.group != 3
|
||||
return !d.flags.client
|
||||
})
|
||||
.append("text")
|
||||
.attr("class", "name")
|
||||
|
|
13
node.py
13
node.py
|
@ -3,14 +3,13 @@ class Node():
|
|||
self.name = ""
|
||||
self.id = ""
|
||||
self.macs = set()
|
||||
self.group = 0
|
||||
self.online = False
|
||||
self.flags = dict({
|
||||
"online": False,
|
||||
"vpn": False,
|
||||
"gateway": False,
|
||||
"client": False
|
||||
})
|
||||
self.gps = None
|
||||
# groups:
|
||||
# 0 normal node
|
||||
# 1 aftermath
|
||||
# 2 gateways
|
||||
# 3 TT
|
||||
|
||||
def add_mac(self, mac):
|
||||
mac = mac.lower()
|
||||
|
|
15
nodedb.py
15
nodedb.py
|
@ -47,7 +47,7 @@ class NodeDB:
|
|||
node = self.maybe_node_by_mac((x['of'], x['secondary']))
|
||||
except:
|
||||
node = Node()
|
||||
node.online = True
|
||||
node.flags['online'] = True
|
||||
self._nodes.append(node)
|
||||
|
||||
node.add_mac(x['of'])
|
||||
|
@ -61,7 +61,7 @@ class NodeDB:
|
|||
node = self.maybe_node_by_mac((x['router'], ))
|
||||
except:
|
||||
node = Node()
|
||||
node.online = True
|
||||
node.flags['online'] = True
|
||||
node.add_mac(x['router'])
|
||||
self._nodes.append(node)
|
||||
|
||||
|
@ -97,9 +97,9 @@ class NodeDB:
|
|||
node = self.maybe_node_by_mac((x['neighbor'], ))
|
||||
except:
|
||||
node = Node()
|
||||
node.online = True
|
||||
node.flags['online'] = True
|
||||
if x['label'] == 'TT':
|
||||
node.group = 3
|
||||
node.flags['client'] = True
|
||||
|
||||
node.add_mac(x['neighbor'])
|
||||
self._nodes.append(node)
|
||||
|
@ -142,8 +142,6 @@ class NodeDB:
|
|||
continue
|
||||
|
||||
node.name = alias['name']
|
||||
if 'group' in alias:
|
||||
node.group = alias['group']
|
||||
|
||||
# list of macs
|
||||
# if options['gateway']:
|
||||
|
@ -155,12 +153,13 @@ class NodeDB:
|
|||
except:
|
||||
continue
|
||||
|
||||
node.group = 2
|
||||
node.flags['gateway'] = True
|
||||
node.flags['vpn'] = True
|
||||
|
||||
def map_link(self, pair):
|
||||
distance = 80
|
||||
strength = 0.2
|
||||
if any(filter(lambda x: self._nodes[x].group == 3, pair[0])):
|
||||
if any(filter(lambda x: self._nodes[x].flags['client'], pair[0])):
|
||||
distance = 10
|
||||
strength = 1
|
||||
|
||||
|
|
Loading…
Reference in New Issue