diff options
Diffstat (limited to 'infra/containers/cgit')
| -rw-r--r-- | infra/containers/cgit/cgitrc | 2 | ||||
| -rw-r--r-- | infra/containers/cgit/cgitrc.local | 2 | ||||
| -rw-r--r-- | infra/containers/cgit/license.lua | 47 |
3 files changed, 51 insertions, 0 deletions
diff --git a/infra/containers/cgit/cgitrc b/infra/containers/cgit/cgitrc index 0b563e0..9aaf8d5 100644 --- a/infra/containers/cgit/cgitrc +++ b/infra/containers/cgit/cgitrc @@ -24,4 +24,6 @@ defbranch=main cache-root=/var/cache/cgit cache-size=1000 cache-scanrc-ttl=1 +readme=:web/THIRD-PARTY-LICENSES.html +about-filter=lua:/etc/cgit-license.lua scan-path=/srv/git diff --git a/infra/containers/cgit/cgitrc.local b/infra/containers/cgit/cgitrc.local index 3c8d657..20b533a 100644 --- a/infra/containers/cgit/cgitrc.local +++ b/infra/containers/cgit/cgitrc.local @@ -24,4 +24,6 @@ defbranch=main cache-root=/var/cache/cgit cache-size=1000 cache-scanrc-ttl=1 +readme=:web/THIRD-PARTY-LICENSES.html +about-filter=lua:/etc/cgit-license.lua scan-path=/srv/git diff --git a/infra/containers/cgit/license.lua b/infra/containers/cgit/license.lua new file mode 100644 index 0000000..ff5685f --- /dev/null +++ b/infra/containers/cgit/license.lua @@ -0,0 +1,47 @@ +-- Copyright (C) 2026 Doan Luu Duc Tai <doan@luuduct.ai> +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- 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 Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see <https://www.gnu.org/licenses/>. + +local chunks = {} +local rendered = false + +function filter_open(filename) + chunks = {} + rendered = filename == "web/THIRD-PARTY-LICENSES.html" +end + +function filter_write(buffer) + if rendered then + chunks[#chunks + 1] = buffer + else + html_txt(buffer) + end +end + +function filter_close() + if rendered then + local query = os.getenv("QUERY_STRING") or "" + local suffix = query ~= "" and ("?" .. query) or "" + html('<nav aria-label="License views"><strong>Rendered</strong> | <a href="') + html_attr("../tree/web/THIRD-PARTY-LICENSES.html" .. suffix) + html('">Source</a> | <a href="') + html_attr("../plain/web/THIRD-PARTY-LICENSES.html" .. suffix) + html('">Raw</a></nav>') + html('<iframe title="Third-party licenses" sandbox="" referrerpolicy="no-referrer" style="width:100%;height:80vh;border:0" srcdoc="') + html_attr([[<!doctype html><meta http-equiv="Content-Security-Policy" content="default-src 'none'; style-src 'unsafe-inline'">]]) + html_attr(table.concat(chunks)) + html('"></iframe>') + end + return 0 +end |
