package certapi import ( "encoding/json" "net/http" config "github.com/yusing/go-proxy/internal/config/types" ) type CertInfo struct { Subject string `json:"subject"` Issuer string `json:"issuer"` NotBefore int64 `json:"not_before"` NotAfter int64 `json:"not_after"` DNSNames []string `json:"dns_names"` EmailAddresses []string `json:"email_addresses"` } func GetCertInfo(w http.ResponseWriter, r *http.Request) { autocert := config.GetInstance().AutoCertProvider() if autocert == nil { http.Error(w, "autocert is not enabled", http.StatusNotFound) return } cert, err := autocert.GetCert(nil) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } certInfo := CertInfo{ Subject: cert.Leaf.Subject.CommonName, Issuer: cert.Leaf.Issuer.CommonName, NotBefore: cert.Leaf.NotBefore.Unix(), NotAfter: cert.Leaf.NotAfter.Unix(), DNSNames: cert.Leaf.DNSNames, EmailAddresses: cert.Leaf.EmailAddresses, } json.NewEncoder(w).Encode(&certInfo) }