fixed bugs

This commit is contained in:
2025-03-19 19:56:58 +02:00
parent 1488d7db16
commit 32d64f3637
14 changed files with 173 additions and 98 deletions

View File

@@ -4,12 +4,12 @@ import (
"context"
"encoding/json"
"fmt"
"maps"
"net"
instancemanager "git.acooldomain.co/server-manager/backend/instancemanager"
"git.acooldomain.co/server-manager/backend/models"
"github.com/buildkite/shellwords"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/image"
"github.com/docker/docker/api/types/mount"
@@ -22,11 +22,11 @@ import (
type InstanceManager struct {
instancemanager.InstanceManager
client client.Client
client *client.Client
config models.DockerInstanceManagerConfig
}
func (self *InstanceManager) containerList(ctx context.Context, labels ContainerLabels, all bool) ([]types.Container, error) {
func (self *InstanceManager) containerList(ctx context.Context, labels ContainerLabels, all bool) ([]container.Summary, error) {
filters, err := convertLabelsToFilter(labels)
if err != nil {
return nil, err
@@ -61,12 +61,17 @@ func (self *InstanceManager) getVolume(ctx context.Context, serverId string) (*v
// General
// Read Only
func (self *InstanceManager) GetImage(ctx context.Context, imageId string) (*instancemanager.Image, error) {
imageInspect, _, err := self.client.ImageInspectWithRaw(ctx, imageId)
imageInspect, err := self.client.ImageInspect(ctx, imageId)
if err != nil {
return nil, err
}
if imageInspect.Config.Labels["type"] != "game" {
imageLabels, err := convertImageLabelsToStruct(imageInspect.Config.Labels)
if err != nil {
return nil, err
}
if imageLabels.Type != Game {
return nil, fmt.Errorf("Image not found")
}
@@ -89,7 +94,7 @@ func (self *InstanceManager) ListImages(ctx context.Context) ([]instancemanager.
images := make([]instancemanager.Image, len(rawImages))
for i, rawImage := range rawImages {
imageInspect, _, err := self.client.ImageInspectWithRaw(ctx, rawImage.ID)
imageInspect, err := self.client.ImageInspect(ctx, rawImage.ID)
if err != nil {
return nil, err
}
@@ -502,9 +507,7 @@ func (self *InstanceManager) StartFileBrowser(ctx context.Context, serverId stri
return nil, err
}
for key, value := range *containerConfig {
browserLabels[key] = value
}
maps.Copy(browserLabels, *containerConfig)
command := self.config.FileBrowser.Command
@@ -579,6 +582,6 @@ func NewInstanceManager(config models.DockerInstanceManagerConfig) (*InstanceMan
return &InstanceManager{
config: config,
client: *apiClient,
client: apiClient,
}, nil
}

View File

@@ -8,8 +8,9 @@ import (
instancemanager "git.acooldomain.co/server-manager/backend/instancemanager"
"git.acooldomain.co/server-manager/backend/models"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/api/types/image"
"github.com/docker/go-connections/nat"
)
@@ -54,15 +55,15 @@ func stringifyMap(m map[string]any) map[string]string {
return stringifiedMap
}
func convertContainerPortsToPorts(ports []types.Port) []models.Port {
func convertContainerPortsToPorts(ports []container.Port) []models.Port {
containerPorts := make([]models.Port, len(ports))
logger := log.Default()
for i, port := range ports {
var portProtocol models.PortProtocol
switch port.Type {
case "TCP":
case "tcp":
portProtocol = models.TCP
case "UDP":
case "udp":
portProtocol = models.UDP
default:
logger.Println(fmt.Sprintf("Unkown Port Protocol %s assuming TCP", port.Type))
@@ -90,10 +91,11 @@ func convertImageStringToModelsImage(image string) models.Image {
}
}
func convertImageInspectToInstanceImage(image types.ImageInspect) instancemanager.Image {
func convertImageInspectToInstanceImage(image image.InspectResponse) instancemanager.Image {
modelsImage := convertImageStringToModelsImage(image.RepoTags[0])
ports := convertImagePortsToPorts(image.Config.ExposedPorts)
fmt.Printf("image: %#v\nconfig: %#v\nports: %#v\n", image, image.Config, ports)
return instancemanager.Image{
Registry: modelsImage.Registry,
@@ -112,7 +114,7 @@ func convertContainerLabelsToStruct(labels map[string]string) (*ContainerLabels,
return nil, err
}
err = json.Unmarshal(rawLabels, &labels)
err = json.Unmarshal(rawLabels, &containerLabels)
if err != nil {
return nil, err
@@ -129,7 +131,7 @@ func convertVolumeLabelsToStruct(labels map[string]string) (*VolumeLabels, error
return nil, err
}
err = json.Unmarshal(rawLabels, &labels)
err = json.Unmarshal(rawLabels, &volumeLabels)
if err != nil {
return nil, err
@@ -146,7 +148,7 @@ func convertImageLabelsToStruct(labels map[string]string) (*ImageLabels, error)
return nil, err
}
err = json.Unmarshal(rawLabels, &labels)
err = json.Unmarshal(rawLabels, &imageLabels)
if err != nil {
return nil, err
@@ -161,9 +163,9 @@ func convertImagePortsToPorts(rawPorts nat.PortSet) []instancemanager.Port {
portNumber := imagePort.Int()
var protocol models.PortProtocol
switch imagePort.Proto() {
case "TCP":
case "tcp":
protocol = models.TCP
case "UDP":
case "udp":
protocol = models.UDP
default:
log.Default().Println(fmt.Sprintf("Unknown port protocol %s using TCP", imagePort.Proto()))