From 4633f4d518da9cbe5ef358fbf87d51fb885c87f0 Mon Sep 17 00:00:00 2001 From: KF7EEL Date: Sun, 10 Oct 2021 05:16:38 -0700 Subject: [PATCH] fix templates, continue tiny pages, continue data gateway --- data_gateway.py | 110 ++++++++++++++++--------- web/app.py | 50 +++++++++-- web/templates/flask_user/login.html | 4 +- web/templates/flask_user/register.html | 2 +- web/templates/tp_add.html | 30 +++++++ web/templates/tp_all.html | 32 +++++++ 6 files changed, 182 insertions(+), 46 deletions(-) create mode 100644 web/templates/tp_add.html create mode 100644 web/templates/tp_all.html diff --git a/data_gateway.py b/data_gateway.py index afbceb6..780673a 100644 --- a/data_gateway.py +++ b/data_gateway.py @@ -998,45 +998,74 @@ def send_sms(csbk, to_id, from_id, peer_id, call_type, msg): def data_que_check(): l=task.LoopingCall(data_que_send) l.start(1) -def data_que_send(): - #logger.info('Check SMS que') - try: - #logger.info(UNIT_MAP) - for packet_file in os.listdir('/tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/'): - logger.info('Sending SMS') - logger.info(os.listdir('/tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/')) - snd_seq = ast.literal_eval(os.popen('cat /tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/' + packet_file).read()) - for data in snd_seq: - # Get dest id - dst_id = bytes.fromhex(str(data[10:16])[2:-1]) - call_type = hex2bits(data)[121:122] - # Handle UNIT calls - if call_type[0] == True: - # If destination ID in map, route call only there - if dst_id in UNIT_MAP: - data_target = UNIT_MAP[dst_id][0] - 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) - # Flood all systems - elif dst_id not in UNIT_MAP: - for i in UNIT: - reactor.callFromThread(systems[i].send_system,bytes.fromhex(re.sub("b'|'", '', str(data)))) - logger.info('Sending data to ' + str(data[10:16])[2:-1] + ' on system ' + i) - # Handle group calls - elif call_type[0] == False: - for i in BRIDGES.items(): - for d in i[1]: - if dst_id == d['TGID']: - data_target = d['SYSTEM'] - 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) - - os.system('rm /tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/' + packet_file) +##def data_que_send(): +## #logger.info('Check SMS que') +## try: +## #logger.info(UNIT_MAP) +## for packet_file in os.listdir('/tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/'): +## logger.info('Sending SMS') +## logger.info(os.listdir('/tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/')) +## snd_seq = ast.literal_eval(os.popen('cat /tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/' + packet_file).read()) +## for data in snd_seq: +## # Get dest id +## dst_id = bytes.fromhex(str(data[10:16])[2:-1]) +## call_type = hex2bits(data)[121:122] +## # Handle UNIT calls +## if call_type[0] == True: +## # If destination ID in map, route call only there +## if dst_id in UNIT_MAP: +## data_target = UNIT_MAP[dst_id][0] +## 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) +## # Flood all systems +## elif dst_id not in UNIT_MAP: +## for i in UNIT: +## reactor.callFromThread(systems[i].send_system,bytes.fromhex(re.sub("b'|'", '', str(data)))) +## logger.info('Sending data to ' + str(data[10:16])[2:-1] + ' on system ' + i) +## # Handle group calls +## elif call_type[0] == False: +## for i in BRIDGES.items(): +## for d in i[1]: +## if dst_id == d['TGID']: +## data_target = d['SYSTEM'] +## 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) +## +## os.system('rm /tmp/.hblink_data_que_' + str(CONFIG['DATA_CONFIG']['APRS_LOGIN_CALL']).upper() + '/' + packet_file) +## +## #routerHBP.send_peer('MASTER-2', bytes.fromhex(re.sub("b'|'", '', str(data)))) +## ## os.system('rm /tmp/.hblink_data_que/' + packet_file) +## except Exception as e: +## logger.info(e) - #routerHBP.send_peer('MASTER-2', bytes.fromhex(re.sub("b'|'", '', str(data)))) - ## os.system('rm /tmp/.hblink_data_que/' + packet_file) - except Exception as e: - logger.info(e) +def aprs_process(packet): + try: + if 'addresse' in aprslib.parse(packet): + #print(aprslib.parse(packet)) + recipient = re.sub('-.*','', aprslib.parse(packet)['addresse']) + recipient_ssid = re.sub('.*-','', aprslib.parse(packet)['addresse']) + if recipient == '': + pass + else: + user_settings = ast.literal_eval(os.popen('cat ' + user_settings_file).read()) + for i in user_settings.items(): + sms_id = i[0] + ssid = i[1][1]['ssid'] + if i[1][1]['ssid'] == '': + ssid = user_ssid + if recipient in i[1][0]['call'] and i[1][5]['APRS'] == True and recipient_ssid in ssid: + mailbox_write(re.sub('-.*','', aprslib.parse(packet)['addresse']), aprslib.parse(packet)['from'], time(), aprslib.parse(packet)['message_text'], recipient) + send_sms(False, sms_id, 0000, 0000, 'unit', str('APRS / ' + str(aprslib.parse(packet)['from']) + ': ' + aprslib.parse(packet)['message_text'])) + try: + if 'msgNo' in aprslib.parse(packet): + #sleep(1) + logger.info(str(aprslib.parse(packet)['addresse']) + '>APHBL3,TCPIP*:' + ':' + str(aprslib.parse(packet)['from'].ljust(9)) +':ack' + str(aprslib.parse(packet)['msgNo'])) + aprs_send(str(aprslib.parse(packet)['addresse']) + '>APHBL3,TCPIP*:' + ':' + str(aprslib.parse(packet)['from'].ljust(9)) +':ack' + str(aprslib.parse(packet)['msgNo'])) + logger.info('Send ACK') + except Exception as e: + logger.info(e) + except: + logger.info('aprs except') # the APRS RX process def aprs_rx(aprs_rx_login, aprs_passcode, aprs_server, aprs_port, aprs_filter, user_ssid): @@ -1061,6 +1090,11 @@ def aprs_rx(aprs_rx_login, aprs_passcode, aprs_server, aprs_port, aprs_filter, u AIS.consumer(aprs_process, raw=True, immortal=False) except Exception as e: logger.info(e) + +def aprs_beacon_send(): + beacon_packet = CONFIG['GPS_DATA']['APRS_LOGIN_CALL'] + '>APHBL3,TCPIP*:!' + CONFIG['GPS_DATA']['IGATE_LATITUDE'] + str(CONFIG['GPS_DATA']['IGATE_BEACON_ICON'][0]) + CONFIG['GPS_DATA']['IGATE_LONGITUDE'] + str(CONFIG['GPS_DATA']['IGATE_BEACON_ICON'][1]) + '/' + CONFIG['GPS_DATA']['IGATE_BEACON_COMMENT'] + aprs_send(beacon_packet) + logger.info(beacon_packet) ##### DMR data function #### def data_received(self, _peer_id, _rf_src, _dst_id, _seq, _slot, _call_type, _frame_type, _dtype_vseq, _stream_id, _data): diff --git a/web/app.py b/web/app.py index 2d2bf39..0b08f63 100644 --- a/web/app.py +++ b/web/app.py @@ -501,7 +501,7 @@ def hbnet_web_service(): id = db.Column(db.Integer(), primary_key=True) author = db.Column(db.String(100), nullable=False, server_default='') content = db.Column(db.String(150), nullable=False, server_default='') - query = db.Column(db.String(100), nullable=False, server_default='') + query_term = db.Column(db.String(100), nullable=False, server_default='', unique=False) time = db.Column(db.DateTime()) class Misc(db.Model): @@ -2453,6 +2453,45 @@ TG #: ''' + str(tg_d.tg) + ''' ''' return render_template('bb.html', markup_content = Markup(content)) + @app.route('/tp') + def all_tp(): + tpl = TinyPage.query.order_by(TinyPage.time.desc()).all() + content = ''' ''' + for i in tpl: + content = content + ''' + + ''' + i.query_term + ''' + ''' + i.content + ''' + ''' + i.author + ''' + + ''' + return render_template('tp_all.html', markup_content = Markup(content)) + + @app.route('/add_tp', methods=['POST', 'GET']) +## @app.route('/add_tp') + def new_tp(): + u = current_user + print(u.username) + if request.args.get('add_page'): + tp_add(u.username, request.form.get('query'), request.form.get('content')) + content = '''

