后端修改获取图标逻辑

This commit is contained in:
wintsa 2024-04-12 11:27:18 +08:00
parent 36ed79167f
commit 58adc495ce
10 changed files with 76 additions and 30 deletions

View File

@ -30,12 +30,12 @@ COPY ./service .
# 中国国内源
# RUN sed -i "s@dl-cdn.alpinelinux.org@mirrors.aliyun.com@g" /etc/apk/repositories \
# && go env -w GOPROXY=https://goproxy.cn,direct
RUN apk add --no-cache bash curl gcc git musl-dev
RUN go env -w GO111MODULE=on \
&& export PATH=$PATH:/go/bin \
&& go env -w GOPROXY=https://goproxy.cn,direct \
&& go install -a -v github.com/go-bindata/go-bindata/...@latest \
&& go install -a -v github.com/elazarl/go-bindata-assetfs/...@latest \
&& go install -a -v github.com/gin-contrib/cors/...@latest \

View File

@ -8,7 +8,7 @@
<link rel="stylesheet" href="/custom/index.css">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" />
<title>ZW-Panel</title>
<title>ZW Panel</title>
</head>
<body class="dark:bg-black">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@ -1 +1,2 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 566.93 566.93"><defs><style>.cls-1{fill:#4fb3bb;}</style></defs><path class="cls-1" d="M99.37,502.4H345.56A156.16,156.16,0,0,0,501.72,346.25h0A156.16,156.16,0,0,0,345.56,190.1h-123A33.54,33.54,0,0,0,189,223.61v1a33.54,33.54,0,0,0,33.54,33.56H344.44c48.51,0,88.77,38.74,89.24,87.25a88.22,88.22,0,0,1-88.12,89s-163.09.37-245.94-.27a34.15,34.15,0,0,0-34.41,34.15h0A34.15,34.15,0,0,0,99.37,502.4Z"/><path class="cls-1" d="M467.56,64.53H221.37A156.15,156.15,0,0,0,65.21,220.68h0A156.15,156.15,0,0,0,221.37,376.83h123a33.54,33.54,0,0,0,33.54-33.51v-1a33.54,33.54,0,0,0-33.54-33.56H222.49c-48.52,0-88.77-38.74-89.24-87.25a88.22,88.22,0,0,1,88.12-89s163.09-.37,245.94.27a34.15,34.15,0,0,0,34.41-34.15h0A34.15,34.15,0,0,0,467.56,64.53Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"> <image id="image0" width="48" height="48" x="0" y="0" xlink:href="data:image/png;base64,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"/>
</svg>

Before

