]> Sergey Matveev's repositories - tofuproxy.git/blobdiff - rounds/redirectHTML.go
Raise copyright years
[tofuproxy.git] / rounds / redirectHTML.go
index 2bf4ce2b25b7d2dca6ecc1409c557fd3756d5ac1..abc657e6546a8926d249f5eb0c418c50d32a7698 100644 (file)
@@ -1,6 +1,7 @@
 /*
-tofuproxy -- HTTP 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
@@ -43,8 +44,14 @@ var imageExts = map[string]struct{}{
        ".webp": {},
 }
 
-func isNewsboat(req *http.Request) bool {
-       return strings.Contains(req.Header.Get("User-Agent"), "newsboat/")
+func isFeeder(req *http.Request) bool {
+       if strings.Contains(req.Header.Get("User-Agent"), "newsboat/") {
+               return true
+       }
+       if strings.Contains(req.Header.Get("User-Agent"), "stargrave.org-feeder/") {
+               return true
+       }
+       return false
 }
 
 func RoundRedirectHTML(
@@ -61,7 +68,7 @@ func RoundRedirectHTML(
        case http.StatusMovedPermanently, http.StatusPermanentRedirect:
                redirType = "permanent"
        case http.StatusFound, http.StatusSeeOther, http.StatusTemporaryRedirect:
-               if isNewsboat(req) {
+               if isFeeder(req) {
                        return true, nil
                }
                if _, ok := imageExts[filepath.Ext(req.URL.Path)]; ok {
@@ -77,8 +84,9 @@ func RoundRedirectHTML(
        location := resp.Header.Get("Location")
        w.Write([]byte(
                fmt.Sprintf(
-                       `<html><head><title>%d %s: %s redirection</title></head>
-<body>Redirection to <a href="%s">%s</a></body></html>`,
+                       `<!DOCTYPE html>
+<html><head><title>%d %s: %s redirection</title></head>
+<body><a href="%s">%s</a></body></html>`,
                        resp.StatusCode, http.StatusText(resp.StatusCode),
                        redirType, location, location,
                )))