Fix to handle remote identity properlu
This commit is contained in:
@@ -176,39 +176,39 @@ else:
|
|||||||
def init_db():
|
def init_db():
|
||||||
conn = sqlite3.connect(DB_PATH)
|
conn = sqlite3.connect(DB_PATH)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
# Create new table for identity-based lookups
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
CREATE TABLE IF NOT EXISTS rns_users (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
remote_identity TEXT PRIMARY KEY,
|
||||||
remote_identity TEXT,
|
display_name TEXT,
|
||||||
dest TEXT UNIQUE NOT NULL,
|
last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
display_name TEXT
|
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
def get_display_name_from_db(dest):
|
def get_display_name_from_db(remote_identity):
|
||||||
if not dest:
|
if not remote_identity:
|
||||||
return None
|
return None
|
||||||
conn = sqlite3.connect(DB_PATH)
|
conn = sqlite3.connect(DB_PATH)
|
||||||
cursor = conn.cursor()
|
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()
|
result = cursor.fetchone()
|
||||||
conn.close()
|
conn.close()
|
||||||
return result[0] if result else None
|
return result[0] if result else None
|
||||||
|
|
||||||
def save_user_to_db(remote_identity, dest, display_name):
|
def save_user_to_db(remote_identity, display_name):
|
||||||
if not remote_identity or not dest:
|
if not remote_identity:
|
||||||
return # Don't save if required info is missing
|
return # Don't save if required info is missing
|
||||||
conn = sqlite3.connect(DB_PATH)
|
conn = sqlite3.connect(DB_PATH)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
INSERT INTO users (remote_identity, dest, display_name)
|
INSERT INTO rns_users (remote_identity, display_name)
|
||||||
VALUES (?, ?, ?)
|
VALUES (?, ?)
|
||||||
ON CONFLICT(dest) DO UPDATE SET
|
ON CONFLICT(remote_identity) DO UPDATE SET
|
||||||
remote_identity = excluded.remote_identity,
|
display_name = excluded.display_name,
|
||||||
display_name = excluded.display_name
|
last_seen = CURRENT_TIMESTAMP
|
||||||
""", (remote_identity, dest, display_name))
|
""", (remote_identity, display_name))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@ dest = os.getenv("dest", "").strip()
|
|||||||
remote_identity = os.getenv("remote_identity", "").strip()
|
remote_identity = os.getenv("remote_identity", "").strip()
|
||||||
|
|
||||||
# Try to load display_name from DB
|
# 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 с логированием
|
# Определение финального display_name с логированием
|
||||||
nickname_recovered_from_db = False
|
nickname_recovered_from_db = False
|
||||||
@@ -241,8 +241,8 @@ elif db_display_name:
|
|||||||
"user": "System",
|
"user": "System",
|
||||||
"text": f"`!` Никнейм восстановлен из базы данных: {display_name} `!`"
|
"text": f"`!` Никнейм восстановлен из базы данных: {display_name} `!`"
|
||||||
})
|
})
|
||||||
elif dest:
|
elif remote_identity:
|
||||||
display_name = f"Guest_{dest[-4:]}"
|
display_name = f"Guest_{remote_identity[:4]}"
|
||||||
log.append({
|
log.append({
|
||||||
"time": time.strftime("[%a,%H:%M]"),
|
"time": time.strftime("[%a,%H:%M]"),
|
||||||
"user": "System",
|
"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: ######################################
|
############################## Output UI template: ######################################
|
||||||
|
|
||||||
#INTRO TITLE:
|
#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"
|
template += "-\n"
|
||||||
|
|
||||||
# ЧТЕНИЕ И ОТОБРАЖЕНИЕ ТЕМЫ:
|
# ЧТЕНИЕ И ОТОБРАЖЕНИЕ ТЕМЫ:
|
||||||
@@ -1336,7 +1336,7 @@ elif display_name == "Guest":
|
|||||||
template += "`B222`Ff00` ** Вы сейчас используете общее имя. Установите никнейм для персонализации вашей сессии. Нажмите Fingerprint для сохранения или восстановления.`b`f`"
|
template += "`B222`Ff00` ** Вы сейчас используете общее имя. Установите никнейм для персонализации вашей сессии. Нажмите Fingerprint для сохранения или восстановления.`b`f`"
|
||||||
|
|
||||||
elif nickname_recovered_from_db:
|
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:
|
# RENDER UI:
|
||||||
print(template)
|
print(template)
|
||||||
|
|||||||
@@ -176,39 +176,39 @@ else:
|
|||||||
def init_db():
|
def init_db():
|
||||||
conn = sqlite3.connect(DB_PATH)
|
conn = sqlite3.connect(DB_PATH)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
# Create new table for identity-based lookups
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
CREATE TABLE IF NOT EXISTS rns_users (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
remote_identity TEXT PRIMARY KEY,
|
||||||
remote_identity TEXT,
|
display_name TEXT,
|
||||||
dest TEXT UNIQUE NOT NULL,
|
last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
display_name TEXT
|
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
def get_display_name_from_db(dest):
|
def get_display_name_from_db(remote_identity):
|
||||||
if not dest:
|
if not remote_identity:
|
||||||
return None
|
return None
|
||||||
conn = sqlite3.connect(DB_PATH)
|
conn = sqlite3.connect(DB_PATH)
|
||||||
cursor = conn.cursor()
|
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()
|
result = cursor.fetchone()
|
||||||
conn.close()
|
conn.close()
|
||||||
return result[0] if result else None
|
return result[0] if result else None
|
||||||
|
|
||||||
def save_user_to_db(remote_identity, dest, display_name):
|
def save_user_to_db(remote_identity, display_name):
|
||||||
if not remote_identity or not dest:
|
if not remote_identity:
|
||||||
return # Don't save if required info is missing
|
return # Don't save if required info is missing
|
||||||
conn = sqlite3.connect(DB_PATH)
|
conn = sqlite3.connect(DB_PATH)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
INSERT INTO users (remote_identity, dest, display_name)
|
INSERT INTO rns_users (remote_identity, display_name)
|
||||||
VALUES (?, ?, ?)
|
VALUES (?, ?)
|
||||||
ON CONFLICT(dest) DO UPDATE SET
|
ON CONFLICT(remote_identity) DO UPDATE SET
|
||||||
remote_identity = excluded.remote_identity,
|
display_name = excluded.display_name,
|
||||||
display_name = excluded.display_name
|
last_seen = CURRENT_TIMESTAMP
|
||||||
""", (remote_identity, dest, display_name))
|
""", (remote_identity, display_name))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
@@ -221,7 +221,7 @@ dest = os.getenv("dest", "").strip()
|
|||||||
remote_identity = os.getenv("remote_identity", "").strip()
|
remote_identity = os.getenv("remote_identity", "").strip()
|
||||||
|
|
||||||
# Try to load display_name from DB
|
# 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 с логированием
|
# Определение финального display_name с логированием
|
||||||
nickname_recovered_from_db = False
|
nickname_recovered_from_db = False
|
||||||
@@ -241,8 +241,8 @@ elif db_display_name:
|
|||||||
"user": "System",
|
"user": "System",
|
||||||
"text": f"`!` Никнейм восстановлен из базы данных: {display_name} `!`"
|
"text": f"`!` Никнейм восстановлен из базы данных: {display_name} `!`"
|
||||||
})
|
})
|
||||||
elif dest:
|
elif remote_identity:
|
||||||
display_name = f"Guest_{dest[-4:]}"
|
display_name = f"Guest_{remote_identity[:4]}"
|
||||||
log.append({
|
log.append({
|
||||||
"time": time.strftime("[%a,%H:%M]"),
|
"time": time.strftime("[%a,%H:%M]"),
|
||||||
"user": "System",
|
"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
|
# Простой шаблон для совместимости с NomadNet
|
||||||
template = "---\n"
|
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 += "---\n"
|
||||||
template += f"`c`B000`Ff2e`!####### Тема комнаты: {topic_text} `! (Установлена: {topic_author}, {topic_data.get('time')}) `! `!`f`b`a\n"
|
template += f"`c`B000`Ff2e`!####### Тема комнаты: {topic_text} `! (Установлена: {topic_author}, {topic_data.get('time')}) `! `!`f`b`a\n"
|
||||||
template += "---\n"
|
template += "---\n"
|
||||||
|
|||||||
Reference in New Issue
Block a user