/*
-tofuproxy -- flexible HTTP/WARC proxy with TLS certificates management
-Copyright (C) 2021 Sergey Matveev <stargrave@stargrave.org>
+tofuproxy -- flexible HTTP/HTTPS proxy, TLS terminator, X.509 TOFU
+ manager, WARC/geminispace browser
+Copyright (C) 2021-2023 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
}
l.RLock()
for host, hsh := range m {
- if _, err = fd.WriteString(fmt.Sprintf("%s\t%s\n", host, hsh)); err != nil {
+ if _, err = fmt.Fprintf(fd, "%s\t%s\n", host, hsh); err != nil {
break
}
}
}
caches.HTTPAuthCacheM.RLock()
for host, creds := range caches.HTTPAuthCache {
- if _, err = fd.WriteString(fmt.Sprintf("%s\t%s\n", host, creds[0])); err != nil {
+ if _, err = fmt.Fprintf(fd, "%s\t%s\n", host, creds[0]); err != nil {
break
}
}
}
caches.TLSAuthCacheM.RLock()
for host, tlsCert := range caches.TLSAuthCache {
- cert, err := x509.ParseCertificate(tlsCert.Certificate[0])
- if err != nil {
- log.Fatalln(err)
+ subj := "NONE"
+ if len(tlsCert.Certificate) != 0 {
+ cert, err := x509.ParseCertificate(tlsCert.Certificate[0])
+ if err != nil {
+ log.Fatalln(err)
+ }
+ subj = cert.Subject.String()
}
- if _, err = fd.WriteString(fmt.Sprintf("%s\t%s\n", host, cert.Subject)); err != nil {
+ if _, err = fmt.Fprintf(fd, "%s\t%s\n", host, subj); err != nil {
break
}
}