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 committed Aug 11, 2024
1 parent 59dac15 commit d94b2f6
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 d94b2f6

Please sign in to comment.