rewrite PROXY master instance

This commit is contained in:
KF7EEL 2021-06-05 16:25:08 -07:00
parent 60c790f5cb
commit ff25a032c6
5 changed files with 93 additions and 264 deletions

View File

@ -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

View File

@ -3,6 +3,7 @@
###############################################################################
# Copyright (C) 2016-2019 Cortney T. Buffington, N0MJS <n0mjs@me.com>
# GPS/Data - Copyright (C) 2021 Eric Craw, KF7EEL <kf7eel@qsl.net>
# hotspot_proxy() - Copyright (C) 2020 Simon Adlem, G7RZU <g7rzu@gb7fr.org.uk>
# 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()

View File

@ -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]

View File

@ -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()

View File

@ -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: {