mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
feat(buildinfo): add build metadata and expose via HTTP headers
Introduce a new `buildinfo` package to store version, commit, and build date metadata. Update HTTP handlers to include build metadata in response headers and modify initialization to set `buildinfo` values during runtime.
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
|||||||
|
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
configaccess "github.com/router-for-me/CLIProxyAPI/v6/internal/access/config_access"
|
configaccess "github.com/router-for-me/CLIProxyAPI/v6/internal/access/config_access"
|
||||||
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/buildinfo"
|
||||||
"github.com/router-for-me/CLIProxyAPI/v6/internal/cmd"
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/cmd"
|
||||||
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
|
||||||
"github.com/router-for-me/CLIProxyAPI/v6/internal/logging"
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/logging"
|
||||||
@@ -41,13 +42,16 @@ var (
|
|||||||
// init initializes the shared logger setup.
|
// init initializes the shared logger setup.
|
||||||
func init() {
|
func init() {
|
||||||
logging.SetupBaseLogger()
|
logging.SetupBaseLogger()
|
||||||
|
buildinfo.Version = Version
|
||||||
|
buildinfo.Commit = Commit
|
||||||
|
buildinfo.BuildDate = BuildDate
|
||||||
}
|
}
|
||||||
|
|
||||||
// main is the entry point of the application.
|
// main is the entry point of the application.
|
||||||
// It parses command-line flags, loads configuration, and starts the appropriate
|
// It parses command-line flags, loads configuration, and starts the appropriate
|
||||||
// service based on the provided flags (login, codex-login, or server mode).
|
// service based on the provided flags (login, codex-login, or server mode).
|
||||||
func main() {
|
func main() {
|
||||||
fmt.Printf("CLIProxyAPI Version: %s, Commit: %s, BuiltAt: %s\n", Version, Commit, BuildDate)
|
fmt.Printf("CLIProxyAPI Version: %s, Commit: %s, BuiltAt: %s\n", buildinfo.Version, buildinfo.Commit, buildinfo.BuildDate)
|
||||||
|
|
||||||
// Command-line flags to control the application's behavior.
|
// Command-line flags to control the application's behavior.
|
||||||
var login bool
|
var login bool
|
||||||
@@ -386,7 +390,7 @@ func main() {
|
|||||||
log.Fatalf("failed to configure log output: %v", err)
|
log.Fatalf("failed to configure log output: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Infof("CLIProxyAPI Version: %s, Commit: %s, BuiltAt: %s", Version, Commit, BuildDate)
|
log.Infof("CLIProxyAPI Version: %s, Commit: %s, BuiltAt: %s", buildinfo.Version, buildinfo.Commit, buildinfo.BuildDate)
|
||||||
|
|
||||||
// Set the log level based on the configuration.
|
// Set the log level based on the configuration.
|
||||||
util.SetLogLevel(cfg)
|
util.SetLogLevel(cfg)
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/buildinfo"
|
||||||
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/config"
|
||||||
"github.com/router-for-me/CLIProxyAPI/v6/internal/usage"
|
"github.com/router-for-me/CLIProxyAPI/v6/internal/usage"
|
||||||
sdkAuth "github.com/router-for-me/CLIProxyAPI/v6/sdk/auth"
|
sdkAuth "github.com/router-for-me/CLIProxyAPI/v6/sdk/auth"
|
||||||
@@ -91,6 +92,10 @@ func (h *Handler) Middleware() gin.HandlerFunc {
|
|||||||
const banDuration = 30 * time.Minute
|
const banDuration = 30 * time.Minute
|
||||||
|
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
|
c.Header("X-CPA-VERSION", buildinfo.Version)
|
||||||
|
c.Header("X-CPA-COMMIT", buildinfo.Commit)
|
||||||
|
c.Header("X-CPA-BUILD-DATE", buildinfo.BuildDate)
|
||||||
|
|
||||||
clientIP := c.ClientIP()
|
clientIP := c.ClientIP()
|
||||||
localClient := clientIP == "127.0.0.1" || clientIP == "::1"
|
localClient := clientIP == "127.0.0.1" || clientIP == "::1"
|
||||||
cfg := h.cfg
|
cfg := h.cfg
|
||||||
|
|||||||
15
internal/buildinfo/buildinfo.go
Normal file
15
internal/buildinfo/buildinfo.go
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
// Package buildinfo exposes compile-time metadata shared across the server.
|
||||||
|
package buildinfo
|
||||||
|
|
||||||
|
// The following variables are overridden via ldflags during release builds.
|
||||||
|
// Defaults cover local development builds.
|
||||||
|
var (
|
||||||
|
// Version is the semantic version or git describe output of the binary.
|
||||||
|
Version = "dev"
|
||||||
|
|
||||||
|
// Commit is the git commit SHA baked into the binary.
|
||||||
|
Commit = "none"
|
||||||
|
|
||||||
|
// BuildDate records when the binary was built in UTC.
|
||||||
|
BuildDate = "unknown"
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user