From c60d1a53aa5c96d8eacb21068fdddfd290fcfabf Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 17 Sep 2023 15:50:37 +0100 Subject: [PATCH] Working --- API.py | 28 +++++++++++++++------------- bridge_master.py | 14 +++----------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/API.py b/API.py index c040faa..96cbc9c 100644 --- a/API.py +++ b/API.py @@ -1,33 +1,32 @@ from spyne import ServiceBase, rpc, Integer, Decimal, UnsignedInteger32, Unicode, Iterable, error -from dmr_utils3.utils import bytes_3 +from dmr_utils3.utils import bytes_3, bytes_4 class FD_APIUserDefinedContext(object): - def __init__(self,CONFIG,APIQUEUE,BRIDGES): + def __init__(self,CONFIG,BRIDGES): self.CONFIG = CONFIG - self.APIQUEUE = APIQUEUE self.BRIDGES = BRIDGES def getconfig(self): return self.CONFIG - def getapiqueue(self): - return self.APIQUEUE - def getbridges(self): return self.BRIDGES def validateKey(self,dmrid,key): systems = self.CONFIG['SYSTEMS'] - dmrid = bytes_3(dmrid) + dmrid = bytes_4(dmrid) + print(dmrid) for system in systems: for peerid in systems[system]['PEERS']: + print(peerid) if peerid == dmrid: - if key == _hash: - return(systems[system]['_opt_key']) + if key == systems[system]['_opt_key']: + return(system) else: return(False) + return(False) def validateSystemKey(self,systemkey): if systemkey == self.CONFIG['GLOBAL']['SYSTEM_API_KEY']: @@ -41,6 +40,9 @@ class FD_APIUserDefinedContext(object): def queue(self,system,options): self.APIQUEUE.append((system,options)) + def options(self,system,options): + self.CONFIG['SYSTEMS'][system]['OPTIONS'] = options + class FD_API(ServiceBase): _version = 0.1 @@ -63,17 +65,17 @@ class FD_API(ServiceBase): @rpc(Unicode,Unicode, _returns=Unicode()) def reset(ctx,dmrid,key): - system = ctx.udc.validateKey(dmrid,key) + system = ctx.udc.validateKey(int(dmrid),key) if system: ctx.udc.reset(system) else: raise error.InvalidCredentialsError() - @rpc(UnsignedInteger32,UnsignedInteger32,Unicode,_returns=Unicode()) + @rpc(UnsignedInteger32,Unicode,Unicode,_returns=Unicode()) def setoptions(ctx,dmrid,key,options): - system = ctx.udc.validateKey(dmrid,key) + system = ctx.udc.validateKey(int(dmrid),key) if system: - ctx.udc.queue(system,options) + ctx.udc.options(system,options) else: raise error.InvalidCredentialsError() diff --git a/bridge_master.py b/bridge_master.py index faf7484..2363bd8 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -144,7 +144,7 @@ def config_reports(_config, _factory): return report_server # Start API server -def config_API(_config, _apiqueu, _bridges): +def config_API(_config, _bridges): application = Application([FD_API], @@ -154,7 +154,7 @@ def config_API(_config, _apiqueu, _bridges): ) def _on_method_call(ctx): - ctx.udc = FD_APIUserDefinedContext(CONFIG,APIQUEUE,_bridges) + ctx.udc = FD_APIUserDefinedContext(CONFIG,_bridges) application.event_manager.add_listener('method_call', _on_method_call) @@ -841,12 +841,6 @@ def options_config(): prohibitedTGs = [0,1,2,3,4,5,9,9990,9991,9992,9993,9994,9995,9996,9997,9998,9999] - try: - for (system,options) in APIQUEUE.pop(1): - if not CONFIG['SYSTEMS'][_system]['_reset']: - CONFIG['SYSTEMS'][system][OPTIONS] = options - except IndexError: - pass for _system in CONFIG['SYSTEMS']: try: @@ -2642,7 +2636,6 @@ if __name__ == '__main__': import signal global CONFIG - global APIQUEUE # Higheset peer ID permitted by HBP PEER_MAX = 4294967295 @@ -2886,9 +2879,8 @@ if __name__ == '__main__': #Initialize API - APIQUEUE = [] if CONFIG['GLOBAL']['ENABLE_API']: - api = config_API(CONFIG,APIQUEUE,BRIDGES) + api = config_API(CONFIG,BRIDGES) else: api = False if api: