fix: don't always query aliases of appservices

only do so if the alias matches the regex in the registration file
next
Timo Kösters 2021-03-03 21:41:26 +01:00
parent 1a198e7336
commit f2ec2be821
No known key found for this signature in database
GPG Key ID: 24DA7517711A2BA4
1 changed files with 18 additions and 9 deletions

View File

@ -1,5 +1,6 @@
use super::State;
use crate::{ConduitResult, Database, Error, Ruma};
use regex::Regex;
use ruma::{
api::{
appservice,
@ -86,7 +87,15 @@ pub async fn get_alias_helper(
Some(r) => room_id = Some(r),
None => {
for (_id, registration) in db.appservice.iter_all().filter_map(|r| r.ok()) {
if db
let aliases = registration
.get("namespaces")
.and_then(|ns| ns.get("aliases"))
.and_then(|users| users.get("regex"))
.and_then(|regex| regex.as_str())
.and_then(|regex| Regex::new(regex).ok());
if aliases.map_or(false, |aliases| aliases.is_match(room_alias.as_str()))
&& db
.sending
.send_appservice_request(
&db.globals,