summaryrefslogtreecommitdiff
path: root/cmd/aigw
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cmd/aigw/main.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/cmd/aigw/main.go b/cmd/aigw/main.go
index 44a22d0..c7d9ed3 100644
--- a/cmd/aigw/main.go
+++ b/cmd/aigw/main.go
@@ -20,9 +20,12 @@ import (
"aigw/internal/controlplane"
"aigw/internal/httpapi"
"aigw/internal/limits"
+ "aigw/internal/mailer"
"aigw/internal/provider"
"aigw/internal/routing"
"aigw/internal/telemetry"
+
+ "github.com/go-webauthn/webauthn/webauthn"
)
func main() {
@@ -60,6 +63,7 @@ func run(ctx context.Context, cfg config.Config, logger *slog.Logger) error {
var managerCancel context.CancelFunc
var managerDone chan struct{}
var requestLimiter *limits.Limiter
+ var webAuthn *webauthn.WebAuthn
if cfg.ControlPlane.Enabled {
var err error
store, err = controlplane.NewStore(ctx, controlplane.Options{
@@ -108,6 +112,33 @@ func run(ctx context.Context, cfg config.Config, logger *slog.Logger) error {
}
modelCatalog = catalog.New(cfg)
}
+ if cfg.Admin.Enabled && cfg.Admin.WebAuthn.Enabled {
+ configured, err := webauthn.New(&webauthn.Config{
+ RPDisplayName: cfg.Admin.WebAuthn.RPDisplayName,
+ RPID: cfg.Admin.WebAuthn.RPID,
+ RPOrigins: cfg.Admin.WebAuthn.Origins,
+ EncodeUserIDAsString: true,
+ Timeouts: webauthn.TimeoutsConfig{
+ Login: webauthn.TimeoutConfig{Enforce: true},
+ Registration: webauthn.TimeoutConfig{Enforce: true},
+ },
+ })
+ if err != nil {
+ return fmt.Errorf("configure WebAuthn: %w", err)
+ }
+ webAuthn = configured
+ }
+ if cfg.Admin.Enabled && cfg.Admin.Mail.Enabled {
+ sender, err := mailer.NewSender(mailer.SMTPConfig{
+ Address: cfg.Admin.Mail.SMTPAddress, Username: cfg.Admin.Mail.SMTPUsername,
+ Password: cfg.Admin.Mail.SMTPPassword, FromName: cfg.Admin.Mail.FromName,
+ FromAddress: cfg.Admin.Mail.FromAddress, TLSMode: cfg.Admin.Mail.TLSMode,
+ })
+ if err != nil {
+ return fmt.Errorf("configure SMTP: %w", err)
+ }
+ go mailer.NewWorker(store, sender, logger).Run(ctx)
+ }
var billingService *billing.Service
if cfg.Billing.Enabled {
@@ -151,6 +182,7 @@ func run(ctx context.Context, cfg config.Config, logger *slog.Logger) error {
Store: store, Manager: manager, Billing: billingService, Token: cfg.Admin.Token,
Logger: logger, Prefix: cfg.Admin.BasePath, RegistrationEnabled: cfg.Admin.RegistrationEnabled,
SessionTTL: time.Duration(cfg.Admin.SessionTTLHours) * time.Hour, Currency: cfg.Billing.Currency,
+ PublicURL: cfg.Admin.PublicURL, WebAuthn: webAuthn, MailEnabled: cfg.Admin.Mail.Enabled,
}).Handler()
root.Handle(cfg.Admin.BasePath, adminHandler)
root.Handle(cfg.Admin.BasePath+"/", adminHandler)