2020-04-30 23:41:57 +00:00
|
|
|
package server
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2022-03-30 07:45:11 +00:00
|
|
|
"fmt"
|
2020-04-30 23:41:57 +00:00
|
|
|
|
2022-03-30 07:45:11 +00:00
|
|
|
"github.com/qdm12/gluetun/internal/httpserver"
|
2020-11-04 14:07:04 +00:00
|
|
|
"github.com/qdm12/gluetun/internal/models"
|
2024-09-18 13:29:36 +02:00
|
|
|
"github.com/qdm12/gluetun/internal/server/middlewares/auth"
|
2020-04-30 23:41:57 +00:00
|
|
|
)
|
|
|
|
|
|
2021-09-23 16:58:21 +00:00
|
|
|
func New(ctx context.Context, address string, logEnabled bool, logger Logger,
|
2024-09-18 13:29:36 +02:00
|
|
|
authConfigPath string, buildInfo models.BuildInformation, openvpnLooper VPNLooper,
|
2024-08-21 14:35:41 +02:00
|
|
|
pfGetter PortForwardedGetter, dnsLooper DNSLoop,
|
2022-12-14 11:29:40 +00:00
|
|
|
updaterLooper UpdaterLooper, publicIPLooper PublicIPLoop, storage Storage,
|
|
|
|
|
ipv6Supported bool) (
|
2022-08-21 23:36:48 +00:00
|
|
|
server *httpserver.Server, err error) {
|
2024-09-18 13:29:36 +02:00
|
|
|
authSettings, err := auth.Read(authConfigPath)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("reading auth settings: %w", err)
|
|
|
|
|
}
|
|
|
|
|
authSettings.SetDefaults()
|
|
|
|
|
err = authSettings.Validate()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("validating auth settings: %w", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
handler, err := newHandler(ctx, logger, logEnabled, authSettings, buildInfo,
|
2024-08-21 14:35:41 +02:00
|
|
|
openvpnLooper, pfGetter, dnsLooper, updaterLooper, publicIPLooper,
|
2022-12-14 11:29:40 +00:00
|
|
|
storage, ipv6Supported)
|
2024-09-18 13:29:36 +02:00
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf("creating handler: %w", err)
|
|
|
|
|
}
|
2022-03-30 07:45:11 +00:00
|
|
|
|
|
|
|
|
httpServerSettings := httpserver.Settings{
|
|
|
|
|
Address: address,
|
|
|
|
|
Handler: handler,
|
|
|
|
|
Logger: logger,
|
2020-04-30 23:41:57 +00:00
|
|
|
}
|
|
|
|
|
|
2022-03-30 07:45:11 +00:00
|
|
|
server, err = httpserver.New(httpServerSettings)
|
|
|
|
|
if err != nil {
|
2023-04-01 16:53:04 +00:00
|
|
|
return nil, fmt.Errorf("creating server: %w", err)
|
2020-05-02 17:08:15 +00:00
|
|
|
}
|
2022-03-30 07:45:11 +00:00
|
|
|
|
|
|
|
|
return server, nil
|
2020-05-02 17:08:15 +00:00
|
|
|
}
|