Merge branch 'main' into feature/526-average-resample

This commit is contained in:
2026-06-18 07:17:41 +02:00
34 changed files with 423 additions and 226 deletions

View File

@@ -24,7 +24,7 @@ type ProgramConfig struct {
APISubjects *NATSConfig `json:"api-subjects"`
// Drop root permissions once .env was read and the port was taken.
// Drop root permissions once the config was read and the port was taken.
User string `json:"user"`
Group string `json:"group"`
@@ -80,6 +80,18 @@ type ProgramConfig struct {
// Database tuning configuration
DbConfig *DbConfig `json:"db-config"`
// Optional external/legal links shown in the footer.
FooterLinks FooterLinksConfig `json:"footer-links"`
}
// FooterLinksConfig configures the legal/footer links rendered in the UI.
// Each value may be an internal path (e.g. "/imprint") or an external URL.
type FooterLinksConfig struct {
// Target URL/path for the "Imprint" footer entry.
Imprint string `json:"imprint"`
// Target URL/path for the "Privacy Policy" footer entry.
Privacy string `json:"privacy"`
}
type DbConfig struct {
@@ -145,6 +157,10 @@ var Keys ProgramConfig = ProgramConfig{
SessionMaxAge: "168h",
StopJobsExceedingWalltime: 0,
ShortRunningJobsDuration: 5 * 60,
FooterLinks: FooterLinksConfig{
Imprint: "/imprint",
Privacy: "/privacy",
},
}
func Init(mainConfig json.RawMessage) {

View File

@@ -21,11 +21,11 @@ var configSchema = `
}
},
"user": {
"description": "Drop root permissions once .env was read and the port was taken. Only applicable if using privileged port.",
"description": "Drop root permissions once the config was read and the port was taken. Only applicable if using privileged port.",
"type": "string"
},
"group": {
"description": "Drop root permissions once .env was read and the port was taken. Only applicable if using privileged port.",
"description": "Drop root permissions once the config was read and the port was taken. Only applicable if using privileged port.",
"type": "string"
},
"disable-authentication": {
@@ -127,6 +127,20 @@ var configSchema = `
},
"required": ["subject-job-event", "subject-node-state"]
},
"footer-links": {
"description": "Optional footer links for legal pages (imprint/privacy). Each value may be an internal path or an external URL.",
"type": "object",
"properties": {
"imprint": {
"description": "Target URL/path for the footer imprint link.",
"type": "string"
},
"privacy": {
"description": "Target URL/path for the footer privacy link.",
"type": "string"
}
}
},
"nodestate-retention": {
"description": "Node state retention configuration for cleaning up old node_state rows.",
"type": "object",