Width:  |  Height:  |  Size: 823 B

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -6,6 +6,7 @@ import (
"net/url"
"os"
"path"
"path/filepath"
"strings"
"sun-panel/api/api_v1/common/apiData/commonApiStructs"
"sun-panel/api/api_v1/common/apiData/panelApiStructs"
@ -243,12 +244,7 @@ func (a *ItemIcon) GetSiteFavicon(c *gin.Context) {
}
resp := panelApiStructs.ItemIconGetSiteFaviconResp{}
fullUrl := ""
if iconUrl, err := siteFavicon.GetOneFaviconURL(req.Url); err != nil {
apiReturn.Error(c, "acquisition failed: get ico error:"+err.Error())
return
} else {
fullUrl = iconUrl
}
fullUrl = siteFavicon.GetOneFaviconURL(req.Url)
parsedURL, err := url.Parse(req.Url)
if err != nil {
@ -267,17 +263,7 @@ func (a *ItemIcon) GetSiteFavicon(c *gin.Context) {
// 如果URL既不以http://开头也不以https://开头则默认为http协议
fullUrl = "http://" + fullUrl
}
global.Logger.Debug("fullUrl:", fullUrl)
// 去除图标的get参数
{
parsedIcoURL, err := url.Parse(fullUrl)
if err != nil {
apiReturn.Error(c, "acquisition failed: parsed ico URL :"+err.Error())
return
}
fullUrl = parsedIcoURL.Scheme + "://" + parsedIcoURL.Host + parsedIcoURL.Path
}
global.Logger.Debug("fullUrl:", fullUrl)
global.Logger.Debug("fullUrl111:", fullUrl)
// 生成保存目录
configUpload := global.Config.GetValueString("base", "source_path")
@ -290,13 +276,64 @@ func (a *ItemIcon) GetSiteFavicon(c *gin.Context) {
// 下载
var imgInfo *os.File
{
var err error
if imgInfo, err = siteFavicon.DownloadImage(fullUrl, savePath, 1024*1024); err != nil {
apiReturn.Error(c, "acquisition failed: download"+err.Error())
return
{
imgInfo, err = siteFavicon.DownloadImage(fullUrl, savePath, 1024*1024)
if err != nil {
u, err := url.Parse(fullUrl)
if err != nil {
// 处理 URL 解析错误
return
}
// 获取主机名
hostname := u.Hostname()
// 去掉子域名前缀
parts := strings.Split(hostname, ".")
if len(parts) > 2 {
hostname = strings.Join(parts[1:], ".")
}
// 构建新的 URL
newUrl := u.Scheme + "://" + hostname + u.RequestURI()
imgInfo, err = siteFavicon.DownloadImage(newUrl, savePath, 1024*1024)
// 重新尝试下载
if err != nil {
if iconUrl, err := siteFavicon.GetOneFaviconURLByhead(req.Url); err != nil {
apiReturn.Error(c, "acquisition failed: get ico error:"+err.Error())
return
} else {
fullUrl = iconUrl
u, err := url.Parse(fullUrl)
if err != nil {
// 处理 URL 解析错误
apiReturn.Error(c, "acquisition failed: get ico error:"+err.Error())
return
}
// 获取主机名
hostname := u.Hostname()
absolutePath := filepath.Clean(u.RequestURI())
// 构建新的 URL
newUrl := u.Scheme + "://" + hostname + absolutePath
newUrl = strings.ReplaceAll(newUrl, "\\", "/")
fmt.Println(newUrl)
imgInfo, err = siteFavicon.DownloadImage(newUrl, savePath, 1024*1024)
if err != nil {
fmt.Println(err)
apiReturn.Error(c, "acquisition failed: get ico error:"+err.Error())
return
}
}
}
}
}
}
// 保存到数据库
ext := path.Ext(fullUrl)
mFile := models.File{}

View File

@ -26,7 +26,14 @@ func IsHTTPURL(url string) bool {
return match
}
func GetOneFaviconURL(urlStr string) (string, error) {
func GetOneFaviconURL(urlStr string) string {
urlInfo, _ := url.Parse(urlStr)
fullUrl := urlInfo.Scheme + "://" + urlInfo.Host + "/favicon.ico"
return fullUrl
}
func GetOneFaviconURLByhead(urlStr string) (string, error) {
iconURLs, err := getFaviconURL(urlStr)
if err != nil {
return "", err

View File

@ -1 +1,2 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 566.93 566.93"><defs><style>.cls-1{fill:#4fb3bb;}</style></defs><path class="cls-1" d="M99.37,502.4H345.56A156.16,156.16,0,0,0,501.72,346.25h0A156.16,156.16,0,0,0,345.56,190.1h-123A33.54,33.54,0,0,0,189,223.61v1a33.54,33.54,0,0,0,33.54,33.56H344.44c48.51,0,88.77,38.74,89.24,87.25a88.22,88.22,0,0,1-88.12,89s-163.09.37-245.94-.27a34.15,34.15,0,0,0-34.41,34.15h0A34.15,34.15,0,0,0,99.37,502.4Z"/><path class="cls-1" d="M467.56,64.53H221.37A156.15,156.15,0,0,0,65.21,220.68h0A156.15,156.15,0,0,0,221.37,376.83h123a33.54,33.54,0,0,0,33.54-33.51v-1a33.54,33.54,0,0,0-33.54-33.56H222.49c-48.52,0-88.77-38.74-89.24-87.25a88.22,88.22,0,0,1,88.12-89s163.09-.37,245.94.27a34.15,34.15,0,0,0,34.41-34.15h0A34.15,34.15,0,0,0,467.56,64.53Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"> <image id="image0" width="48" height="48" x="0" y="0" xlink:href="data:image/png;base64,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"/>
</svg>

Before

Width:  |  Height:  |  Size: 823 B

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -6,13 +6,14 @@ import IconEditor from './IconEditor.vue'
import { edit, getSiteFavicon } from '@/api/panel/itemIcon'
import { getList as getGroupList } from '@/api/panel/itemIconGroup'
import { t } from '@/locales'
import { useAuthStore } from '@/store'
interface Props {
visible: boolean
itemInfo: Panel.Info | null
itemGroupId?: number
}
const authStore = useAuthStore()
const props = defineProps<Props>()
const emit = defineEmits<Emit>()
const ms = useMessage()
@ -195,7 +196,7 @@ function getGroupListOptions() {
</NButton>
</NInputGroup>
</NFormItem>
<NFormItem path="lanUrl" :label="$t('iconItem.lanUrl')">
<NFormItem path="lanUrl" :label="$t('iconItem.lanUrl')" v-if="authStore.userInfo?.role==1">
<NInputGroup>
<NInput v-model:value="model.lanUrl" type="text" :maxlength="1000" :placeholder="$t('iconItem.lanUrlInputPlaceholder')" />
<NButton :disabled="!model.lanUrl" :loading="getIconLoading[1]" @click="getIconByUrl(model.lanUrl || '', 1)">

View File

@ -27,7 +27,6 @@ const ms = useMessage()
const dialog = useDialog()
const panelState = usePanelState()
const authStore = useAuthStore()
console.log(panelState.panelConfig)
const scrollContainerRef = ref<HTMLElement | undefined>(undefined)
const editItemInfoShow = ref<boolean>(false)