feat: 内部署名改为编译期注入(构建机本地文件,不进仓库);关于页展示

This commit is contained in:
AskaEth committed 2026-09-09 20:07:59 +08:00
1 parent d288e2bb22
commit 76e725ca96
6 files changed
+66 -1

No files matched your search

@@ -0,0 +1,20 @@
package httpapi
import (
"net/http"
"git.yeij.top/AskaEth/Scoreboard/server/internal/auth"
"git.yeij.top/AskaEth/Scoreboard/server/internal/version"
)
// systemRoutes 挂载系统级只读信息。
func (s *server) systemRoutes(mux *http.ServeMux) {
// 内部署名是编译期注入的,不暴露给匿名访客:至少要登录(recorder 及以上)才能读到
mux.HandleFunc("GET /api/system/about", s.read(auth.RoleRecorder, s.systemAbout))
}
func (s *server) systemAbout(w http.ResponseWriter, r *http.Request) (any, error) {
return map[string]any{
"internalSignature": version.InternalSignature,
}, nil
}
+1
View File
@@ -76,6 +76,7 @@ func New(opts Options) http.Handler {
s.routes(mux)
s.exportRoutes(mux)
s.rulesRoutes(mux)
s.systemRoutes(mux)
if opts.WS != nil {
mux.Handle("/ws", opts.WS)
}
+11
View File
@@ -0,0 +1,11 @@
// Package version 保存构建期注入的版本与署名信息。
package version
// Version 由构建脚本注入:-ldflags "-X .../version.Version=..."
var Version = "dev"
// InternalSignature 是内部署名,**由构建机本地文件注入**,编译期写进二进制。
//
// 源码里必须永远保持为空字符串:真实署名只存在于构建机的 deploy/signature.local.txt
// (该文件已 gitignore),因此公开仓库里既没有值、也改不动它。
var InternalSignature = ""