Могу ли я иметь динамическую политику хоста с autocert? - PullRequest
0 голосов
/ 01 сентября 2018

Я ищу пример кода для использования autocert с веб-сервером go.

Будет ли возможно для реализации hostPolicy динамически, т.е. считывать перечисленные хосты из базы данных (поскольку они будут постоянно меняться).

m := autocert.Manager{
        Cache:      certcache,
        Prompt:     autocert.AcceptTOS,
        HostPolicy: hostPolicy,
    }

Как будет выглядеть каркасная структура для пользовательской реализации hostPolicy?

https://github.com/golang/crypto/blob/master/acme/autocert/autocert.go#L60

Должен ли вернуть функцию?

1 Ответ

0 голосов
/ 01 сентября 2018

Должен ли он возвращать функцию?

да, это часть подписи autocert.Manager struct.

Поле Manager.HostPolicy имеет тип autocert.HostPolicy , которое действительно является функцией типа func(ctx context.Context, host string) error.

Как будет выглядеть каркасная структура для пользовательской реализации hostPolicy?

Вы просто устанавливаете пользовательскую функцию для поля HostPolicy, чтобы реализовать логику для запроса к базе данных.

m := autocert.Manager{
    // ... more fields here
    HostPolicy: func(ctx context.Context, host string) error{
        // implement database calls here
        return nil 
    },
}

Согласно документу, вы должны вернуть ошибку, чтобы отклонить хост.

...