diff --git a/.air.toml b/.air.toml index c69808de..a9855a67 100644 --- a/.air.toml +++ b/.air.toml @@ -7,7 +7,7 @@ tmp_dir = "tmp" [build] # Just plain old shell command. You could use `make` as well. -cmd = "go build -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/server/settings.BuildTime=$(date +%Y.%m.%d.%H%M%S)'\" -o ./tmp/main ." +cmd = "go build -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'\" -o ./tmp/main ." # Binary file yields from `cmd`. bin = "tmp/main" # Customize binary. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a89fa506..50978a06 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -151,7 +151,7 @@ jobs: - name: Build run: | mkdir -p dist - go build -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/server/settings.BuildTime=$(date +%Y.%m.%d.%H%M%S)'" -o dist/nginx-ui -v main.go + go build -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'" -o dist/nginx-ui -v main.go - name: Archive backend artifacts uses: actions/upload-artifact@v2 diff --git a/server/router/middleware.go b/server/router/middleware.go index 66e6d55a..7c910e79 100644 --- a/server/router/middleware.go +++ b/server/router/middleware.go @@ -12,7 +12,6 @@ import ( "net/http" "path" "strings" - "time" ) func recovery() gin.HandlerFunc { @@ -84,13 +83,10 @@ func cacheJs() gin.HandlerFunc { return func(c *gin.Context) { if strings.Contains(c.Request.URL.String(), "js") { c.Header("Cache-Control", "max-age: 1296000") - t, _ := time.Parse("2006.01.02.150405", settings.BuildTime) - t = t.Add(-8 * time.Hour) - lastModified := strings.ReplaceAll(t.Format(time.RFC1123), "UTC", "GMT") - if c.Request.Header.Get("If-Modified-Since") == lastModified { + if c.Request.Header.Get("If-Modified-Since") == settings.LastModified { c.AbortWithStatus(http.StatusNotModified) } - c.Header("Last-Modified", lastModified) + c.Header("Last-Modified", settings.LastModified) } } } diff --git a/server/settings/settings.go b/server/settings/settings.go index ce5b564a..6170c211 100644 --- a/server/settings/settings.go +++ b/server/settings/settings.go @@ -1,14 +1,18 @@ package settings import ( + "github.com/spf13/cast" "gopkg.in/ini.v1" "log" + "strings" + "time" ) var Conf *ini.File var ( - BuildTime string + buildTime string + LastModified string ) type Server struct { @@ -36,6 +40,11 @@ var sections = map[string]interface{}{ "server": ServerSettings, } +func init() { + t := time.Unix(cast.ToInt64(buildTime), 0) + LastModified = strings.ReplaceAll(t.Format(time.RFC1123), "UTC", "GMT") +} + func Init(confPath string) { ConfPath = confPath Setup()