# # whether or not smtp connections should use tls
# use_tls: true
# }
+ # additional_slurs:
+ # '''
+ # (\bThis\b)|(\bis\b)|(\bsample\b)
+ # '''
}
jwt_secret: Some("changeme".into()),
pictrs_url: Some("http://pictrs:8080".into()),
iframely_url: Some("http://iframely".into()),
+ additional_slurs: None,
}
}
}
}
impl Settings {
- /// Reads config from the files and environment.
- /// First, defaults are loaded from CONFIG_FILE_DEFAULTS, then these values can be overwritten
- /// from CONFIG_FILE (optional). Finally, values from the environment (with prefix LEMMY) are
- /// added to the config.
+ /// Reads config from configuration file.
+ /// Then values from the environment (with prefix LEMMY) are added to the config.
+ /// And then default values are merged into config.
+ /// Defaults are controlled by Default trait implemntation for Settings structs.
///
/// Note: The env var `LEMMY_DATABASE_URL` is parsed in
/// `lemmy_db_queries/src/lib.rs::get_database_url_from_env()`
pub(crate) captcha: Option<CaptchaConfig>,
pub(crate) email: Option<EmailConfig>,
pub(crate) setup: Option<SetupConfig>,
+ pub(crate) additional_slurs: Option<String>,
}
#[derive(Debug, Deserialize, Clone)]
lazy_static! {
static ref EMAIL_REGEX: Regex = Regex::new(r"^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$").expect("compile regex");
- static ref SLUR_REGEX: Regex = RegexBuilder::new(r"(fag(g|got|tard)?\b|cock\s?sucker(s|ing)?|ni((g{2,}|q)+|[gq]{2,})[e3r]+(s|z)?|mudslime?s?|kikes?|\bspi(c|k)s?\b|\bchinks?|gooks?|bitch(es|ing|y)?|whor(es?|ing)|\btr(a|@)nn?(y|ies?)|\b(b|re|r)tard(ed)?s?)").case_insensitive(true).build().expect("compile regex");
+ static ref SLUR_REGEX: Regex = {
+ let mut slurs = r"(fag(g|got|tard)?\b|cock\s?sucker(s|ing)?|ni((g{2,}|q)+|[gq]{2,})[e3r]+(s|z)?|mudslime?s?|kikes?|\bspi(c|k)s?\b|\bchinks?|gooks?|bitch(es|ing|y)?|whor(es?|ing)|\btr(a|@)nn?(y|ies?)|\b(b|re|r)tard(ed)?s?)".to_string();
+ if let Some(additional_slurs) = Settings::get().additional_slurs {
+ slurs.push('|');
+ slurs.push_str(&additional_slurs);
+ };
+ RegexBuilder::new(&&slurs).case_insensitive(true).build().expect("compile regex")
+ };
+
+
static ref USERNAME_MATCHES_REGEX: Regex = Regex::new(r"/u/[a-zA-Z][0-9a-zA-Z_]*").expect("compile regex");
// TODO keep this old one, it didn't work with port well tho
// static ref MENTIONS_REGEX: Regex = Regex::new(r"@(?P<name>[\w.]+)@(?P<domain>[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)").expect("compile regex");