Refactor validation to optimise code

This commit is contained in:
Matthew 2018-06-25 16:44:19 +01:00
parent 508172e195
commit dc753bf2db
3 changed files with 8 additions and 16 deletions

View File

@ -93,6 +93,7 @@ def build_config(_config_file):
CONFIG['SYSTEMS'].update({section: {
'MODE': config.get(section, 'MODE'),
'ENABLED': config.getboolean(section, 'ENABLED'),
'LOOSE': config.getboolean(section, 'LOOSE'),
'EXPORT_AMBE': config.getboolean(section, 'EXPORT_AMBE'),
'IP': gethostbyname(config.get(section, 'IP')),
'PORT': config.getint(section, 'PORT'),

View File

@ -80,6 +80,7 @@ GROUP_HANGTIME: 5
[REPEATER-1]
MODE: CLIENT
ENABLED: False
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 54001

View File

@ -143,16 +143,6 @@ class HBSYSTEM(DatagramProtocol):
return
self._logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
def validate_radio_id(self, _id):
if self._config['STRICT']:
if _id == self._config['RADIO_ID']:
return True
else:
return False
else:
return True
def startProtocol(self):
# Set up periodic loop for tracking pings from clients. Run every 'PING_TIME' seconds
self._system_maintenance = task.LoopingCall(self.maintenance_loop)
@ -411,7 +401,7 @@ class HBSYSTEM(DatagramProtocol):
elif _command == 'MSTN': # Actually MSTNAK -- a NACK from the master
_radio_id = _data[6:10] #
if self.validate_radio_id(_radio_id): # Validate the source and intended target # Validate the source and intended target
if self._config['LOOSE'] or _radio_id == self._config['RADIO_ID']: # Validate the source and intended target # Validate the source and intended target
self._logger.warning('(%s) MSTNAK Received. Resetting connection to the Master.', self._system)
self._stats['CONNECTION'] = 'NO' # Disconnect ourselves and re-register
else:
@ -429,7 +419,7 @@ class HBSYSTEM(DatagramProtocol):
elif self._stats['CONNECTION'] == 'AUTHENTICATED': # If we've sent the login challenge...
_radio_id = _data[6:10]
if self.validate_radio_id(_radio_id): # Validate the source and intended target
if self._config['LOOSE'] or _radio_id == self._config['RADIO_ID']: # Validate the source and intended target
self._logger.info('(%s) Repeater Authentication Accepted', self._system)
_config_packet = self._config['RADIO_ID']+\
self._config['CALLSIGN']+\
@ -456,7 +446,7 @@ class HBSYSTEM(DatagramProtocol):
elif self._stats['CONNECTION'] == 'CONFIG-SENT': # If we've sent out configuration to the master
_radio_id = _data[6:10]
if self.validate_radio_id(_radio_id): # Validate the source and intended target
if self._config['LOOSE'] or _radio_id == self._config['RADIO_ID']: # Validate the source and intended target
if self._config['OPTIONS']:
self.send_master('RPTO'+self._config['RADIO_ID']+self._config['OPTIONS'])
self._stats['CONNECTION'] = 'OPTIONS-SENT'
@ -470,7 +460,7 @@ class HBSYSTEM(DatagramProtocol):
elif self._stats['CONNECTION'] == 'OPTIONS-SENT': # If we've sent out options to the master
_radio_id = _data[6:10]
if self.validate_radio_id(_radio_id): # Validate the source and intended target
if self._config['LOOSE'] or _radio_id == self._config['RADIO_ID']: # Validate the source and intended target
self._logger.info('(%s) Repeater Options Accepted', self._system)
self._stats['CONNECTION'] = 'YES'
self._logger.info('(%s) Connection to Master Completed with options', self._system)
@ -480,7 +470,7 @@ class HBSYSTEM(DatagramProtocol):
elif _command == 'MSTP': # Actually MSTPONG -- a reply to RPTPING (send by client)
_radio_id = _data[7:11]
if self.validate_radio_id(_radio_id): # Validate the source and intended target
if self._config['LOOSE'] or _radio_id == self._config['RADIO_ID']: # Validate the source and intended target
self._stats['PING_OUTSTANDING'] = False
self._stats['NUM_OUTSTANDING'] = 0
self._stats['PINGS_ACKD'] += 1
@ -490,7 +480,7 @@ class HBSYSTEM(DatagramProtocol):
elif _command == 'MSTC': # Actually MSTCL -- notify us the master is closing down
_radio_id = _data[5:9]
if self.validate_radio_id(_radio_id): # Validate the source and intended target
if self._config['LOOSE'] or _radio_id == self._config['RADIO_ID']: # Validate the source and intended target
self._stats['CONNECTION'] = 'NO'
self._logger.info('(%s) MSTCL Recieved', self._system)
else: