aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-04-05 20:37:03 +0800
committerRunxi Yu <me@runxiyu.org>2025-04-05 20:37:03 +0800
commit2d0ea5ba085f9caa84a7e7b1fd55f653834009aa (patch)
tree46278813d2e2f7dd080c9289321c1021fa619e80
parentircSend* shall no longer be global variables (diff)
downloadforge-2d0ea5ba085f9caa84a7e7b1fd55f653834009aa.tar.gz
forge-2d0ea5ba085f9caa84a7e7b1fd55f653834009aa.tar.zst
forge-2d0ea5ba085f9caa84a7e7b1fd55f653834009aa.zip
sshPubkey* shall no longer be global variables
-rw-r--r--config.go2
-rw-r--r--git_misc.go2
-rw-r--r--http_global.go14
-rw-r--r--http_handle_repo_commit.go2
-rw-r--r--http_server.go2
-rw-r--r--main.go6
-rw-r--r--resources.go2
-rw-r--r--server.go8
-rw-r--r--ssh_server.go12
-rw-r--r--version.go2
10 files changed, 23 insertions, 29 deletions
diff --git a/config.go b/config.go
index 773a223..ec8daf8 100644
--- a/config.go
+++ b/config.go
@@ -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
diff --git a/main.go b/main.go
index 8eca6a7..2e1e094 100644
--- a/main.go
+++ b/main.go
@@ -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) {
diff --git a/server.go b/server.go
index 30b39f1..71e1232 100644
--- a/server.go
+++ b/server.go
@@ -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) {
diff --git a/version.go b/version.go
index bfa4b96..c5e5aab 100644
--- a/version.go
+++ b/version.go
@@ -1,3 +1,3 @@
package main
-var VERSION = "unknown"
+var VERSION = "unknown" //nolint:gochecknoglobals