Feat: check static files version
This commit is contained in:
parent
2e43f8ed5b
commit
fa900b166a
3 changed files with 46 additions and 1 deletions
2
assets
2
assets
|
@ -1 +1 @@
|
||||||
Subproject commit f544486b6ae2440df197630601b1827ed6977c0b
|
Subproject commit 43c9ce1d266050637a247113db54883ce2218291
|
|
@ -1,10 +1,13 @@
|
||||||
package bootstrap
|
package bootstrap
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/HFO4/cloudreve/pkg/conf"
|
||||||
"github.com/HFO4/cloudreve/pkg/util"
|
"github.com/HFO4/cloudreve/pkg/util"
|
||||||
_ "github.com/HFO4/cloudreve/statik"
|
_ "github.com/HFO4/cloudreve/statik"
|
||||||
"github.com/gin-contrib/static"
|
"github.com/gin-contrib/static"
|
||||||
"github.com/rakyll/statik/fs"
|
"github.com/rakyll/statik/fs"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -12,6 +15,11 @@ type GinFS struct {
|
||||||
FS http.FileSystem
|
FS http.FileSystem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type staticVersion struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
}
|
||||||
|
|
||||||
// StaticFS 内置静态文件资源
|
// StaticFS 内置静态文件资源
|
||||||
var StaticFS static.ServeFileSystem
|
var StaticFS static.ServeFileSystem
|
||||||
|
|
||||||
|
@ -45,4 +53,38 @@ func InitStatic() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检查静态资源的版本
|
||||||
|
f, err := StaticFS.Open("version.json")
|
||||||
|
if err != nil {
|
||||||
|
util.Log().Warning("静态资源版本标识文件不存在,请重新构建或删除 statics 目录")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := ioutil.ReadAll(f)
|
||||||
|
if err != nil {
|
||||||
|
util.Log().Warning("无法读取静态资源文件版本,请重新构建或删除 statics 目录")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var v staticVersion
|
||||||
|
if err := json.Unmarshal(b, &v); err != nil {
|
||||||
|
util.Log().Warning("无法解析静态资源文件版本, %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
staticName := "cloudreve-frontend"
|
||||||
|
if conf.IsPro == "true" {
|
||||||
|
staticName += "-pro"
|
||||||
|
}
|
||||||
|
|
||||||
|
if v.Name != staticName {
|
||||||
|
util.Log().Warning("静态资源版本不匹配,请重新构建或删除 statics 目录")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if v.Version != conf.RequiredStaticVersion {
|
||||||
|
util.Log().Warning("静态资源版本不匹配 [当前 %s, 需要: %s],请重新构建或删除 statics 目录", v.Version, conf.RequiredStaticVersion)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,9 @@ var BackendVersion = "3.0.0-beta1"
|
||||||
// RequiredDBVersion 与当前版本匹配的数据库版本
|
// RequiredDBVersion 与当前版本匹配的数据库版本
|
||||||
var RequiredDBVersion = "3.0.0-rc1"
|
var RequiredDBVersion = "3.0.0-rc1"
|
||||||
|
|
||||||
|
// RequiredStaticVersion 与当前版本匹配的静态资源版本
|
||||||
|
var RequiredStaticVersion = "3.0.0"
|
||||||
|
|
||||||
// IsPro 是否为Pro版本
|
// IsPro 是否为Pro版本
|
||||||
var IsPro = "false"
|
var IsPro = "false"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue