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 { type Settings struct {
ListenPort string `json:"listen_port"` 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 { type UserPrefs struct {
@@ -48,8 +49,9 @@ func DefaultConfigs() *AppConfigs {
return &AppConfigs{ return &AppConfigs{
AppName: "honoka-chan", AppName: "honoka-chan",
Settings: Settings{ Settings: Settings{
ListenPort: "80", ListenPort: "8080",
SifCdnServer: "http://192.168.1.123/static", CdnServer: "http://192.168.1.123/static",
BackupCdnServer: "http://192.168.1.123/static",
}, },
UserPrefs: UserPrefs{ UserPrefs: UserPrefs{
Name: "梦路 @bilibili", Name: "梦路 @bilibili",
+13 -12
View File
@@ -31,10 +31,9 @@ func DownloadAdditional(ctx *gin.Context) {
} }
pkgList := []model.AdditionalRes{} pkgList := []model.AdditionalRes{}
if SifCdnServer != "" {
pkgType, pkgId := downloadReq.PackageType, downloadReq.PackageID pkgType, pkgId := downloadReq.PackageType, downloadReq.PackageID
var pkgInfo []PkgInfo 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"). Cols("pkg_id,pkg_order,pkg_size").
OrderBy("pkg_id ASC, pkg_order ASC").Find(&pkgInfo) OrderBy("pkg_id ASC, pkg_order ASC").Find(&pkgInfo)
if ss.CheckErr(err) { if ss.CheckErr(err) {
@@ -44,10 +43,10 @@ func DownloadAdditional(ctx *gin.Context) {
for _, pkg := range pkgInfo { for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.AdditionalRes{ pkgList = append(pkgList, model.AdditionalRes{
Size: pkg.Size, 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{ addResp := model.AdditionalResp{
ResponseData: pkgList, ResponseData: pkgList,
@@ -69,7 +68,7 @@ func DownloadBatch(ctx *gin.Context) {
} }
pkgList := []model.BatchRes{} pkgList := []model.BatchRes{}
if downloadReq.ClientVersion == config.PackageVersion && SifCdnServer != "" { if downloadReq.ClientVersion == config.PackageVersion {
pkgType := downloadReq.PackageType pkgType := downloadReq.PackageType
var pkgInfo []PkgInfo 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). 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 { for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.BatchRes{ pkgList = append(pkgList, model.BatchRes{
Size: pkg.Size, 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{} pkgList := []model.UpdateRes{}
if downloadReq.ExternalVersion != config.PackageVersion && SifCdnServer != "" { if downloadReq.ExternalVersion != config.PackageVersion {
pkgType := 99 pkgType := 99
var pkgInfo []PkgInfo var pkgInfo []PkgInfo
err := ss.MainEng.Table("download_m").Where("pkg_type = ? AND pkg_os = ?", pkgType, downloadReq.TargetOs). 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 { for _, pkg := range pkgInfo {
pkgList = append(pkgList, model.UpdateRes{ pkgList = append(pkgList, model.UpdateRes{
Size: pkg.Size, 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, 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) resp, err := http.Get(patchFileUrl)
if err == nil { if err == nil {
res, err := io.ReadAll(resp.Body) res, err := io.ReadAll(resp.Body)
@@ -150,8 +152,6 @@ func DownloadUpdate(ctx *gin.Context) {
} }
func DownloadUrl(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) ss := session.New(ctx)
defer ss.Finalize() defer ss.Finalize()
@@ -163,7 +163,8 @@ func DownloadUrl(ctx *gin.Context) {
urlList := []string{} urlList := []string{}
for _, v := range downloadReq.PathList { 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{ urlResp := model.UrlResp{
ResponseData: model.UrlRes{ ResponseData: model.UrlRes{
-9
View File
@@ -1,14 +1,5 @@
package handler package handler
import (
"honoka-chan/config"
)
var ( var (
SifCdnServer string
ErrorMsg = `{"code":20001,"message":""}` ErrorMsg = `{"code":20001,"message":""}`
) )
func init() {
SifCdnServer = config.Conf.Settings.SifCdnServer
}