diff --git a/full_bridge-SAMPLE.cfg b/full_bridge-SAMPLE.cfg index e608721..896ce11 100644 --- a/full_bridge-SAMPLE.cfg +++ b/full_bridge-SAMPLE.cfg @@ -302,41 +302,30 @@ TGID_TS1_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL -# Utilizing the hotspot proxy from FreeDMR -[PROXY_TEMPLATE] -ENABLED: True -# Name that generated systems begin with -NAME: HOTSPOT -# Port that clients will connect on. -EXTERNAL_PORT: 62032 - -# Internal ports used for generated master instances. -INTERNAL_PORT_START: 54000 -INTERNAL_PORT_STOP: 54010 - -### Utilizing the hotspot proxy from FreeDMR -##[PROXY_TEMPLATE_2] -##ENABLED: True -### Name that generated systems begin with -##NAME: REPEATER -### Port that clients will connect on. -##EXTERNAL_PORT: 62032 -## -### Internal ports used for generated master instances. -##INTERNAL_PORT_START: 54000 -##INTERNAL_PORT_STOP: 54010 - +# Utilizing the hotspot proxy modified and used from FreeDMR +[HOTSPOT] +MODE: PROXY +ENABLED: False +# Configure as you would for a normal MASTER. These options will apply to all connected peers. STATIC_APRS_POSITION_ENABLED: False REPEAT: True -PASSPHRASE: password +EXPORT_AMBE: False +PASSPHRASE: passw0rd GROUP_HANGTIME: 5 USE_ACL: True REG_ACL: DENY:1 SUB_ACL: DENY:1 -TGID_TS1_ACL: PERMIT:ALL -TGID_TS2_ACL: PERMIT:ALL - - +TG1_ACL: PERMIT:ALL +TG2_ACL: PERMIT:ALL +# Use the provided proxy script as opposed to starting a new thread at start. +# Set to False if you are not worried about performance issues. +EXTERNAL_PROXY_SCRIPT: False +# Port that peers will connect on. This port should be opened in your firewall. +EXTERNAL_PORT: 62028 +# Internal ports used for generated master instances. Peers shouldn't connect directly to these ports. +# There is no need to open these ports in your server's firewall. A MASTER instance will be generated for each port in the range below. +INTERNAL_PORT_START: 58000 +INTERNAL_PORT_STOP: 58005 # PEER INSTANCES - DUPLICATE SECTION FOR MULTIPLE PEERS diff --git a/full_bridge.py b/full_bridge.py index 4b69f8c..2eb06cb 100644 --- a/full_bridge.py +++ b/full_bridge.py @@ -3,6 +3,7 @@ ############################################################################### # Copyright (C) 2016-2019 Cortney T. Buffington, N0MJS # GPS/Data - Copyright (C) 2021 Eric Craw, KF7EEL +# hotspot_proxy() - Copyright (C) 2020 Simon Adlem, G7RZU # Annotated modifications Copyright (C) 2021 Xavier FRS2013 # Static position by IU7IGU # @@ -981,7 +982,7 @@ def hotspot_proxy(listen_port, port_start, port_stop): reactor.listenUDP(ListenPort,Proxy(Master,ListenPort,CONNTRACK,BlackList,Timeout,Debug,DestportStart,DestPortEnd)) def loopingErrHandle(failure): - print('(GLOBAL) STOPPING REACTOR TO AVOID MEMORY LEAK: Unhandled error innowtimed loop.\n {}'.format(failure)) + logger.error('(GLOBAL) STOPPING REACTOR TO AVOID MEMORY LEAK: Unhandled error innowtimed loop.\n {}'.format(failure)) reactor.stop() def stats(): @@ -2874,110 +2875,51 @@ if __name__ == '__main__': logger.info('(REPORT) TCP Socket reporting not configured') # HBlink instance creation - logger.info('(GLOBAL) HBlink \'bridge.py\' -- SYSTEM STARTING...') - - proxy_a_masters = [] - proxy_b_masters = [] - proxy_c_masters = [] - if CONFIG['PROXY_A']['ENABLED']: - #generate_proxy_masters() - n_systems = CONFIG['PROXY_A']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_A']['INTERNAL_PORT_START'] + logger.info('(GLOBAL) HBlink3 Extended \'full_bridge.py\' -- SYSTEM STARTING...') + + # Generate list of Enabled MODE:PROXY masters + proxy_master_list = [] + for i in CONFIG['SYSTEMS']: + if CONFIG['SYSTEMS'][i]['ENABLED'] == True: + if CONFIG['SYSTEMS'][i]['MODE'] == 'PROXY': + proxy_master_list.append(i) + # Start proxy as a thread (if enabled in config) for each set of MASTERs + for m in proxy_master_list: + if CONFIG['SYSTEMS'][m]['EXTERNAL_PROXY_SCRIPT'] == True: + proxy_thread = threading.Thread(target=hotspot_proxy, args=(CONFIG['SYSTEMS'][m]['EXTERNAL_PORT'],CONFIG['SYSTEMS'][m]['INTERNAL_PORT_START'],CONFIG['SYSTEMS'][m]['INTERNAL_PORT_STOP'],)) + proxy_thread.daemon = True + proxy_thread.start() + logger.info('Started thread for PROXY for MASTER set: ' + m) + + #Build Master configs from list + for i in proxy_master_list: + n_systems = CONFIG['SYSTEMS'][i]['INTERNAL_PORT_STOP'] - CONFIG['SYSTEMS'][i]['INTERNAL_PORT_START'] n_count = 0 while n_count < n_systems: - - CONFIG['SYSTEMS'].update({CONFIG['PROXY_A']['NAME'] + '-' + str(n_count): { + CONFIG['SYSTEMS'].update({i + '-' + str(n_count): { 'MODE': 'MASTER', 'ENABLED': True, - 'STATIC_APRS_POSITION_ENABLED': CONFIG['PROXY_A']['STATIC_APRS_POSITION_ENABLED'], - 'REPEAT': CONFIG['PROXY_A']['REPEAT'], + 'STATIC_APRS_POSITION_ENABLED': CONFIG['SYSTEMS'][i]['STATIC_APRS_POSITION_ENABLED'], + 'REPEAT': CONFIG['SYSTEMS'][i]['REPEAT'], 'MAX_PEERS': 1, 'IP': '127.0.0.1', - 'PORT': CONFIG['PROXY_A']['INTERNAL_PORT_START'] + n_count, - 'PASSPHRASE': CONFIG['PROXY_A']['PASSPHRASE'], - 'GROUP_HANGTIME': CONFIG['PROXY_A']['GROUP_HANGTIME'], - 'USE_ACL': CONFIG['PROXY_A']['USE_ACL'], - 'REG_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_A']['REG_ACL'], 4294967295), - 'SUB_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_A']['SUB_ACL'], 4294967295), - 'TGID_TS1_ACL': CONFIG['PROXY_A']['TGID_TS1_ACL'], - 'TGID_TS2_ACL': CONFIG['PROXY_A']['TGID_TS2_ACL'] + 'PORT': CONFIG['SYSTEMS'][i]['INTERNAL_PORT_START'] + n_count, + 'PASSPHRASE': CONFIG['SYSTEMS'][i]['PASSPHRASE'], + 'GROUP_HANGTIME': CONFIG['SYSTEMS'][i]['GROUP_HANGTIME'], + 'USE_ACL': CONFIG['SYSTEMS'][i]['USE_ACL'], + 'REG_ACL': CONFIG['SYSTEMS'][i]['REG_ACL'], + 'SUB_ACL': CONFIG['SYSTEMS'][i]['SUB_ACL'], + 'TGID_TS1_ACL': CONFIG['SYSTEMS'][i]['TG1_ACL'], + 'TGID_TS2_ACL': CONFIG['SYSTEMS'][i]['TG2_ACL'] }}) - CONFIG['SYSTEMS'][CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)].update({'PEERS': {}}) - systems[CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_A']['NAME'] + '-' + str(n_count), CONFIG, report_server) + CONFIG['SYSTEMS'][i + '-' + str(n_count)].update({'PEERS': {}}) + systems[i + '-' + str(n_count)] = routerHBP(i + '-' + str(n_count), CONFIG, report_server) n_count = n_count + 1 - - if CONFIG['PROXY_B']['ENABLED']: - #generate_proxy_masters() - n_systems = CONFIG['PROXY_B']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_B']['INTERNAL_PORT_START'] - n_count = 0 - while n_count < n_systems: + # Remove original MASTER stanza to prevent errors + CONFIG['SYSTEMS'].pop(i) + logger.info('Generated MASTER instances for proxy set: ' + i) - CONFIG['SYSTEMS'].update({CONFIG['PROXY_B']['NAME'] + '-' + str(n_count): { - 'MODE': 'MASTER', - 'ENABLED': True, - 'STATIC_APRS_POSITION_ENABLED': CONFIG['PROXY_B']['STATIC_APRS_POSITION_ENABLED'], - 'REPEAT': CONFIG['PROXY_B']['REPEAT'], - 'MAX_PEERS': 1, - 'IP': '127.0.0.1', - 'PORT': CONFIG['PROXY_B']['INTERNAL_PORT_START'] + n_count, - 'PASSPHRASE': CONFIG['PROXY_B']['PASSPHRASE'], - 'GROUP_HANGTIME': CONFIG['PROXY_B']['GROUP_HANGTIME'], - 'USE_ACL': CONFIG['PROXY_B']['USE_ACL'], - 'REG_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_B']['REG_ACL'], 4294967295), - 'SUB_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_B']['SUB_ACL'], 4294967295), - 'TGID_TS1_ACL': CONFIG['PROXY_B']['TGID_TS1_ACL'], - 'TGID_TS2_ACL': CONFIG['PROXY_B']['TGID_TS2_ACL'] - }}) - CONFIG['SYSTEMS'][CONFIG['PROXY_B']['NAME'] + '-' + str(n_count)].update({'PEERS': {}}) - systems[CONFIG['PROXY_B']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_B']['NAME'] + '-' + str(n_count), CONFIG, report_server) - n_count = n_count + 1 - if CONFIG['PROXY_C']['ENABLED']: - #generate_proxy_masters() - n_systems = CONFIG['PROXY_C']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_C']['INTERNAL_PORT_START'] - n_count = 0 - while n_count < n_systems: - CONFIG['SYSTEMS'].update({CONFIG['PROXY_C']['NAME'] + '-' + str(n_count): { - 'MODE': 'MASTER', - 'ENABLED': True, - 'STATIC_APRS_POSITION_ENABLED': CONFIG['PROXY_C']['STATIC_APRS_POSITION_ENABLED'], - 'REPEAT': CONFIG['PROXY_C']['REPEAT'], - 'MAX_PEERS': 1, - 'IP': '127.0.0.1', - 'PORT': CONFIG['PROXY_C']['INTERNAL_PORT_START'] + n_count, - 'PASSPHRASE': CONFIG['PROXY_C']['PASSPHRASE'], - 'GROUP_HANGTIME': CONFIG['PROXY_C']['GROUP_HANGTIME'], - 'USE_ACL': CONFIG['PROXY_C']['USE_ACL'], - 'REG_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_C']['REG_ACL'], 4294967295), - 'SUB_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_C']['SUB_ACL'], 4294967295), - 'TGID_TS1_ACL': CONFIG['PROXY_C']['TGID_TS1_ACL'], - 'TGID_TS2_ACL': CONFIG['PROXY_C']['TGID_TS2_ACL'] - }}) - CONFIG['SYSTEMS'][CONFIG['PROXY_C']['NAME'] + '-' + str(n_count)].update({'PEERS': {}}) - systems[CONFIG['PROXY_C']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_C']['NAME'] + '-' + str(n_count), CONFIG, report_server) - n_count = n_count + 1 - - # Build the routing rules file -## rule_bridge = rules_module.BRIDGES_TEMPLATE -## bridge_dict = rule_bridge.copy() -## for b in bridge_dict: -## for s in bridge_dict[b]: -#### print(s) -## if s['SYSTEM'] == 'PROXY_A': -## for m in proxy_a_masters: -## print(m) -## bridge_dict[b].append({'SYSTEM': m, 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': s['ON'], 'OFF': s['OFF'], 'RESET': s['RESET']}) -## bridge_dict[b].remove(s) -#### print(bridge_dict) -## if s['SYSTEM'] == 'PROXY_B': -## for m in proxy_b_masters: -## bridge_dict[b].append({'SYSTEM': m, 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': [1], 'OFF': s['OFF'], 'RESET': s['RESET']}) -## # bridge_dict[b].remove(s) -## if s['SYSTEM'] == 'PROXY_C': -## for m in proxy_c_masters: -## bridge_dict[b].append({'SYSTEM': m, 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': [1], 'OFF': s['OFF'], 'RESET': s['RESET']}) -#### print(bridge_dict) -## -#### print(rule_bridge) BRIDGES = make_bridges(rules_module.BRIDGES) exclude = rules_module.EXCLUDE_FROM_UNIT @@ -3021,25 +2963,6 @@ if __name__ == '__main__': aprs_thread = threading.Thread(target=aprs_rx, args=(aprs_callsign, aprs_passcode, aprs_server, aprs_port, aprs_filter, user_ssid,)) aprs_thread.daemon = True aprs_thread.start() - # Create file for static positions - by IU7IGU -## open("nom_aprs","w").close - if CONFIG['PROXY_A']['ENABLED']: - if not CONFIG['PROXY_A']['USE_EXTERNAL_PROXY']: - proxy_thread = threading.Thread(target=hotspot_proxy, args=(CONFIG['PROXY_A']['EXTERNAL_PORT'],CONFIG['PROXY_A']['INTERNAL_PORT_START'],CONFIG['PROXY_A']['INTERNAL_PORT_STOP'],)) - proxy_thread.daemon = True - proxy_thread.start() - if CONFIG['PROXY_B']['ENABLED']: - if not CONFIG['PROXY_B']['USE_EXTERNAL_PROXY']: - proxy_thread = threading.Thread(target=hotspot_proxy, args=(CONFIG['PROXY_B']['EXTERNAL_PORT'],CONFIG['PROXY_B']['INTERNAL_PORT_START'],CONFIG['PROXY_B']['INTERNAL_PORT_STOP'],)) - proxy_thread.daemon = True - proxy_thread.start() - if CONFIG['PROXY_C']['ENABLED']: - if not CONFIG['PROXY_C']['USE_EXTERNAL_PROXY']: - proxy_thread = threading.Thread(target=hotspot_proxy, args=(CONFIG['PROXY_C']['EXTERNAL_PORT'],CONFIG['PROXY_C']['INTERNAL_PORT_START'],CONFIG['PROXY_C']['INTERNAL_PORT_STOP'],)) - proxy_thread.daemon = True - proxy_thread.start() - logger.info('Unit calls will be bridged to: ' + str(UNIT)) - print(BRIDGES) reactor.run() diff --git a/hblink.py b/hblink.py index c9e95a8..7896396 100644 --- a/hblink.py +++ b/hblink.py @@ -94,11 +94,7 @@ def hblink_handler(_signal, _frame): # on matching and the action specified. def acl_check(_id, _acl): id = int_id(_id) - print(type(_acl)) for entry in _acl[1]: - print(id) - print(entry) - #print(entry[1]) if entry[0] <= id <= entry[1]: return _acl[0] return not _acl[0] diff --git a/rules_full_bridge-SAMPLE.py b/rules_full_bridge-SAMPLE.py index 1a7641d..03a8406 100755 --- a/rules_full_bridge-SAMPLE.py +++ b/rules_full_bridge-SAMPLE.py @@ -31,6 +31,8 @@ configuration file. timer to be reset. This is useful if you are using different TGIDs for voice traffic than triggering. If you are not, there is NO NEED to use this feature. ''' +# REQUIRED! - Path to your full_bridge.cfg +config_file = './full_bridge.cfg' BRIDGES_TEMPLATE = { 'STATEWIDE': [ @@ -40,7 +42,8 @@ BRIDGES_TEMPLATE = { 'ECHO': [ {'SYSTEM': 'MASTER-1', 'TS': 2, 'TGID': 9999, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'ON', 'ON': [9999,], 'OFF': [9,10], 'RESET': []}, {'SYSTEM': 'PEER-1', 'TS': 2, 'TGID': 9999, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'ON', 'ON': [9999,], 'OFF': [9,10], 'RESET': []}, - {'SYSTEM': 'PROXY_A', 'TS': 2, 'TGID': 9, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4], 'OFF': [7,10], 'RESET': []}, + # For proxy MASTERs, just put in the name of the stanza, and rules will be generated automatically + {'SYSTEM': 'HOTSPOT', 'TS': 2, 'TGID': 9, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4], 'OFF': [7,10], 'RESET': []}, ] } @@ -125,34 +128,26 @@ local_systems = { #################### Function used to build bridges for PROXY stanzas, leave alone #################### def build_bridges(): - import sms_aprs_config + import sms_aprs_config, random config_file = './gps_data.cfg' CONFIG = sms_aprs_config.build_config(config_file) -## print(CONFIG) built_bridge = BRIDGES_TEMPLATE.copy() - if CONFIG['PROXY_A']['ENABLED']: - proxy_a_masters = [] - n_systems = CONFIG['PROXY_A']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_A']['INTERNAL_PORT_START'] - n_count = 0 - while n_count < n_systems: - proxy_a_masters.append(CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)) - n_count = n_count + 1 - + proxy_list = [] + unique = str('_' + str(random.randint(100, 999))) + for i in CONFIG['SYSTEMS']: + if CONFIG['SYSTEMS'][i]['ENABLED'] == True: + if CONFIG['SYSTEMS'][i]['MODE'] == 'PROXY': + proxy_list.append(i + unique) + for b in BRIDGES_TEMPLATE: for s in BRIDGES_TEMPLATE[b]: - if s['SYSTEM'] == 'PROXY_A': - for m in proxy_a_masters: - built_bridge[b].append({'SYSTEM': m, 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': s['ON'], 'OFF': s['OFF'], 'RESET': s['RESET']}) - built_bridge[b].remove(s) - if s['SYSTEM'] == 'PROXY_B': - for m in proxy_b_masters: - built_bridge[b].append({'SYSTEM': m, 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': s['ON'], 'OFF': s['OFF'], 'RESET': s['RESET']}) - built_bridge[b].remove(s) - if s['SYSTEM'] == 'PROXY_C': - for m in proxy_c_masters: - built_bridge[b].append({'SYSTEM': m, 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': s['ON'], 'OFF': s['OFF'], 'RESET': s['RESET']}) - built_bridge[b].remove(s) - + if s['SYSTEM'] + unique in proxy_list: + n_systems = CONFIG['SYSTEMS'][i]['INTERNAL_PORT_STOP'] - CONFIG['SYSTEMS'][i]['INTERNAL_PORT_START'] + n_count = 0 + while n_count < n_systems: + built_bridge[b].append({'SYSTEM': s['SYSTEM'] + '-' + str(n_count), 'TS': s['TS'], 'TGID': s['TGID'], 'ACTIVE': s['ACTIVE'], 'TIMEOUT': s['TIMEOUT'], 'TO_TYPE': s['TO_TYPE'], 'ON': s['ON'], 'OFF': s['OFF'], 'RESET': s['RESET']}) + n_count = n_count + 1 + built_bridge[b].remove(s) return built_bridge BRIDGES = build_bridges() diff --git a/sms_aprs_config.py b/sms_aprs_config.py index 61dd9ac..e435c66 100755 --- a/sms_aprs_config.py +++ b/sms_aprs_config.py @@ -110,9 +110,6 @@ def build_config(_config_file): CONFIG['GPS_DATA'] = {} CONFIG['ALIASES'] = {} CONFIG['SYSTEMS'] = {} - CONFIG['PROXY_A'] = {} - CONFIG['PROXY_B'] = {} - CONFIG['PROXY_C'] = {} try: for section in config.sections(): @@ -201,78 +198,6 @@ def build_config(_config_file): 'STALE_TIME': config.getint(section, 'STALE_DAYS') * 86400, }) - elif section == 'PROXY_A': - CONFIG['PROXY_A'].update({ - 'ENABLED': config.getboolean(section, 'ENABLED'), - 'USE_EXTERNAL_PROXY': config.getboolean(section, 'USE_EXTERNAL_PROXY'), - 'NAME': config.get(section, 'NAME'), - 'REPEAT': config.getboolean(section, 'REPEAT'), - 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'), - 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'), - 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'), - 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'), - 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), - 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), - 'USE_ACL': config.getboolean(section, 'USE_ACL'), - 'REG_ACL': config.get(section, 'REG_ACL'), - 'SUB_ACL': config.get(section, 'SUB_ACL'), - 'TGID_TS1_ACL': config.get(section, 'TGID_TS1_ACL'), - 'TGID_TS2_ACL': config.get(section, 'TGID_TS2_ACL') - }) - elif section == 'PROXY_B': - CONFIG['PROXY_B'].update({ - 'ENABLED': config.getboolean(section, 'ENABLED'), - 'USE_EXTERNAL_PROXY': config.getboolean(section, 'USE_EXTERNAL_PROXY'), - 'NAME': config.get(section, 'NAME'), - 'REPEAT': config.getboolean(section, 'REPEAT'), - 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'), - 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'), - 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'), - 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'), - 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), - 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), - 'USE_ACL': config.getboolean(section, 'USE_ACL'), - 'REG_ACL': config.get(section, 'REG_ACL'), - 'SUB_ACL': config.get(section, 'SUB_ACL'), - 'TGID_TS1_ACL': config.get(section, 'TGID_TS1_ACL'), - 'TGID_TS2_ACL': config.get(section, 'TGID_TS2_ACL') - }) - elif section == 'PROXY_C': - CONFIG['PROXY_C'].update({ - 'ENABLED': config.getboolean(section, 'ENABLED'), - 'USE_EXTERNAL_PROXY': config.getboolean(section, 'USE_EXTERNAL_PROXY'), - 'NAME': config.get(section, 'NAME'), - 'REPEAT': config.getboolean(section, 'REPEAT'), - 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'), - 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'), - 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'), - 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'), - 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), - 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), - 'USE_ACL': config.getboolean(section, 'USE_ACL'), - 'REG_ACL': config.get(section, 'REG_ACL'), - 'SUB_ACL': config.get(section, 'SUB_ACL'), - 'TGID_TS1_ACL': config.get(section, 'TGID_TS1_ACL'), - 'TGID_TS2_ACL': config.get(section, 'TGID_TS2_ACL') - }) -## elif section == 'PROXY_TEMPLATE_2': -## CONFIG['PROXY_TEMPLATE'].update({ -## 'ENABLED': config.getboolean(section, 'ENABLED'), -## 'NAME': config.get(section, 'NAME'), -## 'REPEAT': config.getboolean(section, 'REPEAT'), -## 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'), -## 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'), -## 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'), -## 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'), -## 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), -## 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), -## 'USE_ACL': config.getboolean(section, 'USE_ACL'), -## 'REG_ACL': config.get(section, 'REG_ACL'), -## 'SUB_ACL': config.get(section, 'SUB_ACL'), -## 'TG1_ACL': config.get(section, 'TGID_TS1_ACL'), -## 'TG2_ACL': config.get(section, 'TGID_TS2_ACL') -## }) - elif config.getboolean(section, 'ENABLED'): if config.get(section, 'MODE') == 'PEER': CONFIG['SYSTEMS'].update({section: { @@ -384,24 +309,25 @@ def build_config(_config_file): }}) CONFIG['SYSTEMS'][section].update({'PEERS': {}}) -## elif config.get(section, 'MODE') == 'PROXY': -## CONFIG['SYSTEMS'].update({section: { -## 'MODE': config.get(section, 'MODE'), -## 'ENABLED': config.getboolean(section, 'ENABLED'), -## 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'), -## 'REPEAT': config.getboolean(section, 'REPEAT'), -## 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), -## 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'), -## 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'), -## 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'), -## 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), -## 'USE_ACL': config.getboolean(section, 'USE_ACL'), -## 'REG_ACL': config.get(section, 'REG_ACL'), -## 'SUB_ACL': config.get(section, 'SUB_ACL'), -## 'TG1_ACL': config.get(section, 'TG1_ACL'), -## 'TG2_ACL': config.get(section, 'TG2_ACL') -## }}) -## CONFIG['SYSTEMS'][section].update({'PEERS': {}}) + elif config.get(section, 'MODE') == 'PROXY': + CONFIG['SYSTEMS'].update({section: { + 'MODE': config.get(section, 'MODE'), + 'ENABLED': config.getboolean(section, 'ENABLED'), + 'EXTERNAL_PROXY_SCRIPT': config.getboolean(section, 'EXTERNAL_PROXY_SCRIPT'), + 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'), + 'REPEAT': config.getboolean(section, 'REPEAT'), + 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'), + 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'), + 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'), + 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'), + 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'), + 'USE_ACL': config.getboolean(section, 'USE_ACL'), + 'REG_ACL': config.get(section, 'REG_ACL'), + 'SUB_ACL': config.get(section, 'SUB_ACL'), + 'TG1_ACL': config.get(section, 'TG1_ACL'), + 'TG2_ACL': config.get(section, 'TG2_ACL') + }}) + CONFIG['SYSTEMS'][section].update({'PEERS': {}}) elif config.get(section, 'MODE') == 'OPENBRIDGE': CONFIG['SYSTEMS'].update({section: {