new flag for createroom:

include ability to use `--encrypt` or variants to encrypt a room at
creation time, regardless of configuration setting
This commit is contained in:
William Kray
2024-08-19 13:42:16 -07:00
parent e4ff8edd0d
commit 038927e292
+10 -1
View File
@@ -412,7 +412,11 @@ class CommunityBot(Plugin):
await evt.reply('pass me a room name (like "cool topic") and i will create it and add it to the space') await evt.reply('pass me a room name (like "cool topic") and i will create it and add it to the space')
else: else:
if evt.sender in self.config["admins"] or evt.sender in self.config["mods"]: if evt.sender in self.config["admins"] or evt.sender in self.config["mods"]:
encrypted_flag_regex = re.compile(r'(\s+|^)-+encrypt(ed)?\s?')
force_encryption = bool(encrypted_flag_regex.search(roomname))
try: try:
if force_encryption:
roomname = encrypted_flag_regex.sub('', roomname)
sanitized_name = re.sub(r"[^a-zA-Z0-9]", '', roomname).lower() sanitized_name = re.sub(r"[^a-zA-Z0-9]", '', roomname).lower()
invitees = self.config['invitees'] invitees = self.config['invitees']
parent_room = self.config['parent_room'] parent_room = self.config['parent_room']
@@ -430,6 +434,7 @@ class CommunityBot(Plugin):
#self.log.info(mymsg) #self.log.info(mymsg)
room_id = await self.client.create_room(alias_localpart=sanitized_name, name=roomname, room_id = await self.client.create_room(alias_localpart=sanitized_name, name=roomname,
invitees=invitees, power_level_override=pl_override) invitees=invitees, power_level_override=pl_override)
time.sleep(0.5)
await evt.respond(f"updating room states...", edits=mymsg) await evt.respond(f"updating room states...", edits=mymsg)
parent_event_content = json.dumps({'auto_join': False, 'suggested': False, 'via': [server]}) parent_event_content = json.dumps({'auto_join': False, 'suggested': False, 'via': [server]})
@@ -438,15 +443,19 @@ class CommunityBot(Plugin):
'room_id': parent_room}]}) 'room_id': parent_room}]})
await self.client.send_state_event(parent_room, 'm.space.child', parent_event_content, state_key=room_id) await self.client.send_state_event(parent_room, 'm.space.child', parent_event_content, state_key=room_id)
time.sleep(0.5)
await self.client.send_state_event(room_id, 'm.space.parent', child_event_content, state_key=parent_room) await self.client.send_state_event(room_id, 'm.space.parent', child_event_content, state_key=parent_room)
time.sleep(0.5)
await self.client.send_state_event(room_id, 'm.room.join_rules', join_rules_content, state_key="") await self.client.send_state_event(room_id, 'm.room.join_rules', join_rules_content, state_key="")
time.sleep(0.5)
if self.config["encrypt"]: if self.config["encrypt"] or force_encryption:
encryption_content = json.dumps({"algorithm": "m.megolm.v1.aes-sha2"}) encryption_content = json.dumps({"algorithm": "m.megolm.v1.aes-sha2"})
await self.client.send_state_event(room_id, 'm.room.encryption', encryption_content, await self.client.send_state_event(room_id, 'm.room.encryption', encryption_content,
state_key="") state_key="")
await evt.respond(f"encrypting room...", edits=mymsg) await evt.respond(f"encrypting room...", edits=mymsg)
time.sleep(0.5)
await evt.respond(f"room created and updated, alias is #{sanitized_name}:{server}", edits=mymsg) await evt.respond(f"room created and updated, alias is #{sanitized_name}:{server}", edits=mymsg)