Default reflectors now working
This commit is contained in:
parent
8cad240efc
commit
92dab73400
@ -175,6 +175,36 @@ def make_single_bridge(_tgid,_sourcesystem,_slot):
|
||||
if _system == 'OBP-BM':
|
||||
BRIDGES[_tgid_s].append({'SYSTEM': _system, 'TS': 1, 'TGID': _tgid,'ACTIVE': True,'TIMEOUT': '','TO_TYPE': 'NONE','OFF': [],'ON': [],'RESET': [], 'TIMER': time()})
|
||||
|
||||
def make_default_reflector(reflector,system):
|
||||
bridge = '#'+str(reflector)
|
||||
_tmout = CONFIG['SYSTEMS'][system]['DEFAULT_UA_TIMER']
|
||||
if bridge not in BRIDGES:
|
||||
BRIDGES[bridge] = []
|
||||
make_single_reflector(bytes_3(reflector), system)
|
||||
bridgetemp = []
|
||||
for bridgesystem in BRIDGES[bridge]:
|
||||
if bridgesystem['SYSTEM'] == system and bridgesystem['TS'] == 2:
|
||||
bridgetemp.append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(9),'ACTIVE': True,'TIMEOUT': _tmout * 60,'TO_TYPE': 'OFF','OFF': [],'ON': [bytes_3(reflector),],'RESET': [], 'TIMER': time() + (_tmout * 60)})
|
||||
else:
|
||||
bridgetemp.append(bridgesystem)
|
||||
|
||||
BRIDGES[bridge] = bridgetemp
|
||||
|
||||
def reset_default_reflector(reflector,system):
|
||||
bridge = '#'+str(reflector)
|
||||
_tmout = CONFIG['SYSTEMS'][system]['DEFAULT_UA_TIMER']
|
||||
if bridge not in BRIDGES:
|
||||
BRIDGES[bridge] = []
|
||||
make_single_reflector(bytes_3(reflector), system)
|
||||
bridgetemp = []
|
||||
for bridgesystem in BRIDGES[bridge]:
|
||||
if bridgesystem['SYSTEM'] == system and bridgesystem['TS'] == 2:
|
||||
bridgetemp.append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(9),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(reflector),],'RESET': [], 'TIMER': time() + (_tmout * 60)})
|
||||
else:
|
||||
bridgetemp.append(bridgesystem)
|
||||
|
||||
BRIDGES[bridge] = bridgetemp
|
||||
|
||||
def make_single_reflector(_tgid,_sourcesystem):
|
||||
_tgid_s = str(int_id(_tgid))
|
||||
_bridge = '#' + _tgid_s
|
||||
@ -202,7 +232,7 @@ def rule_timer_loop():
|
||||
_system['ACTIVE'] = False
|
||||
logger.info('(ROUTER) Conference Bridge TIMEOUT: DEACTIVATE System: %s, Bridge: %s, TS: %s, TGID: %s', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']))
|
||||
if _bridge[0:1] == '#':
|
||||
callInThread(disconnectedVoice,_system['SYSTEM'])
|
||||
reactor.callInThread(disconnectedVoice,_system['SYSTEM'])
|
||||
else:
|
||||
timeout_in = _system['TIMER'] - _now
|
||||
logger.info('(ROUTER) Conference Bridge ACTIVE (ON timer running): System: %s Bridge: %s, TS: %s, TGID: %s, Timeout in: %.2fs,', _system['SYSTEM'], _bridge, _system['TS'], int_id(_system['TGID']), timeout_in)
|
||||
@ -271,17 +301,31 @@ def stream_trimmer_loop():
|
||||
else:
|
||||
logger.error('(%s) Attemped to remove OpenBridge Stream ID %s not in the Stream ID list: %s', system, int_id(stream_id), [id for id in systems[system].STATUS])
|
||||
|
||||
def sendSpeech(self,speech):
|
||||
sleep(1)
|
||||
while True:
|
||||
try:
|
||||
pkt = next(speech)
|
||||
except StopIteration:
|
||||
break
|
||||
#Packet every 60ms
|
||||
sleep(0.058)
|
||||
#Call the actual packet send in the reactor thread
|
||||
#as it's not thread safe
|
||||
reactor.callFromThread(self.send_system,pkt)
|
||||
#print(len(pkt), pkt[4], pkt)
|
||||
|
||||
def disconnectedVoice(system):
|
||||
logger.info('(%s) Sending disconnected voice',system)
|
||||
_say = [words['silence']]
|
||||
if CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'] > 0:
|
||||
for number in CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR']:
|
||||
_say.append[number]
|
||||
_say.append['silence']
|
||||
_say.append(words[number])
|
||||
_say.append(words['silence'])
|
||||
else:
|
||||
_say.append = words['notlinked']
|
||||
_say.append(words['notlinked'])
|
||||
|
||||
speech = pkt_gen(bytes_3(tg), bytes_3(tg), bytes_4(tg), 1, _say)
|
||||
speech = pkt_gen(bytes_3(9), bytes_3(9), bytes_4(9), 1, _say)
|
||||
|
||||
sleep(1)
|
||||
while True:
|
||||
@ -422,6 +466,15 @@ def mysql_config_check():
|
||||
logger.debug('(MYSQL) %s Passphrase changed on enabled system. Kicking peers',system)
|
||||
systems[system].master_dereg()
|
||||
|
||||
elif SQLCONFIG[system]['DEFAULT_REFLECTOR'] != CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'] and CONFIG['SYSTEMS'][system]['ENABLED'] == True:
|
||||
if SQLCONFIG[system]['DEFAULT_REFLECTOR'] > 0:
|
||||
logger.debug('(MYSQL) %s default reflector changed, updating',system)
|
||||
reset_default_reflector(CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'],system)
|
||||
make_default_reflector(SQLCONFIG[system]['DEFAULT_REFLECTOR'],system)
|
||||
else:
|
||||
logger.debug('(MYSQL) %s default reflector disabled, updating',system)
|
||||
reset_default_reflector(CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'],system)
|
||||
|
||||
#Add MySQL config data to config dict
|
||||
CONFIG['SYSTEMS'].update(SQLCONFIG)
|
||||
|
||||
@ -814,21 +867,6 @@ class routerHBP(HBSYSTEM):
|
||||
|
||||
speech = pkt_gen(bytes_3(9), bytes_3(9), bytes_4(9), 1, _say)
|
||||
|
||||
#Nested function - see below
|
||||
def sendSpeech(self,speech):
|
||||
sleep(1)
|
||||
while True:
|
||||
try:
|
||||
pkt = next(speech)
|
||||
except StopIteration:
|
||||
break
|
||||
#Packet every 60ms
|
||||
sleep(0.058)
|
||||
#Call the actual packet send in the reactor thread
|
||||
#as it's not thread safe
|
||||
reactor.callFromThread(self.send_system,pkt)
|
||||
#print(len(pkt), pkt[4], pkt)
|
||||
|
||||
#call speech in a thread as it contains sleep() and hence could block the reactor
|
||||
reactor.callInThread(sendSpeech,self,speech)
|
||||
|
||||
@ -1193,7 +1231,7 @@ if __name__ == '__main__':
|
||||
logger.debug('(MYSQL) problem with SQL query, aborting')
|
||||
sql.close()
|
||||
logger.debug('(MYSQL) building ACLs')
|
||||
# Registration ACLs
|
||||
# Build ACLs
|
||||
for system in SQLCONFIG:
|
||||
SQLCONFIG[system]['REG_ACL'] = acl_build(SQLCONFIG[system]['REG_ACL'], PEER_MAX)
|
||||
for acl in ['SUB_ACL', 'TG1_ACL', 'TG2_ACL']:
|
||||
@ -1230,6 +1268,12 @@ if __name__ == '__main__':
|
||||
# Build the routing rules file
|
||||
BRIDGES = make_bridges(rules_module.BRIDGES)
|
||||
|
||||
# Default reflector
|
||||
logger.debug('(ROUTER) Setting default reflectors')
|
||||
for system in CONFIG['SYSTEMS']:
|
||||
if CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'] > 0:
|
||||
make_default_reflector(CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'],system)
|
||||
|
||||
# INITIALIZE THE REPORTING LOOP
|
||||
if CONFIG['REPORTS']['REPORT']:
|
||||
report_server = config_reports(CONFIG, bridgeReportFactory)
|
||||
|
Loading…
Reference in New Issue
Block a user