From 7e1351c5435e969525615a1ecdd45094caf18250 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Fri, 27 Jun 2025 16:47:01 +0800 Subject: [PATCH] fix: resolve code warnings and improve code quality (#9322) --- agent/app/service/app_install.go | 26 +++++++---------- agent/app/service/app_utils.go | 46 ++++++++++++------------------ agent/app/service/container.go | 38 ++++++++++++------------ agent/app/service/device_clean.go | 3 +- agent/app/service/image.go | 6 ++-- agent/app/service/runtime.go | 34 +++++++++++----------- agent/app/service/runtime_utils.go | 9 +++--- 7 files changed, 75 insertions(+), 87 deletions(-) diff --git a/agent/app/service/app_install.go b/agent/app/service/app_install.go index 137f2147d..823d4cb1b 100644 --- a/agent/app/service/app_install.go +++ b/agent/app/service/app_install.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "fmt" - "github.com/docker/docker/api/types/container" "math" "net/http" "os" @@ -15,28 +14,25 @@ import ( "strconv" "strings" - "github.com/1Panel-dev/1Panel/agent/utils/files" - "github.com/1Panel-dev/1Panel/agent/utils/req_helper" - "gopkg.in/yaml.v3" - - "github.com/1Panel-dev/1Panel/agent/utils/env" - "github.com/1Panel-dev/1Panel/agent/utils/nginx" - "github.com/joho/godotenv" - + "github.com/1Panel-dev/1Panel/agent/app/dto" "github.com/1Panel-dev/1Panel/agent/app/dto/request" "github.com/1Panel-dev/1Panel/agent/app/dto/response" - "github.com/1Panel-dev/1Panel/agent/buserr" - - "github.com/1Panel-dev/1Panel/agent/app/repo" - - "github.com/1Panel-dev/1Panel/agent/app/dto" "github.com/1Panel-dev/1Panel/agent/app/model" + "github.com/1Panel-dev/1Panel/agent/app/repo" + "github.com/1Panel-dev/1Panel/agent/buserr" "github.com/1Panel-dev/1Panel/agent/constant" "github.com/1Panel-dev/1Panel/agent/global" "github.com/1Panel-dev/1Panel/agent/utils/common" "github.com/1Panel-dev/1Panel/agent/utils/compose" "github.com/1Panel-dev/1Panel/agent/utils/docker" + "github.com/1Panel-dev/1Panel/agent/utils/env" + "github.com/1Panel-dev/1Panel/agent/utils/files" + "github.com/1Panel-dev/1Panel/agent/utils/nginx" + "github.com/1Panel-dev/1Panel/agent/utils/req_helper" + "github.com/docker/docker/api/types/container" + "github.com/joho/godotenv" "github.com/pkg/errors" + "gopkg.in/yaml.v3" ) type AppInstallService struct { @@ -124,7 +120,7 @@ func (a *AppInstallService) Page(req request.AppInstalledSearch) (int64, []respo } } - installDTOs, err := handleInstalled(installs, req.Update, req.Sync) + installDTOs, _ := handleInstalled(installs, req.Update, req.Sync) if req.Update { total = int64(len(installDTOs)) } diff --git a/agent/app/service/app_utils.go b/agent/app/service/app_utils.go index af1e5182c..ae46446f6 100644 --- a/agent/app/service/app_utils.go +++ b/agent/app/service/app_utils.go @@ -5,7 +5,6 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/compose-spec/compose-go/v2/types" "log" "math" "net/http" @@ -19,39 +18,33 @@ import ( "strings" "time" - "github.com/1Panel-dev/1Panel/agent/app/repo" - "github.com/1Panel-dev/1Panel/agent/utils/nginx" - "github.com/1Panel-dev/1Panel/agent/utils/nginx/parser" - "github.com/1Panel-dev/1Panel/agent/utils/xpack" - - "github.com/1Panel-dev/1Panel/agent/app/task" - - "github.com/1Panel-dev/1Panel/agent/utils/req_helper" - "github.com/docker/docker/api/types/container" - - "github.com/1Panel-dev/1Panel/agent/utils/cmd" - "github.com/1Panel-dev/1Panel/agent/app/api/v2/helper" - "github.com/1Panel-dev/1Panel/agent/app/dto/request" - "github.com/1Panel-dev/1Panel/agent/i18n" - "github.com/subosito/gotenv" - "gopkg.in/yaml.v3" - - "github.com/1Panel-dev/1Panel/agent/utils/env" - - "github.com/1Panel-dev/1Panel/agent/app/dto/response" - "github.com/1Panel-dev/1Panel/agent/buserr" - "github.com/1Panel-dev/1Panel/agent/app/dto" + "github.com/1Panel-dev/1Panel/agent/app/dto/request" + "github.com/1Panel-dev/1Panel/agent/app/dto/response" "github.com/1Panel-dev/1Panel/agent/app/model" + "github.com/1Panel-dev/1Panel/agent/app/repo" + "github.com/1Panel-dev/1Panel/agent/app/task" + "github.com/1Panel-dev/1Panel/agent/buserr" "github.com/1Panel-dev/1Panel/agent/constant" "github.com/1Panel-dev/1Panel/agent/global" + "github.com/1Panel-dev/1Panel/agent/i18n" + "github.com/1Panel-dev/1Panel/agent/utils/cmd" "github.com/1Panel-dev/1Panel/agent/utils/common" "github.com/1Panel-dev/1Panel/agent/utils/compose" "github.com/1Panel-dev/1Panel/agent/utils/docker" composeV2 "github.com/1Panel-dev/1Panel/agent/utils/docker" + "github.com/1Panel-dev/1Panel/agent/utils/env" "github.com/1Panel-dev/1Panel/agent/utils/files" + "github.com/1Panel-dev/1Panel/agent/utils/nginx" + "github.com/1Panel-dev/1Panel/agent/utils/nginx/parser" + "github.com/1Panel-dev/1Panel/agent/utils/req_helper" + "github.com/1Panel-dev/1Panel/agent/utils/xpack" + "github.com/compose-spec/compose-go/v2/types" + "github.com/docker/docker/api/types/container" "github.com/pkg/errors" + "github.com/subosito/gotenv" + "gopkg.in/yaml.v3" ) type DatabaseOp string @@ -617,7 +610,7 @@ func upgradeInstall(req request.AppInstallUpgrade) error { if err != nil { return err } - dockerCLi, err := docker.NewClient() + dockerCLi, _ := docker.NewClient() if req.PullImage { images, err := composeV2.GetDockerComposeImagesV2(content, []byte(detail.DockerCompose)) if err != nil { @@ -1802,10 +1795,7 @@ func ignoreUpdate(installed model.AppInstall) bool { return true } ignores, _ := appIgnoreUpgradeRepo.List(appDetailRepo.WithAppId(installed.AppId), appIgnoreUpgradeRepo.WithScope("all")) - if len(ignores) > 0 { - return true - } - return false + return len(ignores) > 0 } func RequestDownloadCallBack(downloadCallBackUrl string) { diff --git a/agent/app/service/container.go b/agent/app/service/container.go index 7a7e48c8c..7d9c93cbe 100644 --- a/agent/app/service/container.go +++ b/agent/app/service/container.go @@ -33,7 +33,7 @@ import ( "github.com/1Panel-dev/1Panel/agent/utils/cmd" "github.com/1Panel-dev/1Panel/agent/utils/common" "github.com/1Panel-dev/1Panel/agent/utils/docker" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/build" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/image" @@ -94,8 +94,8 @@ func NewIContainerService() IContainerService { func (u *ContainerService) Page(req dto.PageContainer) (int64, interface{}, error) { var ( - records []types.Container - list []types.Container + records []container.Summary + list []container.Summary ) client, err := docker.NewDockerClient() if err != nil { @@ -165,7 +165,7 @@ func (u *ContainerService) Page(req dto.PageContainer) (int64, interface{}, erro total, start, end := len(list), (req.Page-1)*req.PageSize, req.Page*req.PageSize if start > total { - records = make([]types.Container, 0) + records = make([]container.Summary, 0) } else { if end >= total { end = total @@ -307,7 +307,7 @@ func (u *ContainerService) ContainerListStats() ([]dto.ContainerListStats, error var wg sync.WaitGroup wg.Add(len(list)) for i := 0; i < len(list); i++ { - go func(item types.Container) { + go func(item container.Summary) { datas = append(datas, loadCpuAndMem(client, item.ID)) wg.Done() }(list[i]) @@ -466,7 +466,7 @@ func (u *ContainerService) Prune(req dto.ContainerPrune) (dto.ContainerPruneRepo report.DeletedNumber = len(rep.VolumesDeleted) report.SpaceReclaimed = int(rep.SpaceReclaimed) case "buildcache": - opts := types.BuildCachePruneOptions{} + opts := build.CachePruneOptions{} opts.All = true rep, err := client.BuildCachePrune(context.Background(), opts) if err != nil { @@ -1311,7 +1311,7 @@ func checkPortStats(ports []dto.PortHelper) (nat.PortMap, error) { return portMap, nil } -func loadConfigInfo(isCreate bool, req dto.ContainerOperate, oldContainer *types.ContainerJSON) (*container.Config, *container.HostConfig, *network.NetworkingConfig, error) { +func loadConfigInfo(isCreate bool, req dto.ContainerOperate, oldContainer *container.InspectResponse) (*container.Config, *container.HostConfig, *network.NetworkingConfig, error) { var config container.Config var hostConf container.HostConfig if !isCreate { @@ -1394,7 +1394,7 @@ func loadConfigInfo(isCreate bool, req dto.ContainerOperate, oldContainer *types return &config, &hostConf, &networkConf, nil } -func reCreateAfterUpdate(name string, client *client.Client, config *container.Config, hostConf *container.HostConfig, networkConf *types.NetworkSettings) { +func reCreateAfterUpdate(name string, client *client.Client, config *container.Config, hostConf *container.HostConfig, networkConf *container.NetworkSettings) { ctx := context.Background() var oldNetworkConf network.NetworkingConfig @@ -1416,7 +1416,7 @@ func reCreateAfterUpdate(name string, client *client.Client, config *container.C global.LOG.Info("recreate after container update successful") } -func loadVolumeBinds(binds []types.MountPoint) []dto.VolumeHelper { +func loadVolumeBinds(binds []container.MountPoint) []dto.VolumeHelper { var datas []dto.VolumeHelper for _, bind := range binds { var volumeItem dto.VolumeHelper @@ -1436,13 +1436,13 @@ func loadVolumeBinds(binds []types.MountPoint) []dto.VolumeHelper { return datas } -func loadPortByInspect(id string, client *client.Client) ([]types.Port, error) { - container, err := client.ContainerInspect(context.Background(), id) +func loadPortByInspect(id string, client *client.Client) ([]container.Port, error) { + containerItem, err := client.ContainerInspect(context.Background(), id) if err != nil { return nil, err } - var itemPorts []types.Port - for key, val := range container.ContainerJSONBase.HostConfig.PortBindings { + var itemPorts []container.Port + for key, val := range containerItem.ContainerJSONBase.HostConfig.PortBindings { if !strings.Contains(string(key), "/") { continue } @@ -1451,15 +1451,15 @@ func loadPortByInspect(id string, client *client.Client) ([]types.Port, error) { for _, itemVal := range val { publicPort, _ := strconv.ParseUint(itemVal.HostPort, 10, 16) - itemPorts = append(itemPorts, types.Port{PrivatePort: uint16(itemPort), Type: item[1], PublicPort: uint16(publicPort), IP: itemVal.HostIP}) + itemPorts = append(itemPorts, container.Port{PrivatePort: uint16(itemPort), Type: item[1], PublicPort: uint16(publicPort), IP: itemVal.HostIP}) } } return itemPorts, nil } -func transPortToStr(ports []types.Port) []string { +func transPortToStr(ports []container.Port) []string { var ( - ipv4Ports []types.Port - ipv6Ports []types.Port + ipv4Ports []container.Port + ipv6Ports []container.Port ) for _, port := range ports { if strings.Contains(port.IP, ":") { @@ -1472,7 +1472,7 @@ func transPortToStr(ports []types.Port) []string { list2 := simplifyPort(ipv6Ports) return append(list1, list2...) } -func simplifyPort(ports []types.Port) []string { +func simplifyPort(ports []container.Port) []string { var datas []string if len(ports) == 0 { return datas @@ -1568,7 +1568,7 @@ func loadComposeCount(client *client.Client) int { return len(composeMap) } -func loadContainerPortForInfo(itemPorts []types.Port) []dto.PortHelper { +func loadContainerPortForInfo(itemPorts []container.Port) []dto.PortHelper { var exposedPorts []dto.PortHelper samePortMap := make(map[string]dto.PortHelper) ports := transPortToStr(itemPorts) diff --git a/agent/app/service/device_clean.go b/agent/app/service/device_clean.go index ec236d293..1b542c0f5 100644 --- a/agent/app/service/device_clean.go +++ b/agent/app/service/device_clean.go @@ -13,6 +13,7 @@ import ( "github.com/1Panel-dev/1Panel/agent/constant" "github.com/1Panel-dev/1Panel/agent/utils/docker" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/build" "github.com/docker/docker/api/types/filters" "github.com/1Panel-dev/1Panel/agent/app/dto" @@ -663,7 +664,7 @@ func dropBuildCache() { if err != nil { global.LOG.Errorf("do not get docker client") } - opts := types.BuildCachePruneOptions{} + opts := build.CachePruneOptions{} opts.All = true _, err = client.BuildCachePrune(context.Background(), opts) if err != nil { diff --git a/agent/app/service/image.go b/agent/app/service/image.go index da71b0dd7..1cd42746a 100644 --- a/agent/app/service/image.go +++ b/agent/app/service/image.go @@ -22,7 +22,7 @@ import ( "github.com/1Panel-dev/1Panel/agent/global" "github.com/1Panel-dev/1Panel/agent/i18n" "github.com/1Panel-dev/1Panel/agent/utils/docker" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/build" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/registry" @@ -189,7 +189,7 @@ func (u *ImageService) ImageBuild(req dto.ImageBuild) error { return err } - opts := types.ImageBuildOptions{ + opts := build.ImageBuildOptions{ Dockerfile: fileName, Tags: []string{req.Name}, Remove: true, @@ -432,7 +432,7 @@ func formatFileSize(fileSize int64) (size string) { } } -func checkUsed(imageID string, containers []types.Container) bool { +func checkUsed(imageID string, containers []container.Summary) bool { for _, container := range containers { if container.ImageID == imageID { return true diff --git a/agent/app/service/runtime.go b/agent/app/service/runtime.go index 29c820763..95d0d9e7f 100644 --- a/agent/app/service/runtime.go +++ b/agent/app/service/runtime.go @@ -724,23 +724,24 @@ func (r *RuntimeService) InstallPHPExtension(req request.PHPExtensionInstallReq) return err } client, err := docker.NewClient() + if err != nil { + return err + } defer client.Close() - if err == nil { - oldImageID, err := client.GetImageIDByName(runtime.Image) - if err != nil { - return err - } - err = cmdMgr.RunBashCf("docker commit %s %s", runtime.ContainerName, runtime.Image) - if err != nil { - return err - } - newImageID, err := client.GetImageIDByName(runtime.Image) - if err == nil && newImageID != oldImageID { - if err := client.DeleteImage(oldImageID); err != nil { - t.Log(fmt.Sprintf("delete old image error %v", err)) - } else { - t.Log("delete old image success") - } + oldImageID, err := client.GetImageIDByName(runtime.Image) + if err != nil { + return err + } + err = cmdMgr.RunBashCf("docker commit %s %s", runtime.ContainerName, runtime.Image) + if err != nil { + return err + } + newImageID, err := client.GetImageIDByName(runtime.Image) + if err == nil && newImageID != oldImageID { + if err := client.DeleteImage(oldImageID); err != nil { + t.Log(fmt.Sprintf("delete old image error %v", err)) + } else { + t.Log("delete old image success") } } handlePHPDir(*runtime) @@ -893,7 +894,6 @@ func (r *RuntimeService) UpdatePHPConfig(req request.PHPConfigUpdate) (err error pattern := "^" + regexp.QuoteMeta("disable_functions") + "\\s*=\\s*.*$" if matched, _ := regexp.MatchString(pattern, line); matched { lines[i] = "disable_functions" + " = " + strings.Join(req.DisableFunctions, ",") - break } case "upload_max_filesize": pattern := "^" + regexp.QuoteMeta("post_max_size") + "\\s*=\\s*.*$" diff --git a/agent/app/service/runtime_utils.go b/agent/app/service/runtime_utils.go index b4302377f..c8ebe18eb 100644 --- a/agent/app/service/runtime_utils.go +++ b/agent/app/service/runtime_utils.go @@ -6,7 +6,6 @@ import ( "context" "encoding/json" "fmt" - cmd2 "github.com/1Panel-dev/1Panel/agent/utils/cmd" "io" "os" "os/exec" @@ -17,6 +16,8 @@ import ( "strings" "time" + cmd2 "github.com/1Panel-dev/1Panel/agent/utils/cmd" + "github.com/1Panel-dev/1Panel/agent/i18n" "github.com/1Panel-dev/1Panel/agent/utils/common" @@ -582,7 +583,7 @@ func handleCompose(env gotenv.Env, composeContent []byte, create request.Runtime serviceName = name serviceValue = service.(map[string]interface{}) delete(serviceValue, "ports") - if create.ExposedPorts != nil && len(create.ExposedPorts) > 0 { + if len(create.ExposedPorts) > 0 { var ports []interface{} for i, port := range create.ExposedPorts { containerPortStr := fmt.Sprintf("CONTAINER_PORT_%d", i) @@ -596,12 +597,12 @@ func handleCompose(env gotenv.Env, composeContent []byte, create request.Runtime create.Params[hostIPStr] = port.HostIP } if create.Type == constant.RuntimePHP { - ports = append(ports, fmt.Sprintf("127.0.0.1:${PANEL_APP_PORT_HTTP}:9000")) + ports = append(ports, "127.0.0.1:${PANEL_APP_PORT_HTTP}:9000") } serviceValue["ports"] = ports } else { if create.Type == constant.RuntimePHP { - serviceValue["ports"] = []interface{}{fmt.Sprintf("127.0.0.1:${PANEL_APP_PORT_HTTP}:9000")} + serviceValue["ports"] = []interface{}{"127.0.0.1:${PANEL_APP_PORT_HTTP}:9000"} } } var environments []interface{}