web

package module
v3.0.5 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: MIT Imports: 7 Imported by: 0

README

web

Go Reference Go Report Card Coverage Status

Описание

Это микро сборка для создания управляемого веб сервера на основе net/http.

Зависимости
github.com/webnice/dic
github.com/webnice/net
Install
go get github.com/webnice/web/v3

Documentation

Overview

Package web

Index

Constants

This section is empty.

Variables

View Source
var (
	// Mime Справочник MIME типов.
	Mime = dic.Mime()

	// Method Справочник HTTP методов запросов.
	Method = dic.Method()

	// Header Справочник заголовков.
	Header = dic.Header()

	// Status Справочник статусов HTTP ответов.
	Status = dic.Status()
)

Справочники реализованы в отдельной библиотеке. Но есть две причины их появления тут: 1. При написании кода не требуется подключать отдельную библиотеку, а библиотека web уже будет подключена. 2. Все справочник уже являются объектами-одиночками, поэтому ссылки на них не влияют на память, только на удобство.

Functions

This section is empty.

Types

type Configuration

type Configuration struct {
	// Описание сетевого или локального доступа к серверу.
	net.Configuration `yaml:"Network" json:"network"`

	// TODO Сделать ограничение по доменам.
	// Domains Список всех доменов, на которые отвечает сервер.
	// Если не пусто, то для всех других доменов будет ответ "Requested host unavailable".
	// Default value: [] - all domain
	Domain []string `yaml:"Domain" json:"domain"`

	// ReadTimeout Время ожидания запроса включая ReadHeaderTimeout.
	// Если не указано или рано 0 - таймаута нет.
	// Default value: 0 - no timeout
	ReadTimeout time.Duration `yaml:"ReadTimeout" json:"read_timeout"`

	// ReadHeaderTimeout Время ожидания заголовка запроса.
	// Если не указано или рано 0 - таймаута нет.
	// Default value: 0 - no timeout
	ReadHeaderTimeout time.Duration `yaml:"ReadHeaderTimeout" json:"read_header_timeout"`

	// WriteTimeout Время ожидания выдачи ответа.
	// Если не указано или рано 0 - таймаута нет.
	// Default value: 0 - no timeout
	WriteTimeout time.Duration `yaml:"WriteTimeout" json:"write_timeout"`

	// IdleTimeout Максимальное время ожидания следующего входящего соединения для открытого сокета, до его закрытия.
	// Используется при включённом keep-alives.
	// Если не указано или рано 0 - таймаута нет
	// Default value: 0 - no timeout
	IdleTimeout time.Duration `yaml:"IdleTimeout" json:"idle_timeout"`

	// ShutdownTimeout Максимальное время ожидания завершения работы веб сервера до начала принудительного обрыва
	// соединений и остановки процессов.
	// Если не указано или рано 0 - таймаута нет.
	// Default value: 30s
	ShutdownTimeout time.Duration `yaml:"ShutdownTimeout" json:"shutdown_timeout" default-value:"30s"`

	// MaxHeaderBytes Максимальный размер заголовка запроса.
	// Default value: 1 MB (from net/http/DefaultMaxHeaderBytes)
	MaxHeaderBytes int `yaml:"MaxHeaderBytes" json:"max_header_bytes" default-value:"1048576"`

	// TODO Сделать ограничение на максимальный размер тела запроса.
	// MaxBodyBytes Максимальный размер тела запроса.
	// Default value: 0 - unlimited
	MaxBodyBytes uint64 `yaml:"MaxBodyBytes" json:"max_body_bytes"`

	// KeepAliveDisable Отключение режима "оставаться в живых" (keep alive).
	// Default value: false - keep alive are enabled.
	KeepAliveDisable bool `yaml:"KeepAliveDisable" json:"keep_alive_disable"`

	// DisableGeneralOptionsHandler Отключение обработки HTTP запросов методом OPTION.
	// Если установлено значение "истина", на все запросы методом OPTION сервер отвечает кодом 200 и передаёт в
	// заголовке Content-Length значение 0.
	// Если установлено значение "ложь", запросы передаются контроллеру и обрабатываются обычным образом.
	// Default value: false - запросы передаются контроллеру.
	DisableGeneralOptionsHandler bool `yaml:"DisableGeneralOptionsHandler" json:"disable_general_options_handler"`

	// TODO Сделать загрузку данных по прокси протоколу.
	// ProxyProtocol Включение прокси протокола.
	// Прокси протокол позволяет веб-серверу получать информацию о подключении клиента, передаваемую через
	// прокси-серверы и средства балансировки нагрузки, такие как HAProxy, Amazon Elastic Load Balancer (ELB) и другие.
	// С помощью прокси протокола веб-сервер может узнать IP-адрес клиента для HTTP, SSL, HTTP/2, SPDY, WebSocket, TCP
	// запросов приходящих от прокси сервера.
	// Default value: false
	ProxyProtocol bool `yaml:"ProxyProtocol" json:"proxy_protocol"`
}

Configuration Структура конфигурации веб сервера.

type Error

type Error struct{}

Error object of package

func Errors

func Errors() *Error

Errors Справочник ошибок.

func (*Error) AlreadyRunning added in v3.0.5

func (e *Error) AlreadyRunning() error

AlreadyRunning Сервер уже запущен.

func (*Error) HandlerIsNotSet added in v3.0.5

func (e *Error) HandlerIsNotSet() error

HandlerIsNotSet Не установлен обработчик запросов ВЕБ сервера.

func (*Error) ListenSystemdFDS added in v3.0.5

func (e *Error) ListenSystemdFDS() error

ListenSystemdFDS Переменная окружения LISTEN_FDS пустая, либо содержит не верное значение.

