Merge branch 'bcka'

This commit is contained in:
Simon 2021-04-04 18:42:09 +01:00
commit 62f0cdc97b
4 changed files with 35 additions and 18 deletions

View File

@ -54,4 +54,6 @@ TARGET_PORT: 62044
USE_ACL: True USE_ACL: True
SUB_ACL: DENY:1 SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL TGID_ACL: PERMIT:ALL
RELAX_CHECKS: True
ENHANCED_OBP: True

View File

@ -149,6 +149,7 @@ USE_ACL: True
SUB_ACL: DENY:1 SUB_ACL: DENY:1
TGID_ACL: PERMIT:ALL TGID_ACL: PERMIT:ALL
RELAX_CHECKS: False RELAX_CHECKS: False
ENHANCED_OBP: False
# MASTER INSTANCES - DUPLICATE SECTION FOR MULTIPLE MASTERS # MASTER INSTANCES - DUPLICATE SECTION FOR MULTIPLE MASTERS
# HomeBrew Protocol Master instances go here. # HomeBrew Protocol Master instances go here.

View File

@ -302,7 +302,8 @@ def build_config(_config_file):
'SUB_ACL': config.get(section, 'SUB_ACL'), 'SUB_ACL': config.get(section, 'SUB_ACL'),
'TG1_ACL': config.get(section, 'TGID_ACL'), 'TG1_ACL': config.get(section, 'TGID_ACL'),
'TG2_ACL': 'PERMIT:ALL', 'TG2_ACL': 'PERMIT:ALL',
'RELAX_CHECKS': config.getboolean(section, 'RELAX_CHECKS') 'RELAX_CHECKS': config.getboolean(section, 'RELAX_CHECKS'),
'ENHANCED_OBP': config.getboolean(section, 'ENHANCED_OBP')
}}) }})

View File

@ -113,9 +113,16 @@ class OPENBRIDGE(DatagramProtocol):
self._config = self._CONFIG['SYSTEMS'][self._system] self._config = self._CONFIG['SYSTEMS'][self._system]
self._laststrid = deque([], 20) self._laststrid = deque([], 20)
<<<<<<< HEAD
#def startProtocol(self): #def startProtocol(self):
# self._bcka = task.LoopingCall(self.send_bcka) # self._bcka = task.LoopingCall(self.send_bcka)
# self._bcka = self._bcka.start(10) # self._bcka = self._bcka.start(10)
=======
def startProtocol(self):
if self._config['ENHANCED_OBP']:
self._bcka = task.LoopingCall(self.send_bcka)
self._bcka = self._bcka.start(10)
>>>>>>> bcka
def dereg(self): def dereg(self):
logger.info('(%s) is mode OPENBRIDGE. No De-Registration required, continuing shutdown', self._system) logger.info('(%s) is mode OPENBRIDGE. No De-Registration required, continuing shutdown', self._system)
@ -204,23 +211,29 @@ class OPENBRIDGE(DatagramProtocol):
else: else:
h,p = _sockaddr h,p = _sockaddr
logger.info('(%s) OpenBridge HMAC failed, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:53]), len(_packet[53:]), repr(_packet[53:]),h,p) logger.info('(%s) OpenBridge HMAC failed, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:53]), len(_packet[53:]), repr(_packet[53:]),h,p)
if _packet[:2] == BC: # Bridge Control packet (Extended OBP) if self._config['ENHANCED_OBP']:
if _packet[:4] == BCKA: if _packet[:2] == BC: # Bridge Control packet (Extended OBP)
_data = _packet[:53] if _packet[:4] == BCKA:
_hash = _packet[53:] #_data = _packet[:53]
_ckhs = hmac_new(self._config['PASSPHRASE'],_data,sha1).digest() _hash = _packet[4:]
if compare_digest(_hash, _ckhs): _ckhs = hmac_new(self._config['PASSPHRASE'],_packet[:4],sha1).digest()
logger.debug('(%s) Bridge Control Keep Alive received') if compare_digest(_hash, _ckhs):
self._config['_bc']['_ka'] = time() logger.debug('(%s) *BridgeControl* Keep Alive received',self._system)
self._config['_bcka'] = time()
else: if _sockaddr != self._config['TARGET_SOCK']:
print(_hash) h,p = _sockaddr
print(_ckhs) if p == self._config['TARGET_PORT']:
h,p = _sockaddr self._config['TARGET_SOCK'] = _sockaddr
logger.info('(%s) OpenBridge BCKA invalid KeepAlive, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:53]), len(_packet[53:]), repr(_packet[53:]),h,p) self.config['TARGET_IP'] = h
logger.info('(%s) *BridgeControl* Source IP has changed for OBP, updating',self._system)
else:
logger.info('(%s) *BridgeControl* Source IP has changed for OBP but port has also changed, *NOT* updating',self._system)
else:
h,p = _sockaddr
logger.info('(%s) *BridgeControl* BCKA invalid KeepAlive, packet discarded - OPCODE: %s DATA: %s HMAC LENGTH: %s HMAC: %s SRC IP: %s SRC PORT: %s', self._system, _packet[:4], repr(_packet[:53]), len(_packet[53:]), repr(_packet[53:]),h,p)
#************************************************ #************************************************
# HB MASTER CLASS # HB MASTER CLASS
#************************************************ #************************************************