server

package
v1.9.3 Latest Latest
Warning

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

Go to latest
Published: Dec 22, 2025 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Overview

Package server provides rest-like api and serves static assets as well

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetHashedIP added in v1.9.2

func GetHashedIP(r *http.Request) string

GetHashedIP retrieves hashed IP from context

func HashedIP added in v1.9.2

func HashedIP(secret string) func(http.Handler) http.Handler

HashedIP middleware adds anonymized IP to request context for audit logging. Must run after rest.RealIP middleware which sets r.RemoteAddr to the client IP.

func Logger

func Logger(l log.L) func(http.Handler) http.Handler

Logger middleware with security masking for sensitive paths and IP anonymization. Must run after HashedIP middleware which sets hashed IP in context.

func StripSlashes added in v1.6.0

func StripSlashes(next http.Handler) http.Handler

StripSlashes removes trailing slashes from URLs

func Timeout added in v1.6.0

func Timeout(timeout time.Duration) func(http.Handler) http.Handler

Timeout creates a timeout middleware

Types

type Config added in v1.3.0

type Config struct {
	Domain   []string // allowed domains list
	WebRoot  string
	Protocol string
	Branding string
	Listen   string // server listen address (ip:port or :port), defaults to :8080
	SignKey  string // sign key (will be hashed before use for IP anonymization)
	// validation parameters
	PinSize        int
	MaxPinAttempts int
	MaxExpire      time.Duration
	// file upload settings
	EnableFiles bool
	MaxFileSize int64 // bytes, 0 means use default (1MB)
	// authentication (optional)
	AuthHash   string        // bcrypt hash of password, empty disables auth
	SessionTTL time.Duration // session lifetime, defaults to 168h (7 days)
	// email sharing (optional)
	EmailEnabled bool
}

Config is a configuration for the server

type EmailSender added in v1.9.0

type EmailSender interface {
	Send(ctx context.Context, req email.Request) error
	GetDefaultFromName() string
}

EmailSender defines the interface for sending emails (consumer-side interface)

type Messager

type Messager interface {
	MakeMessage(duration time.Duration, msg, pin string) (result *store.Message, err error)
	MakeFileMessage(req messager.FileRequest) (result *store.Message, err error)
	LoadMessage(key, pin string) (msg *store.Message, err error)
	IsFile(key string) bool // checks if message is a file without decrypting
}

Messager interface making and loading messages

type Server

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

Server is a rest with store

func New added in v1.3.0

func New(m Messager, version string, cfg Config) (Server, error)

New creates a new server with template cache

func (Server) Run

func (s Server) Run(ctx context.Context) error

Run the lister and request's router, activate rest server

func (Server) WithEmail added in v1.9.0

func (s Server) WithEmail(sender EmailSender) Server

WithEmail sets the email sender for the server

Directories

Path Synopsis
Package assets provides embedded static files and templates
Package assets provides embedded static files and templates
Package validator provides functionality for validating and sanitizing data.
Package validator provides functionality for validating and sanitizing data.

Jump to

Keyboard shortcuts

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