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:
+10
-1
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user