diff --git a/config.py b/config.py index 82cd556..c087f6b 100755 --- a/config.py +++ b/config.py @@ -327,7 +327,8 @@ def build_config(_config_file): 'DEFAULT_REFLECTOR': config.getint(section, 'DEFAULT_REFLECTOR'), 'GENERATOR': config.getint(section, 'GENERATOR'), 'ANNOUNCEMENT_LANGUAGE': config.get(section, 'ANNOUNCEMENT_LANGUAGE'), - 'ALLOW_UNREG_ID': config.getboolean(section,'ALLOW_UNREG_ID') + 'ALLOW_UNREG_ID': config.getboolean(section,'ALLOW_UNREG_ID'), + 'PROXY_CONTROL' : config.getboolean(section,'PROXY_CONTROL') }}) CONFIG['SYSTEMS'][section].update({'PEERS': {}}) diff --git a/hblink.py b/hblink.py index 95ef4b7..8ddcbdb 100755 --- a/hblink.py +++ b/hblink.py @@ -810,12 +810,11 @@ class HBSYSTEM(DatagramProtocol): def proxy_IPBlackList(self,peer_id,sockaddr): _timenow = time() - _bltime = _timenow + 60 + _bltime = _timenow + 300 _bltime = str(_bltime) _prpacket = b''.join([PRBL,peer_id,_bltime.encode('UTF-8')]) self.transport.write(_prpacket,sockaddr) - def validate_id(self,_peer_id): if 'ALLOW_UNREG_ID' not in self._config: @@ -962,7 +961,8 @@ class HBSYSTEM(DatagramProtocol): logger.info('(%s) Sent Challenge Response to %s for login: %s', self._system, int_id(_peer_id), self._peers[_peer_id]['SALT']) else: self.transport.write(b''.join([MSTNAK, _peer_id]), _sockaddr) - self.proxy_IPBlackList(_sockaddr) + if self._config['PROXY_CONTROL']: + self.proxy_IPBlackList(_peer_id,_sockaddr) logger.warning('(%s) Invalid Login from %s Radio ID: %s Denied by Registation ACL or not registered ID', self._system, _sockaddr[0], int_id(_peer_id)) else: self.transport.write(b''.join([MSTNAK, _peer_id]), _sockaddr) @@ -1038,7 +1038,8 @@ class HBSYSTEM(DatagramProtocol): if ('ALLOW_UNREG_ID' in self._config and not self._config['ALLOW_UNREG_ID']) and _this_peer['CALLSIGN'].decode('utf8').rstrip() != self.validate_id(_peer_id): del self._peers[_peer_id] - self.proxy_IPBlackList(_peer_id,_sockaddr) + if self._config['PROXY_CONTROL']: + self.proxy_IPBlackList(_peer_id,_sockaddr) self.transport.write(b''.join([MSTNAK, _peer_id]), _sockaddr) logger.info('(%s) Callsign does not match subscriber database: ID: %s, Sent Call: %s, DB call %s', self._system, int_id(_peer_id),_this_peer['CALLSIGN'].decode('utf8').rstrip(),self.validate_id(_peer_id)) else: