|
|
|
|
@ -7,6 +7,7 @@ use crate::{
|
|
|
|
|
}; |
|
|
|
|
use abstraction::{KeyValueDatabaseEngine, KvTree}; |
|
|
|
|
use directories::ProjectDirs; |
|
|
|
|
use itertools::Itertools; |
|
|
|
|
use lru_cache::LruCache; |
|
|
|
|
|
|
|
|
|
use ruma::{ |
|
|
|
|
@ -942,6 +943,56 @@ impl KeyValueDatabase {
|
|
|
|
|
latest_database_version |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
let patterns = &services().globals.config.forbidden_usernames; |
|
|
|
|
if !patterns.is_empty() { |
|
|
|
|
for user_id in services() |
|
|
|
|
.users |
|
|
|
|
.iter() |
|
|
|
|
.filter_map(std::result::Result::ok) |
|
|
|
|
.filter(|user| !services().users.is_deactivated(user).unwrap_or(true)) |
|
|
|
|
.filter(|user| user.server_name() == services().globals.server_name()) |
|
|
|
|
{ |
|
|
|
|
let matches = patterns.matches(user_id.localpart()); |
|
|
|
|
if matches.matched_any() { |
|
|
|
|
warn!( |
|
|
|
|
"User {} matches the following forbidden username patterns: {}", |
|
|
|
|
user_id.to_string(), |
|
|
|
|
matches |
|
|
|
|
.into_iter() |
|
|
|
|
.map(|x| &patterns.patterns()[x]) |
|
|
|
|
.join(", ") |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
let patterns = &services().globals.config.forbidden_alias_names; |
|
|
|
|
if !patterns.is_empty() { |
|
|
|
|
for address in services().rooms.metadata.iter_ids() { |
|
|
|
|
let room_id = address?; |
|
|
|
|
let room_aliases = services().rooms.alias.local_aliases_for_room(&room_id); |
|
|
|
|
for room_alias_result in room_aliases { |
|
|
|
|
let room_alias = room_alias_result?; |
|
|
|
|
let matches = patterns.matches(room_alias.alias()); |
|
|
|
|
if matches.matched_any() { |
|
|
|
|
warn!( |
|
|
|
|
"Room with alias {} ({}) matches the following forbidden room name patterns: {}", |
|
|
|
|
room_alias, |
|
|
|
|
&room_id, |
|
|
|
|
matches |
|
|
|
|
.into_iter() |
|
|
|
|
.map(|x| &patterns.patterns()[x]) |
|
|
|
|
.join(", ") |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
info!( |
|
|
|
|
"Loaded {} database with version {}", |
|
|
|
|
services().globals.config.database_backend, |
|
|
|
|
|