buffer: Print out a warning prefix if the event was encrypted but not verified.
This commit is contained in:
parent
8a73f2c119
commit
6cf275e871
2 changed files with 60 additions and 27 deletions
|
@ -102,6 +102,10 @@ def matrix_bar_item_buffer_modes(data, item, window, buffer, extra_info):
|
||||||
if room.encrypted:
|
if room.encrypted:
|
||||||
modes.append("🔐")
|
modes.append("🔐")
|
||||||
|
|
||||||
|
if (server.client
|
||||||
|
and server.client.room_contains_unverified(room.room_id)):
|
||||||
|
modes.append("⚠️ ")
|
||||||
|
|
||||||
if room_buffer.backlog_pending:
|
if room_buffer.backlog_pending:
|
||||||
modes.append("⏳")
|
modes.append("⏳")
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,8 @@ from nio import (
|
||||||
RoomMessageUnknown,
|
RoomMessageUnknown,
|
||||||
RoomNameEvent,
|
RoomNameEvent,
|
||||||
RoomTopicEvent,
|
RoomTopicEvent,
|
||||||
MegolmEvent
|
MegolmEvent,
|
||||||
|
Event
|
||||||
)
|
)
|
||||||
|
|
||||||
from . import globals as G
|
from . import globals as G
|
||||||
|
@ -471,11 +472,12 @@ class WeechatChannelBuffer(object):
|
||||||
# A message from a non joined user
|
# A message from a non joined user
|
||||||
return WeechatUser(nick)
|
return WeechatUser(nick)
|
||||||
|
|
||||||
def _print_message(self, user, message, date, tags):
|
def _print_message(self, user, message, date, tags, extra_prefix=""):
|
||||||
prefix_string = (
|
prefix_string = (
|
||||||
""
|
extra_prefix
|
||||||
if not user.prefix
|
if not user.prefix
|
||||||
else "{}{}{}".format(
|
else "{}{}{}{}".format(
|
||||||
|
extra_prefix,
|
||||||
W.color(self._get_prefix_color(user.prefix)),
|
W.color(self._get_prefix_color(user.prefix)),
|
||||||
user.prefix,
|
user.prefix,
|
||||||
W.color("reset"),
|
W.color("reset"),
|
||||||
|
@ -492,18 +494,18 @@ class WeechatChannelBuffer(object):
|
||||||
|
|
||||||
self.print_date_tags(data, date, tags)
|
self.print_date_tags(data, date, tags)
|
||||||
|
|
||||||
def message(self, nick, message, date, extra_tags=None):
|
def message(self, nick, message, date, extra_tags=None, extra_prefix=""):
|
||||||
# type: (str, str, int, List[str]) -> None
|
# type: (str, str, int, List[str], str) -> None
|
||||||
user = self._get_user(nick)
|
user = self._get_user(nick)
|
||||||
tags_type = "message_private" if self.type == "private" else "message"
|
tags_type = "message_private" if self.type == "private" else "message"
|
||||||
tags = self._message_tags(user, tags_type) + (extra_tags or [])
|
tags = self._message_tags(user, tags_type) + (extra_tags or [])
|
||||||
self._print_message(user, message, date, tags)
|
self._print_message(user, message, date, tags, extra_prefix)
|
||||||
|
|
||||||
user.update_speaking_time(date)
|
user.update_speaking_time(date)
|
||||||
self.unmask_smart_filtered_nick(nick)
|
self.unmask_smart_filtered_nick(nick)
|
||||||
|
|
||||||
def notice(self, nick, message, date, extra_tags=None):
|
def notice(self, nick, message, date, extra_tags=None, extra_prefix=""):
|
||||||
# type: (str, str, int, Optional[List[str]]) -> None
|
# type: (str, str, int, Optional[List[str]], str) -> None
|
||||||
user = self._get_user(nick)
|
user = self._get_user(nick)
|
||||||
user_prefix = (
|
user_prefix = (
|
||||||
""
|
""
|
||||||
|
@ -520,10 +522,11 @@ class WeechatChannelBuffer(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
data = (
|
data = (
|
||||||
"{prefix}{color}Notice"
|
"{extra_prefix}{prefix}{color}Notice"
|
||||||
"{del_color}({ncolor}{user}{del_color}){ncolor}"
|
"{del_color}({ncolor}{user}{del_color}){ncolor}"
|
||||||
": {message}"
|
": {message}"
|
||||||
).format(
|
).format(
|
||||||
|
extra_prefix=extra_prefix,
|
||||||
prefix=W.prefix("network"),
|
prefix=W.prefix("network"),
|
||||||
color=W.color("irc.color.notice"),
|
color=W.color("irc.color.notice"),
|
||||||
del_color=W.color("chat_delimiters"),
|
del_color=W.color("chat_delimiters"),
|
||||||
|
@ -538,7 +541,7 @@ class WeechatChannelBuffer(object):
|
||||||
user.update_speaking_time(date)
|
user.update_speaking_time(date)
|
||||||
self.unmask_smart_filtered_nick(nick)
|
self.unmask_smart_filtered_nick(nick)
|
||||||
|
|
||||||
def _print_action(self, user, message, date, tags):
|
def _print_action(self, user, message, date, tags, extra_prefix):
|
||||||
nick_prefix = (
|
nick_prefix = (
|
||||||
""
|
""
|
||||||
if not user.prefix
|
if not user.prefix
|
||||||
|
@ -550,8 +553,9 @@ class WeechatChannelBuffer(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
data = (
|
data = (
|
||||||
"{prefix}{nick_prefix}{nick_color}{author}" "{ncolor} {msg}"
|
"{extra_prefix}{prefix}{nick_prefix}{nick_color}{author}"
|
||||||
).format(
|
"{ncolor} {msg}").format(
|
||||||
|
extra_prefix=extra_prefix,
|
||||||
prefix=W.prefix("action"),
|
prefix=W.prefix("action"),
|
||||||
nick_prefix=nick_prefix,
|
nick_prefix=nick_prefix,
|
||||||
nick_color=W.color(user.color),
|
nick_color=W.color(user.color),
|
||||||
|
@ -562,12 +566,12 @@ class WeechatChannelBuffer(object):
|
||||||
|
|
||||||
self.print_date_tags(data, date, tags)
|
self.print_date_tags(data, date, tags)
|
||||||
|
|
||||||
def action(self, nick, message, date, extra_tags=None):
|
def action(self, nick, message, date, extra_tags=None, extra_prefix=""):
|
||||||
# type: (str, str, int, Optional[List[str]]) -> None
|
# type: (str, str, int, Optional[List[str]], str) -> None
|
||||||
user = self._get_user(nick)
|
user = self._get_user(nick)
|
||||||
tags_type = "action_private" if self.type == "private" else "action"
|
tags_type = "action_private" if self.type == "private" else "action"
|
||||||
tags = self._message_tags(user, tags_type) + (extra_tags or [])
|
tags = self._message_tags(user, tags_type) + (extra_tags or [])
|
||||||
self._print_action(user, message, date, tags)
|
self._print_action(user, message, date, tags, extra_prefix)
|
||||||
|
|
||||||
user.update_speaking_time(date)
|
user.update_speaking_time(date)
|
||||||
self.unmask_smart_filtered_nick(nick)
|
self.unmask_smart_filtered_nick(nick)
|
||||||
|
@ -807,6 +811,10 @@ class RoomBuffer(object):
|
||||||
self._backlog_pending = value
|
self._backlog_pending = value
|
||||||
W.bar_item_update("buffer_modes")
|
W.bar_item_update("buffer_modes")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def warning_prefix(self):
|
||||||
|
return "⚠️ "
|
||||||
|
|
||||||
def find_nick(self, user_id):
|
def find_nick(self, user_id):
|
||||||
# type: (str) -> str
|
# type: (str) -> str
|
||||||
"""Find a suitable nick from a user_id"""
|
"""Find a suitable nick from a user_id"""
|
||||||
|
@ -1006,7 +1014,12 @@ class RoomBuffer(object):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_event_tags(event):
|
def get_event_tags(event):
|
||||||
return ["matrix_id_{}".format(event.event_id)]
|
# type: (Event) -> List[str]
|
||||||
|
tags = [SCRIPT_NAME + "_id_{}".format(event.event_id)]
|
||||||
|
if event.sender_key:
|
||||||
|
tags.append(SCRIPT_NAME + "_senderkey_{}".format(event.sender_key))
|
||||||
|
|
||||||
|
return tags
|
||||||
|
|
||||||
def _handle_power_level(self, _):
|
def _handle_power_level(self, _):
|
||||||
for user_id in self.room.power_levels.users:
|
for user_id in self.room.power_levels.users:
|
||||||
|
@ -1067,8 +1080,13 @@ class RoomBuffer(object):
|
||||||
elif isinstance(event, RoomMessageEmote):
|
elif isinstance(event, RoomMessageEmote):
|
||||||
nick = self.find_nick(event.sender)
|
nick = self.find_nick(event.sender)
|
||||||
date = server_ts_to_weechat(event.server_timestamp)
|
date = server_ts_to_weechat(event.server_timestamp)
|
||||||
|
|
||||||
|
extra_prefix = (self.warning_prefix if event.decrypted
|
||||||
|
and not event.verified else "")
|
||||||
|
|
||||||
self.weechat_buffer.action(
|
self.weechat_buffer.action(
|
||||||
nick, event.body, date, self.get_event_tags(event)
|
nick, event.body, date, self.get_event_tags(event),
|
||||||
|
extra_prefix
|
||||||
)
|
)
|
||||||
|
|
||||||
elif isinstance(event, RoomMessageText):
|
elif isinstance(event, RoomMessageText):
|
||||||
|
@ -1080,16 +1098,23 @@ class RoomBuffer(object):
|
||||||
|
|
||||||
data = formatted.to_weechat() if formatted else event.body
|
data = formatted.to_weechat() if formatted else event.body
|
||||||
|
|
||||||
|
extra_prefix = (self.warning_prefix if event.decrypted
|
||||||
|
and not event.verified else "")
|
||||||
|
|
||||||
date = server_ts_to_weechat(event.server_timestamp)
|
date = server_ts_to_weechat(event.server_timestamp)
|
||||||
self.weechat_buffer.message(
|
self.weechat_buffer.message(
|
||||||
nick, data, date, self.get_event_tags(event)
|
nick, data, date, self.get_event_tags(event), extra_prefix
|
||||||
)
|
)
|
||||||
|
|
||||||
elif isinstance(event, RoomMessageNotice):
|
elif isinstance(event, RoomMessageNotice):
|
||||||
nick = self.find_nick(event.sender)
|
nick = self.find_nick(event.sender)
|
||||||
date = server_ts_to_weechat(event.server_timestamp)
|
date = server_ts_to_weechat(event.server_timestamp)
|
||||||
|
extra_prefix = (self.warning_prefix if event.decrypted
|
||||||
|
and not event.verified else "")
|
||||||
|
|
||||||
self.weechat_buffer.notice(
|
self.weechat_buffer.notice(
|
||||||
nick, event.body, date, self.get_event_tags(event)
|
nick, event.body, date, self.get_event_tags(event),
|
||||||
|
extra_prefix
|
||||||
)
|
)
|
||||||
|
|
||||||
elif isinstance(event, RoomMessageMedia):
|
elif isinstance(event, RoomMessageMedia):
|
||||||
|
@ -1101,16 +1126,22 @@ class RoomBuffer(object):
|
||||||
description = "/{}".format(event.body) if event.body else ""
|
description = "/{}".format(event.body) if event.body else ""
|
||||||
data = "{url}{desc}".format(url=url, desc=description)
|
data = "{url}{desc}".format(url=url, desc=description)
|
||||||
|
|
||||||
|
extra_prefix = (self.warning_prefix if event.decrypted
|
||||||
|
and not event.verified else "")
|
||||||
|
|
||||||
self.weechat_buffer.message(
|
self.weechat_buffer.message(
|
||||||
nick, data, date, self.get_event_tags(event)
|
nick, data, date, self.get_event_tags(event), extra_prefix
|
||||||
)
|
)
|
||||||
|
|
||||||
elif isinstance(event, RoomMessageUnknown):
|
elif isinstance(event, RoomMessageUnknown):
|
||||||
nick = self.find_nick(event.sender)
|
nick = self.find_nick(event.sender)
|
||||||
date = server_ts_to_weechat(event.server_timestamp)
|
date = server_ts_to_weechat(event.server_timestamp)
|
||||||
data = ("Unknown message of type {t}").format(t=event.type)
|
data = ("Unknown message of type {t}").format(t=event.type)
|
||||||
|
extra_prefix = (self.warning_prefix if event.decrypted
|
||||||
|
and not event.verified else "")
|
||||||
|
|
||||||
self.weechat_buffer.message(
|
self.weechat_buffer.message(
|
||||||
nick, data, date, self.get_event_tags(event)
|
nick, data, date, self.get_event_tags(event), extra_prefix
|
||||||
)
|
)
|
||||||
|
|
||||||
elif isinstance(event, RedactionEvent):
|
elif isinstance(event, RedactionEvent):
|
||||||
|
@ -1133,9 +1164,7 @@ class RoomBuffer(object):
|
||||||
elif isinstance(event, MegolmEvent):
|
elif isinstance(event, MegolmEvent):
|
||||||
nick = self.find_nick(event.sender)
|
nick = self.find_nick(event.sender)
|
||||||
date = server_ts_to_weechat(event.server_timestamp)
|
date = server_ts_to_weechat(event.server_timestamp)
|
||||||
"{del_color}<{log_color}Message redacted by: "
|
|
||||||
"{censor}{log_color}{reason}{del_color}>"
|
|
||||||
"{ncolor}"
|
|
||||||
data = ("{del_color}<{log_color}Unable to decrypt: "
|
data = ("{del_color}<{log_color}Unable to decrypt: "
|
||||||
"The sender's device has not sent us "
|
"The sender's device has not sent us "
|
||||||
"the keys for this message{del_color}>{ncolor}").format(
|
"the keys for this message{del_color}>{ncolor}").format(
|
||||||
|
@ -1159,7 +1188,7 @@ class RoomBuffer(object):
|
||||||
# type: (OwnMessage) -> None
|
# type: (OwnMessage) -> None
|
||||||
nick = self.find_nick(self.room.own_user_id)
|
nick = self.find_nick(self.room.own_user_id)
|
||||||
data = message.formatted_message.to_weechat()
|
data = message.formatted_message.to_weechat()
|
||||||
tags = self.get_event_tags(message)
|
tags = [SCRIPT_NAME + "_id_{}".format(message.event_id)]
|
||||||
date = message.age
|
date = message.age
|
||||||
|
|
||||||
self.weechat_buffer.self_message(nick, data, date, tags)
|
self.weechat_buffer.self_message(nick, data, date, tags)
|
||||||
|
@ -1168,7 +1197,7 @@ class RoomBuffer(object):
|
||||||
# type: (OwnMessage) -> None
|
# type: (OwnMessage) -> None
|
||||||
nick = self.find_nick(self.room.own_user_id)
|
nick = self.find_nick(self.room.own_user_id)
|
||||||
date = message.age
|
date = message.age
|
||||||
tags = self.get_event_tags(message)
|
tags = [SCRIPT_NAME + "_id_{}".format(message.event_id)]
|
||||||
|
|
||||||
self.weechat_buffer.self_action(
|
self.weechat_buffer.self_action(
|
||||||
nick, message.formatted_message.to_weechat(), date, tags
|
nick, message.formatted_message.to_weechat(), date, tags
|
||||||
|
|
Loading…
Add table
Reference in a new issue