[bugfix] check remote status permissibility (#2703)

* add more stringent checks for remote status permissibility

* add check for inreplyto of a remote status being a boost

* do not permit inReplyTo boost wrapper statuses

* change comment wording

* fix calls to NewFederator()

* add code comments for NotPermitted() and SetNotPermitted()

* improve comment

* check that existing != nil before attempting delete

* ensure replying account isn't suspended

* use a debug log instead of info. check for boost using ID

* shorten log string length. make info level

* add note that replying to boost wrapper status shouldn't be able to happen anyways

* update to use onFail() function
This commit is contained in:
kim 2024-03-04 12:30:12 +00:00 committed by GitHub
commit d85727e184
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 154 additions and 16 deletions

View file

@ -22,6 +22,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/federation/dereferencing"
"github.com/superseriousbusiness/gotosocial/internal/federation/federatingdb"
"github.com/superseriousbusiness/gotosocial/internal/filter/visibility"
"github.com/superseriousbusiness/gotosocial/internal/media"
"github.com/superseriousbusiness/gotosocial/internal/state"
"github.com/superseriousbusiness/gotosocial/internal/transport"
@ -50,6 +51,7 @@ func NewFederator(
federatingDB federatingdb.DB,
transportController transport.Controller,
converter *typeutils.Converter,
visFilter *visibility.Filter,
mediaManager *media.Manager,
) *Federator {
clock := &Clock{}
@ -60,7 +62,7 @@ func NewFederator(
converter: converter,
transportController: transportController,
mediaManager: mediaManager,
Dereferencer: dereferencing.NewDereferencer(state, converter, transportController, mediaManager),
Dereferencer: dereferencing.NewDereferencer(state, converter, transportController, visFilter, mediaManager),
}
actor := newFederatingActor(f, f, federatingDB, clock)
f.actor = actor