aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Piper McCorkle <contact@piperswe.me> 2024-08-11 16:13:15 -0500
committerGravatar Frédéric Guillot <f@miniflux.net> 2024-08-12 20:43:18 -0700
commitee926e73cbb7e043ddd63b8c2e6316a06f2a0ee9 (patch)
tree20c24aaac8e9a89eb42cb0e233087257ad286723
parentade412f45352bc7491d3a3a6be0a019466431955 (diff)
downloadv2-ee926e73cbb7e043ddd63b8c2e6316a06f2a0ee9.tar.gz
v2-ee926e73cbb7e043ddd63b8c2e6316a06f2a0ee9.tar.zst
v2-ee926e73cbb7e043ddd63b8c2e6316a06f2a0ee9.zip
feat: add license info to js, for LibreJS compatibility
[LibreJS][0] is a browser extension developed by GNU which ensures only Free (libre) JavaScript is run. To determine whether given JavaScript is Free, LibreJS consults metadata included in the JavaScript file. Since Miniflux is Free Software, getting its JavaScript to work when LibreJS is installed is just a matter of adding license metadata to the returned JavaScript source. [0]: https://www.gnu.org/software/librejs/index.html
-rw-r--r--internal/ui/static_javascript.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/ui/static_javascript.go b/internal/ui/static_javascript.go
index f2fb89fc..36061ce9 100644
--- a/internal/ui/static_javascript.go
+++ b/internal/ui/static_javascript.go
@@ -6,6 +6,7 @@ package ui // import "miniflux.app/v2/internal/ui"
import (
"fmt"
"net/http"
+ "strings"
"time"
"miniflux.app/v2/internal/http/request"
@@ -15,6 +16,9 @@ import (
"miniflux.app/v2/internal/ui/static"
)
+const licensePrefix = "//@license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt Apache-2.0\n"
+const licenseSuffix = "\n//@license-end"
+
func (h *handler) showJavascript(w http.ResponseWriter, r *http.Request) {
filename := request.RouteStringParam(r, "name")
etag, found := static.JavascriptBundleChecksums[filename]
@@ -31,6 +35,10 @@ func (h *handler) showJavascript(w http.ResponseWriter, r *http.Request) {
contents = append([]byte(variables), contents...)
}
+ // cloning the prefix since `append` mutates its first argument
+ contents = append([]byte(strings.Clone(licensePrefix)), contents...)
+ contents = append(contents, []byte(licenseSuffix)...)
+
b.WithHeader("Content-Type", "text/javascript; charset=utf-8")
b.WithBody(contents)
b.Write()