tested and working API to external app

This commit is contained in:
KF7EEL 2021-04-22 14:47:22 -07:00
parent e15169b09c
commit 7b2b33b2d9
5 changed files with 35 additions and 18 deletions

View File

@ -1,11 +1,20 @@
{ {
'XYZ':{ 'XYZ':{
'mode':'msg_xfer', 'mode':'msg_xfer',
'network_name':'My HBlink Server',
'url':'http://example.net/api',
'user':'test_name', 'user':'test_name',
'password':'passw0rd' 'password':'passw0rd'
}, },
'APP':{ 'APP':{
'mode':'app', 'mode':'app',
'app_name':'Test app',
'url':'http://localhost:8080/post',
},
'ABC':{
'mode':'msg_xfer',
'network_name':'Regional HBlink Network 1',
'url':'http://localhost:8092/api',
'user':'test_name', 'user':'test_name',
'password':'passw0rd' 'password':'passw0rd'
} }

View File

@ -1,5 +1,5 @@
{ {
'ABC':{ 'XYZ':{
'mode':'msg_xfer', 'mode':'msg_xfer',
'user':'test_name', 'user':'test_name',
'password':'passw0rd' 'password':'passw0rd'

View File

@ -34,8 +34,10 @@ msg_xfer = {
} }
json_object = json.dumps(msg_xfer, indent = 4) json_object = json.dumps(msg_xfer, indent = 4)
print('App') print('-----------------------------------------')
print('msg_xfer')
print(json_object) print(json_object)
print('-----------------------------------------')
app_request = { app_request = {
'mode':'app', 'mode':'app',
@ -44,7 +46,6 @@ app_request = {
'auth_token':'1234567899', 'auth_token':'1234567899',
'data':{ 'data':{
'source_id':1234, 'source_id':1234,
'destination_id':3153591,
'slot':2, 'slot':2,
'msg_type':'unit', 'msg_type':'unit',
'msg_format':'motorola', 'msg_format':'motorola',
@ -52,22 +53,25 @@ app_request = {
} }
} }
json_object = json.dumps(app_request, indent = 4) json_object = json.dumps(app_request, indent = 4)
print('-----------------------------------------')
print('app, request, sent to the APP server')
print(json_object) print(json_object)
print('-----------------------------------------')
app_response = { app_response = {
'mode':'app', 'mode':'app',
'system_name':'APP', 'system_name':'APP',
'auth_token':'1234567899', 'auth_token':'736a9ced7e7688c951490a7f8e1ebdd4',
'data':{ 'data':{
1:{'source_id':1234, 1:{'source_app':'app_name',
'destination_id':3153591, 'destination_id':3153591,
'slot':2, 'slot':2,
'msg_type':'unit', 'msg_type':'unit',
'msg_format':'motorola', 'msg_format':'motorola',
'message':'text of the message' 'message':'text of the message'
}, },
2:{'source_id':1234, 2:{'source_id':'app_name',
'destination_id':3153591, 'destination_id':3153591,
'slot':2, 'slot':2,
'msg_type':'unit', 'msg_type':'unit',
@ -77,10 +81,12 @@ app_response = {
} }
} }
json_object = json.dumps(app_response, indent = 4) json_object = json.dumps(app_response, indent = 4)
print('-----------------------------------------')
print('app, response, sent to your dashboard')
print(json_object) print(json_object)
print('-----------------------------------------')
msg_xfer = { raw_msg_xfer = {
'mode':'raw', 'mode':'raw',
'system_name':'ABC', 'system_name':'ABC',
'response_url':'http://localhost:8093/api/', 'response_url':'http://localhost:8093/api/',

View File

@ -2,8 +2,9 @@
# #
############################################################################### ###############################################################################
# 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) 2020 Eric Craw, KF7EEL <kf7eel@qsl.net> # GPS/Data - Copyright (C) 2021 Eric Craw, KF7EEL <kf7eel@qsl.net>
# Annotated modifications Copyright (C) 2021 Xavier FRS2013 # Annotated modifications Copyright (C) 2021 Xavier FRS2013
# Static position by IU7IGU
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@ -242,7 +243,7 @@ def sos_write(dmr_id, time, message):
sos_file.close() sos_file.close()
logger.info('Saved SOS.') logger.info('Saved SOS.')
def send_app_request(url, message, source_id): def send_app_request(url, message, source_id):
url = url + '/app' #url = url + '/app'
#Load current AUTH token list #Load current AUTH token list
auth_file = ast.literal_eval(os.popen('cat ' + auth_token_file).read()) auth_file = ast.literal_eval(os.popen('cat ' + auth_token_file).read())
the_token = str(hashlib.md5(str(time()).encode('utf-8')).hexdigest()) the_token = str(hashlib.md5(str(time()).encode('utf-8')).hexdigest())
@ -255,7 +256,7 @@ def send_app_request(url, message, source_id):
app_request = { app_request = {
'mode':'app', 'mode':'app',
'system_name':CONFIG['GPS_DATA']['MY_API_NAME'], 'system_name':CONFIG['GPS_DATA']['MY_API_NAME'],
'response_url':CONFIG['GPS_DATA']['DASHBOARD_URL'], 'response_url':CONFIG['GPS_DATA']['DASHBOARD_URL'] + '/api',
'auth_token':the_token, 'auth_token':the_token,
'data':{ 'data':{
'source_id':source_id, 'source_id':source_id,

View File

@ -726,7 +726,7 @@ def mail_rss():
def api(api_mode=None): def api(api_mode=None):
if request.method == 'GET': if request.method == 'GET':
api_content = '<h3 style="text-align: center;"><strong>API Enabled: ' + str(use_api) + '</strong></h3>' api_content = '<h3 style="text-align: center;"><strong>API Enabled: ' + str(use_api) + '</strong></h3>'
return render_template('generic.html', title = dashboard_title, content = Markup(api_content)) return render_template('generic.html', title = dashboard_title, logo = logo, content = Markup(api_content))
if use_api == 'True' or use_api == "true": if use_api == 'True' or use_api == "true":
access_systems = ast.literal_eval(os.popen('cat ' + access_systems_file).read()) access_systems = ast.literal_eval(os.popen('cat ' + access_systems_file).read())
authorized_users = ast.literal_eval(os.popen('cat ' + authorized_users_file).read()) authorized_users = ast.literal_eval(os.popen('cat ' + authorized_users_file).read())
@ -776,6 +776,7 @@ def api(api_mode=None):
return make_response(message, 400) return make_response(message, 400)
if api_data['mode'] == 'app': if api_data['mode'] == 'app':
auth_file = ast.literal_eval(os.popen('cat ' + auth_token_file).read()) auth_file = ast.literal_eval(os.popen('cat ' + auth_token_file).read())
print(auth_file)
for token in auth_file: for token in auth_file:
print() print()
print(token) print(token)
@ -792,7 +793,7 @@ def api(api_mode=None):
send_slot = 0 send_slot = 0
if sms_data['slot'] == 2: if sms_data['slot'] == 2:
send_slot = 1 send_slot = 1
send_sms(False, sms_data['destination_id'], sms_data['source_id'], 0000, 'unit', send_slot, sms_data['message']) send_sms(False, sms_data['destination_id'], 0000, 0000, 'unit', send_slot, sms_data['message'])
new_auth_file = auth_file new_auth_file = auth_file
with open(auth_token_file, 'w') as auth_token: with open(auth_token_file, 'w') as auth_token:
auth_token.write(str(auth_file)) auth_token.write(str(auth_file))
@ -803,9 +804,9 @@ def api(api_mode=None):
mode=api_data['mode'], mode=api_data['mode'],
status='Token accepted, SMS generated', status='Token accepted, SMS generated',
) )
if token != api_data['auth_token']: ## if token != api_data['auth_token']:
message = jsonify(message='Auth token not found') ## message = jsonify(message='Auth token not found')
return make_response(message, 401) ## return make_response(message, 401)
else: else:
message = jsonify(message='Mode not found') message = jsonify(message='Mode not found')