diff options
Diffstat (limited to 'internal/federation')
| -rw-r--r-- | internal/federation/dereferencing/account.go | 10 | ||||
| -rw-r--r-- | internal/federation/federatingprotocol.go | 7 | 
2 files changed, 17 insertions, 0 deletions
diff --git a/internal/federation/dereferencing/account.go b/internal/federation/dereferencing/account.go index a4e74de3c..562062c8d 100644 --- a/internal/federation/dereferencing/account.go +++ b/internal/federation/dereferencing/account.go @@ -42,6 +42,11 @@ import (  // accountUpToDate returns whether the given account model is both updateable (i.e.  // non-instance remote account) and whether it needs an update based on `fetched_at`.  func accountUpToDate(account *gtsmodel.Account) bool { +	if !account.SuspendedAt.IsZero() { +		// Can't update suspended accounts. +		return true +	} +  	if account.IsLocal() {  		// Can't update local accounts.  		return true @@ -331,6 +336,11 @@ func (d *Dereferencer) enrichAccountSafely(  	account *gtsmodel.Account,  	apubAcc ap.Accountable,  ) (*gtsmodel.Account, ap.Accountable, error) { +	// Noop if account has been suspended. +	if !account.SuspendedAt.IsZero() { +		return account, nil, nil +	} +  	// By default use account.URI  	// as the per-URI deref lock.  	uriStr := account.URI diff --git a/internal/federation/federatingprotocol.go b/internal/federation/federatingprotocol.go index 5a913dbbe..802a8b1dc 100644 --- a/internal/federation/federatingprotocol.go +++ b/internal/federation/federatingprotocol.go @@ -288,6 +288,13 @@ func (f *Federator) AuthenticatePostInbox(ctx context.Context, w http.ResponseWr  		return nil, false, err  	} +	if !requestingAccount.SuspendedAt.IsZero() { +		// Account was marked as suspended by a +		// local admin action. Stop request early. +		w.WriteHeader(http.StatusForbidden) +		return ctx, false, nil +	} +  	// We have everything we need now, set the requesting  	// and receiving accounts on the context for later use.  	ctx = gtscontext.SetRequestingAccount(ctx, requestingAccount)  | 
