mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 06:47:20 +08:00
feat: 适配最新api
This commit is contained in:
@@ -10,7 +10,6 @@ import (
|
||||
"github.com/hashicorp/go-version"
|
||||
"github.com/knadh/koanf/v2"
|
||||
"github.com/leonelquinteros/gotext"
|
||||
"github.com/libtnb/utils/collect"
|
||||
"github.com/spf13/cast"
|
||||
"gorm.io/gorm"
|
||||
|
||||
@@ -71,8 +70,7 @@ func (r *appRepo) UpdateExist(slug string) bool {
|
||||
|
||||
for channel := range slices.Values(item.Channels) {
|
||||
if channel.Slug == installed.Channel {
|
||||
current := collect.First(channel.Subs)
|
||||
if current != nil && current.Version != installed.Version {
|
||||
if channel.Version != installed.Version {
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -174,7 +172,7 @@ func (r *appRepo) Install(channel, slug string) error {
|
||||
}
|
||||
shellUrl = ch.Install
|
||||
shellChannel = ch.Slug
|
||||
shellVersion = collect.First(ch.Subs).Version
|
||||
shellVersion = ch.Version
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -284,7 +282,7 @@ func (r *appRepo) Update(slug string) error {
|
||||
}
|
||||
shellUrl = ch.Update
|
||||
shellChannel = ch.Slug
|
||||
shellVersion = collect.First(ch.Subs).Version
|
||||
shellVersion = ch.Version
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,29 +51,36 @@ func (s *AppService) List(w http.ResponseWriter, r *http.Request) {
|
||||
updateExist = s.appRepo.UpdateExist(item.Slug)
|
||||
show = installedAppMap[item.Slug].Show
|
||||
}
|
||||
apps = append(apps, types.AppCenter{
|
||||
Icon: item.Icon,
|
||||
Name: item.Name,
|
||||
Description: item.Description,
|
||||
Slug: item.Slug,
|
||||
Channels: []struct {
|
||||
Slug string `json:"slug"`
|
||||
Name string `json:"name"`
|
||||
Panel string `json:"panel"`
|
||||
Install string `json:"-"`
|
||||
Uninstall string `json:"-"`
|
||||
Update string `json:"-"`
|
||||
Subs []struct {
|
||||
Log string `json:"log"`
|
||||
Version string `json:"version"`
|
||||
} `json:"subs"`
|
||||
}(item.Channels),
|
||||
|
||||
app := types.AppCenter{
|
||||
Icon: item.Icon,
|
||||
Name: item.Name,
|
||||
Description: item.Description,
|
||||
Slug: item.Slug,
|
||||
Installed: installed,
|
||||
InstalledChannel: installedChannel,
|
||||
InstalledVersion: installedVersion,
|
||||
UpdateExist: updateExist,
|
||||
Show: show,
|
||||
})
|
||||
}
|
||||
|
||||
for _, c := range item.Channels {
|
||||
app.Channels = append(app.Channels, struct {
|
||||
Slug string `json:"slug"`
|
||||
Name string `json:"name"`
|
||||
Panel string `json:"panel"`
|
||||
Version string `json:"version"`
|
||||
Log string `json:"log"`
|
||||
}{
|
||||
Slug: c.Slug,
|
||||
Name: c.Name,
|
||||
Panel: c.Panel,
|
||||
Version: c.Version,
|
||||
Log: c.Log,
|
||||
})
|
||||
}
|
||||
|
||||
apps = append(apps, app)
|
||||
}
|
||||
|
||||
paged, total := Paginate(r, apps)
|
||||
|
||||
@@ -25,7 +25,7 @@ func NewAPI(panelVersion, locale string, url ...string) *API {
|
||||
panic("panel version is required")
|
||||
}
|
||||
if len(url) == 0 {
|
||||
url = append(url, "https://panel.haozi.net/api")
|
||||
url = append(url, "https://api.acepanel.net")
|
||||
}
|
||||
|
||||
hostInfo, err := host.Info()
|
||||
@@ -36,7 +36,12 @@ func NewAPI(panelVersion, locale string, url ...string) *API {
|
||||
client := resty.New()
|
||||
client.SetTimeout(10 * time.Second)
|
||||
client.SetBaseURL(url[0])
|
||||
client.SetHeader("User-Agent", fmt.Sprintf("rat-panel/%s %s/%s", panelVersion, hostInfo.Platform, hostInfo.PlatformVersion))
|
||||
client.SetHeader(
|
||||
"User-Agent",
|
||||
fmt.Sprintf("acepanel/%s/%s %s/%s arch/%s kernel/%s",
|
||||
panelVersion, locale, hostInfo.Platform, hostInfo.PlatformVersion, hostInfo.KernelArch, hostInfo.KernelVersion,
|
||||
),
|
||||
)
|
||||
client.SetQueryParam("locale", locale)
|
||||
|
||||
return &API{
|
||||
|
||||
@@ -13,18 +13,16 @@ type App struct {
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
Categories []string `json:"categories"`
|
||||
Depends string `json:"depends"`
|
||||
Depends string `json:"depends"` // 依赖表达式
|
||||
Channels []struct {
|
||||
Slug string `json:"slug"`
|
||||
Name string `json:"name"`
|
||||
Panel string `json:"panel"`
|
||||
Install string `json:"install"`
|
||||
Uninstall string `json:"uninstall"`
|
||||
Update string `json:"update"`
|
||||
Subs []struct {
|
||||
Log string `json:"log"`
|
||||
Version string `json:"version"`
|
||||
} `json:"subs"`
|
||||
Slug string `json:"slug"` // 渠道代号
|
||||
Name string `json:"name"` // 渠道名称
|
||||
Panel string `json:"panel"` // 最低支持面板版本
|
||||
Install string `json:"install"` // 安装脚本
|
||||
Uninstall string `json:"uninstall"` // 卸载脚本
|
||||
Update string `json:"update"` // 更新脚本
|
||||
Version string `json:"version"` // 版本号
|
||||
Log string `json:"log"` // 更新日志
|
||||
} `json:"channels"`
|
||||
Order int `json:"order"`
|
||||
}
|
||||
|
||||
@@ -14,16 +14,11 @@ type AppCenter struct {
|
||||
Description string `json:"description"`
|
||||
Slug string `json:"slug"`
|
||||
Channels []struct {
|
||||
Slug string `json:"slug"`
|
||||
Name string `json:"name"`
|
||||
Panel string `json:"panel"`
|
||||
Install string `json:"-"`
|
||||
Uninstall string `json:"-"`
|
||||
Update string `json:"-"`
|
||||
Subs []struct {
|
||||
Log string `json:"log"`
|
||||
Version string `json:"version"`
|
||||
} `json:"subs"`
|
||||
Slug string `json:"slug"`
|
||||
Name string `json:"name"`
|
||||
Panel string `json:"panel"`
|
||||
Version string `json:"version"`
|
||||
Log string `json:"log"`
|
||||
} `json:"channels"`
|
||||
Installed bool `json:"installed"`
|
||||
InstalledChannel string `json:"installed_channel"`
|
||||
|
||||
@@ -45,7 +45,7 @@ const handleSubmit = () => {
|
||||
const handleChannelUpdate = (value: string) => {
|
||||
const channel = info.value.channels.find((channel) => channel.slug === value)
|
||||
if (channel) {
|
||||
model.value.version = channel.subs[0].version
|
||||
model.value.version = channel.version
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,10 +14,6 @@ export interface Channel {
|
||||
slug: string
|
||||
name: string
|
||||
panel: string
|
||||
subs: Sub[]
|
||||
}
|
||||
|
||||
export interface Sub {
|
||||
log: string
|
||||
version: string
|
||||
log: string
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user