diff options
-rw-r--r-- | config.go | 2 | ||||
-rw-r--r-- | git_misc.go | 2 | ||||
-rw-r--r-- | http_global.go | 14 | ||||
-rw-r--r-- | http_handle_repo_commit.go | 2 | ||||
-rw-r--r-- | http_server.go | 2 | ||||
-rw-r--r-- | main.go | 6 | ||||
-rw-r--r-- | resources.go | 2 | ||||
-rw-r--r-- | server.go | 8 | ||||
-rw-r--r-- | ssh_server.go | 12 | ||||
-rw-r--r-- | version.go | 2 |
10 files changed, 23 insertions, 29 deletions
@@ -96,7 +96,7 @@ func (s *server) loadConfig(path string) (err error) { return err } - globalData["forge_title"] = s.config.General.Title + s.globalData["forge_title"] = s.config.General.Title return nil } diff --git a/git_misc.go b/git_misc.go index 8dda01c..17f834c 100644 --- a/git_misc.go +++ b/git_misc.go @@ -247,4 +247,4 @@ func commitToPatch(commit *object.Commit) (parentCommitHash plumbing.Hash, patch return } -var nullTree object.Tree +var nullTree object.Tree //nolint:gochecknoglobals diff --git a/http_global.go b/http_global.go deleted file mode 100644 index 6e236a7..0000000 --- a/http_global.go +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu <https://runxiyu.org> - -package main - -// globalData is passed as "global" when rendering HTML templates and contains -// global data that should stay constant throughout an execution of Lindenii -// Forge as no synchronization mechanism is provided for updating it. -var globalData = map[string]any{ - "server_public_key_string": &serverPubkeyString, - "server_public_key_fingerprint": &serverPubkeyFP, - "forge_version": VERSION, - // Some other ones are populated after config parsing -} diff --git a/http_handle_repo_commit.go b/http_handle_repo_commit.go index 02121a2..a398dc2 100644 --- a/http_handle_repo_commit.go +++ b/http_handle_repo_commit.go @@ -99,7 +99,7 @@ func (f fakeDiffFile) Path() string { return f.path } -var nullFakeDiffFile = fakeDiffFile{ +var nullFakeDiffFile = fakeDiffFile{ //nolint:gochecknoglobals hash: plumbing.NewHash("0000000000000000000000000000000000000000"), mode: misc.FirstOrPanic(filemode.New("100644")), path: "", diff --git a/http_server.go b/http_server.go index 7341929..13ee492 100644 --- a/http_server.go +++ b/http_server.go @@ -50,7 +50,7 @@ func (s *server) ServeHTTP(writer http.ResponseWriter, request *http.Request) { params["url_segments"] = segments params["dir_mode"] = dirMode - params["global"] = globalData + params["global"] = s.globalData var userID int // 0 for none userID, params["username"], err = s.getUserFromRequest(request) params["user_id"] = userID @@ -36,6 +36,12 @@ func main() { panic(err) } s.staticHandler = http.StripPrefix("/-/static/", http.FileServer(http.FS(staticFS))) + s.globalData = map[string]any{ + "server_public_key_string": &s.serverPubkeyString, + "server_public_key_fingerprint": &s.serverPubkeyFP, + "forge_version": VERSION, + // Some other ones are populated after config parsing + } if err := s.loadConfig(*configPath); err != nil { slog.Error("loading configuration", "error", err) diff --git a/resources.go b/resources.go index b626f8d..5ecb218 100644 --- a/resources.go +++ b/resources.go @@ -20,7 +20,7 @@ var embeddedSourceFS embed.FS //go:embed hookc/hookc git2d/git2d var embeddedResourcesFS embed.FS -var templates *template.Template +var templates *template.Template //nolint:gochecknoglobals // loadTemplates minifies and loads HTML templates. func loadTemplates() (err error) { @@ -4,6 +4,7 @@ import ( "net/http" "github.com/jackc/pgx/v5/pgxpool" + goSSH "golang.org/x/crypto/ssh" ) type server struct { @@ -19,4 +20,11 @@ type server struct { ircSendBuffered chan string ircSendDirectChan chan errorBack[string] + + // globalData is passed as "global" when rendering HTML templates. + globalData map[string]any + + serverPubkeyString string + serverPubkeyFP string + serverPubkey goSSH.PublicKey } diff --git a/ssh_server.go b/ssh_server.go index 9cb3062..afb0d95 100644 --- a/ssh_server.go +++ b/ssh_server.go @@ -16,12 +16,6 @@ import ( goSSH "golang.org/x/crypto/ssh" ) -var ( - serverPubkeyString string - serverPubkeyFP string - serverPubkey goSSH.PublicKey -) - // serveSSH serves SSH on a [net.Listener]. The listener should generally be a // TCP listener, although AF_UNIX SOCK_STREAM listeners may be appropriate in // rare cases. @@ -39,9 +33,9 @@ func (s *server) serveSSH(listener net.Listener) error { return err } - serverPubkey = hostKey.PublicKey() - serverPubkeyString = misc.BytesToString(goSSH.MarshalAuthorizedKey(serverPubkey)) - serverPubkeyFP = goSSH.FingerprintSHA256(serverPubkey) + s.serverPubkey = hostKey.PublicKey() + s.serverPubkeyString = misc.BytesToString(goSSH.MarshalAuthorizedKey(s.serverPubkey)) + s.serverPubkeyFP = goSSH.FingerprintSHA256(s.serverPubkey) server = &gliderSSH.Server{ Handler: func(session gliderSSH.Session) { @@ -1,3 +1,3 @@ package main -var VERSION = "unknown" +var VERSION = "unknown" //nolint:gochecknoglobals |