]> Untitled Git - lemmy.git/commitdiff
Add additional slurs configuration option. Closes #1464. (#1612)
authorPavel Balashov <ba1ashpash@gmail.com>
Wed, 26 May 2021 13:39:38 +0000 (16:39 +0300)
committerGitHub <noreply@github.com>
Wed, 26 May 2021 13:39:38 +0000 (13:39 +0000)
* Actualize a comment about config initialization

* Add additional slurs functionality.

It is possible to additional regex for slurs filtering.
It can be done through `additional_slurs` option in config file.

config/config.hjson
crates/utils/src/settings/defaults.rs
crates/utils/src/settings/mod.rs
crates/utils/src/settings/structs.rs
crates/utils/src/utils.rs

index c532428c0e12447c23820eb2ec0ce297eea95989..3054b7cb2d1c6d15ff77196bc8cbf5e0030b5dc6 100644 (file)
@@ -90,4 +90,8 @@
 #    # whether or not smtp connections should use tls
 #    use_tls: true
 #  }
+  # additional_slurs:
+  #  '''
+  #  (\bThis\b)|(\bis\b)|(\bsample\b)
+  #  '''
 }
index 2883536ab32f69ce4cacc82fe8721c7be742e7b7..2dddd3f3bb8756d3c7782a4de06529dd82a57f27 100644 (file)
@@ -17,6 +17,7 @@ impl Default for Settings {
       jwt_secret: Some("changeme".into()),
       pictrs_url: Some("http://pictrs:8080".into()),
       iframely_url: Some("http://iframely".into()),
+      additional_slurs: None,
     }
   }
 }
index 406bf7de0c87aff19c8396fdcde859545914a84b..8c9f82ccfddf4fbaaa9114f645ed2f2cf51b338c 100644 (file)
@@ -27,10 +27,10 @@ lazy_static! {
 }
 
 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()`
index 7aad404b30f4b98c7839ddd419a3ddb0831a8cc4..1a7a74343228471d69c1f9ef62bc12a9dc1cc304 100644 (file)
@@ -17,6 +17,7 @@ pub struct Settings {
   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)]
index aec545cd3f6e96acb461dc74367d834b4715ae39..31936788a7e276dd06fd96cf5bb1c0890ddc8b26 100644 (file)
@@ -7,7 +7,16 @@ use regex::{Regex, RegexBuilder};
 
 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");