后端修改获取图标逻辑
@ -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 \
|
||||
|
@ -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">
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.4 KiB |
@ -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 |
BIN
public/logo.png
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 3.1 KiB |
@ -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{}
|
||||
|
@ -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
|
||||
|
@ -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 |
@ -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)">
|
||||
|
@ -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)
|
||||
|