summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/api/client/search/searchget_test.go28
-rw-r--r--internal/processing/search.go18
2 files changed, 46 insertions, 0 deletions
diff --git a/internal/api/client/search/searchget_test.go b/internal/api/client/search/searchget_test.go
index f284643ed..bc07eb47f 100644
--- a/internal/api/client/search/searchget_test.go
+++ b/internal/api/client/search/searchget_test.go
@@ -252,6 +252,34 @@ func (suite *SearchGetTestSuite) TestSearchStatusByURL() {
suite.NotNil(gotStatus)
}
+func (suite *SearchGetTestSuite) TestSearchBlockedDomainURL() {
+ query := "https://replyguys.com/@someone"
+ resolve := true
+
+ searchResult, err := suite.testSearch(query, resolve, http.StatusOK)
+ if err != nil {
+ suite.FailNow(err.Error())
+ }
+
+ suite.Len(searchResult.Accounts, 0)
+ suite.Len(searchResult.Statuses, 0)
+ suite.Len(searchResult.Hashtags, 0)
+}
+
+func (suite *SearchGetTestSuite) TestSearchBlockedDomainNamestring() {
+ query := "@someone@replyguys.com"
+ resolve := true
+
+ searchResult, err := suite.testSearch(query, resolve, http.StatusOK)
+ if err != nil {
+ suite.FailNow(err.Error())
+ }
+
+ suite.Len(searchResult.Accounts, 0)
+ suite.Len(searchResult.Statuses, 0)
+ suite.Len(searchResult.Hashtags, 0)
+}
+
func TestSearchGetTestSuite(t *testing.T) {
suite.Run(t, &SearchGetTestSuite{})
}
diff --git a/internal/processing/search.go b/internal/processing/search.go
index 6db938b37..90e361cf7 100644
--- a/internal/processing/search.go
+++ b/internal/processing/search.go
@@ -87,6 +87,15 @@ func (p *processor) SearchGet(ctx context.Context, authed *oauth.Auth, search *a
if username, domain, err := util.ExtractNamestringParts(maybeNamestring); err == nil {
l.Trace("search term is a mention, looking it up...")
+ blocked, err := p.db.IsDomainBlocked(ctx, domain)
+ if err != nil {
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("error checking domain block: %w", err))
+ }
+ if blocked {
+ l.Debug("domain is blocked")
+ return searchResult, nil
+ }
+
foundAccount, err := p.searchAccountByUsernameDomain(ctx, authed, username, domain, search.Resolve)
if err != nil {
var errNotRetrievable *dereferencing.ErrNotRetrievable
@@ -110,6 +119,15 @@ func (p *processor) SearchGet(ctx context.Context, authed *oauth.Auth, search *a
if uri, err := url.Parse(query); err == nil {
if uri.Scheme == "https" || uri.Scheme == "http" {
l.Trace("search term is a uri, looking it up...")
+ blocked, err := p.db.IsURIBlocked(ctx, uri)
+ if err != nil {
+ return nil, gtserror.NewErrorInternalError(fmt.Errorf("error checking domain block: %w", err))
+ }
+ if blocked {
+ l.Debug("domain is blocked")
+ return searchResult, nil
+ }
+
// check if it's a status...
foundStatus, err := p.searchStatusByURI(ctx, authed, uri)
if err != nil {