Saved Tiny Page.

+

Redirecting in 1 seconds.

+ ''' + + else: + content = '' +## tpl = TinyPage.query.order_by(TinyPage.time.desc()).all() +## content = ''' ''' +## for i in tpl: +## content = content + ''' +## +## ''' + i.query_term + ''' +## ''' + i.content + ''' +## ''' + i.author + ''' +## +## ''' + return render_template('tp_add.html', markup_content = Markup(content), url = url) + @app.route('/ss') def get_all_ss(): ss_all = Social.query.order_by(Social.time.desc()).all() @@ -2854,11 +2893,12 @@ Name: ''' + p.name + '''  -  Port: ''' + str( db.session.add(add_loc) db.session.commit() - def tp_add(_callsign, _bulletin, _dmr_id, _server, _system_name): - add_tp = BulletinBoard( + def tp_add(_author, _query_term, _content): + add_tp = TinyPage( author = _author, - query = _query, - content = _content + query_term = _query_term, + content = _content, + time = datetime.datetime.utcnow(), ) db.session.add(add_tp) db.session.commit() diff --git a/web/templates/flask_user/login.html b/web/templates/flask_user/login.html index fc33452..4da60e2 100644 --- a/web/templates/flask_user/login.html +++ b/web/templates/flask_user/login.html @@ -17,7 +17,7 @@ {# Label on left, "New here? Register." on right #}
- +
{% if user_manager.USER_ENABLE_REGISTER and not user_manager.USER_REQUIRE_INVITATION %} @@ -43,7 +43,7 @@ {# Label on left, "Forgot your Password?" on right #}
- +
{% if user_manager.USER_ENABLE_FORGOT_PASSWORD %} diff --git a/web/templates/flask_user/register.html b/web/templates/flask_user/register.html index 23392e1..6608b2b 100644 --- a/web/templates/flask_user/register.html +++ b/web/templates/flask_user/register.html @@ -25,7 +25,7 @@ By registering, you acknowledge that you agree to the Terms of Use. {# Label on left, "Already registered? Sign in." on right #}
- +
{% if user_manager.USER_ENABLE_REGISTER %} diff --git a/web/templates/tp_add.html b/web/templates/tp_add.html new file mode 100644 index 0000000..c2f6c92 --- /dev/null +++ b/web/templates/tp_add.html @@ -0,0 +1,30 @@ +{% extends 'flask_user/_public_base.html' %} +{% block content %} + +

Tiny Pages

+ + +
+
+ + +
+ +
+ ? + +
+ +
+ Content + +
+ +
+

+ +
+
+ +

 

+{% endblock %} diff --git a/web/templates/tp_all.html b/web/templates/tp_all.html new file mode 100644 index 0000000..372abad --- /dev/null +++ b/web/templates/tp_all.html @@ -0,0 +1,32 @@ +{% extends 'flask_user/_public_base.html' %} +{% block content %} + +

Tiny Pages

+ + +
+
+ {% if call_or_get(current_user.is_authenticated) %} + +{% endif %} + + + + + + + + + + + + {{markup_content}} + +
QueryContentAuthorOptions
+ + +
+
+ +

 

+{% endblock %}