Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] multidomain-domainnames #59

Merged
merged 12 commits into from
Apr 9, 2020
18 changes: 18 additions & 0 deletions domainfile.json.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"bat0": "dom0",
"bat10": "dom10",
"bat11": "dom11",
"bat12": "dom12",
"bat13": "dom13",
"bat14": "dom14",
"bat15": "dom15",
"bat16": "dom16",
"bat17": "dom17",
"bat18": "dom18",
"bat19": "dom19",
"bat20": "dom20",
"bat21": "dom21",
"bat22": "dom22",
"bat23": "dom23",
"bat99": "dom99"
}
9 changes: 6 additions & 3 deletions providers/nodeinfo/system/domain_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

class Source(providers.DataSource):
def required_args(self):
return ['domain_code']
return ['batadv_dev', 'domain_code', 'known_codes']

def call(self, domain_code):
return domain_code
def call(self, batadv_dev, domain_code, known_codes):
try:
return known_codes[batadv_dev]
except KeyError:
return domain_code
10 changes: 7 additions & 3 deletions respondd.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def handle(self):
if __name__ == "__main__":
parser = argparse.ArgumentParser(usage="""
%(prog)s -h
%(prog)s [-p <port>] [-g <group>] [-i [<group>%%]<if0>] [-i [<group>%%]<if1> ..] [-d <dir>] [-b <batman_iface>[:<mesh_ipv4>] [-n <domain code>] ..]""")
%(prog)s [-p <port>] [-g <group>] [-i [<group>%%]<if0>] [-i [<group>%%]<if1> ..] [-d <dir>] [-b <batman_iface>[:<mesh_ipv4>] [-n <domain code>] [-c <domain_code_file>] ..]""")
parser.add_argument('-p', dest='port',
default=1001, type=int, metavar='<port>',
help='port number to listen on (default 1001)')
Expand All @@ -79,7 +79,9 @@ def handle(self):
metavar='<mesh_ipv4>',
help='mesh ipv4 address')
parser.add_argument('-n', dest='domain_code', metavar='<domain code>',
help='Domain Code for system/domain_code')
help='(default) domain code for system/domain_code')
parser.add_argument('-c', dest='domain_code_file', metavar='<domain code_file>',
help='domain_code.json path (if info is not in file, fallback to -n\'s value)')

args = parser.parse_args()

Expand All @@ -93,7 +95,9 @@ def handle(self):
# mesh_ipv4 list is not empty, there is an override address
batadv_mesh_ipv4_overrides[iface] = mesh_ipv4[0]

global_handler_env = { 'domain_code': args.domain_code, 'mesh_ipv4': args.mesh_ipv4 }
known_codes = util.read_domainfile(args.domain_code_file)

global_handler_env = { 'domain_code': args.domain_code, 'known_codes': known_codes, 'mesh_ipv4': args.mesh_ipv4 }

metasocketserver.MetadataUDPServer.address_family = socket.AF_INET6
metasocketserver.MetadataUDPServer.allow_reuse_address = True
Expand Down
12 changes: 12 additions & 0 deletions util.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
import os

def _file_name_filter(fname):
Expand Down Expand Up @@ -72,3 +73,14 @@ def ifindex_to_batiface(if_index, batman_ifaces):
if iface in batman_ifaces or iface == None:
return iface
return iface_match_recursive(iface, batman_ifaces)

def read_domainfile(dcf_path):
"""Read a json file which holds all currently known assignments of
bat interfaces to domains as a dictionary and return it as python dict.
Return an empty dict, if the given path was None.
"""
if dcf_path is None:
return {}
with open(dcf_path, "r") as dc_file:
known = json.load(dc_file)
AiyionPrime marked this conversation as resolved.
Show resolved Hide resolved
retorn json.load(dc_file)