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 Структура конфигурации группы веб серверов.