From c873f224fa0b10c42cdc315fc6f81cb566df1943 Mon Sep 17 00:00:00 2001 From: Sean Du Date: Fri, 15 Aug 2025 19:31:06 +0800 Subject: [PATCH] Add backup CDN server Signed-off-by: Sean Du --- config/config.go | 10 +++++--- internal/handler/download.go | 49 ++++++++++++++++++------------------ internal/handler/handler.go | 11 +------- 3 files changed, 32 insertions(+), 38 deletions(-) diff --git a/config/config.go b/config/config.go index 9fb5f1a..cf52c25 100644 --- a/config/config.go +++ b/config/config.go @@ -24,8 +24,9 @@ type AppConfigs struct { } type Settings struct { - ListenPort string `json:"listen_port"` - SifCdnServer string `json:"sif_cdn_server"` + ListenPort string `json:"listen_port"` + 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", diff --git a/internal/handler/download.go b/internal/handler/download.go index b875a5c..9781d74 100644 --- a/internal/handler/download.go +++ b/internal/handler/download.go @@ -31,22 +31,21 @@ 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). - Cols("pkg_id,pkg_order,pkg_size"). - OrderBy("pkg_id ASC, pkg_order ASC").Find(&pkgInfo) - if ss.CheckErr(err) { - return - } + 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). + Cols("pkg_id,pkg_order,pkg_size"). + OrderBy("pkg_id ASC, pkg_order ASC").Find(&pkgInfo) + if ss.CheckErr(err) { + return + } - 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), - }) - } + for _, pkg := range pkgInfo { + pkgList = append(pkgList, model.AdditionalRes{ + Size: pkg.Size, + URL: fmt.Sprintf("%s/%s/archives/%d_%d_%d.zip", + config.Conf.Settings.CdnServer, downloadReq.TargetOs, pkgType, pkg.Id, pkg.Order), + }) } addResp := model.AdditionalResp{ @@ -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). @@ -119,13 +119,15 @@ 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), + Size: pkg.Size, + 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{ diff --git a/internal/handler/handler.go b/internal/handler/handler.go index af5a53e..6e390f8 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -1,14 +1,5 @@ package handler -import ( - "honoka-chan/config" -) - var ( - SifCdnServer string - ErrorMsg = `{"code":20001,"message":""}` + ErrorMsg = `{"code":20001,"message":""}` ) - -func init() { - SifCdnServer = config.Conf.Settings.SifCdnServer -}