Documentation
¶
Index ¶
- Variables
- type BasicAuthConfiguration
- type BasicAuthFunc
- type BasicAuthResponse
- type GrpcConfiguration
- type GrpcServerConfiguration
- type GrpcServers
- type RequestShadowInfo
- type Server
- type TServer
- type Web
- type WebConfiguration
- type WebController
- type WebEventFn
- type WebMatcherFn
- type WebMiddlewareFn
- type WebResource
- type WebServerControl
- type WebServers
Constants ¶
This section is empty.
Variables ¶
var ( TUnknown = TServer{/* contains filtered or unexported fields */} TUdp = TServer{/* contains filtered or unexported fields */} TTcp = TServer{/* contains filtered or unexported fields */} TWeb = TServer{/* contains filtered or unexported fields */} TGrpc = TServer{/* contains filtered or unexported fields */} )
Functions ¶
This section is empty.
Types ¶
type BasicAuthConfiguration ¶ added in v4.3.0
type BasicAuthConfiguration struct {
AuthFunc BasicAuthFunc // Функция выполняющая проверку простой web авторизации.
Request string // Строка запроса, отправляемая пользователю с просьбой выполнить авторизацию.
Header map[dic.IHeader]string // Заголовки, добавляемые в запрос аутентификации.
Body *bytes.Buffer // Тело страницы запроса аутентификации.
}
BasicAuthConfiguration Конфигурация промежуточного слоя выполняющего проверку авторизации. AuthFunc - Функция будет вызвана для проверки полученных данных авторизации. Request - Запрос, отправляемый пользователю с просьбой авторизоваться. Можно не указывать. Header - Заголовки, передаваемые с запросом с просьбой авторизоваться. Можно не указывать. Body - Тело страницы, передаваемое с запросом с просьбой авторизоваться. Можно не указывать.
type BasicAuthFunc ¶ added in v4.3.0
type BasicAuthFunc func(username string, password string) BasicAuthResponse
BasicAuthFunc Функция передаваемая в "промежуточный слой", выполняющая проверку переданных данных простой авторизации. Функция возвращает объект BasicAuthResponse. Если свойство объекта IsCorrect равно "ложь", тогда запрос прерывается, и в ответ на запрос передаются данные указанные в объекте BasicAuthResponse. Если в объекте BasicAuthResponse свойство Body равно nil, тогда телом ответа будет код статуса ответа.
type BasicAuthResponse ¶ added in v4.3.0
type BasicAuthResponse struct {
IsCorrect bool // Флаг подтверждения проверки доступа.
Code dic.IStatus // Интерфейс объекта кода HTTP ответа.
Header map[dic.IHeader]string // Заголовки добавляемые в ответ.
Body *bytes.Buffer // Тело ответа.
}
BasicAuthResponse Структура ответа на запрос с простой авторизацией.
type GrpcConfiguration ¶
type GrpcConfiguration struct {
// Server Конфигурация WEB сервера.
Server GrpcServerConfiguration `yaml:"Server"`
}
GrpcConfiguration Структура конфигурации GRPC сервера.
type GrpcServerConfiguration ¶
type GrpcServerConfiguration struct {
// TLSPublicKeyPEM Путь и имя файла содержащего публичный ключ (сертификат) в PEM формате, включая CA сертификаты
// всех промежуточных центров сертификации, если ими подписан ключ.
TLSPublicKeyPEM string `yaml:"TLSPublicKeyPEM" json:"tls_public_key_pem"`
// TLSPrivateKeyPEM Путь и имя файла содержащего приватный ключ в PEM формате.
TLSPrivateKeyPEM string `yaml:"TLSPrivateKeyPEM" json:"tls_private_key_pem"`
// 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: 80
Port uint16 `yaml:"Port" json:"port" default-value:"80"`
// Socket Unix socket на котором поднимается сервер, только для unix-like операционных систем Linux, Unix, Mac.
// Default value: "" - unix socket is off
Socket string `yaml:"Socket" json:"socket" default-value:"-"`
// Mode Режим работы, tcp, tcp4, tcp6, unix, unixpacket, socket, systemd.
// tcp - Сервер поднимается на указанном Host:Port.
// socket - Сервер поднимается на socket, только для unix-like операционных систем.
// systemd - Порт или сокет открывает systemd и передаёт слушателя порта через файловый дескриптор сервису
// запущенному от пользователя без права открытия привилегированных портов.
// Default value: "tcp"
Mode string `yaml:"Mode" json:"mode" default-value:"tcp"`
// WriteBufferSize Размер буфера записи, определяет максимальное количество данных для одного системного вызова.
// Памяти выделяется в 2 раза больше размера буфера записи.
// Если указано значение 0 - это отключит буфер записи.
// Default value: 32768 (32 килобайта).
WriteBufferSize int `yaml:"WriteBufferSize"`
// ReadBufferSize Размер буфера чтения, определяет максимальное читаемых количество данных для одного системного
// вызова.
// Если указано значение 0 - это отключит буфер чтения.
// Default value: 32768 (32 килобайта).
ReadBufferSize int `yaml:"ReadBufferSize"`
// InitialWindowSize Размер окна для потоковых данных.
// Минимальное значение 65536 байт или 64 килобайта, любое меньшее значение будет проигнорировано.
// Default value: 65536 (64 килобайта).
InitialWindowSize int32 `yaml:"InitialWindowSize"`
// InitialConnWindowSize Размер окна для данных запросов (подключения).
// Минимальное значение 65536 байт или 64 килобайта, любое меньшее значение будет проигнорировано.
// Default value: 65536 (64 килобайта).
InitialConnWindowSize int32 `yaml:"InitialConnWindowSize"`
// KeepaliveMaxConnectionIdle Максимальное время простоя не занятого соединения, по истечении которого
// соединение закрывается путём отправки сообщения об отказе.
// Продолжительность простоя соединения определяется с момента установки соединения либо с момента времени,
// когда количество не занятых соединений стало равным нулю.
// Default value: 0s - бесконечность.
KeepaliveMaxConnectionIdle time.Duration `yaml:"KeepaliveMaxConnectionIdle"`
// KeepaliveMaxConnectionAge Максимальное значение времени в течении которого соединени может оставаться открытым.
// Значение по умолчанию - бесконечность.
// Для значения боьше 0, добавляется случайное значение в размере +/- 10%.
// Default value: 0s - бесконечность.
KeepaliveMaxConnectionAge time.Duration `yaml:"KeepaliveMaxConnectionAge"`
// KeepaliveMaxConnectionAgeGrace Дополнительная отсрочка принудительного закрытия соединения после истечения
// значения определенного в MaxConnectionAge.
// Значение по умолчанию - бесконечность.
// Default value: 0s - бесконечность.
KeepaliveMaxConnectionAgeGrace time.Duration `yaml:"KeepaliveMaxConnectionAgeGrace"`
// KeepaliveTime Время, по истечении которого, если сервер не видит никакой активности, выполняется
// проверка соединения с клиентом.
// Минимальное значение 1 секунда, если указано значение меньше 1 секунды, используется 1 секунда.
// Значение по умолчанию - 2 часа.
// Default value: 2h
KeepaliveTime time.Duration `yaml:"KeepaliveTime"`
// KeepaliveTimeout Время ожидания ответа на сообщение пинга, по истечении которого, соединение закрывается.
// Значение по умолчанию 20 секунд.
// Default value: 20s
KeepaliveTimeout time.Duration `yaml:"KeepaliveTimeout"`
// KeepaliveMinTime Минимальное количество времени которое клиент должен подождать перед отправкой пинг запроса.
// Default value: 5m
KeepaliveMinTime time.Duration `yaml:"KeepaliveMinTime"`
// KeepalivePermitWithoutStream Разрешение поддержки пинг-запросов при отсутствии активных потоков.
// Если указано "ложь", при отсутствии активных потоков, на запрос пинг от клиента, сервер ответит
// сообщением GO AWAY и закроет соединение.
// Default value: false
KeepalivePermitWithoutStream bool `yaml:"KeepalivePermitWithoutStream"`
// MaxRecvMsgSize Максимальный размер сообщения в байтах, которое может принимать сервер.
// Если не указано, значение по умолчанию 4 мегабайта.
// Default value: 4194304 (4 мегабайта).
MaxRecvMsgSize int `yaml:"MaxRecvMsgSize"`
// MaxSendMsgSize Максимальный размер сообщения в байтах, которое может отправить сервер.
// Если не указано, значение по умолчанию равно максимальному числу int32 = 2147483647 или 2 гигабайта.
// Default value: 2147483647 (=math.MaxInt32)
MaxSendMsgSize int `yaml:"MaxSendMsgSize"`
// MaxConcurrentStreams Максимальное количество потоковых соединений, которое может принимать сервер.
// Default value: 0 - нет ограничений.
MaxConcurrentStreams uint32 `yaml:"MaxConcurrentStreams"`
// ConnectionTimeout Время ожидания установки соединения.
// Нулевое или отрицательное значение приведёт к немедленному завершению соединения, которое не
// успеет установиться и будет приводить к ошибке.
// Default value: 120s
ConnectionTimeout time.Duration `yaml:"ConnectionTimeout"`
// MaxHeaderListSize Максимальный, не сжатый, размер заголовков, принимаемый сервером.
// Default value: 0 - без ограничений.
MaxHeaderListSize uint32 `yaml:"MaxHeaderListSize"`
// HeaderTableSize Размер динамической таблицы заголовков для потоковой передачи данных.
// Default value: 0 - без ограничений.
HeaderTableSize uint32 `yaml:"HeaderTableSize"`
// NumStreamWorkers Количество потоков, которые держит сервер, для обработки входящих запросов.
// Значение равное нулю заставляет сервер запускать новый поток для каждого нового запроса.
// Default value: 0 - нет потоков, для каждого нового запроса создаётся новый поток.
NumStreamWorkers uint32 `yaml:"NumStreamWorkers"`
}
GrpcServerConfiguration Структура конфигурации веб сервера.
type GrpcServers ¶
type GrpcServers struct {
GrpcServers []GrpcConfiguration `yaml:"GRPCServers"`
}
GrpcServers Структура конфигурации группы GRPC серверов.
type RequestShadowInfo ¶ added in v4.1.1
type RequestShadowInfo struct {
Server *Server
ProjectID uint64 `header:"X-Project-Id"` // Уникальный идентификатор проекта.
Authorization string `header:"Authorization" cookie:"Access-Token" urn-param:"accessToken,accesstoken"` // Текущий сессионный токен доступа.
UserAgent string `header:"User-Agent"` // Заголовок, значение которого используется для описания устройства пользователя.
AcceptLanguage string `header:"Accept-Language"` // Предпочитаемые языки локализации.
AcceptEncoding string `header:"Accept-Encoding"` // Перечень поддерживаемых способов кодирования для ответа на запрос.
DeviceID string `header:"X-Device-Id" cookie:"AuthDeviceID"` // Содержит идентификатор ранее сохранённого устройства пользователя.
DeviceName string `header:"X-Device-Name"` // Название устройства или название приложения, для отображения в списке запомненных устройств.
IP net.IP `header:"X-Real-Ip,X-Client-Forwarded-For"` // IP адрес клиента.
Scheme string `header:"X-Client-Forwarded-Scheme"` // Протокол по которому подключается клиент, возможные значения: http, https.
Domain string `header:"X-Client-Forwarded-Domain,Host" call-func:"RequestExtractionDomain"` // Доменное имя сервера к которому пришел запрос.
Origin string `header:"Origin"` // Источник, схема, хост, порт запроса.
ContentType string `header:"Content-Type"` // Формат передаваемых данных.
Singleton bool ` urn-param:"singleton"` // Режим одиночки. Если указано true, при успешной аутентификации все другие действующие сессии пользователя будут удалены.
NoCookie bool ` urn-param:"noCookie"` // Не использовать Cookie.
LocationLatitude float64 `header:"X-Location-Latitude"` // Координаты широты местонахождения устройства.
LocationLongitude float64 `header:"X-Location-Longitude"` // Координаты долготы местонахождения устройства.
LocationAltitude float64 `header:"X-Location-Altitude"` // Высота местонахождения устройства над уровнем моря в метрах.
LocationSpeed float64 `header:"X-Location-Speed"` // Скорость передвижения устройства в метрах в секунду.
LocationAzimuth float64 `header:"X-Location-Azimuth"` // Азимут (направление движения) в градусах относительно истинного севера.
LocationAccuracyHorizontal float64 `header:"X-Location-Accuracy-Horizontal"` // Радиус неопределённости местоположения по горизонтали в метрах.
LocationAccuracyVertical float64 `header:"X-Location-Accuracy-Vertical"` // Радиус неопределённости местоположения по вертикали в метрах.
LocationAccuracySpeed float64 `header:"X-Location-Accuracy-Speed"` // Точность значения скорости, измеряемое в метрах в секунду.
LocationAccuracyAzimuth float64 `header:"X-Location-Accuracy-Azimuth"` // Точность измерения направления движения устройства в градусах.
LocationTimestamp uint64 `header:"X-Location-Timestamp"` // Дата и время полученное со спутников в момент определения координат.
}
RequestShadowInfo Информация извлекаемая из запроса.
func (*RequestShadowInfo) RequestExtractionDomain ¶ added in v4.1.1
func (rsi *RequestShadowInfo) RequestExtractionDomain(rq *http.Request) (ret string)
type Server ¶
type Server struct {
// T Тип сервера, web, grpc, tcp, udp.
T TServer
// Web Конфигурация ВЕБ сервера.
Web *WebConfiguration
// Grpc Конфигурация GRPC сервера.
Grpc *GrpcConfiguration
}
Server Структура с информацией о сервере.
type TServer ¶
type TServer struct {
// contains filtered or unexported fields
}
TServer Тип сервера.
func TServerParseString ¶
TServerParseString Преобразование строки в тип.
func TServerParseUint16 ¶
TServerParseUint16 Преобразование uint16 в тип.
type Web ¶
type Web struct {
// Middleware Промежуточный слой (middleware), подключаются к базовому пути, действуют для всех контроллеров
// подключаемых к тому же базовому пути.
// Если базовый путь указан пустым, тогда промежуточный слой относятся не к контроллеру, а к серверу целиком
// и подключаются до начала настройки роутинга.
// Может быть пустым срезом.
Middleware []WebMiddlewareFn
// Path Базовый путь URN, обрабатываемый ресурсом.
// Пример: /api/v1.0
// Для контроллеров не может быть пустым, URN должен начинаться со слэша.
// Если указан пустой путь, тогда контроллеры игнорируются, подключается только "промежуточный слой" к серверу
// целиком, до начала настройки роутинга.
Path string
// Controller Контроллеры ресурса.
// Может быть пустым срезом.
Controller []WebController
// Before Функция вызывается после готовности приложения к запуску, до начала настройки сервера и ресурсов сервера.
// Если функция возвращает ошибку, тогда настройка ресурса прерывается.
// Если функция не установлена, равна nil, функция не вызывается.
Before WebEventFn
}
Web Описание ресурса WEB сервера.
type WebConfiguration ¶
type WebConfiguration struct {
// Server Конфигурация WEB сервера.
Server web.Configuration `yaml:"Server"`
// DocumentRoot Корень http сервера.
// Используется в основном для не изменяемого статического контента.
DocumentRoot string `yaml:"DocumentRoot"`
// Pages Расположение специализированных html шаблонов для страниц сайта.
// Код результирующих страниц генерируется на стороне сервера с использованием шаблонизатора и
// специальных контроллеров.
Pages string `yaml:"Pages"`
}
WebConfiguration Структура конфигурации WEB сервера.
type WebController ¶
type WebController struct {
// Middleware Промежуточный слой (middleware), подключаемое к указанному пути URN.
// Может быть пустым срезом.
Middleware []WebMiddlewareFn
// Путь URN, обрабатываемый контроллером.
// Не может быть пустым, URN должен начинаться с '/'.
Path string
// Method Метод запроса.
// Если указан пустой срез - все методы запросов.
// Может быть пустым срезом.
Method []dic.IMethod
// Matcher Функция возвращает "истина" для запросов которые контроллер готов обработать.
// Используется в режиме мультиплексора, когда контроллер выбирается на основе заголовка или типа контента запроса,
// пример: создание сервера обрабатывающего и HTTP/REST FULL запросы и GRPC запросы.
// Если функция не установлена - равна nil, функция не вызывается.
Matcher WebMatcherFn
// Controller Контроллер, выполняющий обработку запросов к данному пути.
// Функция обязательно должна быть обязательно определена, не может равняться nil.
Controller http.HandlerFunc
}
WebController Описание контроллера.
type WebEventFn ¶
WebEventFn Функция события изменения состояния сервера.
type WebMatcherFn ¶
WebMatcherFn Функция определения готов ли контроллер обработать запрос. Используется в режиме мультиплексора, когда контроллер выбирается на основе заголовка или типа контента запроса, пример: создание сервера обрабатывающего и HTTP/REST FULL запросы и GRPC запросы. Возвращается "истина", если контроллер готов обработать запрос.
type WebMiddlewareFn ¶
WebMiddlewareFn Функция "промежуточного слоя" программного обеспечения ВЕБ сервера.
type WebResource ¶
type WebResource interface {
// Resource Описание ресурса. // Функция вызывается дважды.
// 1. Первый вызов передаёт конфигурацию веб сервера равную nil и служит для получения
// конфигурации ресурса для вызова функции Before().
// 2. Второй вызов передаёт конфигурацию веб сервера и выполняется в момент настройки роутинга.
Resource(*WebConfiguration) *Web
}
WebResource Интерфейс регистрации контроллера ресурса сервера.
type WebServerControl ¶
type WebServerControl struct {
Server web.Interface // Интерфейс управления ВЕБ сервером.
Configuration *Server // Ссылка на конфигурацию сервера.
}
WebServerControl Описание выполняющегося ВЕБ сервера, его конфигурация и интерфейс контроля.
type WebServers ¶
type WebServers struct {
WebServers []WebConfiguration `yaml:"WEBServers"`
}
WebServers Структура конфигурации группы веб серверов.