Skip to content

Commit

Permalink
feat: add license info to js, for LibreJS compatibility
Browse files Browse the repository at this point in the history
[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
  • Loading branch information
piperswe authored and fguillot committed Aug 13, 2024
1 parent ade412f commit ee926e7
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions internal/ui/static_javascript.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package ui // import "miniflux.app/v2/internal/ui"
import (
"fmt"
"net/http"
"strings"
"time"

"miniflux.app/v2/internal/http/request"
Expand All @@ -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]
Expand All @@ -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()
Expand Down

0 comments on commit ee926e7

Please sign in to comment.