Files
gluetun/internal/server/server.go

37 lines
1.1 KiB
Go
Raw Normal View History

2021-02-06 16:26:23 +00:00
// Package server defines an interface to run the HTTP control server.
package server
import (
"context"
"fmt"
2020-09-12 19:17:19 +00:00
"github.com/qdm12/gluetun/internal/dns"
"github.com/qdm12/gluetun/internal/httpserver"
2020-11-04 14:07:04 +00:00
"github.com/qdm12/gluetun/internal/models"
"github.com/qdm12/gluetun/internal/portforward"
"github.com/qdm12/gluetun/internal/publicip"
2020-09-12 19:17:19 +00:00
"github.com/qdm12/gluetun/internal/updater"
"github.com/qdm12/gluetun/internal/vpn"
)
func New(ctx context.Context, address string, logEnabled bool, logger Logger,
buildInfo models.BuildInformation, openvpnLooper vpn.Looper,
pfGetter portforward.Getter, unboundLooper dns.Looper,
updaterLooper updater.Looper, publicIPLooper publicip.Looper) (server httpserver.Runner, err error) {
handler := newHandler(ctx, logger, logEnabled, buildInfo,
openvpnLooper, pfGetter, unboundLooper, updaterLooper, publicIPLooper)
httpServerSettings := httpserver.Settings{
Address: address,
Handler: handler,
Logger: logger,
}
server, err = httpserver.New(httpServerSettings)
if err != nil {
return nil, fmt.Errorf("cannot create server: %w", err)
}
return server, nil
}