Documentation
¶
Index ¶
- type Configuration
- type Error
- func (e *Error) AlreadyRunning() error
- func (e *Error) ListenSystemdFDS() error
- func (e *Error) ListenSystemdNotFound() error
- func (e *Error) ListenSystemdPID() error
- func (e *Error) ListenSystemdQuantityNotMatch() error
- func (e *Error) NoConfiguration() error
- func (e *Error) ServerHandlerIsNotSet() error
- func (e *Error) ServerHandlerUdpIsNotSet() error
- func (e *Error) TLSIsNil() error
- type HandlerFn
- type HandlerUdpFn
- type Interface
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Configuration ¶
type Configuration struct {
// ID Уникальный идентификатор сервера, может быть любым уникальным, в пределах приложения, строковым значением.
// Если значение не указано, при запуске сервера, создаётся уникальное временное значение, меняющееся
// при каждом запуске.
// Default value: ""
ID string `yaml:"ID" json:"id"`
// Address Публичный адрес на котором сервер доступен извне.
// Например, если сервер находится за прокси, тут указывается реальный адрес подключения к серверу.
// Default value: "" - make automatically
Address string `yaml:"Address" json:"address"`
// Host IP адрес или имя хоста на котором поднимается сервер, можно указывать 0.0.0.0 для всех ip адресов.
// Default value: "0.0.0.0"
Host string `yaml:"Host" json:"host" default-value:"0.0.0.0"`
// Port TCP/IP порт занимаемый сервером.
// Default value: 0
Port uint16 `yaml:"Port" json:"port" default-value:"-"`
// Socket Unix socket, systemd socket на котором поднимается сервер, только для unix-like операционных
// систем Linux, Unix, Mac.
// Default value: ""
Socket string `yaml:"Socket" json:"socket" default-value:"-"`
// SocketMode Файловые разрешения доступа к юникс-сокету.
// Значение задаётся в восьмеричной системе счисления и не должно превышать 32 бита.
// Default value: "0666"
SocketMode string `yaml:"SocketMode" json:"socket_mode" default-value:"0666"`
// Mode Режим открытия сокета, возможные значения: tcp, tcp4, tcp6, unix, unixpacket, socket, systemd.
// udp, udp4, udp6 - Сервер поднимается на указанном Host:Port;
// tcp, tcp4, tcp6 - Сервер поднимается на указанном Host:Port;
// unix, unixpacket - Сервер поднимается на указанном unix/unixpacket;
// socket - Сервер поднимается на socket, только для unix-like операционных систем. Параметры Host:Port
// игнорируются, используется только путь к сокету;
// systemd - Порт или сокет открывает systemd и передаёт слушателя порта через файловый дескриптор сервису,
// запущенному от пользователя без права открытия привилегированных портов. Максимально удобный
// способ при использовании правильного безопасно настроенного linux сервера.
// Более подробно можно посмотреть в документации man systemd.socket(5);
// Default value: "tcp"
Mode string `yaml:"Mode" json:"mode" default-value:"tcp"`
// TLSPublicKeyPEM Путь и имя файла содержащего публичный ключ (сертификат) в PEM формате, включая CA
// сертификаты всех промежуточных центров сертификации, если ими подписан ключ.
// Применяется только для TCP соединений, для UDP не используется.
// Default value: ""
TLSPublicKeyPEM string `yaml:"TLSPublicKeyPEM" json:"tls_public_key_pem"`
// TLSPrivateKeyPEM Путь и имя файла содержащего секретный/приватный ключ в PEM формате.
// Применяется только для TCP соединений, для UDP не используется.
// Default value: ""
TLSPrivateKeyPEM string `yaml:"TLSPrivateKeyPEM" json:"tls_private_key_pem"`
// ProxyProtocol Включение прокси-протокола.
// Прокси-протокол позволяет серверу получать информацию о подключении клиента, передаваемую через
// прокси-серверы и средства балансировки нагрузки, такие как Nginx, HAProxy, Amazon Elastic Load
// Balancer (ELB) и многие другие.
// Поддерживаются запросы с реализацией прокси протокола версий 1 и 2.
// PROXY protocol: https://www.haproxy.org/download/2.3/doc/proxy-protocol.txt.
// Default value: false
ProxyProtocol bool `yaml:"ProxyProtocol" json:"proxy_protocol"`
// ProxyProtocolReadHeaderTimeout Максимальное время ожидания получения данных о клиенте через прокси-протокол.
// Время ожидание используется только при включённом прокси-протоколе.
// Default value: 0s - no timeout
ProxyProtocolReadHeaderTimeout time.Duration `yaml:"ProxyProtocolReadHeaderTimeout" json:"proxy_protocol_read_header_timeout"`
}
Configuration Структура конфигурации TCP/IP или UDP сервера.
func (*Configuration) HostPort ¶
func (uco *Configuration) HostPort() (ret string)
HostPort Формирование строки HOST:PORT.
type Error ¶
type Error struct{}
Error object of package
func (*Error) AlreadyRunning ¶ added in v1.1.0
AlreadyRunning Сервер уже запущен.
func (*Error) ListenSystemdFDS ¶ added in v1.1.0
ListenSystemdFDS Переменная окружения LISTEN_FDS пустая, либо содержит не верное значение.
func (*Error) ListenSystemdNotFound ¶ added in v1.1.0
ListenSystemdNotFound Получение сокета systemd по имени, имя не найдено.
func (*Error) ListenSystemdPID ¶ added in v1.1.0
ListenSystemdPID Переменная окружения LISTEN_PID пустая, либо содержит не верное значение.
func (*Error) ListenSystemdQuantityNotMatch ¶ added in v1.1.0
ListenSystemdQuantityNotMatch Полученное количество LISTEN_FDS не соответствует переданному LISTEN_FDNAMES.
func (*Error) NoConfiguration ¶ added in v1.1.0
NoConfiguration Конфигурация сервера отсутствует либо равна nil.
func (*Error) ServerHandlerIsNotSet ¶ added in v1.1.0
ServerHandlerIsNotSet Не установлен обработчик основной функции TCP сервера.
func (*Error) ServerHandlerUdpIsNotSet ¶ added in v1.1.0
ServerHandlerUdpIsNotSet Не установлен обработчик основной функции UDP сервера.
type HandlerUdpFn ¶
type HandlerUdpFn func(net.PacketConn) error
HandlerUdpFn Описание типа функции UDP или сервера пакетов.
type Interface ¶
type Interface interface {
// ID Уникальный идентификатор сервера.
// Если идентификатор не был указан в конфигурации, создаётся при запуске.
ID() string
// Handler Назначение основной функции TCP или сокет сервера. Функция должна назначаться до запуска сервера.
Handler(fn HandlerFn) Interface
// HandlerUdp Назначение основной функции UDP сервера. Функция должна назначаться до запуска сервера.
HandlerUdp(fn HandlerUdpFn) 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 сокетов переданных в процесс сервера
// из службы linux - systemd.
ListenersSystemdWithoutNames() (ret []net.Listener, err error)
// ListenersSystemdWithNames Возвращает карту срезов net.Listener сокетов переданных в процесс сервера
// из службы linux - systemd.
ListenersSystemdWithNames() (ret map[string][]net.Listener, err error)
// ListenersSystemdTLSWithoutNames Возвращает срез net.nnlistener для TLS сокетов переданных в процесс сервера
// из службы linux - systemd.
ListenersSystemdTLSWithoutNames(tlsConfig *tls.Config) (ret []net.Listener, err error)
// ListenersSystemdTLSWithNames Возвращает карту срезов net.listener для TLS сокетов переданных в процесс сервера
// из службы linux - systemd.
ListenersSystemdTLSWithNames(tlsConfig *tls.Config) (ret map[string][]net.Listener, err error)
// NewListener Создание нового слушателя соединений net.Listener на основе конфигурации сервера.
NewListener(conf *Configuration) (ret net.Listener, rpc net.PacketConn, err error)
// NewListenerTLS Создание нового слушателя соединений net.Listener в режиме TLS, на основе конфигурации
// сервера.
NewListenerTLS(conf *Configuration, tlsConfig *tls.Config) (ret net.Listener, rpc net.PacketConn, err error)
// NewTLSConfigDefault Создание TLS конфигурации по умолчанию, на основе секретного и публичного ключей.
NewTLSConfigDefault(tlsPublicFile string, tlsPrivateFile string) (ret *tls.Config, err error)
// Serve Запуск функции сервера для входящих соединений на основе переданного слушателя net.Listener.
Serve(net.Listener) Interface
// ServeWithId Запуск функции сервера для входящих соединений на основе переданного слушателя net.Listener с
// указанием ID сервера.
ServeWithId(ltn net.Listener, id string) Interface
// ServeUdp Запуск функции сервера для входящих UDP пакетов на основе переданного слушателя net.PacketConn.
ServeUdp(lpc net.PacketConn) Interface
// ServeUdpWithId Запуск функции сервера для входящих UDP пакетов на основе переданного слушателя net.PacketConn с
// указанием ID сервера.
ServeUdpWithId(lpc net.PacketConn, id string) Interface
// Wait Блокируемая функция ожидания завершения веб сервера, если он запущен.
// Если сервер не запущен, функция завершается немедленно.
Wait() Interface
// Stop Завершение работы сервера/функции сервера.
Stop() Interface
// IsRunning Статус выполнения сервера.
// Вернётся истина, если сервер запущен.
IsRunning() (ret bool)
// Clean Очистка последней ошибки.
Clean() Interface
// Errors Справочник ошибок.
Errors() *Error
// Error Последняя ошибка сервера.
Error() error
}
Interface Интерфейс пакета.
