first possible working built in PROXY
This commit is contained in:
parent
13d86a5b88
commit
60c790f5cb
@ -118,7 +118,7 @@ __maintainer__ = 'Eric Craw, KF7EEL'
|
|||||||
__email__ = 'kf7eel@qsl.net'
|
__email__ = 'kf7eel@qsl.net'
|
||||||
|
|
||||||
# Module gobal varaibles
|
# Module gobal varaibles
|
||||||
|
BRIDGES = {}
|
||||||
#### from gps_data.py ###
|
#### from gps_data.py ###
|
||||||
##################################################################################################
|
##################################################################################################
|
||||||
|
|
||||||
@ -1175,30 +1175,31 @@ def config_reports(_config, _factory):
|
|||||||
# configuration file and listed as "active". It can be empty,
|
# configuration file and listed as "active". It can be empty,
|
||||||
# but it has to exist.
|
# but it has to exist.
|
||||||
def make_bridges(_rules):
|
def make_bridges(_rules):
|
||||||
global proxy_a_masters
|
|
||||||
# Convert integer GROUP ID numbers from the config into hex strings
|
# Convert integer GROUP ID numbers from the config into hex strings
|
||||||
# we need to send in the actual data packets.
|
# we need to send in the actual data packets.
|
||||||
for _bridge in _rules:
|
for _bridge in _rules:
|
||||||
for _system in _rules[_bridge]:
|
for _system in _rules[_bridge]:
|
||||||
if _system['SYSTEM'] not in CONFIG['SYSTEMS'] and 'PROXY_' not in _system['SYSTEM']:
|
if _system['SYSTEM'] not in CONFIG['SYSTEMS']:
|
||||||
sys.exit('ERROR: Conference bridge "{}" references a system named "{}" that is not enabled in the main configuration'.format(_bridge, _system['SYSTEM']))
|
sys.exit('ERROR: Conference bridge "{}" references a system named "{}" that is not enabled in the main configuration'.format(_bridge, _system['SYSTEM']))
|
||||||
elif 'PROXY_' in _system['SYSTEM']:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
print(_system['SYSTEM'])
|
|
||||||
_system['TGID'] = bytes_3(_system['TGID'])
|
_system['TGID'] = bytes_3(_system['TGID'])
|
||||||
for i, e in enumerate(_system['ON']):
|
for i, e in enumerate(_system['ON']):
|
||||||
print((i))
|
# If _system['ON'][i] or _system['OFF'][i] bytes, convert to int
|
||||||
print((e))
|
try:
|
||||||
_system['ON'][i] = bytes_3(_system['ON'][i])
|
_system['ON'][i] = bytes_3(_system['ON'][i])
|
||||||
|
except:
|
||||||
|
_system['ON'][i] = bytes_3(int.from_bytes(_system['ON'][i], "big"))
|
||||||
for i, e in enumerate(_system['OFF']):
|
for i, e in enumerate(_system['OFF']):
|
||||||
|
try:
|
||||||
_system['OFF'][i] = bytes_3(_system['OFF'][i])
|
_system['OFF'][i] = bytes_3(_system['OFF'][i])
|
||||||
|
except:
|
||||||
|
_system['OFF'][i] = bytes_3(int.from_bytes(_system['OFF'][i], "big"))
|
||||||
|
|
||||||
_system['TIMEOUT'] = _system['TIMEOUT']*60
|
_system['TIMEOUT'] = _system['TIMEOUT']*60
|
||||||
if _system['ACTIVE'] == True:
|
if _system['ACTIVE'] == True:
|
||||||
_system['TIMER'] = time() + _system['TIMEOUT']
|
_system['TIMER'] = time() + _system['TIMEOUT']
|
||||||
else:
|
else:
|
||||||
_system['TIMER'] = time()
|
_system['TIMER'] = time()
|
||||||
#print(_rules)
|
|
||||||
return _rules
|
return _rules
|
||||||
|
|
||||||
|
|
||||||
@ -2718,7 +2719,6 @@ class bridgeReportFactory(reportFactory):
|
|||||||
#************************************************
|
#************************************************
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
#global BRIDGES
|
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
@ -2872,6 +2872,7 @@ if __name__ == '__main__':
|
|||||||
else:
|
else:
|
||||||
report_server = None
|
report_server = None
|
||||||
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) HBlink \'bridge.py\' -- SYSTEM STARTING...')
|
||||||
|
|
||||||
@ -2902,7 +2903,6 @@ if __name__ == '__main__':
|
|||||||
}})
|
}})
|
||||||
CONFIG['SYSTEMS'][CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)].update({'PEERS': {}})
|
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)
|
systems[CONFIG['PROXY_A']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_A']['NAME'] + '-' + str(n_count), CONFIG, report_server)
|
||||||
proxy_a_masters.append(CONFIG['PROXY_A']['NAME'] + '-' + str(n_count))
|
|
||||||
n_count = n_count + 1
|
n_count = n_count + 1
|
||||||
|
|
||||||
if CONFIG['PROXY_B']['ENABLED']:
|
if CONFIG['PROXY_B']['ENABLED']:
|
||||||
@ -2929,7 +2929,6 @@ if __name__ == '__main__':
|
|||||||
}})
|
}})
|
||||||
CONFIG['SYSTEMS'][CONFIG['PROXY_B']['NAME'] + '-' + str(n_count)].update({'PEERS': {}})
|
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)
|
systems[CONFIG['PROXY_B']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_B']['NAME'] + '-' + str(n_count), CONFIG, report_server)
|
||||||
proxy_b_masters.append(CONFIG['PROXY_B']['NAME'] + '-' + str(n_count))
|
|
||||||
n_count = n_count + 1
|
n_count = n_count + 1
|
||||||
if CONFIG['PROXY_C']['ENABLED']:
|
if CONFIG['PROXY_C']['ENABLED']:
|
||||||
#generate_proxy_masters()
|
#generate_proxy_masters()
|
||||||
@ -2955,9 +2954,33 @@ if __name__ == '__main__':
|
|||||||
}})
|
}})
|
||||||
CONFIG['SYSTEMS'][CONFIG['PROXY_C']['NAME'] + '-' + str(n_count)].update({'PEERS': {}})
|
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)
|
systems[CONFIG['PROXY_C']['NAME'] + '-' + str(n_count)] = routerHBP(CONFIG['PROXY_C']['NAME'] + '-' + str(n_count), CONFIG, report_server)
|
||||||
proxy_c_masters.append(CONFIG['PROXY_c']['NAME'] + '-' + str(n_count))
|
|
||||||
n_count = n_count + 1
|
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
|
||||||
|
|
||||||
for system in CONFIG['SYSTEMS']:
|
for system in CONFIG['SYSTEMS']:
|
||||||
if CONFIG['SYSTEMS'][system]['ENABLED']:
|
if CONFIG['SYSTEMS'][system]['ENABLED']:
|
||||||
if CONFIG['SYSTEMS'][system]['MODE'] == 'OPENBRIDGE':
|
if CONFIG['SYSTEMS'][system]['MODE'] == 'OPENBRIDGE':
|
||||||
@ -2973,33 +2996,6 @@ if __name__ == '__main__':
|
|||||||
logger.error('(GLOBAL) STOPPING REACTOR TO AVOID MEMORY LEAK: Unhandled error in timed loop.\n %s', failure)
|
logger.error('(GLOBAL) STOPPING REACTOR TO AVOID MEMORY LEAK: Unhandled error in timed loop.\n %s', failure)
|
||||||
reactor.stop()
|
reactor.stop()
|
||||||
|
|
||||||
# Build the routing rules file
|
|
||||||
bridge_dict = rules_module.BRIDGES
|
|
||||||
print(bridge_dict)
|
|
||||||
for b in bridge_dict:
|
|
||||||
for s in bridge_dict[b]:
|
|
||||||
if s['SYSTEM'] == 'PROXY_A':
|
|
||||||
for m in proxy_a_masters:
|
|
||||||
print(type(s['ON']))
|
|
||||||
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_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']})
|
|
||||||
# bridge_dict[b].remove(s)
|
|
||||||
|
|
||||||
BRIDGES = make_bridges(bridge_dict)
|
|
||||||
|
|
||||||
print(bridge_dict)
|
|
||||||
print()
|
|
||||||
print(BRIDGES)
|
|
||||||
|
|
||||||
exclude = rules_module.EXCLUDE_FROM_UNIT
|
|
||||||
|
|
||||||
|
|
||||||
# Get rule parameter for private calls
|
# Get rule parameter for private calls
|
||||||
#UNIT = rules_module.UNIT
|
#UNIT = rules_module.UNIT
|
||||||
@ -3045,5 +3041,5 @@ if __name__ == '__main__':
|
|||||||
proxy_thread.start()
|
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)
|
print(BRIDGES)
|
||||||
reactor.run()
|
reactor.run()
|
||||||
|
@ -32,7 +32,7 @@ configuration file.
|
|||||||
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.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
BRIDGES = {
|
BRIDGES_TEMPLATE = {
|
||||||
'STATEWIDE': [
|
'STATEWIDE': [
|
||||||
{'SYSTEM': 'MASTER-1', 'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4,], 'OFF': [7,10], 'RESET': []},
|
{'SYSTEM': 'MASTER-1', 'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4,], 'OFF': [7,10], 'RESET': []},
|
||||||
{'SYSTEM': 'PEER-2', 'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4,], 'OFF': [7,10], 'RESET': []},
|
{'SYSTEM': 'PEER-2', 'TS': 2, 'TGID': 3129, 'ACTIVE': True, 'TIMEOUT': 2, 'TO_TYPE': 'NONE', 'ON': [4,], 'OFF': [7,10], 'RESET': []},
|
||||||
@ -40,6 +40,7 @@ BRIDGES = {
|
|||||||
'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': []},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,7 +48,6 @@ BRIDGES = {
|
|||||||
list the names of each system that should NOT be bridged unit to unit (individual) calls.
|
list the names of each system that should NOT be bridged unit to unit (individual) calls.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
#UNIT = ['MASTER-1', 'PEER-1']
|
|
||||||
EXCLUDE_FROM_UNIT = ['OBP-1', 'PEER-1']
|
EXCLUDE_FROM_UNIT = ['OBP-1', 'PEER-1']
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -123,7 +123,40 @@ local_systems = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#################### Function used to build bridges for PROXY stanzas, leave alone ####################
|
||||||
|
def build_bridges():
|
||||||
|
import sms_aprs_config
|
||||||
|
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
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
return built_bridge
|
||||||
|
|
||||||
|
BRIDGES = build_bridges()
|
||||||
|
############################################################################################################33
|
||||||
|
|
||||||
'''
|
'''
|
||||||
This is for testing the syntax of the file. It won't eliminate all errors, but running this file
|
This is for testing the syntax of the file. It won't eliminate all errors, but running this file
|
||||||
@ -133,5 +166,4 @@ like it were a Python program itself will tell you if the syntax is correct!
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
pprint(BRIDGES)
|
pprint(BRIDGES)
|
||||||
print(UNIT)
|
pprint(EXCLUDE_FROM_UNIT)
|
||||||
print(STATIC_UNIT)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user