/* godlighty -- highly-customizable HTTP, HTTP/2, HTTPS server Copyright (C) 2021-2023 Sergey Matveev 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 the Free Software Foundation, version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package rc import ( "fmt" "net/http" "net/http/cgi" "go.stargrave.org/godlighty" ) func RunCGIAndLog(host string, w http.ResponseWriter, r *http.Request, h *cgi.Handler) { if r.TLS != nil && len(r.TLS.PeerCertificates) > 0 { h.Env = append(h.Env, "TLSREMOTEDN="+r.TLS.PeerCertificates[0].Subject.String()) } wc := &godlighty.CountResponseWriter{ResponseWriter: w} h.ServeHTTP(wc, r) fmt.Printf("%s %s \"%s %+q %s\" %d %d \"%s\"\n", r.RemoteAddr, host, r.Method, godlighty.PathWithQuery(r.URL), r.Proto, wc.Status, wc.Size, r.Header.Get("User-Agent"), ) }