mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 13:03:04 +00:00
52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
package installer
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/DeBrosOfficial/network/pkg/certutil"
|
|
)
|
|
|
|
// ensureCertificatesForDomain generates self-signed certificates for the domain
|
|
func ensureCertificatesForDomain(domain string) error {
|
|
// Get home directory
|
|
home, err := os.UserHomeDir()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to get home directory: %w", err)
|
|
}
|
|
|
|
// Create cert directory
|
|
certDir := filepath.Join(home, ".orama", "certs")
|
|
if err := os.MkdirAll(certDir, 0700); err != nil {
|
|
return fmt.Errorf("failed to create cert directory: %w", err)
|
|
}
|
|
|
|
// Create certificate manager
|
|
cm := certutil.NewCertificateManager(certDir)
|
|
|
|
// Ensure CA certificate exists
|
|
caCertPEM, caKeyPEM, err := cm.EnsureCACertificate()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to ensure CA certificate: %w", err)
|
|
}
|
|
|
|
// Ensure node certificate exists for the domain
|
|
_, _, err = cm.EnsureNodeCertificate(domain, caCertPEM, caKeyPEM)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to ensure node certificate: %w", err)
|
|
}
|
|
|
|
// Also create wildcard certificate if domain is not already wildcard
|
|
if !strings.HasPrefix(domain, "*.") {
|
|
wildcardDomain := "*." + domain
|
|
_, _, err = cm.EnsureNodeCertificate(wildcardDomain, caCertPEM, caKeyPEM)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to ensure wildcard certificate: %w", err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|