nginx-ui/internal/system/ssl.go
2025-03-31 02:34:39 +00:00

47 lines
1.2 KiB
Go

package system
import (
"os"
"github.com/0xJacky/Nginx-UI/internal/helper"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/uozi-tech/cosy"
)
// ValidateSSLCertificates checks if SSL certificate and key files exist and are under Nginx config directory
// Returns nil if valid, or a CosyError if invalid
func ValidateSSLCertificates(sslCert, sslKey string) error {
// Check if both paths are provided
if sslCert == "" {
return ErrSSLCertRequired
}
if sslKey == "" {
return ErrSSLKeyRequired
}
// Get Nginx configuration directory
nginxConfPath := nginx.GetConfPath()
// Check if certificate file exists and is under Nginx config directory
if !helper.IsUnderDirectory(sslCert, nginxConfPath) {
return cosy.WrapErrorWithParams(ErrSSLCertNotUnderConf, nginxConfPath)
}
// Check if certificate file exists
if _, err := os.Stat(sslCert); os.IsNotExist(err) {
return ErrSSLCertNotFound
}
// Check if key file is under Nginx config directory
if !helper.IsUnderDirectory(sslKey, nginxConfPath) {
return cosy.WrapErrorWithParams(ErrSSLKeyNotUnderConf, nginxConfPath)
}
// Check if key file exists
if _, err := os.Stat(sslKey); os.IsNotExist(err) {
return ErrSSLKeyNotFound
}
return nil
}