package cert

import (
	"crypto/x509"
	"encoding/pem"
	"os"
	"path/filepath"
	"strings"
	"time"

	log "github.com/sirupsen/logrus"
)

func parseCertificate(file string) {
	// 读取文件内容
	fileData, err := os.ReadFile(file)
	if err != nil {
		log.Errorf("Error reading file %s: %s\n", file, err)
		return
	}

	// 解析 PEM 块
	block, _ := pem.Decode(fileData)
	if block == nil {
		log.Errorf("No PEM block found in file %s\n", file)
		return
	}

	// 判断文件类型
	fileType := strings.ToLower(filepath.Ext(file))
	switch fileType {
	case ".crt", ".pem":
		// 解析证书
		cert, err := x509.ParseCertificate(block.Bytes)
		if err != nil {
			log.Errorf("Error parsing certificate from file %s: %s\n", file, err)
			return
		}

		// 输出证书有效期等信息
		log.Infof("Certificate in file %s:", file)
		log.Infof("  Subject: %s", cert.Subject.CommonName)
		log.Infof("  Valid from: %s", cert.NotBefore)
		log.Infof("  Valid until: %s", cert.NotAfter)

		// 计算证书有效期结束时间与当前时间之间的天数差
		now := time.Now()
		expiresInDays := int((time.Duration(cert.NotAfter.Sub(now).Hours()) / 24))
		log.Infof("证书%s 将于 %d 天后过期", cert.Subject.CommonName, expiresInDays)
		log.Infof("---------------------------")
	default:
		log.Infof("Unsupported file type: %s %s", fileType, file)
	}
}