Fix to handle remote identity properlu

This commit is contained in:
2025-12-05 21:36:44 -06:00
parent 18be095151
commit 8b2fcb0e3d
2 changed files with 43 additions and 43 deletions

View File

@@ -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)

View File

@@ -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"