53 lines
1.2 KiB
Go
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
|
|
}
|