Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
La Quadrature du Net
mamot
Commits
6d98a731
Commit
6d98a731
authored
Jan 23, 2017
by
Eugen Rochko
Browse files
Domain blocks now have varying severity - auto-suspend vs auto-silence
parent
ef2b9246
Changes
8
Hide whitespace changes
Inline
Side-by-side
app/models/domain_block.rb
View file @
6d98a731
# frozen_string_literal: true
class
DomainBlock
<
ApplicationRecord
enum
severity:
[
:silence
,
:suspend
]
validates
:domain
,
presence:
true
,
uniqueness:
true
def
self
.
blocked?
(
domain
)
...
...
app/services/block_domain_service.rb
View file @
6d98a731
# frozen_string_literal: true
class
BlockDomainService
<
BaseService
def
call
(
domain
)
DomainBlock
.
find
_or_create
_by
!
(
domain:
domain
)
def
call
(
domain
,
severity
)
DomainBlock
.
where
(
domain:
domain
).
first
_or_create!
(
domain:
domain
,
severity:
severity
)
Account
.
where
(
domain:
domain
).
find_each
do
|
account
|
if
account
.
subscribed?
account
.
subscription
(
api_subscription_url
(
account
.
id
)).
unsubscribe
if
severity
==
:silence
Account
.
where
(
domain:
domain
).
update_all
(
silenced:
true
)
else
Account
.
where
(
domain:
domain
).
find_each
do
|
account
|
account
.
subscription
(
api_subscription_url
(
account
.
id
)).
unsubscribe
if
account
.
subscribed?
SuspendAccountService
.
new
.
call
(
account
)
end
account
.
destroy!
end
end
end
app/services/follow_remote_account_service.rb
View file @
6d98a731
...
...
@@ -35,12 +35,15 @@ class FollowRemoteAccountService < BaseService
Rails
.
logger
.
debug
"Creating new remote account for
#{
uri
}
"
domain_block
=
DomainBlock
.
find_by
(
domain:
domain
)
account
.
remote_url
=
data
.
link
(
'http://schemas.google.com/g/2010#updates-from'
).
href
account
.
salmon_url
=
data
.
link
(
'salmon'
).
href
account
.
url
=
data
.
link
(
'http://webfinger.net/rel/profile-page'
).
href
account
.
public_key
=
magic_key_to_pem
(
data
.
link
(
'magic-public-key'
).
href
)
account
.
private_key
=
nil
account
.
suspended
=
true
if
DomainBlock
.
blocked?
(
domain
)
account
.
suspended
=
true
if
domain_block
&&
domain_block
.
suspend?
account
.
silenced
=
true
if
domain_block
&&
domain_block
.
silence?
xml
=
get_feed
(
account
.
remote_url
)
hubs
=
get_hubs
(
xml
)
...
...
app/services/suspend_account_service.rb
View file @
6d98a731
...
...
@@ -18,7 +18,6 @@ class SuspendAccountService < BaseService
@account
.
media_attachments
.
destroy_all
@account
.
stream_entries
.
destroy_all
@account
.
mentions
.
destroy_all
@account
.
notifications
.
destroy_all
@account
.
favourites
.
destroy_all
@account
.
active_relationships
.
destroy_all
...
...
app/views/admin/domain_blocks/index.html.haml
View file @
6d98a731
...
...
@@ -5,10 +5,12 @@
%thead
%tr
%th
Domain
%th
Severity
%tbody
-
@blocks
.
each
do
|
block
|
%tr
%td
%samp
=
block
.
domain
%td
=
block
.
severity
=
will_paginate
@blocks
,
pagination_options
db/migrate/20170123162658_add_severity_to_domain_blocks.rb
0 → 100644
View file @
6d98a731
class
AddSeverityToDomainBlocks
<
ActiveRecord
::
Migration
[
5.0
]
def
change
add_column
:domain_blocks
,
:severity
,
:integer
,
default:
0
end
end
db/schema.rb
View file @
6d98a731
...
...
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
201701
19214911
)
do
ActiveRecord
::
Schema
.
define
(
version:
201701
23162658
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
@@ -58,6 +58,7 @@ ActiveRecord::Schema.define(version: 20170119214911) do
t
.
string
"domain"
,
default:
""
,
null:
false
t
.
datetime
"created_at"
,
null:
false
t
.
datetime
"updated_at"
,
null:
false
t
.
integer
"severity"
,
default:
0
t
.
index
[
"domain"
],
name:
"index_domain_blocks_on_domain"
,
unique:
true
,
using: :btree
end
...
...
spec/services/block_domain_service_spec.rb
View file @
6d98a731
...
...
@@ -14,7 +14,7 @@ RSpec.describe BlockDomainService do
bad_status2
bad_attachment
subject
.
call
(
'evil.org'
)
subject
.
call
(
'evil.org'
,
:suspend
)
end
it
'creates a domain block'
do
...
...
@@ -22,7 +22,7 @@ RSpec.describe BlockDomainService do
end
it
'removes remote accounts from that domain'
do
expect
(
Account
.
find_remote
(
'badguy666'
,
'evil.org'
)).
to
be
_nil
expect
(
Account
.
find_remote
(
'badguy666'
,
'evil.org'
)
.
suspended?
).
to
be
true
end
it
'removes the remote accounts\'s statuses and media attachments'
do
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment