🔒 Added TLS support

This commit is contained in:
Maxim Lebedev 2024-02-14 11:47:22 +06:00
parent 83eb067ddb
commit 39187f0074
Signed by: toby3d
GPG Key ID: 1F14E25B7C119FC5
3 changed files with 21 additions and 7 deletions

View File

@ -198,12 +198,8 @@ func NewApp(logger *log.Logger, config *domain.Config) (*App, error) {
})
chain := middleware.Chain{
middleware.LogFmt(),
middleware.Redirect(middleware.RedirectConfig{
Serverer: serverer,
}),
middleware.Header(middleware.HeaderConfig{
Serverer: serverer,
}),
middleware.Redirect(middleware.RedirectConfig{Serverer: serverer}),
middleware.Header(middleware.HeaderConfig{Serverer: serverer}),
}
return &App{server: &http.Server{

View File

@ -13,6 +13,8 @@ type Config struct {
Host string `env:"HOST" envDefault:"0.0.0.0"`
ThemeDir string `env:"THEME_DIR" envDefault:"theme"`
StaticDir string `env:"STATIC_DIR" envDefault:"static"`
CertKey string `env:"CERT_KEY"`
CertFile string `env:"CERT_FILE"`
Port uint16 `env:"PORT" envDefault:"3000"`
}

18
main.go
View File

@ -6,9 +6,11 @@ package main
import (
"context"
"crypto/tls"
"errors"
"flag"
"log"
"net"
"os"
"os/signal"
"path/filepath"
@ -40,6 +42,20 @@ func main() {
logger.Fatalln("cannot unmarshal configuration into domain:", err)
}
ln, err := net.Listen("tcp", config.AddrPort().String())
if err != nil {
logger.Fatalln("cannot listen requested address:", err)
}
if config.CertFile != "" && config.CertKey != "" {
cert, err := tls.LoadX509KeyPair(config.CertFile, config.CertKey)
if err != nil {
logger.Fatalln("cannot load certificate files from config:", err)
}
ln = tls.NewListener(ln, &tls.Config{Certificates: []tls.Certificate{cert}})
}
for _, dir := range []*string{
&config.ContentDir,
&config.ThemeDir,
@ -90,7 +106,7 @@ func main() {
go func() {
logger.Printf("starting server on %d...", config.Port)
if err = app.Run(nil); err != nil {
if err = app.Run(ln); err != nil {
logger.Fatalln("cannot run app:", err)
}
}()