diff --git a/bridge_master.py b/bridge_master.py index 4f9750b..7b4570f 100644 --- a/bridge_master.py +++ b/bridge_master.py @@ -65,10 +65,6 @@ from read_ambe import readAMBE #Remap some words for certain languages from i8n_voice_map import voiceMap - -#MySQL -from mysql_config import useMYSQL - # Stuff for socket reporting import pickle # REMOVE LATER from datetime import datetime @@ -643,10 +639,6 @@ def threadIdent(): logger.debug('(IDENT) starting ident thread') reactor.callInThread(ident) -def threadedMysql(): - logger.debug('(MYSQL) Starting MySQL thread') - reactor.callInThread(mysqlGetConfig) - def threadAlias(): logger.debug('(ALIAS) starting alias thread') reactor.callInThread(aliasb) @@ -920,6 +912,7 @@ def options_config(): if _options['TS1_STATIC'] != CONFIG['SYSTEMS'][_system]['TS1_STATIC']: _tmout = int(_options['DEFAULT_UA_TIMER']) logger.debug('(OPTIONS) %s TS1 static TGs changed, updating',_system) + ts1 = [] if CONFIG['SYSTEMS'][_system]['TS1_STATIC']: ts1 = CONFIG['SYSTEMS'][_system]['TS1_STATIC'].split(',') for tg in ts1: @@ -964,324 +957,6 @@ def options_config(): logger.exception('(OPTIONS) caught exception: %s',e) continue -def mysqlGetConfig(): - logger.debug('(MYSQL) Periodic config check') - SQLGETCONFIG = {} - if sql.con(): - logger.debug('(MYSQL) reading config from database') - try: - SQLGETCONFIG = sql.getConfig() - except: - logger.debug('(MYSQL) problem with SQL query, aborting') - sql.close() - return - else: - logger.debug('(MYSQL) problem connecting to SQL server, aborting') - sql.close() - return - - sql.close() - reactor.callFromThread(mysql_config_check,SQLGETCONFIG) - - -def mysql_config_check(SQLGETCONFIG): - - SQLCONFIG = SQLGETCONFIG - for system in SQLGETCONFIG: - if system not in CONFIG['SYSTEMS']: - if SQLCONFIG[system]['ENABLED']: - logger.debug('(MYSQL) new enabled system %s, starting HBP listener',system) - CONFIG['SYSTEMS'][system] = SQLCONFIG[system] - systems[system] = routerHBP(system, CONFIG, report_server) - listeningPorts[system] = reactor.listenUDP(CONFIG['SYSTEMS'][system]['PORT'], systems[system], interface=CONFIG['SYSTEMS'][system]['IP']) - else: - logger.debug('(MYSQL) new disabled system %s',system) - _tmout = SQLCONFIG[system]['DEFAULT_UA_TIMER'] - #Do ACL processing - # Subscriber and TGID ACLs - logger.debug('(MYSQL) building ACLs') - # Registration ACLs - SQLCONFIG[system]['REG_ACL'] = acl_build(SQLCONFIG[system]['REG_ACL'], PEER_MAX) - for acl in ['SUB_ACL', 'TG1_ACL', 'TG2_ACL']: - SQLCONFIG[system][acl] = acl_build(SQLCONFIG[system][acl], ID_MAX) - - #Add system to bridges - if SQLCONFIG[system]['ENABLED']: - logger.debug('(MYSQL) adding new system to static bridges') - for _bridge in BRIDGES: - ts1 = False - ts2 = False - for i,e in enumerate(BRIDGES[_bridge]): - if e['SYSTEM'] == system and e['TS'] == 1: - ts1 = True - if e['SYSTEM'] == system and e['TS'] == 2: - ts2 = True - if _bridge[0:1] != '#': - if ts1 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 1, 'TGID': bytes_3(int(_bridge)),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(int(_bridge)),],'RESET': [], 'TIMER': time()}) - if ts2 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(int(_bridge)),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(int(_bridge)),],'RESET': [], 'TIMER': time()}) - else: - if ts2 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(9),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [bytes_3(4000)],'ON': [],'RESET': [], 'TIMER': time()}) - - if SQLCONFIG[system]['DEFAULT_REFLECTOR'] > 0: - logger.debug('(MYSQL) %s setting default reflector',system) - make_default_reflector(SQLCONFIG[system]['DEFAULT_REFLECTOR'],_tmout,system) - - if SQLCONFIG[system]['TS1_STATIC']: - logger.debug('(MYSQL) %s setting static TGs on TS1',system) - ts1 = SQLCONFIG[system]['TS1_STATIC'].split(',') - for tg in ts1: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,1,_tmout,system) - - if SQLCONFIG[system]['TS2_STATIC']: - logger.debug('(MYSQL) %s setting static TGs on TS2',system) - ts2 = SQLCONFIG[system]['TS2_STATIC'].split(',') - for tg in ts2: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,2,_tmout,system) - - continue - - #Preserve options line - if 'OPTIONS' in CONFIG['SYSTEMS'][system]: - SQLCONFIG[system]['OPTIONS'] = CONFIG['SYSTEMS'][system]['OPTIONS'] - SQLCONFIG[system]['TS1_STATIC'] = CONFIG['SYSTEMS'][system]['TS1_STATIC'] - SQLCONFIG[system]['TS2_STATIC'] = CONFIG['SYSTEMS'][system]['TS2_STATIC'] - SQLCONFIG[system]['DEFAULT_UA_TIMER'] = CONFIG['SYSTEMS'][system]['DEFAULT_UA_TIMER'] - SQLCONFIG[system]['DEFAULT_REFLECTOR'] = CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'] - - #logger.debug('(MYSQL) %s has HBP Options line - skipping',system) - #continue - - - if SQLCONFIG[system]['ENABLED'] == False and CONFIG['SYSTEMS'][system]['ENABLED'] == True: - logger.debug('(MYSQL) %s changed from enabled to disabled, killing HBP listener and removing from bridges',system) - systems[system].master_dereg() - if systems[system]._system_maintenance is not None and systems[system]._system_maintenance.running == True: - systems[system]._system_maintenance.stop() - systems[system]._system_maintenance = None - remove_bridge_system(system) - listeningPorts[system].stopListening() - - if CONFIG['SYSTEMS'][system]['ENABLED'] == False and SQLCONFIG[system]['ENABLED'] == True: - logger.debug('(MYSQL) %s changed from disabled to enabled, starting HBP listener',system) - systems[system] = routerHBP(system, CONFIG, report_server) - listeningPorts[system] = reactor.listenUDP(CONFIG['SYSTEMS'][system]['PORT'], systems[system], interface=CONFIG['SYSTEMS'][system]['IP']) - logger.debug('(GLOBAL) %s instance created: %s, %s', CONFIG['SYSTEMS'][system]['MODE'], system, systems[system]) - logger.debug('(MYSQL) adding new system to static bridges') - _tmout = SQLCONFIG[system]['DEFAULT_UA_TIMER'] - for _bridge in BRIDGES: - ts1 = False - ts2 = False - for i,e in enumerate(BRIDGES[_bridge]): - if e['SYSTEM'] == system and e['TS'] == 1: - ts1 = True - if e['SYSTEM'] == system and e['TS'] == 2: - ts2 = True - if _bridge[0:1] != '#': - if ts1 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 1, 'TGID': bytes_3(int(_bridge)),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(int(_bridge)),],'RESET': [], 'TIMER': time()}) - if ts2 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(int(_bridge)),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(int(_bridge)),],'RESET': [], 'TIMER': time()}) - else: - if ts2 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(9),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [bytes_3(4000)],'ON': [],'RESET': [], 'TIMER': time()}) - - - if SQLCONFIG[system]['DEFAULT_REFLECTOR'] > 0: - if 'OPTIONS' not in SQLCONFIG[system]: - logger.debug('(MYSQL) %s setting default reflector',system) - make_default_reflector(SQLCONFIG[system]['DEFAULT_REFLECTOR'],_tmout,system) - - if SQLCONFIG[system]['TS1_STATIC']: - if 'OPTIONS' not in SQLCONFIG[system]: - logger.debug('(MYSQL) %s setting static TGs on TS1',system) - ts1 = SQLCONFIG[system]['TS1_STATIC'].split(',') - for tg in ts1: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,1,_tmout,system) - - if SQLCONFIG[system]['TS2_STATIC']: - logger.debug('(MYSQL) %s setting static TGs on TS2',system) - ts2 = SQLCONFIG[system]['TS2_STATIC'].split(',') - for tg in ts2: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,2,_tmout,system) - - if SQLCONFIG[system]['DEFAULT_UA_TIMER'] != CONFIG['SYSTEMS'][system]['DEFAULT_UA_TIMER']: - if 'OPTIONS' not in CONFIG['SYSTEMS'][system]: - logger.debug('(MYSQL) %s DEFAULT_UA_TIMER changed. Updating bridges.',system) - remove_bridge_system(system) - for _bridge in BRIDGES: - ts1 = False - ts2 = False - _tmout = CONFIG['SYSTEMS'][system][DEFAULT_UA_TIMER] - for i,e in enumerate(BRIDGES[_bridge]): - if e['SYSTEM'] == system and e['TS'] == 1: - ts1 = True - if e['SYSTEM'] == system and e['TS'] == 2: - ts2 = True - if _bridge[0:1] != '#': - if ts1 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 1, 'TGID': bytes_3(int(_bridge)),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(int(_bridge)),],'RESET': [], 'TIMER': time()}) - if ts2 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(int(_bridge)),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [],'ON': [bytes_3(int(_bridge)),],'RESET': [], 'TIMER': time()}) - else: - if ts2 == False: - BRIDGES[_bridge].append({'SYSTEM': system, 'TS': 2, 'TGID': bytes_3(9),'ACTIVE': False,'TIMEOUT': _tmout * 60,'TO_TYPE': 'ON','OFF': [bytes_3(4000)],'ON': [],'RESET': [], 'TIMER': time()}) - - - if SQLCONFIG[system]['DEFAULT_REFLECTOR'] > 0: - # if 'OPTIONS' not in SQLCONFIG[system]: - logger.debug('(MYSQL) %s setting default reflector',system) - make_default_reflector(SQLCONFIG[system]['DEFAULT_REFLECTOR'],_tmout,system) - - if SQLCONFIG[system]['TS1_STATIC']: - # if 'OPTIONS' not in SQLCONFIG[system]: - logger.debug('(MYSQL) %s setting static TGs on TS1',system) - ts1 = SQLCONFIG[system]['TS1_STATIC'].split(',') - for tg in ts1: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,1,_tmout,system) - - if SQLCONFIG[system]['TS2_STATIC']: - logger.debug('(MYSQL) %s setting static TGs on TS2',system) - ts2 = SQLCONFIG[system]['TS2_STATIC'].split(',') - for tg in ts2: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,2,_tmout,system) - - - - if SQLCONFIG[system]['IP'] != CONFIG['SYSTEMS'][system]['IP'] and CONFIG['SYSTEMS'][system]['ENABLED'] == True: - logger.debug('(MYSQL) %s IP binding changed on enabled system, killing HBP listener. Will restart in 1 minute',system) - systems[system].master_dereg() - if systems[system]._system_maintenance is not None and systems[system]._system_maintenance.running == True: - systems[system]._system_maintenance.stop() - systems[system]._system_maintenance = None - listeningPorts[system].stopListening() - SQLCONFIG[system]['ENABLED'] = False - - if SQLCONFIG[system]['PORT'] != CONFIG['SYSTEMS'][system]['PORT'] and CONFIG['SYSTEMS'][system]['ENABLED'] == True: - logger.debug('(MYSQL) %s Port binding changed on enabled system, killing HBP listener. Will restart in 1 minute',system) - systems[system].master_dereg() - if systems[system]._system_maintenance is not None and systems[system]._system_maintenance.running == True: - systems[system]._system_maintenance.stop() - systems[system]._system_maintenance = None - listeningPorts[system].stopListening() - SQLCONFIG[system]['ENABLED'] = False - - if SQLCONFIG[system]['MAX_PEERS'] != CONFIG['SYSTEMS'][system]['MAX_PEERS'] and CONFIG['SYSTEMS'][system]['ENABLED'] == True: - logger.debug('(MYSQL) %s MAX_PEERS changed on enabled system, killing HBP listener. Will restart in 1 minute',system) - systems[system].master_dereg() - if systems[system]._system_maintenance is not None and systems[system]._system_maintenance.running == True: - systems[system]._system_maintenance.stop() - systems[system]._system_maintenance = None - listeningPorts[system].stopListening() - SQLCONFIG[system]['ENABLED'] = False - - if SQLCONFIG[system]['PASSPHRASE'] != CONFIG['SYSTEMS'][system]['PASSPHRASE'] and CONFIG['SYSTEMS'][system]['ENABLED'] == True: - logger.debug('(MYSQL) %s Passphrase changed on enabled system. Kicking peers',system) - systems[system].master_dereg() - - if SQLCONFIG[system]['DEFAULT_REFLECTOR'] != CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR']: - if 'OPTIONS' not in SQLCONFIG[system]: - _tmout = SQLCONFIG[system]['DEFAULT_UA_TIMER'] - if SQLCONFIG[system]['DEFAULT_REFLECTOR'] > 0: - logger.debug('(MYSQL) %s default reflector changed, updating',system) - reset_default_reflector(CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'],_tmout,system) - make_default_reflector(SQLCONFIG[system]['DEFAULT_REFLECTOR'],_tmout,system) - else: - logger.debug('(MYSQL) %s default reflector disabled, updating',system) - reset_default_reflector(CONFIG['SYSTEMS'][system]['DEFAULT_REFLECTOR'],_tmout,system) - - if SQLCONFIG[system]['TS1_STATIC'] != CONFIG['SYSTEMS'][system]['TS1_STATIC']: - if 'OPTIONS' not in CONFIG['SYSTEMS'][system]: - _tmout = SQLCONFIG[system]['DEFAULT_UA_TIMER'] - logger.debug('(MYSQL) %s TS1 static TGs changed, updating',system) - ts1 = [] - if CONFIG['SYSTEMS'][system]['TS1_STATIC']: - ts1 = CONFIG['SYSTEMS'][system]['TS1_STATIC'].split(',') - for tg in ts1: - if not tg: - continue - tg = int(tg) - reset_static_tg(tg,1,_tmout,system) - ts1 = [] - if SQLCONFIG[system]['TS1_STATIC']: - ts1 = SQLCONFIG[system]['TS1_STATIC'].split(',') - for tg in ts1: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,1,_tmout,system) - - if SQLCONFIG[system]['TS2_STATIC'] != CONFIG['SYSTEMS'][system]['TS2_STATIC']: - if 'OPTIONS' not in CONFIG['SYSTEMS'][system]: - _tmout = SQLCONFIG[system]['DEFAULT_UA_TIMER'] - logger.debug('(MYSQL) %s TS2 static TGs changed, updating',system) - ts2 = [] - if CONFIG['SYSTEMS'][system]['TS2_STATIC']: - ts2 = CONFIG['SYSTEMS'][system]['TS2_STATIC'].split(',') - for tg in ts2: - if not tg: - continue - tg = int(tg) - reset_static_tg(tg,2,_tmout,system) - ts2 = [] - if SQLCONFIG[system]['TS2_STATIC']: - ts2 = SQLCONFIG[system]['TS2_STATIC'].split(',') - for tg in ts2: - if not tg: - continue - tg = int(tg) - make_static_tg(tg,2,_tmout,system) - - if SQLCONFIG[system]['ANNOUNCEMENT_LANGUAGE'] != CONFIG['SYSTEMS'][system]['ANNOUNCEMENT_LANGUAGE']: - logger.debug('(MYSQL) %s announcement language changed to %s',system, SQLCONFIG[system]['ANNOUNCEMENT_LANGUAGE']) - - #Rebuild ACLs - SQLCONFIG[system]['REG_ACL'] = acl_build(SQLCONFIG[system]['REG_ACL'], PEER_MAX) - SQLCONFIG[system]['SUB_ACL'] = acl_build(SQLCONFIG[system]['SUB_ACL'], ID_MAX) - SQLCONFIG[system]['TG1_ACL'] = acl_build(SQLCONFIG[system]['TG1_ACL'], ID_MAX) - SQLCONFIG[system]['TG2_ACL'] = acl_build(SQLCONFIG[system]['TG2_ACL'], ID_MAX) - - if SQLCONFIG[system]['REG_ACL'] != CONFIG['SYSTEMS'][system]['REG_ACL']: - logger.debug('(MYSQL) registration ACL changed') - if SQLCONFIG[system]['SUB_ACL'] != CONFIG['SYSTEMS'][system]['SUB_ACL']: - logger.debug('(MYSQL) subscriber ACL changed') - if SQLCONFIG[system]['TG1_ACL'] != CONFIG['SYSTEMS'][system]['TG1_ACL']: - logger.debug('(MYSQL) TG1 ACL changed') - if SQLCONFIG[system]['TG2_ACL'] != CONFIG['SYSTEMS'][system]['TG2_ACL']: - logger.debug('(MYSQL) TG2 ACL changed') - - #Preserve peers list - if system in CONFIG['SYSTEMS'] and CONFIG['SYSTEMS'][system]['ENABLED'] and 'PEERS' in CONFIG['SYSTEMS'][system] : - SQLCONFIG[system]['PEERS'] = CONFIG['SYSTEMS'][system]['PEERS'] - CONFIG['SYSTEMS'][system].update(SQLCONFIG[system]) - else: - CONFIG['SYSTEMS'][system].update(SQLCONFIG[system]) - - - #Add MySQL config data to config dict - #CONFIG['SYSTEMS'].update(SQLCONFIG) - - SQLCONFIG = {} class routerOBP(OPENBRIDGE): @@ -2861,36 +2536,11 @@ if __name__ == '__main__': logger.info('Copyright (c) 2013, 2014, 2015, 2016, 2018, 2019\n\tThe Regents of the K0USY Group. All rights reserved.\n') logger.debug('(GLOBAL) Logging system started, anything from here on gets logged') - - #If MySQL is enabled, read master config from MySQL too - if CONFIG['MYSQL']['USE_MYSQL'] == True: - logger.info('(MYSQL) MySQL config enabled') - SQLCONFIG = {} - sql = useMYSQL(CONFIG['MYSQL']['SERVER'], CONFIG['MYSQL']['USER'], CONFIG['MYSQL']['PASS'], CONFIG['MYSQL']['DB'],CONFIG['MYSQL']['TABLE'],logger) - #Run it once immediately - if sql.con(): - logger.info('(MYSQL) reading config from database') - try: - SQLCONFIG = sql.getConfig() - #Add MySQL config data to config dict - except: - logger.warning('(MYSQL) problem with SQL query, aborting') - sql.close() - logger.debug('(MYSQL) building 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']: - SQLCONFIG[system][acl] = acl_build(SQLCONFIG[system][acl], ID_MAX) - - CONFIG['SYSTEMS'].update(SQLCONFIG) - else: - logger.warning('(MYSQL) problem connecting to SQL server, aborting') - if CONFIG['ALLSTAR']['ENABLED']: - logger.info('(AMI) Setting up AMI: Server: %s, Port: %s, User: %s, Pass: %s, Node: %s',CONFIG['ALLSTAR']['SERVER'],CONFIG['ALLSTAR']['PORT'],CONFIG['ALLSTAR']['USER'],CONFIG['ALLSTAR']['PASS'],CONFIG['ALLSTAR']['NODE']) - - AMIOBJ = AMI(CONFIG['ALLSTAR']['SERVER'],CONFIG['ALLSTAR']['PORT'],CONFIG['ALLSTAR']['USER'],CONFIG['ALLSTAR']['PASS'],CONFIG['ALLSTAR']['NODE']) + if CONFIG['ALLSTAR']['ENABLED']: + logger.info('(AMI) Setting up AMI: Server: %s, Port: %s, User: %s, Pass: %s, Node: %s',CONFIG['ALLSTAR']['SERVER'],CONFIG['ALLSTAR']['PORT'],CONFIG['ALLSTAR']['USER'],CONFIG['ALLSTAR']['PASS'],CONFIG['ALLSTAR']['NODE']) + + AMIOBJ = AMI(CONFIG['ALLSTAR']['SERVER'],CONFIG['ALLSTAR']['PORT'],CONFIG['ALLSTAR']['USER'],CONFIG['ALLSTAR']['PASS'],CONFIG['ALLSTAR']['NODE']) # Set up the signal handler @@ -3091,13 +2741,6 @@ if __name__ == '__main__': options_task = task.LoopingCall(options_config) options = options_task.start(26) options.addErrback(loopingErrHandle) - - #Mysql config checker - #This runs in a thread so as not to block the reactor - if CONFIG['MYSQL']['USE_MYSQL'] == True: - mysql_task = task.LoopingCall(threadedMysql) - mysql = mysql_task.start(33) - mysql.addErrback(loopingErrHandle) #STAT trimmer - once every hour (roughly - shifted so all timed tasks don't run at once if CONFIG['GLOBAL']['GEN_STAT_BRIDGES']: diff --git a/config.py b/config.py index 15caf6d..cec13ea 100755 --- a/config.py +++ b/config.py @@ -128,7 +128,6 @@ def build_config(_config_file): CONFIG['LOGGER'] = {} CONFIG['ALIASES'] = {} CONFIG['SYSTEMS'] = {} - CONFIG['MYSQL'] = {} CONFIG['ALLSTAR'] = {} try: @@ -190,16 +189,6 @@ def build_config(_config_file): }) - elif section == 'MYSQL': - CONFIG['MYSQL'].update({ - 'USE_MYSQL': config.getboolean(section, 'USE_MYSQL'), - 'USER': config.get(section, 'USER'), - 'PASS': config.get(section, 'PASS'), - 'DB': config.get(section, 'DB'), - 'SERVER': config.get(section, 'SERVER'), - 'PORT': config.getint(section,'PORT'), - 'TABLE': config.get(section, 'TABLE') - }) elif section == 'ALLSTAR': CONFIG['ALLSTAR'].update({ diff --git a/mysql_config.py b/mysql_config.py deleted file mode 100644 index 9acf6e6..0000000 --- a/mysql_config.py +++ /dev/null @@ -1,107 +0,0 @@ -import mysql.connector -from mysql.connector import errorcode -#import mysql.connector.pooling - -# Does anybody read this stuff? There's a PEP somewhere that says I should do this. -__author__ = 'Simon Adlem - G7RZU' -__copyright__ = 'Copyright (c) Simon Adlem, G7RZU 2020,2021' -__credits__ = 'Colin Durbridge, G4EML, Steve Zingman, N4IRS; Mike Zingman, N4IRR; Jonathan Naylor, G4KLX; Hans Barthen, DL5DI; Torsten Shultze, DG1HT; Jon Lee, G4TSN; Norman Williams, M6NBP' -__license__ = 'GNU GPLv3' -__maintainer__ = 'Simon Adlem G7RZU' -__email__ = 'simon@gb7fr.org.uk' - - -class useMYSQL: - #Init new object - def __init__(self, server,user,password,database,table,logger): - self.server = server - self.user = user - self.password = password - self.database = database - self.table = table - self.logger = logger - - #Connect - def con(self): - logger = self.logger - try: - self.db = mysql.connector.connect( - host=self.server, - user=self.user, - password=self.password, - database=self.database, - # pool_name = "hblink_master", - # pool_size = 2 - ) - except mysql.connector.Error as err: - if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: - logger.info('(MYSQL) username or password error') - return (False) - elif err.errno == errorcode.ER_BAD_DB_ERROR: - logger.info('(MYSQL) DB Error') - return (False) - else: - logger.info('(MYSQL) error: %s',err) - return(False) - - return(True) - - #Close DB connection - def close(self): - self.db.close() - - #Get config from DB - def getConfig(self): - - CONFIG = {} - CONFIG['SYSTEMS'] = {} - - _cursor = self.db.cursor() - - try: - _cursor.execute("select * from {} where MODE='MASTER'".format(self.table)) - except mysql.connector.Error as err: - _cursor.close() - logger.info('(MYSQL) error, problem with cursor execute') - raise Exception('Problem with cursor execute') - - for (callsign, mode, enabled, _repeat, max_peers, export_ambe, ip, port, passphrase, group_hangtime, use_acl, reg_acl, sub_acl, tgid_ts1_acl, tgid_ts2_acl, default_ua_timer, single_mode, voice_ident,ts1_static,ts2_static,default_reflector, announce_lang) in _cursor: - try: - CONFIG['SYSTEMS'].update({callsign: { - 'MODE': mode, - 'ENABLED': bool(enabled), - 'REPEAT': bool(_repeat), - 'MAX_PEERS': int(max_peers), - 'IP': ip, - 'PORT': int(port), - 'PASSPHRASE': bytes(passphrase, 'utf-8'), - 'GROUP_HANGTIME': int(group_hangtime), - 'USE_ACL': bool(use_acl), - 'REG_ACL': reg_acl, - 'SUB_ACL': sub_acl, - 'TG1_ACL': tgid_ts1_acl, - 'TG2_ACL': tgid_ts2_acl, - 'DEFAULT_UA_TIMER': int(default_ua_timer), - 'SINGLE_MODE': bool(single_mode), - 'VOICE_IDENT': bool(voice_ident), - 'TS1_STATIC': ts1_static, - 'TS2_STATIC': ts2_static, - 'DEFAULT_REFLECTOR': int(default_reflector), - 'GENERATOR': int(1), - 'ANNOUNCEMENT_LANGUAGE': announce_lang - }}) - CONFIG['SYSTEMS'][callsign].update({'PEERS': {}}) - except TypeError: - logger.info('(MYSQL) Problem with data from MySQL - TypeError, carrying on to next row') - _cursor.close() - return(CONFIG['SYSTEMS']) - - -#For testing -if __name__ == '__main__': - - sql = useMYSQL("ip","user","pass","db") - - sql.con() - - print( sql.getConfig()) diff --git a/requirements.txt b/requirements.txt index 6fd9564..98a1d9e 100755 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,5 @@ bitarray>=0.8.1 Twisted>=16.3.0 dmr_utils3>=0.1.19 configparser>=3.0.0 -mysql-connector resettabletimer>=0.7.0 setproctitle