diff options
author | Starfall <us@starfall.systems> | 2020-12-24 13:36:25 -0600 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2020-12-24 13:36:25 -0600 |
commit | 6ed4e874c5ace36344f77b3f096c4089d9b11e01 (patch) | |
tree | 83b2675d297f56a75b5e5dec33c644bc19f6cf1b /app/models/domain_block.rb | |
parent | ab127fd7941b7c84e6d6fe3071d41f52affb143c (diff) | |
parent | 225c934a1b66e2fcbedbda7936666c1ca3c9a04b (diff) |
Merge branch 'glitch' into main
Diffstat (limited to 'app/models/domain_block.rb')
-rw-r--r-- | app/models/domain_block.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index 2b18e01fa..bba04c603 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -12,10 +12,12 @@ # reject_reports :boolean default(FALSE), not null # private_comment :text # public_comment :text +# obfuscate :boolean default(FALSE), not null # class DomainBlock < ApplicationRecord include DomainNormalizable + include DomainMaterializable enum severity: [:silence, :suspend, :noop] @@ -72,4 +74,23 @@ class DomainBlock < ApplicationRecord scope = suspend? ? accounts.where(suspended_at: created_at) : accounts.where(silenced_at: created_at) scope.count end + + def public_domain + return domain unless obfuscate? + + length = domain.size + visible_ratio = length / 4 + + domain.chars.map.with_index do |chr, i| + if i > visible_ratio && i < length - visible_ratio && chr != '.' + '*' + else + chr + end + end.join + end + + def domain_digest + Digest::SHA256.hexdigest(domain) + end end |