mirror of
https://github.com/matrix-org/pantalaimon.git
synced 2025-03-12 09:16:40 -04:00
client: Don't accept a SAS automatically.
This commit is contained in:
parent
cb04e962f1
commit
840e568eac
@ -122,8 +122,17 @@ class PanClient(AsyncClient):
|
|||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
if isinstance(event, KeyVerificationStart):
|
if isinstance(event, KeyVerificationStart):
|
||||||
|
logger.info(f"{event.sender} via {event.from_device} has started "
|
||||||
|
f"a key verification process.")
|
||||||
|
|
||||||
|
message = DeviceStartSasMessage(
|
||||||
|
self.user_id,
|
||||||
|
event.sender,
|
||||||
|
event.from_device
|
||||||
|
)
|
||||||
|
|
||||||
task = loop.create_task(
|
task = loop.create_task(
|
||||||
self.accept_key_verification(event.transaction_id)
|
self.queue.put(message)
|
||||||
)
|
)
|
||||||
self.key_verificatins_tasks.append(task)
|
self.key_verificatins_tasks.append(task)
|
||||||
|
|
||||||
@ -183,6 +192,21 @@ class PanClient(AsyncClient):
|
|||||||
self.task = task
|
self.task = task
|
||||||
return task
|
return task
|
||||||
|
|
||||||
|
async def accept_sas(self, message):
|
||||||
|
user_id = message.user_id
|
||||||
|
device_id = message.device_id
|
||||||
|
|
||||||
|
sas = self.get_active_sas(user_id, device_id)
|
||||||
|
|
||||||
|
if not sas:
|
||||||
|
await self.send_info("No such verification process found.")
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
await self.accept_key_verification(sas.transaction_id)
|
||||||
|
except (LocalProtocolError, ClientConnectionError) as e:
|
||||||
|
await self.send_info(f"Error accepting key verification: {e}")
|
||||||
|
|
||||||
async def confirm_sas(self, message):
|
async def confirm_sas(self, message):
|
||||||
user_id = message.user_id
|
user_id = message.user_id
|
||||||
device_id = message.device_id
|
device_id = message.device_id
|
||||||
|
@ -24,6 +24,7 @@ from pantalaimon.thread_messages import (
|
|||||||
ExportKeysMessage,
|
ExportKeysMessage,
|
||||||
ImportKeysMessage,
|
ImportKeysMessage,
|
||||||
DeviceConfirmSasMessage,
|
DeviceConfirmSasMessage,
|
||||||
|
DeviceAcceptSasMessage,
|
||||||
InfoMessage
|
InfoMessage
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -125,7 +126,7 @@ class ProxyDaemon:
|
|||||||
if isinstance(
|
if isinstance(
|
||||||
message,
|
message,
|
||||||
(DeviceVerifyMessage, DeviceUnverifyMessage,
|
(DeviceVerifyMessage, DeviceUnverifyMessage,
|
||||||
DeviceConfirmSasMessage)
|
DeviceConfirmSasMessage, DeviceAcceptSasMessage)
|
||||||
):
|
):
|
||||||
|
|
||||||
device = client.device_store[message.user_id].get(
|
device = client.device_store[message.user_id].get(
|
||||||
@ -144,6 +145,8 @@ class ProxyDaemon:
|
|||||||
await self._verify_device(client, device)
|
await self._verify_device(client, device)
|
||||||
elif isinstance(message, DeviceUnverifyMessage):
|
elif isinstance(message, DeviceUnverifyMessage):
|
||||||
await self._unverify_device(client, device)
|
await self._unverify_device(client, device)
|
||||||
|
elif isinstance(message, DeviceAcceptSasMessage):
|
||||||
|
await client.accept_sas(message)
|
||||||
elif isinstance(message, DeviceConfirmSasMessage):
|
elif isinstance(message, DeviceConfirmSasMessage):
|
||||||
await client.confirm_sas(message)
|
await client.confirm_sas(message)
|
||||||
|
|
||||||
|
@ -384,6 +384,14 @@ class PanCtl:
|
|||||||
dbus_interface="org.pantalaimon.devices"
|
dbus_interface="org.pantalaimon.devices"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def accept_sas(self, args):
|
||||||
|
self.devices.accept_sas(
|
||||||
|
args.pan_user,
|
||||||
|
args.user_id,
|
||||||
|
args.device_id,
|
||||||
|
dbus_interface="org.pantalaimon.devices"
|
||||||
|
)
|
||||||
|
|
||||||
def list_devices(self, args):
|
def list_devices(self, args):
|
||||||
devices = self.devices.list_user_devices(
|
devices = self.devices.list_user_devices(
|
||||||
args.pan_user,
|
args.pan_user,
|
||||||
@ -439,7 +447,7 @@ class PanCtl:
|
|||||||
self.import_keys(parsed_args)
|
self.import_keys(parsed_args)
|
||||||
|
|
||||||
elif command == "accept-verification":
|
elif command == "accept-verification":
|
||||||
pass
|
self.accept_sas(parsed_args)
|
||||||
|
|
||||||
elif command == "list-devices":
|
elif command == "list-devices":
|
||||||
self.list_devices(parsed_args)
|
self.list_devices(parsed_args)
|
||||||
|
@ -51,6 +51,16 @@ class DeviceUnverifyMessage(_VerificationMessage):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@attr.s
|
||||||
|
class DeviceStartSasMessage(_VerificationMessage):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@attr.s
|
||||||
|
class DeviceAcceptSasMessage(_VerificationMessage):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@attr.s
|
@attr.s
|
||||||
class DeviceConfirmSasMessage(_VerificationMessage):
|
class DeviceConfirmSasMessage(_VerificationMessage):
|
||||||
pass
|
pass
|
||||||
|
@ -16,6 +16,7 @@ from pantalaimon.thread_messages import (
|
|||||||
DeviceUnverifyMessage,
|
DeviceUnverifyMessage,
|
||||||
DevicesMessage,
|
DevicesMessage,
|
||||||
InfoMessage,
|
InfoMessage,
|
||||||
|
DeviceAcceptSasMessage,
|
||||||
DeviceConfirmSasMessage,
|
DeviceConfirmSasMessage,
|
||||||
DeviceAuthStringMessage,
|
DeviceAuthStringMessage,
|
||||||
ImportKeysMessage,
|
ImportKeysMessage,
|
||||||
@ -113,6 +114,13 @@ class Devices(dbus.service.Object):
|
|||||||
self.queue.put(message)
|
self.queue.put(message)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@dbus.service.method("org.pantalaimon.devices",
|
||||||
|
in_signature="sss")
|
||||||
|
def accept_sas(self, pan_user, user_id, device_id):
|
||||||
|
message = DeviceAcceptSasMessage(pan_user, user_id, device_id)
|
||||||
|
self.queue.put(message)
|
||||||
|
return
|
||||||
|
|
||||||
def update_devices(self, message):
|
def update_devices(self, message):
|
||||||
device_store = self.device_list[message.user_id]
|
device_store = self.device_list[message.user_id]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user