policies

package
v0.0.0-...-d036b2f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 30, 2025 License: Unlicense Imports: 12 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ConnectionRejectionStrictDefaults = ConnectionRateLimiter(1, time.Minute*5, 100)
View Source
var RequestRejectionStrictDefaults = SeqRequest(
	NoComplexFilters,
	NoSearchQueries,
	FilterIPRateLimiter(20, time.Minute, 100),
)

Functions

func AntiSyncBots

func AntiSyncBots(ctx context.Context, filter nostr.Filter) (reject bool, msg string)

AntiSyncBots tries to prevent people from syncing kind:1s from this relay to else by always requiring an author parameter at least.

func ConnectionRateLimiter

func ConnectionRateLimiter(tokensPerInterval int, interval time.Duration, maxTokens int) func(r *http.Request) bool

func EventIPRateLimiter

func EventIPRateLimiter(tokensPerInterval int, interval time.Duration, maxTokens int) func(ctx context.Context, _ nostr.Event) (reject bool, msg string)

func EventPubKeyRateLimiter

func EventPubKeyRateLimiter(tokensPerInterval int, interval time.Duration, maxTokens int) func(ctx context.Context, _ nostr.Event) (reject bool, msg string)

func FilterIPRateLimiter

func FilterIPRateLimiter(tokensPerInterval int, interval time.Duration, maxTokens int) func(ctx context.Context, _ nostr.Filter) (reject bool, msg string)

func MustAuth

func MustAuth(ctx context.Context, filter nostr.Filter) (reject bool, msg string)

MustAuth requires all subscribers to be authenticated

func NoComplexFilters

func NoComplexFilters(ctx context.Context, filter nostr.Filter) (reject bool, msg string)

NoComplexFilters disallows filters with more than 2 tags.

func NoEmptyFilters

func NoEmptyFilters(ctx context.Context, filter nostr.Filter) (reject bool, msg string)

NoEmptyFilters disallows filters that don't have at least a tag, a kind, an author or an id.

func NoSearchQueries

func NoSearchQueries(ctx context.Context, filter nostr.Filter) (reject bool, msg string)

func OnlyAllowNIP70ProtectedEvents

func OnlyAllowNIP70ProtectedEvents(ctx context.Context, event nostr.Event) (reject bool, msg string)

func PreventLargeContent

func PreventLargeContent(maxContent int) func(context.Context, nostr.Event) (bool, string)

PreventLargeContent rejects events with content too large

func PreventLargeTags

func PreventLargeTags(maxTagValueLen int) func(context.Context, nostr.Event) (bool, string)

PreventLargeTags rejects events that have indexable tag values greater than maxTagValueLen.

func PreventTimestampsInTheFuture

func PreventTimestampsInTheFuture(threshold time.Duration) func(context.Context, nostr.Event) (bool, string)

func PreventTimestampsInThePast

func PreventTimestampsInThePast(threshold time.Duration) func(context.Context, nostr.Event) (bool, string)

func PreventTooManyIndexableTags

func PreventTooManyIndexableTags(max int, ignoreKinds []nostr.Kind, onlyKinds []nostr.Kind) func(context.Context, nostr.Event) (bool, string)

PreventTooManyIndexableTags returns a function that can be used as a RejectFilter that will reject events with more indexable (single-character) tags than the specified number.

If ignoreKinds is given this restriction will not apply to these kinds (useful for allowing a bigger). If onlyKinds is given then all other kinds will be ignored.

func RejectEventsWithBase64Media

func RejectEventsWithBase64Media(ctx context.Context, evt nostr.Event) (bool, string)

func RemoveAllButKinds

func RemoveAllButKinds(kinds ...nostr.Kind) func(context.Context, *nostr.Filter)

func RemoveAllButTags

func RemoveAllButTags(tagNames ...string) func(context.Context, *nostr.Filter)

func RemoveSearchQueries

func RemoveSearchQueries(ctx context.Context, filter *nostr.Filter)

func RestrictToSpecifiedKinds

func RestrictToSpecifiedKinds(allowEphemeral bool, kinds ...nostr.Kind) func(context.Context, nostr.Event) (bool, string)

RestrictToSpecifiedKinds returns a function that can be used as a RejectFilter that will reject any events with kinds different than the specified ones.

func SeqEvent

func SeqEvent(
	funcs ...func(ctx context.Context, evt nostr.Event) (bool, string),
) func(context.Context, nostr.Event) (reject bool, reason string)

func SeqRequest

func SeqRequest(
	funcs ...func(ctx context.Context, evt nostr.Filter) (bool, string),
) func(context.Context, nostr.Filter) (reject bool, reason string)

func SeqStore

func SeqStore(funcs ...func(ctx context.Context, evt nostr.Event) error) func(context.Context, nostr.Event) error

func ValidateKind

func ValidateKind(ctx context.Context, evt nostr.Event) (bool, string)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL