change sending que path, generate dictionaries, moved locap_apps and authorized_users to rules.py
This commit is contained in:
parent
aa3ae3d3a1
commit
dd4c7d91a1
@ -178,12 +178,11 @@ USER_SETTINGS_FILE: /path/to/user_settings.txt
|
|||||||
# Server name - can be different than dashboard title, used to identify this network/server
|
# Server name - can be different than dashboard title, used to identify this network/server
|
||||||
USE_API: True
|
USE_API: True
|
||||||
AUTHORIZED_TOKENS_FILE: /tmp/hblink_auth_tokens.txt
|
AUTHORIZED_TOKENS_FILE: /tmp/hblink_auth_tokens.txt
|
||||||
AUTHORIZED_USERS_FILE: /path/to/authorized_users.txt
|
MY_SERVER_SHORTCUT: ABC
|
||||||
ACCESS_SYSTEMS_FILE: /path/to/access_systems.txt
|
|
||||||
MY_API_NAME: ABC
|
|
||||||
SERVER_NAME: Test HBLink Network
|
SERVER_NAME: Test HBLink Network
|
||||||
USE_PUBLIC_APPS: True
|
USE_PUBLIC_APPS: True
|
||||||
PUBLIC_APPS_LIST: https://raw.githubusercontent.com/kf7eel/hblink_sms_external_apps/main/public_systems.txt
|
PUBLIC_APPS_LIST: https://raw.githubusercontent.com/kf7eel/hblink_sms_external_apps/main/public_systems.txt
|
||||||
|
RULES_PATH: /path/to/rules.py
|
||||||
|
|
||||||
|
|
||||||
# The following options are used for the dashboard. The dashboard is optional.
|
# The following options are used for the dashboard. The dashboard is optional.
|
||||||
|
@ -255,7 +255,7 @@ def send_app_request(url, message, source_id):
|
|||||||
auth_token.close()
|
auth_token.close()
|
||||||
app_request = {
|
app_request = {
|
||||||
'mode':'app',
|
'mode':'app',
|
||||||
'system_shortcut':CONFIG['GPS_DATA']['MY_API_NAME'],
|
'system_shortcut':CONFIG['GPS_DATA']['MY_SERVER_SHORTCUT'],
|
||||||
'server_name':CONFIG['GPS_DATA']['SERVER_NAME'],
|
'server_name':CONFIG['GPS_DATA']['SERVER_NAME'],
|
||||||
'response_url':CONFIG['GPS_DATA']['DASHBOARD_URL'] + '/api',
|
'response_url':CONFIG['GPS_DATA']['DASHBOARD_URL'] + '/api',
|
||||||
'auth_token':the_token,
|
'auth_token':the_token,
|
||||||
@ -276,7 +276,7 @@ def send_msg_xfer(url, user, password, message, source_id, dest_id):
|
|||||||
url = url + '/api/msg_xfer'
|
url = url + '/api/msg_xfer'
|
||||||
msg_xfer = {
|
msg_xfer = {
|
||||||
'mode':'msg_xfer',
|
'mode':'msg_xfer',
|
||||||
'system_shortcut':CONFIG['GPS_DATA']['MY_API_NAME'],
|
'system_shortcut':CONFIG['GPS_DATA']['MY_SERVER_SHORTCUT'],
|
||||||
'response_url':CONFIG['GPS_DATA']['DASHBOARD_URL'] + '/api',
|
'response_url':CONFIG['GPS_DATA']['DASHBOARD_URL'] + '/api',
|
||||||
'auth_type':'private',
|
'auth_type':'private',
|
||||||
'credentials': {
|
'credentials': {
|
||||||
@ -724,7 +724,7 @@ def create_sms_seq(dst_id, src_id, peer_id, _slot, _call_type, dmr_string):
|
|||||||
the_mmdvm_pkt = mmdvm_encapsulate(dst_id, src_id, peer_id, cap_in, _slot, _call_type, 7, rand_seq, i)#(bytes.fromhex(re.sub("b'|'", '', str(orig_cap[cap_in][20:-4])))))
|
the_mmdvm_pkt = mmdvm_encapsulate(dst_id, src_id, peer_id, cap_in, _slot, _call_type, 7, rand_seq, i)#(bytes.fromhex(re.sub("b'|'", '', str(orig_cap[cap_in][20:-4])))))
|
||||||
mmdvm_send_seq.append(ahex(the_mmdvm_pkt))
|
mmdvm_send_seq.append(ahex(the_mmdvm_pkt))
|
||||||
cap_in = cap_in + 1
|
cap_in = cap_in + 1
|
||||||
with open('/tmp/.hblink_data_que/' + str(random.randint(1000, 9999)) + '.mmdvm_seq', "w") as packet_write_file:
|
with open('/tmp/.hblink_data_que_' + str(CONFIG['GPS_DATA']['APRS_LOGIN_CALL']).upper() + '/' + str(random.randint(1000, 9999)) + '.mmdvm_seq', "w") as packet_write_file:
|
||||||
packet_write_file.write(str(mmdvm_send_seq))
|
packet_write_file.write(str(mmdvm_send_seq))
|
||||||
|
|
||||||
return mmdvm_send_seq
|
return mmdvm_send_seq
|
||||||
@ -827,9 +827,9 @@ def data_que_send():
|
|||||||
#logger.info('Check SMS que')
|
#logger.info('Check SMS que')
|
||||||
try:
|
try:
|
||||||
#logger.info(UNIT_MAP)
|
#logger.info(UNIT_MAP)
|
||||||
for packet_file in os.listdir('/tmp/.hblink_data_que/'):
|
for packet_file in os.listdir('/tmp/.hblink_data_que_' + str(CONFIG['GPS_DATA']['APRS_LOGIN_CALL']).upper() + '/'):
|
||||||
|
|
||||||
snd_seq = ast.literal_eval(os.popen('cat /tmp/.hblink_data_que/' + packet_file).read())
|
snd_seq = ast.literal_eval(os.popen('cat /tmp/.hblink_data_que_' + str(CONFIG['GPS_DATA']['APRS_LOGIN_CALL']).upper() + '/' + packet_file).read())
|
||||||
|
|
||||||
for data in snd_seq:
|
for data in snd_seq:
|
||||||
# Get dest id
|
# Get dest id
|
||||||
@ -856,7 +856,7 @@ def data_que_send():
|
|||||||
reactor.callFromThread(systems[data_target].send_system,bytes.fromhex(re.sub("b'|'", '', str(data))))
|
reactor.callFromThread(systems[data_target].send_system,bytes.fromhex(re.sub("b'|'", '', str(data))))
|
||||||
logger.info('Sending data to ' + str(data[10:16])[2:-1] + ' on system ' + data_target)
|
logger.info('Sending data to ' + str(data[10:16])[2:-1] + ' on system ' + data_target)
|
||||||
|
|
||||||
os.system('rm /tmp/.hblink_data_que/' + packet_file)
|
os.system('rm /tmp/.hblink_data_que_' + str(CONFIG['GPS_DATA']['APRS_LOGIN_CALL']).upper() + '/' + packet_file)
|
||||||
|
|
||||||
#routerHBP.send_peer('MASTER-2', bytes.fromhex(re.sub("b'|'", '', str(data))))
|
#routerHBP.send_peer('MASTER-2', bytes.fromhex(re.sub("b'|'", '', str(data))))
|
||||||
## os.system('rm /tmp/.hblink_data_que/' + packet_file)
|
## os.system('rm /tmp/.hblink_data_que/' + packet_file)
|
||||||
@ -2331,7 +2331,7 @@ if __name__ == '__main__':
|
|||||||
mailbox_file.write("[]")
|
mailbox_file.write("[]")
|
||||||
mailbox_file.close()
|
mailbox_file.close()
|
||||||
try:
|
try:
|
||||||
Path('/tmp/.hblink_data_que/').mkdir(parents=True, exist_ok=True)
|
Path('/tmp/.hblink_data_que_' + str(CONFIG['GPS_DATA']['APRS_LOGIN_CALL']).upper() + '/').mkdir(parents=True, exist_ok=True)
|
||||||
except:
|
except:
|
||||||
logger.info('Unable to create data que directory')
|
logger.info('Unable to create data que directory')
|
||||||
pass
|
pass
|
||||||
|
@ -80,11 +80,11 @@ authorized_users = {
|
|||||||
## 'user':'test_name',
|
## 'user':'test_name',
|
||||||
## 'password':'passw0rd'
|
## 'password':'passw0rd'
|
||||||
## },
|
## },
|
||||||
## 'DEF':{
|
'XYZ':{
|
||||||
## 'mode':'msg_xfer',
|
'mode':'msg_xfer',
|
||||||
## 'user':'test_name',
|
'user':'test_name',
|
||||||
## 'password':'passw0rd'
|
'password':'passw0rd'
|
||||||
## }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local_systems = {
|
local_systems = {
|
||||||
|
@ -31,6 +31,8 @@ from datetime import datetime
|
|||||||
import argparse
|
import argparse
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
from send_sms import *
|
from send_sms import *
|
||||||
|
import importlib.util
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -199,6 +201,41 @@ def user_setting_write(dmr_id, input_ssid, input_icon, input_comment, input_aprs
|
|||||||
user_dict_file.close()
|
user_dict_file.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def generate_apps():
|
||||||
|
global access_systems, authorized_users
|
||||||
|
mod = importlib.util.spec_from_file_location("rules_data", parser.get('GPS_DATA', 'RULES_PATH'))
|
||||||
|
rules = importlib.util.module_from_spec(mod)
|
||||||
|
mod.loader.exec_module(rules)
|
||||||
|
local_apps = rules.local_apps
|
||||||
|
authorized_users = rules.authorized_users
|
||||||
|
|
||||||
|
#rules_data = ast.literal_eval(os.popen('cat ' + parser.get('GPS_DATA', 'RULES_PATH')).read())
|
||||||
|
#rules_data
|
||||||
|
public_systems_file = requests.get(parser.get('GPS_DATA', 'PUBLIC_APPS_LIST'))
|
||||||
|
public_apps = ast.literal_eval(public_systems_file.text)
|
||||||
|
access_systems = {}
|
||||||
|
#combined = public_apps.items() + local_acess_systems.items()
|
||||||
|
print(type(parser.get('GPS_DATA', 'USE_PUBLIC_APPS')))
|
||||||
|
if parser.get('GPS_DATA', 'USE_PUBLIC_APPS') == 'True':
|
||||||
|
for i in public_apps.items():
|
||||||
|
key = str(i[0])
|
||||||
|
access_systems[key] = i[1]
|
||||||
|
for i in local_apps.items():
|
||||||
|
key = str(i[0])
|
||||||
|
access_systems[key] = i[1]
|
||||||
|
print(access_systems)
|
||||||
|
print(authorized_users)
|
||||||
|
print(local_apps)
|
||||||
|
#print(rules_data)
|
||||||
|
|
||||||
|
#print(type(public_apps))
|
||||||
|
#print(type(local_acess_systems))
|
||||||
|
#print()
|
||||||
|
#print(combined)
|
||||||
|
#print(local_acess_systems.update(public_apps))
|
||||||
|
#return access_systems
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
value = Markup('<strong>The HTML String</strong>')
|
value = Markup('<strong>The HTML String</strong>')
|
||||||
@ -223,7 +260,7 @@ def about():
|
|||||||
|
|
||||||
@app.route('/external_apps')
|
@app.route('/external_apps')
|
||||||
def external_apps():
|
def external_apps():
|
||||||
access_systems = ast.literal_eval(os.popen('cat ' + access_systems_file).read())
|
#access_systems = ast.literal_eval(os.popen('cat ' + access_systems_file).read())
|
||||||
msg_lst = ''
|
msg_lst = ''
|
||||||
app_lst = ''
|
app_lst = ''
|
||||||
for i_msg in access_systems.items():
|
for i_msg in access_systems.items():
|
||||||
@ -793,8 +830,8 @@ def api(api_mode=None):
|
|||||||
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, dashboard_url = dashboard_url, logo = logo, content = Markup(api_content), api = use_api)
|
return render_template('generic.html', title = dashboard_title, dashboard_url = dashboard_url, logo = logo, content = Markup(api_content), api = use_api)
|
||||||
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())
|
||||||
api_data = request.json
|
api_data = request.json
|
||||||
#print(type(api_data))
|
#print(type(api_data))
|
||||||
#print((api_data))
|
#print((api_data))
|
||||||
@ -822,7 +859,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'], sms_data['source_id'], 0000, 'unit', send_slot, sms_data['message'], que_dir)
|
||||||
return jsonify(
|
return jsonify(
|
||||||
mode=api_data['mode'],
|
mode=api_data['mode'],
|
||||||
status='Generated SMS',
|
status='Generated SMS',
|
||||||
@ -883,7 +920,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'], 0000, 0000, 'unit', send_slot, sms_data['message'])
|
send_sms(False, sms_data['destination_id'], 0000, 0000, 'unit', send_slot, sms_data['message'], que_dir)
|
||||||
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))
|
||||||
@ -973,9 +1010,11 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
auth_token_file = parser.get('GPS_DATA', 'AUTHORIZED_TOKENS_FILE')
|
auth_token_file = parser.get('GPS_DATA', 'AUTHORIZED_TOKENS_FILE')
|
||||||
use_api = parser.get('GPS_DATA', 'USE_API')
|
use_api = parser.get('GPS_DATA', 'USE_API')
|
||||||
access_systems_file = parser.get('GPS_DATA', 'ACCESS_SYSTEMS_FILE')
|
#access_systems_file = parser.get('GPS_DATA', 'ACCESS_SYSTEMS_FILE')
|
||||||
authorized_users_file = parser.get('GPS_DATA', 'AUTHORIZED_USERS_FILE')
|
#authorized_users_file = parser.get('GPS_DATA', 'AUTHORIZED_USERS_FILE')
|
||||||
|
|
||||||
|
que_dir = '/tmp/.hblink_data_que_' + str(parser.get('GPS_DATA', 'APRS_LOGIN_CALL').upper()) + '/'
|
||||||
|
generate_apps()
|
||||||
#Only create if API enabled
|
#Only create if API enabled
|
||||||
if use_api == True:
|
if use_api == True:
|
||||||
if Path(auth_token_file).is_file():
|
if Path(auth_token_file).is_file():
|
||||||
@ -992,8 +1031,9 @@ if __name__ == '__main__':
|
|||||||
try:
|
try:
|
||||||
#global authorized_users, other_systems
|
#global authorized_users, other_systems
|
||||||
#from authorized_apps import authorized_users, access_systems
|
#from authorized_apps import authorized_users, access_systems
|
||||||
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())
|
||||||
|
print('generaty')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ def dmr_encode(packet_list, _slot):
|
|||||||
return send_seq
|
return send_seq
|
||||||
|
|
||||||
|
|
||||||
def create_sms_seq(dst_id, src_id, peer_id, _slot, _call_type, dmr_string):
|
def create_sms_seq(dst_id, src_id, peer_id, _slot, _call_type, dmr_string, que_dir):
|
||||||
rand_seq = random.randint(1, 999999)
|
rand_seq = random.randint(1, 999999)
|
||||||
block_seq = block_sequence(dmr_string)
|
block_seq = block_sequence(dmr_string)
|
||||||
dmr_list = dmr_encode(block_seq, _slot)
|
dmr_list = dmr_encode(block_seq, _slot)
|
||||||
@ -197,12 +197,12 @@ def create_sms_seq(dst_id, src_id, peer_id, _slot, _call_type, dmr_string):
|
|||||||
the_mmdvm_pkt = mmdvm_encapsulate(dst_id, src_id, peer_id, cap_in, _slot, _call_type, 7, rand_seq, i)#(bytes.fromhex(re.sub("b'|'", '', str(orig_cap[cap_in][20:-4])))))
|
the_mmdvm_pkt = mmdvm_encapsulate(dst_id, src_id, peer_id, cap_in, _slot, _call_type, 7, rand_seq, i)#(bytes.fromhex(re.sub("b'|'", '', str(orig_cap[cap_in][20:-4])))))
|
||||||
mmdvm_send_seq.append(ahex(the_mmdvm_pkt))
|
mmdvm_send_seq.append(ahex(the_mmdvm_pkt))
|
||||||
cap_in = cap_in + 1
|
cap_in = cap_in + 1
|
||||||
with open('/tmp/.hblink_data_que/' + str(random.randint(1000, 9999)) + '.mmdvm_seq', "w") as packet_write_file:
|
with open(que_dir + str(random.randint(1000, 9999)) + '.mmdvm_seq', "w") as packet_write_file:
|
||||||
packet_write_file.write(str(mmdvm_send_seq))
|
packet_write_file.write(str(mmdvm_send_seq))
|
||||||
|
|
||||||
return mmdvm_send_seq
|
return mmdvm_send_seq
|
||||||
try:
|
try:
|
||||||
Path('/tmp/.hblink_data_que/').mkdir(parents=True, exist_ok=True)
|
Path(que_dir).mkdir(parents=True, exist_ok=True)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ def gen_header(to_id, from_id, call_type):
|
|||||||
seq_header = '824A' + to_id + from_id + '9550'
|
seq_header = '824A' + to_id + from_id + '9550'
|
||||||
return seq_header
|
return seq_header
|
||||||
|
|
||||||
def send_sms(csbk, to_id, from_id, peer_id, call_type, slot, msg):
|
def send_sms(csbk, to_id, from_id, peer_id, call_type, slot, msg, que_dir):
|
||||||
global use_csbk
|
global use_csbk
|
||||||
#to_id = str(hex(to_id))[2:].zfill(6)
|
#to_id = str(hex(to_id))[2:].zfill(6)
|
||||||
#from_id = str(hex(from_id))[2:].zfill(6)
|
#from_id = str(hex(from_id))[2:].zfill(6)
|
||||||
@ -287,10 +287,10 @@ def send_sms(csbk, to_id, from_id, peer_id, call_type, slot, msg):
|
|||||||
new_call_type = 0
|
new_call_type = 0
|
||||||
if csbk == 'yes':
|
if csbk == 'yes':
|
||||||
use_csbk = True
|
use_csbk = True
|
||||||
create_sms_seq(to_id, from_id, peer_id, int(slot), new_call_type, csbk_gen(to_id, from_id) + create_crc16(gen_header(to_id, from_id, new_call_type)) + create_crc32(format_sms(msg, to_id, from_id)))
|
create_sms_seq(to_id, from_id, peer_id, int(slot), new_call_type, csbk_gen(to_id, from_id) + create_crc16(gen_header(to_id, from_id, new_call_type)) + create_crc32(format_sms(msg, to_id, from_id)), que_dir)
|
||||||
else:
|
else:
|
||||||
use_csbk = False
|
use_csbk = False
|
||||||
create_sms_seq(to_id, from_id, peer_id, int(slot), new_call_type, create_crc16(gen_header(to_id, from_id, new_call_type)) + create_crc32(format_sms(msg, to_id, from_id)))
|
create_sms_seq(to_id, from_id, peer_id, int(slot), new_call_type, create_crc16(gen_header(to_id, from_id, new_call_type)) + create_crc32(format_sms(msg, to_id, from_id)), que_dir)
|
||||||
print('Call type: ' + call_type)
|
print('Call type: ' + call_type)
|
||||||
print('Destination: ' + str(to_id))
|
print('Destination: ' + str(to_id))
|
||||||
print('Source: ' + str(from_id))
|
print('Source: ' + str(from_id))
|
||||||
|
@ -172,13 +172,12 @@ def build_config(_config_file):
|
|||||||
'USER_SETTINGS_FILE': config.get(section, 'USER_SETTINGS_FILE'),
|
'USER_SETTINGS_FILE': config.get(section, 'USER_SETTINGS_FILE'),
|
||||||
'USE_API': config.getboolean(section, 'USE_API'),
|
'USE_API': config.getboolean(section, 'USE_API'),
|
||||||
'AUTHORIZED_TOKENS_FILE': config.get(section, 'AUTHORIZED_TOKENS_FILE'),
|
'AUTHORIZED_TOKENS_FILE': config.get(section, 'AUTHORIZED_TOKENS_FILE'),
|
||||||
'AUTHORIZED_USERS_FILE': config.get(section, 'AUTHORIZED_USERS_FILE'),
|
|
||||||
'ACCESS_SYSTEMS_FILE': config.get(section, 'ACCESS_SYSTEMS_FILE'),
|
|
||||||
'USE_PUBLIC_APPS': config.getboolean(section, 'USE_PUBLIC_APPS'),
|
'USE_PUBLIC_APPS': config.getboolean(section, 'USE_PUBLIC_APPS'),
|
||||||
'PUBLIC_APPS_LIST': config.get(section, 'PUBLIC_APPS_LIST'),
|
'PUBLIC_APPS_LIST': config.get(section, 'PUBLIC_APPS_LIST'),
|
||||||
'MY_API_NAME': config.get(section, 'MY_API_NAME'),
|
'MY_SERVER_SHORTCUT': config.get(section, 'MY_SERVER_SHORTCUT'),
|
||||||
'DASHBOARD_URL': config.get(section, 'DASHBOARD_URL'),
|
'DASHBOARD_URL': config.get(section, 'DASHBOARD_URL'),
|
||||||
'SERVER_NAME': config.get(section, 'SERVER_NAME'),
|
'SERVER_NAME': config.get(section, 'SERVER_NAME'),
|
||||||
|
'RULES_PATH': config.get(section, 'RULES_PATH'),
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user