policies

package
v0.0.0-...-23d525f Latest Latest
Warning

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

Go to latest
Published: Mar 2, 2026 License: Unlicense Imports: 18 Imported by: 2

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 PreventNormalDuplicates

func PreventNormalDuplicates(query func(nostr.Filter, int) iter.Seq[nostr.Event]) func(ctx context.Context, event nostr.Event) (bool, string)

PreventNormalDuplicates prevents normal events that refer to the same thing from being saved. For kinds 6, 7, 16, 1018 it checks "e" tags. For kind 1163 it checks "p" tags. For kinds 1163, 6, 16, 7516, 7517 it checks "a" tags.

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 RejectUnprefixedNostrReferences

func RejectUnprefixedNostrReferences(ctx context.Context, event 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, filter 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 ValidateAgainstSchema

func ValidateAgainstSchema(v schema.Validator) func(ctx context.Context, evt nostr.Event) (bool, string)

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