mirror of
https://github.com/TheCommsChannel/TC2-BBS-mesh.git
synced 2025-03-05 20:51:53 -08:00
Compare commits
4 commits
b778b8b6cd
...
d8eea1640f
Author | SHA1 | Date | |
---|---|---|---|
|
d8eea1640f | ||
|
01e5282f1f | ||
|
6a9c90a0f4 | ||
|
71f066f3c9 |
|
@ -228,12 +228,12 @@ def handle_bb_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
|
|
||||||
|
|
||||||
def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
def handle_mail_steps(sender_id, message, step, state, interface, bbs_nodes):
|
||||||
message = message.lower().strip()
|
message = message.strip()
|
||||||
if len(message) == 2 and message[1] == 'x':
|
if len(message) == 2 and message[1] == 'x':
|
||||||
message = message[0]
|
message = message[0]
|
||||||
|
|
||||||
if step == 1:
|
if step == 1:
|
||||||
choice = message
|
choice = message.lower()
|
||||||
if choice == 'r':
|
if choice == 'r':
|
||||||
sender_node_id = get_node_id_from_num(sender_id, interface)
|
sender_node_id = get_node_id_from_num(sender_id, interface)
|
||||||
mail = get_mail(sender_node_id)
|
mail = get_mail(sender_node_id)
|
||||||
|
@ -360,16 +360,16 @@ def handle_channel_directory_command(sender_id, interface):
|
||||||
|
|
||||||
|
|
||||||
def handle_channel_directory_steps(sender_id, message, step, state, interface):
|
def handle_channel_directory_steps(sender_id, message, step, state, interface):
|
||||||
message = message.lower().strip()
|
message = message.strip()
|
||||||
if len(message) == 2 and message[1] == 'x':
|
if len(message) == 2 and message[1] == 'x':
|
||||||
message = message[0]
|
message = message[0]
|
||||||
|
|
||||||
if step == 1:
|
if step == 1:
|
||||||
choice = message
|
choice = message
|
||||||
if choice == 'x':
|
if choice.lower() == 'x':
|
||||||
handle_help_command(sender_id, interface)
|
handle_help_command(sender_id, interface)
|
||||||
return
|
return
|
||||||
elif choice == 'v':
|
elif choice.lower() == 'v':
|
||||||
channels = get_channels()
|
channels = get_channels()
|
||||||
if channels:
|
if channels:
|
||||||
response = "Select a channel number to view:\n" + "\n".join(
|
response = "Select a channel number to view:\n" + "\n".join(
|
||||||
|
@ -379,7 +379,7 @@ def handle_channel_directory_steps(sender_id, message, step, state, interface):
|
||||||
else:
|
else:
|
||||||
send_message("No channels available in the directory.", sender_id, interface)
|
send_message("No channels available in the directory.", sender_id, interface)
|
||||||
handle_channel_directory_command(sender_id, interface)
|
handle_channel_directory_command(sender_id, interface)
|
||||||
elif choice == 'p':
|
elif choice.lower == 'p':
|
||||||
send_message("Name your channel for the directory:", sender_id, interface)
|
send_message("Name your channel for the directory:", sender_id, interface)
|
||||||
update_user_state(sender_id, {'command': 'CHANNEL_DIRECTORY', 'step': 3})
|
update_user_state(sender_id, {'command': 'CHANNEL_DIRECTORY', 'step': 3})
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ def add_bulletin(board, sender_short_name, subject, content, bbs_nodes, interfac
|
||||||
def get_bulletins(board):
|
def get_bulletins(board):
|
||||||
conn = get_db_connection()
|
conn = get_db_connection()
|
||||||
c = conn.cursor()
|
c = conn.cursor()
|
||||||
c.execute("SELECT id, subject, sender_short_name, date, unique_id FROM bulletins WHERE board = ?", (board,))
|
c.execute("SELECT id, subject, sender_short_name, date, unique_id FROM bulletins WHERE board = ? COLLATE NOCASE", (board,))
|
||||||
return c.fetchall()
|
return c.fetchall()
|
||||||
|
|
||||||
def get_bulletin_content(bulletin_id):
|
def get_bulletin_content(bulletin_id):
|
||||||
|
|
|
@ -89,47 +89,46 @@ class JS8CallClient:
|
||||||
''')
|
''')
|
||||||
self.logger.info("Database tables created or verified.")
|
self.logger.info("Database tables created or verified.")
|
||||||
|
|
||||||
def insert_message(self, sender, receiver, message):
|
def insert_message(self, table, sender, recipient, message):
|
||||||
|
"""
|
||||||
|
Inserts a message into the specified table in the database.
|
||||||
|
|
||||||
|
This method saves a message along with its sender and receiver or group name into the specified table.
|
||||||
|
If the database connection is not available, it logs an error message.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
-----------
|
||||||
|
table : str
|
||||||
|
The name of the table where the message should be inserted. It can be 'messages', 'groups', or 'urgent'.
|
||||||
|
|
||||||
|
sender : str
|
||||||
|
The meshtastic node identifier of the sender who issued the command
|
||||||
|
|
||||||
|
recipient : str
|
||||||
|
The identifier of the receiver of the message or the group name.
|
||||||
|
|
||||||
|
message : str
|
||||||
|
The content of the message.
|
||||||
|
|
||||||
|
Example Usage:
|
||||||
|
--------------
|
||||||
|
client.insert_message('messages', sender='CALLSIGN1', receiver_or_group='CALLSIGN2', message='This is a message.')
|
||||||
|
client.insert_message('groups', sender='CALLSIGN1', receiver_or_group='GroupName', message='This is a group message.')
|
||||||
|
client.insert_message('urgent', sender='CALLSIGN1', receiver_or_group='UrgentGroupName', message='This is an urgent message.')
|
||||||
|
"""
|
||||||
|
|
||||||
if not self.db_conn:
|
if not self.db_conn:
|
||||||
self.logger.error("Database connection is not available.")
|
self.logger.error("Database connection is not available.")
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with self.db_conn:
|
with self.db_conn:
|
||||||
self.db_conn.execute('''
|
self.db_conn.execute(f'''
|
||||||
INSERT INTO messages (sender, receiver, message)
|
INSERT INTO {table} (sender, { 'receiver' if table == 'messages' else 'groupname' }, message)
|
||||||
VALUES (?, ?, ?)
|
VALUES (?, ?, ?)
|
||||||
''', (sender, receiver, message))
|
''', (sender, receiver_or_group, message))
|
||||||
except sqlite3.Error as e:
|
except sqlite3.Error as e:
|
||||||
self.logger.error(f"Failed to insert message into database: {e}")
|
self.logger.error(f"Failed to insert message into {table} table: {e}")
|
||||||
|
|
||||||
def insert_group(self, sender, groupname, message):
|
|
||||||
if not self.db_conn:
|
|
||||||
self.logger.error("Database connection is not available.")
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
with self.db_conn:
|
|
||||||
self.db_conn.execute('''
|
|
||||||
INSERT INTO groups (sender, groupname, message)
|
|
||||||
VALUES (?, ?, ?)
|
|
||||||
''', (sender, groupname, message))
|
|
||||||
except sqlite3.Error as e:
|
|
||||||
self.logger.error(f"Failed to insert group message into database: {e}")
|
|
||||||
|
|
||||||
def insert_urgent(self, sender, groupname, message):
|
|
||||||
if not self.db_conn:
|
|
||||||
self.logger.error("Database connection is not available.")
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
with self.db_conn:
|
|
||||||
self.db_conn.execute('''
|
|
||||||
INSERT INTO urgent (sender, groupname, message)
|
|
||||||
VALUES (?, ?, ?)
|
|
||||||
''', (sender, groupname, message))
|
|
||||||
except sqlite3.Error as e:
|
|
||||||
self.logger.error(f"Failed to insert urgent message into database: {e}")
|
|
||||||
|
|
||||||
def process(self, message):
|
def process(self, message):
|
||||||
typ = message.get('type', '')
|
typ = message.get('type', '')
|
||||||
|
@ -161,13 +160,13 @@ class JS8CallClient:
|
||||||
self.logger.info(f"Received JS8Call message: {sender} to {receiver} - {msg}")
|
self.logger.info(f"Received JS8Call message: {sender} to {receiver} - {msg}")
|
||||||
|
|
||||||
if receiver in self.js8urgent:
|
if receiver in self.js8urgent:
|
||||||
self.insert_urgent(sender, receiver, msg)
|
self.insert_urgent('urgent', sender, receiver, msg)
|
||||||
notification_message = f"💥 URGENT JS8Call Message Received 💥\nFrom: {sender}\nCheck BBS for message"
|
notification_message = f"💥 URGENT JS8Call Message Received 💥\nFrom: {sender}\nCheck BBS for message"
|
||||||
send_message(notification_message, BROADCAST_NUM, self.interface)
|
send_message(notification_message, BROADCAST_NUM, self.interface)
|
||||||
elif receiver in self.js8groups:
|
elif receiver in self.js8groups:
|
||||||
self.insert_group(sender, receiver, msg)
|
self.insert_message('groups', sender, receiver, msg)
|
||||||
elif self.store_messages:
|
elif self.store_messages:
|
||||||
self.insert_message(sender, receiver, msg)
|
self.insert_message('messages', sender, receiver, msg)
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,8 @@ board_action_handlers = {
|
||||||
def process_message(sender_id, message, interface, is_sync_message=False):
|
def process_message(sender_id, message, interface, is_sync_message=False):
|
||||||
state = get_user_state(sender_id)
|
state = get_user_state(sender_id)
|
||||||
message_lower = message.lower().strip()
|
message_lower = message.lower().strip()
|
||||||
|
message_strip = message.strip()
|
||||||
|
|
||||||
bbs_nodes = interface.bbs_nodes
|
bbs_nodes = interface.bbs_nodes
|
||||||
|
|
||||||
# Handle repeated characters for single character commands using a prefix
|
# Handle repeated characters for single character commands using a prefix
|
||||||
|
@ -89,15 +91,15 @@ def process_message(sender_id, message, interface, is_sync_message=False):
|
||||||
add_channel(channel_name, channel_url)
|
add_channel(channel_name, channel_url)
|
||||||
else:
|
else:
|
||||||
if message_lower.startswith("sm,,"):
|
if message_lower.startswith("sm,,"):
|
||||||
handle_send_mail_command(sender_id, message_lower, interface, bbs_nodes)
|
handle_send_mail_command(sender_id, message_strip, interface, bbs_nodes)
|
||||||
elif message_lower.startswith("cm"):
|
elif message_lower.startswith("cm"):
|
||||||
handle_check_mail_command(sender_id, interface)
|
handle_check_mail_command(sender_id, interface)
|
||||||
elif message_lower.startswith("pb,,"):
|
elif message_lower.startswith("pb,,"):
|
||||||
handle_post_bulletin_command(sender_id, message_lower, interface, bbs_nodes)
|
handle_post_bulletin_command(sender_id, message_strip, interface, bbs_nodes)
|
||||||
elif message_lower.startswith("cb,,"):
|
elif message_lower.startswith("cb,,"):
|
||||||
handle_check_bulletin_command(sender_id, message_lower, interface)
|
handle_check_bulletin_command(sender_id, message_strip, interface)
|
||||||
elif message_lower.startswith("chp,,"):
|
elif message_lower.startswith("chp,,"):
|
||||||
handle_post_channel_command(sender_id, message_lower, interface)
|
handle_post_channel_command(sender_id, message_strip, interface)
|
||||||
elif message_lower.startswith("chl"):
|
elif message_lower.startswith("chl"):
|
||||||
handle_list_channels_command(sender_id, interface)
|
handle_list_channels_command(sender_id, interface)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue