更新软件升级
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"server/models"
|
||||
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
// PublicRequestBaseURL 根据请求拼出对外访问的根(用于把 /uploads/... 拼成完整下载地址)
|
||||
func PublicRequestBaseURL(c *beego.Controller) (scheme, host string) {
|
||||
scheme = "http"
|
||||
if c.Ctx.Request.TLS != nil {
|
||||
scheme = "https"
|
||||
}
|
||||
if strings.EqualFold(strings.TrimSpace(c.Ctx.Request.Header.Get("X-Forwarded-Proto")), "https") {
|
||||
scheme = "https"
|
||||
}
|
||||
host = strings.TrimSpace(c.Ctx.Request.Host)
|
||||
return scheme, host
|
||||
}
|
||||
|
||||
// ResolveSoftwareDownloadURL 优先使用自定义 download_url;否则根据 file_id 读附件 src 拼完整 URL
|
||||
func ResolveSoftwareDownloadURL(scheme, host string, downloadURL *string, fileID *uint64) string {
|
||||
if downloadURL != nil {
|
||||
u := strings.TrimSpace(*downloadURL)
|
||||
if u != "" {
|
||||
return u
|
||||
}
|
||||
}
|
||||
if fileID == nil || *fileID == 0 {
|
||||
return ""
|
||||
}
|
||||
var f models.SystemFile
|
||||
err := models.Orm.QueryTable(new(models.SystemFile)).
|
||||
Filter("id", *fileID).
|
||||
Filter("delete_time__isnull", true).
|
||||
One(&f)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
src := strings.TrimSpace(f.Src)
|
||||
if src == "" {
|
||||
return ""
|
||||
}
|
||||
if strings.HasPrefix(strings.ToLower(src), "http://") || strings.HasPrefix(strings.ToLower(src), "https://") {
|
||||
return src
|
||||
}
|
||||
if host == "" {
|
||||
return src
|
||||
}
|
||||
if !strings.HasPrefix(src, "/") {
|
||||
src = "/" + src
|
||||
}
|
||||
if scheme == "" {
|
||||
scheme = "http"
|
||||
}
|
||||
return scheme + "://" + host + src
|
||||
}
|
||||
Reference in New Issue
Block a user