rewrite PROXY master instance
This commit is contained in:
parent
60c790f5cb
commit
ff25a032c6
@ -302,41 +302,30 @@ TGID_TS1_ACL: PERMIT:ALL
|
|||||||
TGID_TS2_ACL: PERMIT:ALL
|
TGID_TS2_ACL: PERMIT:ALL
|
||||||
|
|
||||||
|
|
||||||
# Utilizing the hotspot proxy from FreeDMR
|
# Utilizing the hotspot proxy modified and used from FreeDMR
|
||||||
[PROXY_TEMPLATE]
|
[HOTSPOT]
|
||||||
ENABLED: True
|
MODE: PROXY
|
||||||
# Name that generated systems begin with
|
ENABLED: False
|
||||||
NAME: HOTSPOT
|
# Configure as you would for a normal MASTER. These options will apply to all connected peers.
|
||||||
# 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
|
|
||||||
|
|
||||||
STATIC_APRS_POSITION_ENABLED: False
|
STATIC_APRS_POSITION_ENABLED: False
|
||||||
REPEAT: True
|
REPEAT: True
|
||||||
PASSPHRASE: password
|
EXPORT_AMBE: False
|
||||||
|
PASSPHRASE: passw0rd
|
||||||
GROUP_HANGTIME: 5
|
GROUP_HANGTIME: 5
|
||||||
USE_ACL: True
|
USE_ACL: True
|
||||||
REG_ACL: DENY:1
|
REG_ACL: DENY:1
|
||||||
SUB_ACL: DENY:1
|
SUB_ACL: DENY:1
|
||||||
TGID_TS1_ACL: PERMIT:ALL
|
TG1_ACL: PERMIT:ALL
|
||||||
TGID_TS2_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
|
# PEER INSTANCES - DUPLICATE SECTION FOR MULTIPLE PEERS
|
||||||
|
151
full_bridge.py
151
full_bridge.py
@ -3,6 +3,7 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# Copyright (C) 2016-2019 Cortney T. Buffington, N0MJS <n0mjs@me.com>
|
# Copyright (C) 2016-2019 Cortney T. Buffington, N0MJS <n0mjs@me.com>
|
||||||
# GPS/Data - Copyright (C) 2021 Eric Craw, KF7EEL <kf7eel@qsl.net>
|
# 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
|
# Annotated modifications Copyright (C) 2021 Xavier FRS2013
|
||||||
# Static position by IU7IGU
|
# 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))
|
reactor.listenUDP(ListenPort,Proxy(Master,ListenPort,CONNTRACK,BlackList,Timeout,Debug,DestportStart,DestPortEnd))
|
||||||
|
|
||||||
def loopingErrHandle(failure):
|
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()
|
reactor.stop()
|
||||||
|
|
||||||
def stats():
|
def stats():
|
||||||
@ -2874,110 +2875,51 @@ if __name__ == '__main__':
|
|||||||
logger.info('(REPORT) TCP Socket reporting not configured')
|
logger.info('(REPORT) TCP Socket reporting not configured')
|
||||||
|
|
||||||
# HBlink instance creation
|
# HBlink instance creation
|
||||||
logger.info('(GLOBAL) HBlink \'bridge.py\' -- SYSTEM STARTING...')
|
logger.info('(GLOBAL) HBlink3 Extended \'full_bridge.py\' -- SYSTEM STARTING...')
|
||||||
|
|
||||||
proxy_a_masters = []
|
# Generate list of Enabled MODE:PROXY masters
|
||||||
proxy_b_masters = []
|
proxy_master_list = []
|
||||||
proxy_c_masters = []
|
for i in CONFIG['SYSTEMS']:
|
||||||
if CONFIG['PROXY_A']['ENABLED']:
|
if CONFIG['SYSTEMS'][i]['ENABLED'] == True:
|
||||||
#generate_proxy_masters()
|
if CONFIG['SYSTEMS'][i]['MODE'] == 'PROXY':
|
||||||
n_systems = CONFIG['PROXY_A']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_A']['INTERNAL_PORT_START']
|
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
|
n_count = 0
|
||||||
while n_count < n_systems:
|
while n_count < n_systems:
|
||||||
|
CONFIG['SYSTEMS'].update({i + '-' + str(n_count): {
|
||||||
CONFIG['SYSTEMS'].update({CONFIG['PROXY_A']['NAME'] + '-' + str(n_count): {
|
|
||||||
'MODE': 'MASTER',
|
'MODE': 'MASTER',
|
||||||
'ENABLED': True,
|
'ENABLED': True,
|
||||||
'STATIC_APRS_POSITION_ENABLED': CONFIG['PROXY_A']['STATIC_APRS_POSITION_ENABLED'],
|
'STATIC_APRS_POSITION_ENABLED': CONFIG['SYSTEMS'][i]['STATIC_APRS_POSITION_ENABLED'],
|
||||||
'REPEAT': CONFIG['PROXY_A']['REPEAT'],
|
'REPEAT': CONFIG['SYSTEMS'][i]['REPEAT'],
|
||||||
'MAX_PEERS': 1,
|
'MAX_PEERS': 1,
|
||||||
'IP': '127.0.0.1',
|
'IP': '127.0.0.1',
|
||||||
'PORT': CONFIG['PROXY_A']['INTERNAL_PORT_START'] + n_count,
|
'PORT': CONFIG['SYSTEMS'][i]['INTERNAL_PORT_START'] + n_count,
|
||||||
'PASSPHRASE': CONFIG['PROXY_A']['PASSPHRASE'],
|
'PASSPHRASE': CONFIG['SYSTEMS'][i]['PASSPHRASE'],
|
||||||
'GROUP_HANGTIME': CONFIG['PROXY_A']['GROUP_HANGTIME'],
|
'GROUP_HANGTIME': CONFIG['SYSTEMS'][i]['GROUP_HANGTIME'],
|
||||||
'USE_ACL': CONFIG['PROXY_A']['USE_ACL'],
|
'USE_ACL': CONFIG['SYSTEMS'][i]['USE_ACL'],
|
||||||
'REG_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_A']['REG_ACL'], 4294967295),
|
'REG_ACL': CONFIG['SYSTEMS'][i]['REG_ACL'],
|
||||||
'SUB_ACL': sms_aprs_config.acl_build(CONFIG['PROXY_A']['SUB_ACL'], 4294967295),
|
'SUB_ACL': CONFIG['SYSTEMS'][i]['SUB_ACL'],
|
||||||
'TGID_TS1_ACL': CONFIG['PROXY_A']['TGID_TS1_ACL'],
|
'TGID_TS1_ACL': CONFIG['SYSTEMS'][i]['TG1_ACL'],
|
||||||
'TGID_TS2_ACL': CONFIG['PROXY_A']['TGID_TS2_ACL']
|
'TGID_TS2_ACL': CONFIG['SYSTEMS'][i]['TG2_ACL']
|
||||||
}})
|
}})
|
||||||
CONFIG['SYSTEMS'][CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)].update({'PEERS': {}})
|
CONFIG['SYSTEMS'][i + '-' + str(n_count)].update({'PEERS': {}})
|
||||||
systems[CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_A']['NAME'] + '-' + str(n_count), CONFIG, report_server)
|
systems[i + '-' + str(n_count)] = routerHBP(i + '-' + str(n_count), CONFIG, report_server)
|
||||||
n_count = n_count + 1
|
n_count = n_count + 1
|
||||||
|
# Remove original MASTER stanza to prevent errors
|
||||||
if CONFIG['PROXY_B']['ENABLED']:
|
CONFIG['SYSTEMS'].pop(i)
|
||||||
#generate_proxy_masters()
|
logger.info('Generated MASTER instances for proxy set: ' + i)
|
||||||
n_systems = CONFIG['PROXY_B']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_B']['INTERNAL_PORT_START']
|
|
||||||
n_count = 0
|
|
||||||
while n_count < n_systems:
|
|
||||||
|
|
||||||
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)
|
BRIDGES = make_bridges(rules_module.BRIDGES)
|
||||||
exclude = rules_module.EXCLUDE_FROM_UNIT
|
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 = threading.Thread(target=aprs_rx, args=(aprs_callsign, aprs_passcode, aprs_server, aprs_port, aprs_filter, user_ssid,))
|
||||||
aprs_thread.daemon = True
|
aprs_thread.daemon = True
|
||||||
aprs_thread.start()
|
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))
|
logger.info('Unit calls will be bridged to: ' + str(UNIT))
|
||||||
print(BRIDGES)
|
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
@ -94,11 +94,7 @@ def hblink_handler(_signal, _frame):
|
|||||||
# on matching and the action specified.
|
# on matching and the action specified.
|
||||||
def acl_check(_id, _acl):
|
def acl_check(_id, _acl):
|
||||||
id = int_id(_id)
|
id = int_id(_id)
|
||||||
print(type(_acl))
|
|
||||||
for entry in _acl[1]:
|
for entry in _acl[1]:
|
||||||
print(id)
|
|
||||||
print(entry)
|
|
||||||
#print(entry[1])
|
|
||||||
if entry[0] <= id <= entry[1]:
|
if entry[0] <= id <= entry[1]:
|
||||||
return _acl[0]
|
return _acl[0]
|
||||||
return not _acl[0]
|
return not _acl[0]
|
||||||
|
@ -31,6 +31,8 @@ configuration file.
|
|||||||
timer to be reset. This is useful if you are using different TGIDs for voice traffic than
|
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.
|
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 = {
|
BRIDGES_TEMPLATE = {
|
||||||
'STATEWIDE': [
|
'STATEWIDE': [
|
||||||
@ -40,7 +42,8 @@ BRIDGES_TEMPLATE = {
|
|||||||
'ECHO': [
|
'ECHO': [
|
||||||
{'SYSTEM': 'MASTER-1', 'TS': 2, 'TGID': 9999, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'ON', 'ON': [9999,], 'OFF': [9,10], 'RESET': []},
|
{'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': '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 ####################
|
#################### Function used to build bridges for PROXY stanzas, leave alone ####################
|
||||||
def build_bridges():
|
def build_bridges():
|
||||||
import sms_aprs_config
|
import sms_aprs_config, random
|
||||||
config_file = './gps_data.cfg'
|
config_file = './gps_data.cfg'
|
||||||
CONFIG = sms_aprs_config.build_config(config_file)
|
CONFIG = sms_aprs_config.build_config(config_file)
|
||||||
## print(CONFIG)
|
|
||||||
built_bridge = BRIDGES_TEMPLATE.copy()
|
built_bridge = BRIDGES_TEMPLATE.copy()
|
||||||
if CONFIG['PROXY_A']['ENABLED']:
|
proxy_list = []
|
||||||
proxy_a_masters = []
|
unique = str('_' + str(random.randint(100, 999)))
|
||||||
n_systems = CONFIG['PROXY_A']['INTERNAL_PORT_STOP'] - CONFIG['PROXY_A']['INTERNAL_PORT_START']
|
for i in CONFIG['SYSTEMS']:
|
||||||
n_count = 0
|
if CONFIG['SYSTEMS'][i]['ENABLED'] == True:
|
||||||
while n_count < n_systems:
|
if CONFIG['SYSTEMS'][i]['MODE'] == 'PROXY':
|
||||||
proxy_a_masters.append(CONFIG['PROXY_A']['NAME'] + '-' + str(n_count))
|
proxy_list.append(i + unique)
|
||||||
n_count = n_count + 1
|
|
||||||
|
|
||||||
for b in BRIDGES_TEMPLATE:
|
for b in BRIDGES_TEMPLATE:
|
||||||
for s in BRIDGES_TEMPLATE[b]:
|
for s in BRIDGES_TEMPLATE[b]:
|
||||||
if s['SYSTEM'] == 'PROXY_A':
|
if s['SYSTEM'] + unique in proxy_list:
|
||||||
for m in proxy_a_masters:
|
n_systems = CONFIG['SYSTEMS'][i]['INTERNAL_PORT_STOP'] - CONFIG['SYSTEMS'][i]['INTERNAL_PORT_START']
|
||||||
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']})
|
n_count = 0
|
||||||
built_bridge[b].remove(s)
|
while n_count < n_systems:
|
||||||
if s['SYSTEM'] == 'PROXY_B':
|
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']})
|
||||||
for m in proxy_b_masters:
|
n_count = n_count + 1
|
||||||
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)
|
||||||
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)
|
|
||||||
|
|
||||||
return built_bridge
|
return built_bridge
|
||||||
|
|
||||||
BRIDGES = build_bridges()
|
BRIDGES = build_bridges()
|
||||||
|
@ -110,9 +110,6 @@ def build_config(_config_file):
|
|||||||
CONFIG['GPS_DATA'] = {}
|
CONFIG['GPS_DATA'] = {}
|
||||||
CONFIG['ALIASES'] = {}
|
CONFIG['ALIASES'] = {}
|
||||||
CONFIG['SYSTEMS'] = {}
|
CONFIG['SYSTEMS'] = {}
|
||||||
CONFIG['PROXY_A'] = {}
|
|
||||||
CONFIG['PROXY_B'] = {}
|
|
||||||
CONFIG['PROXY_C'] = {}
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for section in config.sections():
|
for section in config.sections():
|
||||||
@ -201,78 +198,6 @@ def build_config(_config_file):
|
|||||||
'STALE_TIME': config.getint(section, 'STALE_DAYS') * 86400,
|
'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'):
|
elif config.getboolean(section, 'ENABLED'):
|
||||||
if config.get(section, 'MODE') == 'PEER':
|
if config.get(section, 'MODE') == 'PEER':
|
||||||
CONFIG['SYSTEMS'].update({section: {
|
CONFIG['SYSTEMS'].update({section: {
|
||||||
@ -384,24 +309,25 @@ def build_config(_config_file):
|
|||||||
}})
|
}})
|
||||||
CONFIG['SYSTEMS'][section].update({'PEERS': {}})
|
CONFIG['SYSTEMS'][section].update({'PEERS': {}})
|
||||||
|
|
||||||
## elif config.get(section, 'MODE') == 'PROXY':
|
elif config.get(section, 'MODE') == 'PROXY':
|
||||||
## CONFIG['SYSTEMS'].update({section: {
|
CONFIG['SYSTEMS'].update({section: {
|
||||||
## 'MODE': config.get(section, 'MODE'),
|
'MODE': config.get(section, 'MODE'),
|
||||||
## 'ENABLED': config.getboolean(section, 'ENABLED'),
|
'ENABLED': config.getboolean(section, 'ENABLED'),
|
||||||
## 'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'),
|
'EXTERNAL_PROXY_SCRIPT': config.getboolean(section, 'EXTERNAL_PROXY_SCRIPT'),
|
||||||
## 'REPEAT': config.getboolean(section, 'REPEAT'),
|
'STATIC_APRS_POSITION_ENABLED': config.getboolean(section, 'STATIC_APRS_POSITION_ENABLED'),
|
||||||
## 'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'),
|
'REPEAT': config.getboolean(section, 'REPEAT'),
|
||||||
## 'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'),
|
'PASSPHRASE': bytes(config.get(section, 'PASSPHRASE'), 'utf-8'),
|
||||||
## 'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'),
|
'EXTERNAL_PORT': config.getint(section, 'EXTERNAL_PORT'),
|
||||||
## 'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'),
|
'INTERNAL_PORT_START': config.getint(section, 'INTERNAL_PORT_START'),
|
||||||
## 'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'),
|
'INTERNAL_PORT_STOP': config.getint(section, 'INTERNAL_PORT_STOP'),
|
||||||
## 'USE_ACL': config.getboolean(section, 'USE_ACL'),
|
'GROUP_HANGTIME': config.getint(section, 'GROUP_HANGTIME'),
|
||||||
## 'REG_ACL': config.get(section, 'REG_ACL'),
|
'USE_ACL': config.getboolean(section, 'USE_ACL'),
|
||||||
## 'SUB_ACL': config.get(section, 'SUB_ACL'),
|
'REG_ACL': config.get(section, 'REG_ACL'),
|
||||||
## 'TG1_ACL': config.get(section, 'TG1_ACL'),
|
'SUB_ACL': config.get(section, 'SUB_ACL'),
|
||||||
## 'TG2_ACL': config.get(section, 'TG2_ACL')
|
'TG1_ACL': config.get(section, 'TG1_ACL'),
|
||||||
## }})
|
'TG2_ACL': config.get(section, 'TG2_ACL')
|
||||||
## CONFIG['SYSTEMS'][section].update({'PEERS': {}})
|
}})
|
||||||
|
CONFIG['SYSTEMS'][section].update({'PEERS': {}})
|
||||||
|
|
||||||
elif config.get(section, 'MODE') == 'OPENBRIDGE':
|
elif config.get(section, 'MODE') == 'OPENBRIDGE':
|
||||||
CONFIG['SYSTEMS'].update({section: {
|
CONFIG['SYSTEMS'].update({section: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user