fed

package
v0.0.0-...-ba5aec8 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2024 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Overview

Package fed implements federation (server-to-server requests).

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrActorGone      = errors.New("actor is gone")
	ErrNoLocalActor   = errors.New("no such local user")
	ErrActorNotCached = errors.New("actor is not cached")
	ErrBlockedDomain  = errors.New("domain is blocked")
	ErrInvalidScheme  = errors.New("invalid scheme")
	ErrInvalidHost    = errors.New("invalid host")
	ErrInvalidID      = errors.New("invalid actor ID")
	ErrSuspendedActor = errors.New("actor is suspended")
	ErrYoungActor     = errors.New("actor is too young")
)

Functions

This section is empty.

Types

type BlockList

type BlockList struct {
	// contains filtered or unexported fields
}

BlockList is a list of blocked domains.

func NewBlockList

func NewBlockList(log *slog.Logger, path string) (*BlockList, error)

func (*BlockList) Close

func (b *BlockList) Close()

Close frees resources.

func (*BlockList) Contains

func (b *BlockList) Contains(domain string) bool

Contains determines if a domain is blocked.

type Client

type Client interface {
	Do(*http.Request) (*http.Response, error)
}

Client is a HTTP client.

type Listener

type Listener struct {
	Domain   string
	Closed   bool
	LogLevel slog.Level
	Config   *cfg.Config
	DB       *sql.DB
	Resolver *Resolver
	ActorKey httpsig.Key
	Log      *slog.Logger
	Addr     string
	Cert     string
	Key      string
	Plain    bool
}

func (*Listener) ListenAndServe

func (l *Listener) ListenAndServe(ctx context.Context) error

ListenAndServe handles HTTP requests from other servers.

type Queue

type Queue struct {
	Domain   string
	Config   *cfg.Config
	Log      *slog.Logger
	DB       *sql.DB
	Resolver *Resolver
}

func (*Queue) Process

func (q *Queue) Process(ctx context.Context) error

Process polls the queue of outgoing activities and delivers them to other servers with timeout and retries.

type Resolver

type Resolver struct {
	BlockedDomains *BlockList
	// contains filtered or unexported fields
}

Resolver retrieves actor objects given their ID. Actors are cached, updated periodically and deleted if gone from the remote server.

func NewResolver

func NewResolver(blockedDomains *BlockList, domain string, cfg *cfg.Config, client Client) *Resolver

NewResolver returns a new Resolver.

func (*Resolver) Resolve

func (r *Resolver) Resolve(ctx context.Context, log *slog.Logger, db *sql.DB, key httpsig.Key, host, name string, flags ap.ResolverFlag) (*ap.Actor, error)

Resolve retrieves an actor object by host and name.

func (*Resolver) ResolveID

func (r *Resolver) ResolveID(ctx context.Context, log *slog.Logger, db *sql.DB, key httpsig.Key, id string, flags ap.ResolverFlag) (*ap.Actor, error)

ResolveID retrieves an actor object by its ID.

type Syncer

type Syncer struct {
	Domain   string
	Config   *cfg.Config
	Log      *slog.Logger
	DB       *sql.DB
	Resolver *Resolver
	Key      httpsig.Key
}

func (*Syncer) Run

func (s *Syncer) Run(ctx context.Context) error

Jump to

Keyboard shortcuts

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