|
|
|
@ -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, |
|
|
|
|