simplify mark_gateway
parent
878267ca0e
commit
6e101bc6de
13
bat2nodes.py
13
bat2nodes.py
|
@ -29,6 +29,7 @@ parser.add_argument('-a', '--aliases',
|
||||||
metavar='FILE')
|
metavar='FILE')
|
||||||
|
|
||||||
parser.add_argument('-m', '--mesh', action='append',
|
parser.add_argument('-m', '--mesh', action='append',
|
||||||
|
default=["bat0"],
|
||||||
help='batman mesh interface')
|
help='batman mesh interface')
|
||||||
|
|
||||||
parser.add_argument('-A', '--alfred', action='store_true',
|
parser.add_argument('-A', '--alfred', action='store_true',
|
||||||
|
@ -43,17 +44,11 @@ options = vars(args)
|
||||||
|
|
||||||
db = NodeDB(int(time.time()))
|
db = NodeDB(int(time.time()))
|
||||||
|
|
||||||
if options['mesh']:
|
for mesh_interface in options['mesh']:
|
||||||
for mesh_interface in options['mesh']:
|
bm = batman(mesh_interface)
|
||||||
bm = batman(mesh_interface)
|
|
||||||
db.parse_vis_data(bm.vis_data(options['alfred']))
|
|
||||||
for gw in bm.gateway_list():
|
|
||||||
db.mark_gateways(gw['mac'])
|
|
||||||
else:
|
|
||||||
bm = batman()
|
|
||||||
db.parse_vis_data(bm.vis_data(options['alfred']))
|
db.parse_vis_data(bm.vis_data(options['alfred']))
|
||||||
for gw in bm.gateway_list():
|
for gw in bm.gateway_list():
|
||||||
db.mark_gateways([gw['mac']])
|
db.mark_gateway(gw)
|
||||||
|
|
||||||
if options['aliases']:
|
if options['aliases']:
|
||||||
for aliases in options['aliases']:
|
for aliases in options['aliases']:
|
||||||
|
|
20
batman.py
20
batman.py
|
@ -45,22 +45,20 @@ class batman:
|
||||||
"""
|
"""
|
||||||
output = subprocess.check_output(["batctl","-m",self.mesh_interface,"gwl","-n"])
|
output = subprocess.check_output(["batctl","-m",self.mesh_interface,"gwl","-n"])
|
||||||
output_utf8 = output.decode("utf-8")
|
output_utf8 = output.decode("utf-8")
|
||||||
# TODO Parse information
|
|
||||||
lines = output_utf8.splitlines()
|
lines = output_utf8.splitlines()
|
||||||
own_mac = re.match(r"^.*MainIF/MAC: [^/]+/([0-9a-f:]+).*$",lines[0]).group(1)
|
|
||||||
# Remove header line
|
own_mac = re.match(r"^.*MainIF/MAC: [^/]+/([0-9a-f:]+).*$", lines[0]).group(1)
|
||||||
del lines[0]
|
|
||||||
# Fill gateway list
|
|
||||||
gw = []
|
gw = []
|
||||||
gw_mode = self.gateway_mode()
|
gw_mode = self.gateway_mode()
|
||||||
if gw_mode['mode'] == 'server':
|
if gw_mode['mode'] == 'server':
|
||||||
gw.append({'mac': own_mac, 'bandwidth': gw_mode['bandwidth']})
|
gw.append(own_mac)
|
||||||
|
|
||||||
for line in lines:
|
for line in lines:
|
||||||
gw_line = line.split()
|
gw_line = re.match(r"^(?:=>)? +([0-9a-f:]+) ", line)
|
||||||
if (gw_line[0] == 'No'):
|
if gw_line:
|
||||||
continue
|
gw.append(gw_line.group(1))
|
||||||
# When in client gateway mode maybe gw_line[0] is not the right.
|
|
||||||
gw.append({'mac':gw_line[0], 'bandwidth': gw_line[-1]})
|
|
||||||
return gw
|
return gw
|
||||||
|
|
||||||
def gateway_mode(self):
|
def gateway_mode(self):
|
||||||
|
|
16
nodedb.py
16
nodedb.py
|
@ -224,18 +224,12 @@ class NodeDB:
|
||||||
if 'id' in alias:
|
if 'id' in alias:
|
||||||
node.id = alias['id']
|
node.id = alias['id']
|
||||||
|
|
||||||
# list of macs
|
def mark_gateway(self, gateway):
|
||||||
# if options['gateway']:
|
try:
|
||||||
# mark_gateways(options['gateway'])
|
node = self.maybe_node_by_mac((gateway, ))
|
||||||
def mark_gateways(self, gateways):
|
|
||||||
for gateway in gateways:
|
|
||||||
try:
|
|
||||||
node = self.maybe_node_by_mac((gateway, ))
|
|
||||||
except:
|
|
||||||
print("WARNING: did not find gateway '",gateway,"' in node list")
|
|
||||||
continue
|
|
||||||
|
|
||||||
node.flags['gateway'] = True
|
node.flags['gateway'] = True
|
||||||
|
except KeyError:
|
||||||
|
print("WARNING: did not find gateway ", gateway, " in node list")
|
||||||
|
|
||||||
def update_vpn_links(self):
|
def update_vpn_links(self):
|
||||||
changes = 1
|
changes = 1
|
||||||
|
|
Loading…
Reference in New Issue