-/*
-tofuproxy -- flexible HTTP/HTTPS proxy, TLS terminator, X.509 TOFU
- manager, WARC/geminispace browser
-Copyright (C) 2021-2022 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
-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 <http://www.gnu.org/licenses/>.
-*/
+// tofuproxy -- flexible HTTP/HTTPS proxy, TLS terminator, X.509 TOFU
+// manager, WARC/geminispace browser
+// Copyright (C) 2021-2024 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
+// 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 <http://www.gnu.org/licenses/>.
package tofuproxy
fifos.LogReq <- fmt.Sprintf("%s %s", req.Method, req.URL)
host := strings.TrimSuffix(req.URL.Host, ":443")
for _, round := range []Round{
- rounds.RoundNoHead,
rounds.RoundGemini,
rounds.RoundWARC,
rounds.RoundDenySpy,
fifos.LogVarious <- fmt.Sprintf(
"%s %s\tHTTP authorization required", req.Method, req.URL.Host,
)
- user, pass, err := authDialog(host, resp.Header.Get("WWW-Authenticate"))
+ var user, pass string
+ user, pass, err = authDialog(host, resp.Header.Get("WWW-Authenticate"))
if err != nil {
caches.HTTPAuthCacheM.Unlock()
fifos.LogErr <- fmt.Sprintf("%s\t%s", req.URL.Host, err.Error())
}
}
- for _, round := range []Round{
- rounds.RoundDenyFonts,
- rounds.RoundTranscodeWebP,
- rounds.RoundTranscodeJXL,
- rounds.RoundTranscodeAVIF,
- rounds.RoundRedirectHTML,
- } {
- cont, err := round(host, resp, w, req)
- if err != nil {
- http.Error(w, err.Error(), http.StatusBadGateway)
- return
- }
- if !cont {
- return
+ {
+ var cont bool
+ for _, round := range []Round{
+ rounds.RoundDenyFonts,
+ rounds.RoundTranscodeWebP,
+ rounds.RoundTranscodeJXL,
+ rounds.RoundTranscodeAVIF,
+ rounds.RoundRedirectHTML,
+ } {
+ cont, err = round(host, resp, w, req)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusBadGateway)
+ return
+ }
+ if !cont {
+ return
+ }
}
}