Add backup CDN server

Signed-off-by: Sean Du <do4suki@gmail.com>
This commit is contained in:
2025-08-15 19:31:06 +08:00
parent 80a686849f
commit c873f224fa
3 changed files with 32 additions and 38 deletions
+5 -3
View File
@@ -25,7 +25,8 @@ type AppConfigs struct {
type Settings struct {
ListenPort string `json:"listen_port"`
SifCdnServer string `json:"sif_cdn_server"`
CdnServer string `json:"cdn_server"`
BackupCdnServer string `json:"backup_cdn_server"`
}
type UserPrefs struct {
@@ -48,8 +49,9 @@ func DefaultConfigs() *AppConfigs {
return &AppConfigs{
AppName: "honoka-chan",
Settings: Settings{
ListenPort: "80",
SifCdnServer: "http://192.168.1.123/static",
ListenPort: "8080",
CdnServer: "http://192.168.1.123/static",
BackupCdnServer: "http://192.168.1.123/static",
},
UserPrefs: UserPrefs{
Name: "梦路 @bilibili",
+13 -12
View File
@@ -31,10 +31,9 @@ func DownloadAdditional(ctx *gin.Context) {
}
pkgList := []model.AdditionalRes{}
if SifCdnServer != "" {
pkgType, pkgId := downloadReq.PackageType, downloadReq.PackageID
var pkgInfo []PkgInfo
err := ss.MainEng.Table("download_m").Where("pkg_type = ? AND pkg_id = ? AND pkg_os = ?", pkgType, pkgId, downloadReq.TargetOs).
err = ss.MainEng.Table("download_m").Where("pkg_type = ? AND pkg_id = ? AND pkg_os = ?", pkgType, pkgId, downloadReq.TargetOs).
Cols("pkg_id,pkg_order,pkg_size").
OrderBy("pkg_id ASC, pkg_order ASC").Find(&pkgInfo)
if ss.CheckErr(err) {
@@ -44,10 +43,10 @@ func DownloadAdditional(ctx *gin.Context) {
for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.AdditionalRes{
Size: pkg.Size,
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", SifCdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order),
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip",
config.Conf.Settings.CdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order),
})
}
}
addResp := model.AdditionalResp{
ResponseData: pkgList,
@@ -69,7 +68,7 @@ func DownloadBatch(ctx *gin.Context) {
}
pkgList := []model.BatchRes{}
if downloadReq.ClientVersion == config.PackageVersion && SifCdnServer != "" {
if downloadReq.ClientVersion == config.PackageVersion {
pkgType := downloadReq.PackageType
var pkgInfo []PkgInfo
err := ss.MainEng.Table("download_m").Where(builder.NotIn("pkg_id", downloadReq.ExcludedPackageIds)).Where("pkg_type = ? AND pkg_os = ?", pkgType, downloadReq.Os).
@@ -82,7 +81,8 @@ func DownloadBatch(ctx *gin.Context) {
for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.BatchRes{
Size: pkg.Size,
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", SifCdnServer, downloadReq.Os, pkgType, pkg.Id, pkg.Order),
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip",
config.Conf.Settings.CdnServer, downloadReq.Os, pkgType, pkg.Id, pkg.Order),
})
}
}
@@ -107,7 +107,7 @@ func DownloadUpdate(ctx *gin.Context) {
}
pkgList := []model.UpdateRes{}
if downloadReq.ExternalVersion != config.PackageVersion && SifCdnServer != "" {
if downloadReq.ExternalVersion != config.PackageVersion {
pkgType := 99
var pkgInfo []PkgInfo
err := ss.MainEng.Table("download_m").Where("pkg_type = ? AND pkg_os = ?", pkgType, downloadReq.TargetOs).
@@ -120,12 +120,14 @@ func DownloadUpdate(ctx *gin.Context) {
for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.UpdateRes{
Size: pkg.Size,
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", SifCdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order),
URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip",
config.Conf.Settings.CdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order),
Version: config.PackageVersion,
})
}
patchFileUrl := fmt.Sprintf("%s/%s/archives/99_0_115.zip", SifCdnServer, downloadReq.TargetOs)
patchFileUrl := fmt.Sprintf("%s/%s/archives/99_0_115.zip",
config.Conf.Settings.CdnServer, downloadReq.TargetOs)
resp, err := http.Get(patchFileUrl)
if err == nil {
res, err := io.ReadAll(resp.Body)
@@ -150,8 +152,6 @@ func DownloadUpdate(ctx *gin.Context) {
}
func DownloadUrl(ctx *gin.Context) {
// Extract SQL: SELECT CAST(pkg_type AS TEXT) || '_' || CAST(pkg_id AS TEXT) || '_' || CAST(pkg_order AS TEXT) || '.zip' AS zip_name FROM download_m ORDER BY pkg_type ASC,pkg_id ASC, pkg_order ASC;
// Extract Cmd: cat list.txt | while read line; do; unzip -o $line; done
ss := session.New(ctx)
defer ss.Finalize()
@@ -163,7 +163,8 @@ func DownloadUrl(ctx *gin.Context) {
urlList := []string{}
for _, v := range downloadReq.PathList {
urlList = append(urlList, fmt.Sprintf("%s/%s/extracted/%s", SifCdnServer, downloadReq.Os, strings.ReplaceAll(v, "\\", "")))
urlList = append(urlList, fmt.Sprintf("%s/%s/extracted/%s",
config.Conf.Settings.BackupCdnServer, downloadReq.Os, strings.ReplaceAll(v, "\\", "")))
}
urlResp := model.UrlResp{
ResponseData: model.UrlRes{
-9
View File
@@ -1,14 +1,5 @@
package handler
import (
"honoka-chan/config"
)
var (
SifCdnServer string
ErrorMsg = `{"code":20001,"message":""}`
)
func init() {
SifCdnServer = config.Conf.Settings.SifCdnServer
}