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 super::State;
use crate::{ConduitResult, Database, Error, Ruma}; use crate::{ConduitResult, Database, Error, Ruma};
use regex::Regex;
use ruma::{ use ruma::{
api::{ api::{
appservice, appservice,
@ -86,7 +87,15 @@ pub async fn get_alias_helper(
Some(r) => room_id = Some(r), Some(r) => room_id = Some(r),
None => { None => {
for (_id, registration) in db.appservice.iter_all().filter_map(|r| r.ok()) { 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 .sending
.send_appservice_request( .send_appservice_request(
&db.globals, &db.globals,