mirror of https://github.com/kf7eel/hbnet.git
docker config update, initial commit of self care, add mode to svr endpoint
This commit is contained in:
parent
daabaed9e5
commit
38eae2e6ab
71
bridge.py
71
bridge.py
|
|
@ -118,15 +118,14 @@ __email__ = 'kf7eel@qsl.net'
|
|||
#### return config.build_config(cli_file)
|
||||
|
||||
|
||||
def send_unit_table(CONFIG, _data, _bridge_data):
|
||||
def send_unit_table(CONFIG, _data):
|
||||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_data = {
|
||||
'unit_table': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode':'unit_table',
|
||||
'secret':shared_secret,
|
||||
'data': str(_data),
|
||||
'bridge_data': str(_bridge_data),
|
||||
|
||||
}
|
||||
json_object = json.dumps(sms_data, indent = 4)
|
||||
|
||||
|
|
@ -138,13 +137,15 @@ def send_unit_table(CONFIG, _data, _bridge_data):
|
|||
except requests.ConnectionError:
|
||||
logger.error('Config server unreachable')
|
||||
|
||||
def ping(CONFIG):
|
||||
def ping(CONFIG, _bridge_data):
|
||||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
ping_data = {
|
||||
'ping': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'secret':shared_secret
|
||||
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'ping',
|
||||
'secret':shared_secret,
|
||||
'bridge_data': str(_bridge_data),
|
||||
'user_systems': str(user_systems())
|
||||
}
|
||||
## print(rules_check)
|
||||
json_object = json.dumps(ping_data, indent = 4)
|
||||
|
|
@ -158,6 +159,33 @@ def ping(CONFIG):
|
|||
print('restart')
|
||||
print(sys.argv)
|
||||
os.execv(__file__, sys.argv)
|
||||
elif 'on:' in c or 'off:' in c:
|
||||
|
||||
parse = re.sub('on:|off:','', c)
|
||||
data_list = parse.split(',')
|
||||
iBRIDGES = copy.deepcopy(BRIDGES)
|
||||
## print(parse)
|
||||
## print(BRIDGES[data_list[0]])
|
||||
## print(BRIDGES[data_list[0]])
|
||||
## print(type(BRIDGES[data_list[0]]))
|
||||
## print(BRIDGES[data_list[0]][1])
|
||||
n = 0
|
||||
for r in iBRIDGES[data_list[0]]:
|
||||
## print(r['SYSTEM'])
|
||||
if r['SYSTEM'] == data_list[1]:
|
||||
## print(n)
|
||||
## print(r['SYSTEM'])
|
||||
## print(BRIDGES[data_list[0]][n]['SYSTEM'])
|
||||
## print(BRIDGES[data_list[0]][n]['ACTIVE'])
|
||||
if 'on:' in c:
|
||||
BRIDGES[data_list[0]][n]['ACTIVE'] = True
|
||||
BRIDGES[data_list[0]][n]['TIMER'] = time() + iBRIDGES[data_list[0]][n]['TIMEOUT']
|
||||
if 'off:' in c:
|
||||
BRIDGES[data_list[0]][n]['ACTIVE'] = False
|
||||
print(BRIDGES[data_list[0]][n]['ACTIVE'])
|
||||
n = n + 1
|
||||
else:
|
||||
print(c)
|
||||
|
||||
## return resp['rules']
|
||||
except requests.ConnectionError:
|
||||
|
|
@ -170,7 +198,8 @@ def download_rules(L_CONFIG_FILE, cli_file):
|
|||
user_man_url = L_CONFIG_FILE['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(L_CONFIG_FILE['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
rules_check = {
|
||||
'get_rules':L_CONFIG_FILE['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': L_CONFIG_FILE['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'get_rules',
|
||||
'secret':shared_secret
|
||||
}
|
||||
## print(rules_check)
|
||||
|
|
@ -191,7 +220,8 @@ def download_config(L_CONFIG_FILE, cli_file):
|
|||
user_man_url = L_CONFIG_FILE['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(L_CONFIG_FILE['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
config_check = {
|
||||
'get_config':L_CONFIG_FILE['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': L_CONFIG_FILE['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'get_config',
|
||||
'secret':shared_secret
|
||||
}
|
||||
json_object = json.dumps(config_check, indent = 4)
|
||||
|
|
@ -540,6 +570,23 @@ def ten_loop_func():
|
|||
with open(CONFIG['WEB_SERVICE']['BURN_FILE'], 'w') as f:
|
||||
f.write(str(download_burnlist(CONFIG)))
|
||||
|
||||
def user_systems():
|
||||
peer_files = os.listdir('/tmp/' + CONFIG['LOGGER']['LOG_NAME'] + '_PEERS/')
|
||||
whos_where = {}
|
||||
for i in peer_files:
|
||||
if '.' not in i:
|
||||
print(i)
|
||||
data = ast.literal_eval(os.popen('cat /tmp/' + (CONFIG['LOGGER']['LOG_NAME'] + '_PEERS/' + i)).read())
|
||||
## where_list = {}
|
||||
whos_where[i] = []
|
||||
for d in data.items():
|
||||
print(d[1]['call'])
|
||||
whos_where[i].append(d[1]['call'])
|
||||
## whos_where.append({i:d[1]['call']})
|
||||
## print(whos_where)
|
||||
return whos_where
|
||||
## ast.literal_eval(os.popen('cat /tmp/' + (CONFIG['LOGGER']['LOG_NAME'] + '_PEERS/' + system)).read())
|
||||
|
||||
|
||||
# Run this every minute for rule timer updates
|
||||
def rule_timer_loop(unit_flood_time):
|
||||
|
|
@ -593,7 +640,7 @@ def rule_timer_loop(unit_flood_time):
|
|||
|
||||
for unit in remove_list:
|
||||
del UNIT_MAP[unit]
|
||||
send_unit_table(CONFIG, UNIT_MAP, BRIDGES)
|
||||
send_unit_table(CONFIG, UNIT_MAP)
|
||||
|
||||
logger.debug('Removed unit(s) %s from UNIT_MAP', remove_list)
|
||||
|
||||
|
|
@ -615,7 +662,7 @@ def rule_timer_loop(unit_flood_time):
|
|||
|
||||
# run this every 10 seconds to trim orphaned stream ids
|
||||
def stream_trimmer_loop():
|
||||
ping(CONFIG)
|
||||
ping(CONFIG, BRIDGES)
|
||||
logger.debug('(ROUTER) Trimming inactive stream IDs from system lists')
|
||||
_now = time()
|
||||
|
||||
|
|
|
|||
|
|
@ -319,6 +319,8 @@ def download_aprs_settings(_CONFIG):
|
|||
user_man_url = _CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(_CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
aprs_check = {
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'aprs_settings',
|
||||
'aprs_settings':True,
|
||||
'secret':shared_secret
|
||||
}
|
||||
|
|
@ -339,6 +341,8 @@ def ping(CONFIG):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
ping_data = {
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'ping',
|
||||
'ping': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'secret':shared_secret
|
||||
}
|
||||
|
|
@ -364,7 +368,8 @@ def send_dash_loc(CONFIG, call, lat, lon, time, comment, dmr_id):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
loc_data = {
|
||||
'dashboard': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'dashboard',
|
||||
'secret':shared_secret,
|
||||
'call': call,
|
||||
'lat' : lat,
|
||||
|
|
@ -387,7 +392,8 @@ def send_sms_log(CONFIG, snd_call, rcv_call, msg, rcv_id, snd_id, system_name):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_data = {
|
||||
'log_sms': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'log_sms',
|
||||
'secret':shared_secret,
|
||||
'snd_call': snd_call,
|
||||
'rcv_call': rcv_call,
|
||||
|
|
@ -409,7 +415,8 @@ def send_bb(CONFIG, callsign, dmr_id, bulletin, system_name):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_data = {
|
||||
'bb_send': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'bb_send',
|
||||
'secret':shared_secret,
|
||||
'callsign': callsign,
|
||||
'dmr_id': dmr_id,
|
||||
|
|
@ -432,7 +439,8 @@ def send_mb(CONFIG, _dst_callsign, _src_callsign, message, _dst_dmr_id, _src_dmr
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
mb_data = {
|
||||
'mb_add': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'mb_add',
|
||||
'secret':shared_secret,
|
||||
'dst_callsign': _dst_callsign,
|
||||
'src_callsign': _src_callsign,
|
||||
|
|
@ -480,7 +488,8 @@ def send_unit_table(CONFIG, _data):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_data = {
|
||||
'unit_table': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'unit_table',
|
||||
'secret':shared_secret,
|
||||
'data': str(_data),
|
||||
|
||||
|
|
@ -500,7 +509,8 @@ def send_known_services(CONFIG, _data):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_data = {
|
||||
'known_services': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'known_services',
|
||||
'secret':shared_secret,
|
||||
'data': str(_data),
|
||||
|
||||
|
|
@ -520,7 +530,8 @@ def send_sms_que_req(CONFIG):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_req_data = {
|
||||
'get_sms_que': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'get_sms_que',
|
||||
'secret':shared_secret,
|
||||
}
|
||||
json_object = json.dumps(sms_req_data, indent = 4)
|
||||
|
|
@ -538,7 +549,8 @@ def send_sms_cmd(CONFIG, _rf_id, _cmd):
|
|||
user_man_url = CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
sms_cmd_data = {
|
||||
'sms_cmd': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'sms_cmd',
|
||||
'secret':shared_secret,
|
||||
'rf_id': _rf_id,
|
||||
'cmd': _cmd,
|
||||
|
|
@ -563,7 +575,8 @@ def download_config(CONFIG_FILE, cli_file):
|
|||
user_man_url = CONFIG_FILE['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(CONFIG_FILE['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
config_check = {
|
||||
'get_config':CONFIG_FILE['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'server': CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'get_config',
|
||||
'secret':shared_secret
|
||||
}
|
||||
json_object = json.dumps(config_check, indent = 4)
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ MQTT_PASSWORD2:
|
|||
# Otherwise ACLs work as described in the global stanza
|
||||
[HBNET]
|
||||
MODE: OPENBRIDGE
|
||||
ENABLED: True
|
||||
ENABLED: False
|
||||
IP:
|
||||
PORT: 53002
|
||||
NETWORK_ID: 99
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ OTHER_OPTIONS:
|
|||
|
||||
[DATA_GATEWAY]
|
||||
MODE: OPENBRIDGE
|
||||
ENABLED: True
|
||||
ENABLED: False
|
||||
IP:
|
||||
PORT: 53001
|
||||
NETWORK_ID: 99
|
||||
|
|
|
|||
|
|
@ -150,6 +150,8 @@ def download_burnlist(_CONFIG):
|
|||
user_man_url = _CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(_CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
burn_check = {
|
||||
'server': _CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'burn_list',
|
||||
'burn_list':True,
|
||||
'secret':shared_secret
|
||||
}
|
||||
|
|
@ -332,6 +334,8 @@ class HBSYSTEM(DatagramProtocol):
|
|||
shared_secret = str(sha256(self._CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
## print(int(str(int_id(_id))[:7]))
|
||||
auth_check = {
|
||||
'server': self._CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'auth_check',
|
||||
'secret':shared_secret,
|
||||
'login_id':int(str(int_id(_id))[:7]),
|
||||
'login_ip': peer_ip,
|
||||
|
|
@ -354,6 +358,8 @@ class HBSYSTEM(DatagramProtocol):
|
|||
shared_secret = str(sha256(self._CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
#print(int(str(int_id(_id))[:7]))
|
||||
auth_conf = {
|
||||
'server': self._CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'login_conf',
|
||||
'secret':shared_secret,
|
||||
'login_id':int(str(int_id(_id))[:7]),
|
||||
'login_ip': peer_ip,
|
||||
|
|
@ -375,6 +381,8 @@ class HBSYSTEM(DatagramProtocol):
|
|||
user_man_url = self._CONFIG['WEB_SERVICE']['URL']
|
||||
shared_secret = str(sha256(self._CONFIG['WEB_SERVICE']['SHARED_SECRET'].encode()).hexdigest())
|
||||
peer_loc_conf = {
|
||||
'server': self._CONFIG['WEB_SERVICE']['THIS_SERVER_NAME'],
|
||||
'mode': 'peer_loc',
|
||||
'secret':shared_secret,
|
||||
'loc_callsign':re.sub("b'|'|\s\s+", '', str(call)),
|
||||
'dmr_id' : int(str(int_id(_id))),
|
||||
|
|
|
|||
275
web/app.py
275
web/app.py
|
|
@ -1158,36 +1158,85 @@ By using this service, you agree not to do anything malicious. You agree to use
|
|||
def gateway_wiz_page(add_server):
|
||||
return render_template('data_gateway_wizard.html', server = add_server)
|
||||
|
||||
@app.route('/bridge_status/<server>/<system>')
|
||||
@app.route('/bridge_status/<server>/<system>', methods=['GET', 'POST'])
|
||||
def bridge_tg_status(server, system):
|
||||
server_bridges = Misc.query.filter_by(field_1='bridge_table_' + server).first()
|
||||
BRIDGES = ast.literal_eval(server_bridges.field_2)
|
||||
table_data = ''
|
||||
for _bridge in BRIDGES:
|
||||
for e in BRIDGES[_bridge]:
|
||||
if system == e['SYSTEM']:
|
||||
## print(e)
|
||||
print(type(e['TIMER']))
|
||||
print(datetime.datetime.fromtimestamp(e['TIMER']))
|
||||
print()
|
||||
if time.time() <= e['TIMER']:
|
||||
exp = '''
|
||||
<div class="alert alert-Success">
|
||||
<strong>On</strong> <br /> ''' + str(datetime.datetime.fromtimestamp(e['TIMER'])).strftime(time_format) + '''
|
||||
</div>
|
||||
'''
|
||||
elif time.time() > e['TIMER']:
|
||||
exp = '''
|
||||
<div class="alert alert-danger">
|
||||
<strong>Off</strong>
|
||||
</div>
|
||||
'''
|
||||
table_data = table_data + '<tr><td>' + _bridge + '</td><td>' + str(int_id(e['TGID'])) + '</td><td>' + exp + '</td></tr>'
|
||||
|
||||
## print(str((timedelta(seconds=e['TIMER']) + datetime.datetime.fromtimestamp(e['TIMER'])).strftime(time_format)))
|
||||
|
||||
|
||||
return render_template('bridge_status.html', table_data = Markup(table_data), server = server, system = system)
|
||||
if request.args.get('change'):
|
||||
## connected = Misc.query.filter_by(field_1='user_system_table_' + server).first()
|
||||
## connected_list = ast.literal_eval(connected.field_2)
|
||||
#### print(connected_list[system])
|
||||
## for i in connected_list[system]:
|
||||
## print(i)
|
||||
## if str(current_user.username).upper() == i.upper():
|
||||
## print('yay')
|
||||
#### if current_user.username
|
||||
try:
|
||||
## if current_user.has_roles('Admin'):
|
||||
cl = Misc.query.filter_by(field_1=request.args.get('server') + '_command_list').first()
|
||||
cmd_lst = ast.literal_eval(cl.field_2)
|
||||
## print('--')
|
||||
print(cmd_lst)
|
||||
except:
|
||||
cmd_lst = []
|
||||
misc_add(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
|
||||
|
||||
## if request.args.get('server_command') == 'restart':
|
||||
## cmd_lst.append('restart')
|
||||
## elif request.args.get('server_command') == '2':
|
||||
## cmd_lst.append('2')
|
||||
cmd_lst.append(request.args.get('change'))
|
||||
## print(cmd_lst)
|
||||
content = '''<h3 style="text-align: center;">Changes qued.</h3>
|
||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
|
||||
<meta http-equiv="refresh" content="3; URL=/bridge_status/''' + server + '''/''' + system + '''" />'''
|
||||
misc_edit_field_1(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
|
||||
## misc_add(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
|
||||
return render_template('flask_user_layout.html', markup_content = Markup(content))
|
||||
else:
|
||||
connected = Misc.query.filter_by(field_1='user_system_table_' + server).first()
|
||||
connected_list = ast.literal_eval(connected.field_2)
|
||||
## print(connected_list[system])
|
||||
for i in connected_list[system]:
|
||||
print(i)
|
||||
if str(current_user.username).upper() == i.upper() or current_user.has_roles('Admin'):
|
||||
server_bridges = Misc.query.filter_by(field_1='bridge_table_' + server).first()
|
||||
BRIDGES = ast.literal_eval(server_bridges.field_2)
|
||||
table_data = ''
|
||||
for _bridge in BRIDGES:
|
||||
for e in BRIDGES[_bridge]:
|
||||
if system == e['SYSTEM']:
|
||||
## print(e)
|
||||
## print(type(e['TIMER']))
|
||||
## print(datetime.datetime.fromtimestamp(e['TIMER']))
|
||||
## print()
|
||||
## if time.time() <= e['TIMER']:
|
||||
## print(e)
|
||||
if e['ACTIVE']:
|
||||
change_button = '<a href="/bridge_status/' + server + '/' + system + '?server=' + server + '&change=off:' + _bridge + ',' + system + '"><button type="button" class="btn btn-danger">Off</button></a>'
|
||||
exp_time = 'Expires: ' + str(datetime.datetime.fromtimestamp(e['TIMER']).strftime(time_format))
|
||||
if time.time() > e['TIMER']:
|
||||
exp_time = ''
|
||||
exp = '''
|
||||
<div class="alert alert-success">
|
||||
<strong>On</strong> <br /> ''' + exp_time + '''
|
||||
</div>
|
||||
'''
|
||||
## elif time.time() > e['TIMER']:
|
||||
elif not e['ACTIVE']:
|
||||
change_button = '<a href="/bridge_status/' + server + '/' + system + '?server=' + server + '&change=on:' + _bridge + ',' + system + '"><button type="button" class="btn btn-success">On</button></a>'
|
||||
exp = '''
|
||||
<div class="alert alert-danger">
|
||||
<strong>Off</strong>
|
||||
</div>
|
||||
'''
|
||||
table_data = table_data + '<tr><td>' + _bridge + '</td><td>' + str(int_id(e['TGID'])) + '</td><td>' + exp + '</td><td>' + change_button + '</td></tr>'
|
||||
|
||||
return render_template('bridge_status.html', table_data = Markup(table_data), server = server, system = system)
|
||||
else:
|
||||
content = '''<h3 style="text-align: center;">Not Authorized.</h3>
|
||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
|
||||
<meta http-equiv="refresh" content="3; URL=/generate_passphrase" />'''
|
||||
## misc_add(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
|
||||
return render_template('flask_user_layout.html', markup_content = Markup(content))
|
||||
|
||||
@app.route('/generate_passphrase/pi-star', methods = ['GET'])
|
||||
@login_required
|
||||
|
|
@ -1257,8 +1306,6 @@ By using this service, you agree not to do anything malicious. You agree to use
|
|||
svr_status = '''<div class="alert alert-warning">
|
||||
<strong>Unknown Condition</strong>
|
||||
</div> '''
|
||||
print(ping_list)
|
||||
print(time.time())
|
||||
except:
|
||||
svr_status = '''<div class="alert alert-warning">
|
||||
<strong>Unknown</strong>
|
||||
|
|
@ -1266,6 +1313,25 @@ By using this service, you agree not to do anything malicious. You agree to use
|
|||
if i.ip == '':
|
||||
pass
|
||||
else:
|
||||
connected = Misc.query.filter_by(field_1='user_system_table_' + i.name).first()
|
||||
connected_list = ast.literal_eval(connected.field_2)
|
||||
## print(connected_list)
|
||||
clients = '<strong>Self-care: </strong>'
|
||||
for s in connected_list.items():
|
||||
for t in s[1]:
|
||||
if str(current_user.username).upper() == t.upper():
|
||||
clients = clients + '''<a href="/bridge_status/''' + i.name + '''/''' + s[0] + '''"><button type="button" class="btn btn-secondary">''' + s[0] + '''</button></a>\n'''
|
||||
## client_menu = '''
|
||||
##<div class="dropdown">
|
||||
## <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
|
||||
## Tools
|
||||
## </button>
|
||||
## <ul class="dropdown-menu">
|
||||
## ''' + clients + '''
|
||||
## </ul>
|
||||
##</div>
|
||||
##'''
|
||||
|
||||
tool_menu = '''
|
||||
<div class="dropdown">
|
||||
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
|
||||
|
|
@ -1285,6 +1351,8 @@ By using this service, you agree not to do anything malicious. You agree to use
|
|||
''' + svr_status + '''
|
||||
<div style="max-width:200px; word-wrap:break-word; text-align: center;">''' + i.public_notes + '''</div>
|
||||
<p> </p>
|
||||
''' + clients + '''
|
||||
<p> </p>
|
||||
''' + tool_menu + '''
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -4820,10 +4888,11 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
cmd_lst = []
|
||||
misc_add(request.args.get('server') + '_command_list', str(cmd_lst), '', '', 0, 0, 0, 0, False, False)
|
||||
|
||||
if request.args.get('server_command') == 'restart':
|
||||
cmd_lst.append('restart')
|
||||
elif request.args.get('server_command') == '2':
|
||||
cmd_lst.append('2')
|
||||
## if request.args.get('server_command') == 'restart':
|
||||
## cmd_lst.append('restart')
|
||||
## elif request.args.get('server_command') == '2':
|
||||
## cmd_lst.append('2')
|
||||
cmd_lst.append(request.args.get('server_command'))
|
||||
print(cmd_lst)
|
||||
content = '''<h3 style="text-align: center;">Command qued.</h3>
|
||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
|
||||
|
|
@ -7550,28 +7619,46 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
@app.route('/svr', methods=['POST'])
|
||||
def svr_endpoint():
|
||||
hblink_req = request.json
|
||||
print((hblink_req))
|
||||
## print((hblink_req))
|
||||
# 'd3967357e0b5788a03a1a61acefa72af8d2dbfe282d8718809f90fcc6f4aca41' = DATA_GATEWAY
|
||||
if hblink_req['secret'] in shared_secrets() or hblink_req['secret'] == 'd3967357e0b5788a03a1a61acefa72af8d2dbfe282d8718809f90fcc6f4aca41' and mode == 'DASH_ONLY':
|
||||
try:
|
||||
if hblink_req['ping']:
|
||||
pl = Misc.query.filter_by(field_1='ping_list').first()
|
||||
ping_list = ast.literal_eval(pl.field_2)
|
||||
ping_list[hblink_req['ping']] = time.time()
|
||||
misc_edit_field_1('ping_list', str(ping_list), '', '', 0, 0, 0, 0, True, True)
|
||||
try:
|
||||
cl = Misc.query.filter_by(field_1=hblink_req['ping'] + '_command_list').first()
|
||||
cmd_lst = ast.literal_eval(cl.field_2)
|
||||
delete_misc_field_1(hblink_req['ping'] + '_command_list')
|
||||
## try:
|
||||
## print(hblink_req)
|
||||
if hblink_req['mode'] == 'ping':
|
||||
print(hblink_req['user_systems'])
|
||||
try:
|
||||
misc_edit_field_1('bridge_table_' + hblink_req['server'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
misc_edit_field_1('user_system_table_' + hblink_req['server'], str(hblink_req['user_systems']), '', '', 0, 0, 0, 0, False, False)
|
||||
|
||||
## delete_misc_field_1('bridge_table_' + hblink_req['ping'])
|
||||
|
||||
## delete_misc_field_1('user_system_table_' + hblink_req['ping'])
|
||||
|
||||
## misc_add('bridge_table_' + hblink_req['ping'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
|
||||
## misc_add('user_system_table_' + hblink_req['ping'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
## print('responsa')
|
||||
except:
|
||||
misc_add('bridge_table_' + hblink_req['server'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
misc_add('user_system_table_' + hblink_req['server'], str(hblink_req['user_systems']), '', '', 0, 0, 0, 0, False, False)
|
||||
|
||||
pl = Misc.query.filter_by(field_1='ping_list').first()
|
||||
ping_list = ast.literal_eval(pl.field_2)
|
||||
ping_list[hblink_req['server']] = time.time()
|
||||
misc_edit_field_1('ping_list', str(ping_list), '', '', 0, 0, 0, 0, True, True)
|
||||
try:
|
||||
cl = Misc.query.filter_by(field_1=hblink_req['server'] + '_command_list').first()
|
||||
cmd_lst = ast.literal_eval(cl.field_2)
|
||||
delete_misc_field_1(hblink_req['server'] + '_command_list')
|
||||
|
||||
except:
|
||||
cmd_lst = []
|
||||
|
||||
response = jsonify(
|
||||
commands=cmd_lst
|
||||
)
|
||||
except:
|
||||
pass
|
||||
except:
|
||||
cmd_lst = []
|
||||
|
||||
response = jsonify(
|
||||
commands=cmd_lst
|
||||
)
|
||||
## except:
|
||||
## pass
|
||||
if 'login_id' in hblink_req and 'login_confirmed' not in hblink_req:
|
||||
if type(hblink_req['login_id']) == int:
|
||||
if authorized_peer(hblink_req['login_id'])[0]:
|
||||
|
|
@ -7640,16 +7727,16 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
response = jsonify(
|
||||
logged=True
|
||||
)
|
||||
elif 'burn_list' in hblink_req: # ['burn_list']: # == 'burn_list':
|
||||
elif hblink_req['mode'] == 'burn_list': # ['burn_list']: # == 'burn_list':
|
||||
response = jsonify(
|
||||
burn_list=get_burnlist()
|
||||
)
|
||||
elif 'aprs_settings' in hblink_req: # ['burn_list']: # == 'burn_list':
|
||||
elif hblink_req['mode'] == 'aprs_settings': # ['burn_list']: # == 'burn_list':
|
||||
## print(get_aprs_settings())
|
||||
response = jsonify(
|
||||
aprs_settings=get_aprs_settings()
|
||||
)
|
||||
elif 'loc_callsign' in hblink_req:
|
||||
elif hblink_req['mode'] == 'loc_callsign':
|
||||
if hblink_req['lat'] == '*' and hblink_req['lon'] == '*':
|
||||
## del peer_locations[hblink_req['dmr_id']]
|
||||
del_peer_loc(hblink_req['dmr_id'])
|
||||
|
|
@ -7660,21 +7747,21 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
peer_loc_add(hblink_req['loc_callsign'], hblink_req['lat'], hblink_req['lon'], hblink_req['description'], hblink_req['dmr_id'], '', '', hblink_req['url'], hblink_req['software'], hblink_req['loc'])
|
||||
print(PeerLoc.query.all())
|
||||
response = ''
|
||||
elif 'dashboard' in hblink_req:
|
||||
elif hblink_req['mode'] == 'dashboard':
|
||||
if 'lat' in hblink_req:
|
||||
# Assuming this is a GPS loc
|
||||
dash_loc_add(hblink_req['call'], hblink_req['lat'], hblink_req['lon'], hblink_req['comment'], hblink_req['dmr_id'], hblink_req['dashboard'])
|
||||
trim_dash_loc()
|
||||
response = 'yes'
|
||||
elif 'log_sms' in hblink_req:
|
||||
elif hblink_req['mode'] == 'log_sms':
|
||||
sms_log_add(hblink_req['snd_call'], hblink_req['rcv_call'], hblink_req['message'], hblink_req['snd_id'], hblink_req['rcv_id'], hblink_req['log_sms'], hblink_req['system_name'])
|
||||
trim_sms_log()
|
||||
response = 'rcvd'
|
||||
elif 'bb_send' in hblink_req:
|
||||
elif hblink_req['mode'] == 'bb_send':
|
||||
bb_add(hblink_req['callsign'], hblink_req['bulletin'], hblink_req['dmr_id'], hblink_req['bb_send'], hblink_req['system_name'])
|
||||
trim_bb()
|
||||
response = 'rcvd'
|
||||
elif 'mb_add' in hblink_req:
|
||||
elif hblink_req['mode'] == 'mb_add':
|
||||
if hblink_req['dst_callsign'] == 'admins':
|
||||
admins = UserRoles.query.filter_by(role_id=2).all()
|
||||
print(admins)
|
||||
|
|
@ -7692,20 +7779,21 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
# del_ss(hblink_req['dmr_id'])
|
||||
# ss_add(hblink_req['callsign'], str(hblink_req['message']), hblink_req['dmr_id'])
|
||||
# response = 'rcvd'
|
||||
elif 'unit_table' in hblink_req:
|
||||
elif hblink_req['mode'] == 'unit_table':
|
||||
## del_unit_table(hblink_req['unit_table'])
|
||||
try:
|
||||
delete_misc_field_1('unit_table_' + hblink_req['unit_table'])
|
||||
delete_misc_field_1('unit_table_' + hblink_req['server'])
|
||||
misc_add('unit_table_' + hblink_req['unit_table'], str(hblink_req['data']), '', '', 0, 0, 0, 0, False, False)
|
||||
delete_misc_field_1('bridge_table_' + hblink_req['unit_table'])
|
||||
misc_add('bridge_table_' + hblink_req['unit_table'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
## delete_misc_field_1('bridge_table_' + hblink_req['unit_table'])
|
||||
## misc_add('bridge_table_' + hblink_req['unit_table'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
## misc_edit_field_1('bridge_table_' + hblink_req['unit_table'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
except:
|
||||
print('entry error')
|
||||
misc_add('unit_table_' + hblink_req['unit_table'], str(hblink_req['data']), '', '', 0, 0, 0, 0, False, False)
|
||||
misc_add('bridge_table_' + hblink_req['unit_table'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
misc_add('unit_table_' + hblink_req['server'], str(hblink_req['data']), '', '', 0, 0, 0, 0, False, False)
|
||||
## misc_add('bridge_table_' + hblink_req['unit_table'], str(hblink_req['bridge_data']), '', '', 0, 0, 0, 0, False, False)
|
||||
## unit_table_add(hblink_req['data'])
|
||||
response = 'rcvd'
|
||||
elif 'known_services' in hblink_req:
|
||||
elif hblink_req['mode'] == 'known_services':
|
||||
print(hblink_req)
|
||||
## del_unit_table(hblink_req['unit_table'])
|
||||
try:
|
||||
|
|
@ -7718,34 +7806,34 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
response = 'rcvd'
|
||||
|
||||
|
||||
elif 'get_config' in hblink_req:
|
||||
if hblink_req['get_config']:
|
||||
elif hblink_req['mode'] == 'get_config':
|
||||
## if hblink_req['get_config']:
|
||||
## active_tgs[hblink_req['get_config']] = {}
|
||||
|
||||
pl = Misc.query.filter_by(field_1='ping_list').first()
|
||||
ping_list = ast.literal_eval(pl.field_2)
|
||||
|
||||
ping_list[hblink_req['get_config']] = time.time()
|
||||
|
||||
misc_edit_field_1('ping_list', str(ping_list), '', '', 0, 0, 0, 0, True, True)
|
||||
pl = Misc.query.filter_by(field_1='ping_list').first()
|
||||
ping_list = ast.literal_eval(pl.field_2)
|
||||
|
||||
ping_list[hblink_req['server']] = time.time()
|
||||
|
||||
misc_edit_field_1('ping_list', str(ping_list), '', '', 0, 0, 0, 0, True, True)
|
||||
## print(active_tgs)
|
||||
## try:
|
||||
## try:
|
||||
## print(get_peer_configs(hblink_req['get_config']))
|
||||
|
||||
## print(masters_get(hblink_req['get_config']))
|
||||
response = jsonify(
|
||||
config=server_get(hblink_req['get_config']),
|
||||
peers=get_peer_configs(hblink_req['get_config']),
|
||||
masters=masters_get(hblink_req['get_config']),
|
||||
## OBP=get_OBP(hblink_req['get_config'])
|
||||
response = jsonify(
|
||||
config=server_get(hblink_req['server']),
|
||||
peers=get_peer_configs(hblink_req['server']),
|
||||
masters=masters_get(hblink_req['server']),
|
||||
## OBP=get_OBP(hblink_req['get_config'])
|
||||
|
||||
)
|
||||
## except:
|
||||
## message = jsonify(message='Config error')
|
||||
## response = make_response(message, 401)
|
||||
)
|
||||
## except:
|
||||
## message = jsonify(message='Config error')
|
||||
## response = make_response(message, 401)
|
||||
|
||||
|
||||
elif 'get_sms_que' in hblink_req:
|
||||
elif hblink_req['mode'] == 'get_sms_que':
|
||||
if hblink_req['get_sms_que']:
|
||||
q = sms_que(hblink_req['get_sms_que'])
|
||||
|
||||
|
|
@ -7753,7 +7841,7 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
que=q
|
||||
)
|
||||
sms_que_purge(hblink_req['get_sms_que'])
|
||||
elif 'sms_cmd' in hblink_req:
|
||||
elif hblink_req['mode'] == 'sms_cmd':
|
||||
## print(get_aprs_settings())
|
||||
if hblink_req['sms_cmd']:
|
||||
split_cmd = str(hblink_req['cmd']).split(' ')
|
||||
|
|
@ -7829,13 +7917,14 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
## OBP=get_OBP(hblink_req['get_config'])
|
||||
|
||||
)
|
||||
elif 'get_rules' in hblink_req:
|
||||
if hblink_req['get_rules']: # == 'burn_list':
|
||||
elif hblink_req['mode'] == 'get_rules':
|
||||
## if hblink_req['get_rules']: # == 'burn_list':
|
||||
|
||||
## try:
|
||||
response = jsonify(
|
||||
rules=generate_rules(hblink_req['get_rules']),
|
||||
)
|
||||
response = jsonify(
|
||||
rules=generate_rules(hblink_req['server']),
|
||||
)
|
||||
|
||||
|
||||
else:
|
||||
message = jsonify(message='Authentication error')
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<h1 style="text-align: center;">{{server}}/{{system}}</h1>
|
||||
<br />
|
||||
<br />
|
||||
<h4 style="text-align: center;">Updated every minute.</h4>
|
||||
<h4 style="text-align: center;">Updated every 10 seconds.</h4>
|
||||
|
||||
|
||||
<table data-toggle="table" data-pagination="true" data-search="true" >
|
||||
|
|
@ -16,6 +16,7 @@
|
|||
<th>Name</th>
|
||||
<th>TG</th>
|
||||
<th>Status</th>
|
||||
<th>Options</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
|||
Loading…
Reference in New Issue