func (*Error) ListenSystemdNotFound added in v3.0.5

func (e *Error) ListenSystemdNotFound() error

ListenSystemdNotFound Получение сокета systemd по имени, имя не найдено.

func (*Error) ListenSystemdPID added in v3.0.5

func (e *Error) ListenSystemdPID() error

ListenSystemdPID Переменная окружения LISTEN_PID пустая, либо содержит не верное значение.

func (*Error) ListenSystemdQuantityNotMatch added in v3.0.5

func (e *Error) ListenSystemdQuantityNotMatch() error

ListenSystemdQuantityNotMatch Полученное количество LISTEN_FDS не соответствует переданному LISTEN_FDNAMES.

func (*Error) NoConfiguration added in v3.0.5

func (e *Error) NoConfiguration() error

NoConfiguration Конфигурация сервера отсутствует либо равна nil.

func (*Error) ServerHandlerIsNotSet added in v3.0.5

func (e *Error) ServerHandlerIsNotSet() error

ServerHandlerIsNotSet Не установлен обработчик основной функции TCP сервера.

func (*Error) TLSIsNil added in v3.0.5

func (e *Error) TLSIsNil() error

TLSIsNil Конфигурация TLS сервера пустая.

type Interface

type Interface interface {
	// ID Уникальный идентификатор сервера.
	// Если идентификатор не был указан в конфигурации, создаётся при запуске.
	ID() string

	// Handler Назначение обработчика запросов ВЕБ сервера.
	// Обработчик необходимо назначить до запуска ВЕБ сервера.
	Handler(handler http.Handler) Interface

	// ListenAndServe Открытие адреса или сокета без использования конфигурации веб сервера (конфигурация по
	// умолчанию), запуск веб сервера для обслуживания входящих соединений.
	ListenAndServe(addr string) Interface

	// ListenAndServeTLS Открытие адреса или сокета с использованием TLS, без использования конфигурации веб сервера
	// (конфигурация по умолчанию), запуск веб сервера для обслуживания входящих соединений.
	ListenAndServeTLS(addr string, certFile string, keyFile string, tlsConfig *tls.Config) Interface

	// ListenAndServeWithConfig Настройка сервера с использованием переданной конфигурации, открытие адреса или сокета
	// на прослушивание, запуск веб сервера для обслуживания входящих соединений.
	ListenAndServeWithConfig(conf *Configuration) Interface

	// ListenAndServeTLSWithConfig Настройка сервера с использованием переданной конфигурации в режиме TLS, открытие
	// адреса или сокета на прослушивание, запуск веб сервера для обслуживания входящих соединений.
	ListenAndServeTLSWithConfig(conf *Configuration, tlsConfig *tls.Config) Interface

	// ListenersSystemdWithoutNames Возвращает срез net.Listener сокетов переданных в процесс веб сервера из systemd.
	ListenersSystemdWithoutNames() (ret []net.Listener, err error)

	// ListenersSystemdWithNames Возвращает карту срезов net.Listener сокетов переданных в процесс веб сервера
	// из systemd.
	ListenersSystemdWithNames() (ret map[string][]net.Listener, err error)

	// ListenersSystemdTLSWithoutNames Возвращает срез net.listener для TLS сокетов переданных в процесс веб сервера
	// из systemd.
	ListenersSystemdTLSWithoutNames(tlsConfig *tls.Config) (ret []net.Listener, err error)

	// ListenersSystemdTLSWithNames Возвращает карту срезов net.listener для TLS сокетов переданных в процесс веб сервера
	// из systemd.
	ListenersSystemdTLSWithNames(tlsConfig *tls.Config) (ret map[string][]net.Listener, err error)

	// NewListener Создание нового слушателя соединений net.Listener на основе конфигурации веб сервера.
	NewListener(conf *Configuration) (ret net.Listener, err error)

	// NewListenerTLS Создание нового слушателя соединений net.Listener в режиме TLS, на основе конфигурации
	// веб сервера.
	NewListenerTLS(conf *Configuration, tlsConfig *tls.Config) (ret net.Listener, err error)

	// Serve Запуск веб сервера для входящих соединений на основе переданного слушателя net.Listener.
	Serve(net.Listener) Interface

	// ServeWithId Запуск веб сервера для входящих соединений на основе переданного слушателя net.Listener с
	// указанием ID сервера.
	ServeWithId(ltn net.Listener, id string) Interface

	// ServeTLS Запуск веб сервера для входящих соединений на основе переданного слушателя net.Listener с
	// использованием TLS.
	ServeTLS(ltn net.Listener, tlsConfig *tls.Config) Interface

	// ServeTLSWithId Запуск веб сервера для входящих соединений на основе переданного слушателя net.Listener с
	// использованием TLS и указанием ID сервера.
	ServeTLSWithId(ltn net.Listener, tlsConfig *tls.Config, id string) Interface

	// Wait Блокируемая функция ожидания завершения веб сервера, если он запущен.
	// Если сервер не запущен, функция завершается немедленно.
	Wait() Interface

	// Stop Отправка сигнала прерывания работы веб сервера с учётом значения ShutdownTimeout.
	Stop() Interface

	// Clean Очистка последней ошибки.
	Clean() Interface

	// Errors Справочник ошибок.
	Errors() *Error

	// Error Функция возвращает последнюю ошибку веб сервера или библиотеки "github.com/webnice/net", на которой
	// основан ВЕБ сервер.
	Error() error
}

Interface Интерфейс пакета.

func New

func New() Interface

New Конструктор объекта сущности пакета, возвращается интерфейс пакета.

Jump to

Keyboard shortcuts

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