aboutsummaryrefslogtreecommitdiff
path: root/infra
diff options
context:
space:
mode:
Diffstat (limited to 'infra')
-rw-r--r--infra/containers/cgit/cgitrc2
-rw-r--r--infra/containers/cgit/cgitrc.local2
-rw-r--r--infra/containers/cgit/license.lua47
-rw-r--r--infra/services.toml1
4 files changed, 52 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
diff --git a/infra/services.toml b/infra/services.toml
index 97091cf..f352d68 100644
--- a/infra/services.toml
+++ b/infra/services.toml
@@ -33,6 +33,7 @@ health = ["curl", "--fail", "--silent", "--max-time", "3", "http://127.0.0.1:808
mounts = [
{ source = "var/data/repos", target = "/srv/git", read_only = true },
{ source = "@cgit", target = "/etc/cgitrc", read_only = true },
+ { source = "infra/containers/cgit/license.lua", target = "/etc/cgit-license.lua", read_only = true },
]
tmpfs = ["/run", "/var/cache/cgit"]