Files

53 lines
1.2 KiB
Go

package main
import (
"crypto/tls"
"fmt"
"log"
"os"
"path/filepath"
"linkport/internal/gateway"
"linkport/internal/store"
)
func gatewayTLS(s *store.Store, path string) (*tls.Config, error) {
var tlsConfig *tls.Config
cert, key := os.Getenv("LINKPORT_TLS_CERT"), os.Getenv("LINKPORT_TLS_KEY")
if cert == "" && key == "" {
pair, err := s.LocalTLS(filepath.Dir(path))
if err != nil {
return nil, err
}
tlsConfig = &tls.Config{Certificates: []tls.Certificate{pair}, MinVersion: tls.VersionTLS12}
}
if cert != "" || key != "" {
pair, e := tls.LoadX509KeyPair(cert, key)
if e != nil {
return nil, fmt.Errorf("load gateway TLS certificate: %w", e)
}
tlsConfig = &tls.Config{Certificates: []tls.Certificate{pair}, MinVersion: tls.VersionTLS12}
}
return tlsConfig, nil
}
func restoreGateways(s *store.Store, m *gateway.Manager) error {
if err := m.ResumeHealthChecks(); err != nil {
return fmt.Errorf("restore health settings: %w", err)
}
ps, err := s.List()
if err != nil {
return fmt.Errorf("cannot load configurations; verify master key: %w", err)
}
for _, p := range ps {
if p.Enabled {
if e := m.Start(p); e != nil {
log.Printf("proxy %s restore failed: %v", p.ID, e)
}
}
}
return nil
}