in certdataDiffCCADB/main.go [167:210]
func ListCertdata(w http.ResponseWriter, req *http.Request) {
defer func() {
if err := recover(); err != nil {
w.WriteHeader(http.StatusBadGateway)
w.Write([]byte(fmt.Sprintf("%v\n", err)))
}
}()
q := req.URL.Query()
url := certdataURL
if u, ok := q["url"]; ok && len(u) > 0 {
url = u[0]
}
log.Printf("ListCertdata, IP: %v, certdata.txt URL: %v\n", req.RemoteAddr, url)
stream, err := getFromURL(url)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(fmt.Sprintln(err.Error())))
log.Printf("ListCertdata, IP: %v, Error: %v\n", req.RemoteAddr, err)
return
}
defer stream.Close()
c, err := certdata.ParseToNormalizedForm(stream)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(fmt.Sprintln(err.Error())))
log.Printf("ListCertdata, IP: %v, Error: %v\n", req.RemoteAddr, err)
return
}
resp := make([]SimpleEntry, len(c))
for i, e := range c {
resp[i] = SimpleEntry{PEM: e.PEM,
Fingerprint: e.Fingerprint,
SerialNumber: e.SerialNumber,
Issuer: e.DistinguishedName(),
TrustWeb: e.TrustWeb,
TrustEmail: e.TrustEmail}
}
if err := json.NewEncoder(w).Encode(resp); err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(fmt.Sprintln(err.Error())))
log.Printf("ListCertdata, IP: %v, Error: %v\n", req.RemoteAddr, err)
return
}
}