diff --git a/nomadnetwork/storage/pages/meshchat.mu b/nomadnetwork/storage/pages/meshchat.mu index d9084f3..4dfff59 100755 --- a/nomadnetwork/storage/pages/meshchat.mu +++ b/nomadnetwork/storage/pages/meshchat.mu @@ -176,39 +176,39 @@ else: def init_db(): conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() + # Create new table for identity-based lookups cursor.execute(""" - CREATE TABLE IF NOT EXISTS users ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - remote_identity TEXT, - dest TEXT UNIQUE NOT NULL, - display_name TEXT + CREATE TABLE IF NOT EXISTS rns_users ( + remote_identity TEXT PRIMARY KEY, + display_name TEXT, + last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """) conn.commit() conn.close() -def get_display_name_from_db(dest): - if not dest: +def get_display_name_from_db(remote_identity): + if not remote_identity: return None conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() - cursor.execute("SELECT display_name FROM users WHERE dest = ?", (dest,)) + cursor.execute("SELECT display_name FROM rns_users WHERE remote_identity = ?", (remote_identity,)) result = cursor.fetchone() conn.close() return result[0] if result else None -def save_user_to_db(remote_identity, dest, display_name): - if not remote_identity or not dest: +def save_user_to_db(remote_identity, display_name): + if not remote_identity: return # Don't save if required info is missing conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() cursor.execute(""" - INSERT INTO users (remote_identity, dest, display_name) - VALUES (?, ?, ?) - ON CONFLICT(dest) DO UPDATE SET - remote_identity = excluded.remote_identity, - display_name = excluded.display_name - """, (remote_identity, dest, display_name)) + INSERT INTO rns_users (remote_identity, display_name) + VALUES (?, ?) + ON CONFLICT(remote_identity) DO UPDATE SET + display_name = excluded.display_name, + last_seen = CURRENT_TIMESTAMP + """, (remote_identity, display_name)) conn.commit() conn.close() @@ -221,7 +221,7 @@ dest = os.getenv("dest", "").strip() remote_identity = os.getenv("remote_identity", "").strip() # Try to load display_name from DB -db_display_name = get_display_name_from_db(dest) +db_display_name = get_display_name_from_db(remote_identity) # Определение финального display_name с логированием nickname_recovered_from_db = False @@ -241,8 +241,8 @@ elif db_display_name: "user": "System", "text": f"`!` Никнейм восстановлен из базы данных: {display_name} `!`" }) -elif dest: - display_name = f"Guest_{dest[-4:]}" +elif remote_identity: + display_name = f"Guest_{remote_identity[:4]}" log.append({ "time": time.strftime("[%a,%H:%M]"), "user": "System", @@ -257,7 +257,7 @@ else: }) # Сохранение пользователя в БД если валидно -save_user_to_db(remote_identity, dest, display_name) +save_user_to_db(remote_identity, display_name) # ----------------------------------------------- @@ -1282,7 +1282,7 @@ def format_links_in_line(line): ############################## Output UI template: ###################################### #INTRO TITLE: -template = f"> `!{message_icon} THE CHAT ROOM! {message_icon} `F007` Работает на Reticulum NomadNet - IRC стиль - Бесплатный глобальный чат - Оптимизировано для Meshchat v2.x+ - v2.00 `f`!\n" +template = f"> `!\U0001F1F7\U0001F1FA RU Chat \U0001F1F7\U0001F1FA `F007` Работает на Reticulum NomadNet - IRC стиль - Бесплатный глобальный чат - Оптимизировано для Meshchat v2.x+ - v2.00 `f`!\n" template += "-\n" # ЧТЕНИЕ И ОТОБРАЖЕНИЕ ТЕМЫ: @@ -1336,7 +1336,7 @@ elif display_name == "Guest": template += "`B222`Ff00` ** Вы сейчас используете общее имя. Установите никнейм для персонализации вашей сессии. Нажмите Fingerprint для сохранения или восстановления.`b`f`" elif nickname_recovered_from_db: - template += f"`B060`F0f0` Совпадение отпечатка успешно! Никнейм восстановлен из БД: {display_name}, Привязан к адресу LXMF: {dest}`b`f`" + template += f"`B060`F0f0` Совпадение отпечатка успешно! Никнейм восстановлен из БД: {display_name}`b`f`" # RENDER UI: print(template) diff --git a/nomadnetwork/storage/pages/nomadnet.mu b/nomadnetwork/storage/pages/nomadnet.mu index 7e1825e..1c9165e 100755 --- a/nomadnetwork/storage/pages/nomadnet.mu +++ b/nomadnetwork/storage/pages/nomadnet.mu @@ -176,39 +176,39 @@ else: def init_db(): conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() + # Create new table for identity-based lookups cursor.execute(""" - CREATE TABLE IF NOT EXISTS users ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - remote_identity TEXT, - dest TEXT UNIQUE NOT NULL, - display_name TEXT + CREATE TABLE IF NOT EXISTS rns_users ( + remote_identity TEXT PRIMARY KEY, + display_name TEXT, + last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """) conn.commit() conn.close() -def get_display_name_from_db(dest): - if not dest: +def get_display_name_from_db(remote_identity): + if not remote_identity: return None conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() - cursor.execute("SELECT display_name FROM users WHERE dest = ?", (dest,)) + cursor.execute("SELECT display_name FROM rns_users WHERE remote_identity = ?", (remote_identity,)) result = cursor.fetchone() conn.close() return result[0] if result else None -def save_user_to_db(remote_identity, dest, display_name): - if not remote_identity or not dest: +def save_user_to_db(remote_identity, display_name): + if not remote_identity: return # Don't save if required info is missing conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() cursor.execute(""" - INSERT INTO users (remote_identity, dest, display_name) - VALUES (?, ?, ?) - ON CONFLICT(dest) DO UPDATE SET - remote_identity = excluded.remote_identity, - display_name = excluded.display_name - """, (remote_identity, dest, display_name)) + INSERT INTO rns_users (remote_identity, display_name) + VALUES (?, ?) + ON CONFLICT(remote_identity) DO UPDATE SET + display_name = excluded.display_name, + last_seen = CURRENT_TIMESTAMP + """, (remote_identity, display_name)) conn.commit() conn.close() @@ -221,7 +221,7 @@ dest = os.getenv("dest", "").strip() remote_identity = os.getenv("remote_identity", "").strip() # Try to load display_name from DB -db_display_name = get_display_name_from_db(dest) +db_display_name = get_display_name_from_db(remote_identity) # Определение финального display_name с логированием nickname_recovered_from_db = False @@ -241,8 +241,8 @@ elif db_display_name: "user": "System", "text": f"`!` Никнейм восстановлен из базы данных: {display_name} `!`" }) -elif dest: - display_name = f"Guest_{dest[-4:]}" +elif remote_identity: + display_name = f"Guest_{remote_identity[:4]}" log.append({ "time": time.strftime("[%a,%H:%M]"), "user": "System", @@ -257,7 +257,7 @@ else: }) # Сохранение пользователя в БД если валидно -save_user_to_db(remote_identity, dest, display_name) +save_user_to_db(remote_identity, display_name) # ----------------------------------------------- @@ -1288,7 +1288,7 @@ safe_display_name = display_name.replace("`", "'") # Простой шаблон для совместимости с NomadNet template = "---\n" -template += f">`!{message_icon} THE CHAT ROOM! {message_icon} `F007` Работает на Reticulum NomadNet - IRC стиль - Бесплатный глобальный чат - Оптимизировано для NomadNet - v2.00 `f`!\n" +template += f">`! RU Chat `F007` Работает на Reticulum NomadNet - IRC стиль - Бесплатный глобальный чат - Оптимизировано для NomadNet - v2.00 `f`!\n" template += "---\n" template += f"`c`B000`Ff2e`!####### Тема комнаты: {topic_text} `! (Установлена: {topic_author}, {topic_data.get('time')}) `! `!`f`b`a\n" template += "---\n"