package
1.0.0
Repository: https://github.com/leprosus/golang-mtls.git
Documentation: pkg.go.dev

# README

Native HTTP middleware

Пакет предоставляет промежуточный слой для стандартного HTTP пакета, который обеспечивает шифрование/дешифрование тела HTTP запроса/ответ налету.

Функции пакета, структуры и их методы

Функции пакета

NewMTLS(mux http.Handler, log *slog.Logger, mtls *mtls.MTLS) (middleware *MTLS)

Функция создаёт новый HTTP промежуточный слой.

Структуры и их методы

type MTLS struct {
    mux  http.Handler
    log  *slog.Logger
    mtls *mtls.MTLS
    
    config
}

Структура содержит мультиплексор HTTP запросов, лог, MTLS и конфигурация этого промежуточного слоя.

func (m *MTLS) SetBodySizeLimit(size uint64)

Метод устанавливает ограничение размера шифрованного запроса, полученного в запросе.

func (m *MTLS) ServeHTTP(res http.ResponseWriter, req *http.Request)

Метод реализует интерфейс http.Handler, выполняя основную логику дешифрования входящего запроса и шифрования исходящего.

Пример использования

func main() {
    addr := os.Getenv("ADDR")
    
    mux := http.NewServeMux()
    mux.HandleFunc("/v1/hello", HelloHandler)
    mux.HandleFunc("/v1/time", CurrentTimeHandler)
    
    mtlsMiddleware := NewMTLS(mux, log, mtls)
    
    log.Printf("server is listening at %s", addr)
    
    log.Fatal(http.ListenAndServe(addr, mtlsMiddleware))
}