refactored

This commit is contained in:
2025-03-18 23:27:27 +02:00
parent 64f59ea232
commit 6c1f34c682
45 changed files with 398 additions and 413 deletions

View File

@@ -1,16 +1,13 @@
package servers
import (
"git.acooldomain.co/server-manager/backend-kubernetes-go/auth"
"git.acooldomain.co/server-manager/backend-kubernetes-go/db_handler/mongo"
"git.acooldomain.co/server-manager/backend-kubernetes-go/dbhandler"
instancemanager "git.acooldomain.co/server-manager/backend-kubernetes-go/instance_manager"
"git.acooldomain.co/server-manager/backend-kubernetes-go/instance_manager/docker"
"git.acooldomain.co/server-manager/backend-kubernetes-go/models"
"git.acooldomain.co/server-manager/backend/auth"
"git.acooldomain.co/server-manager/backend/factories"
"git.acooldomain.co/server-manager/backend/models"
"github.com/gin-gonic/gin"
)
func (con Connection) GetBrowsers(ctx *gin.Context) {
func (con ServersApi) GetBrowsers(ctx *gin.Context) {
fileBrowsers, err := con.InstanceManager.ListFileBrowsers(ctx)
if err != nil {
@@ -20,7 +17,7 @@ func (con Connection) GetBrowsers(ctx *gin.Context) {
ctx.JSON(200, fileBrowsers)
}
func (con Connection) StopBrowser(ctx *gin.Context) {
func (con ServersApi) StopBrowser(ctx *gin.Context) {
serverId := ctx.Param("server_id")
err := con.InstanceManager.StopFileBrowser(ctx, serverId)
if err != nil {
@@ -32,35 +29,22 @@ func (con Connection) StopBrowser(ctx *gin.Context) {
}
func LoadBrowsersGroup(group *gin.RouterGroup, config models.GlobalConfig) {
var instanceManager instancemanager.InstanceManager
var serversDbHandler dbhandler.ServersDbHandler
var serversAuthorizationHandler dbhandler.ServersAuthorizationDbHandler
var err error
if config.InstanceManager.Type == models.DOCKER {
instanceManager, err = docker.NewInstanceManager(config.InstanceManager.Docker)
if err != nil {
panic(err)
}
serversDbHandler, err := factories.GetServersDbHandler(config.ServersDatabase)
if err != nil {
panic(err)
}
if config.ServersDatabase.Type == models.MONGO {
serversDbHandler, err = mongo.NewServersDbHandler(*config.ServersDatabase.Mongo)
if err != nil {
panic(err)
}
serversAuthorizationHandler, err := factories.GetServersAuthorizationDbHandler(config.ServersAuthorizationDatabase)
if err != nil {
panic(err)
}
if config.ServersAuthorizationDatabase.Type == models.MONGO {
serversAuthorizationHandler, err = mongo.NewAuthorizationHandler(*config.ServersAuthorizationDatabase.Mongo)
if err != nil {
panic(err)
}
instanceManager, err := factories.GetInstanceManager(config.InstanceManager)
if err != nil {
panic(err)
}
connection := Connection{
connection := ServersApi{
ServersDbHandler: serversDbHandler,
ServerAuthorization: serversAuthorizationHandler,
InstanceManager: instanceManager,

View File

@@ -1,4 +1,4 @@
module git.acooldomain.co/server-manager/backend-kubernetes-go/servers
module git.acooldomain.co/server-manager/backend/servers
go 1.22.0

View File

@@ -3,12 +3,10 @@ package servers
import (
"fmt"
"git.acooldomain.co/server-manager/backend-kubernetes-go/auth"
"git.acooldomain.co/server-manager/backend-kubernetes-go/db_handler/mongo"
"git.acooldomain.co/server-manager/backend-kubernetes-go/dbhandler"
instancemanager "git.acooldomain.co/server-manager/backend-kubernetes-go/instance_manager"
"git.acooldomain.co/server-manager/backend-kubernetes-go/instance_manager/docker"
"git.acooldomain.co/server-manager/backend-kubernetes-go/models"
"git.acooldomain.co/server-manager/backend/auth"
"git.acooldomain.co/server-manager/backend/factories"
instancemanager "git.acooldomain.co/server-manager/backend/instancemanager"
"git.acooldomain.co/server-manager/backend/models"
"github.com/gin-gonic/gin"
)
@@ -29,7 +27,7 @@ func convertImageToImageData(instanceImage instancemanager.Image) *ImageData {
DisplayName: fmt.Sprintf("%s %s", instanceImage.Registry, instanceImage.Tag),
}
}
func (con Connection) GetImages(ctx *gin.Context) {
func (con ServersApi) GetImages(ctx *gin.Context) {
images, err := con.InstanceManager.ListImages(ctx)
if err != nil {
ctx.AbortWithError(500, err)
@@ -51,35 +49,22 @@ func (con Connection) GetImages(ctx *gin.Context) {
}
func LoadeImagesGroup(group *gin.RouterGroup, config models.GlobalConfig) {
var instanceManager instancemanager.InstanceManager
var serversDbHandler dbhandler.ServersDbHandler
var serversAuthorizationHandler dbhandler.ServersAuthorizationDbHandler
var err error
if config.InstanceManager.Type == models.DOCKER {
instanceManager, err = docker.NewInstanceManager(config.InstanceManager.Docker)
if err != nil {
panic(err)
}
instanceManager, err := factories.GetInstanceManager(config.InstanceManager)
if err != nil {
panic(err)
}
if config.ServersDatabase.Type == models.MONGO {
serversDbHandler, err = mongo.NewServersDbHandler(*config.ServersDatabase.Mongo)
if err != nil {
panic(err)
}
serversDbHandler, err := factories.GetServersDbHandler(config.ServersDatabase)
if err != nil {
panic(err)
}
if config.ServersAuthorizationDatabase.Type == models.MONGO {
serversAuthorizationHandler, err = mongo.NewAuthorizationHandler(*config.ServersAuthorizationDatabase.Mongo)
if err != nil {
panic(err)
}
serversAuthorizationHandler, err := factories.GetServersAuthorizationDbHandler(config.ServersAuthorizationDatabase)
if err != nil {
panic(err)
}
connection := Connection{
connection := ServersApi{
ServersDbHandler: serversDbHandler,
ServerAuthorization: serversAuthorizationHandler,
InstanceManager: instanceManager,

View File

@@ -10,12 +10,11 @@ import (
"strings"
"time"
"git.acooldomain.co/server-manager/backend-kubernetes-go/auth"
"git.acooldomain.co/server-manager/backend-kubernetes-go/db_handler/mongo"
"git.acooldomain.co/server-manager/backend-kubernetes-go/dbhandler"
instancemanager "git.acooldomain.co/server-manager/backend-kubernetes-go/instance_manager"
"git.acooldomain.co/server-manager/backend-kubernetes-go/instance_manager/docker"
"git.acooldomain.co/server-manager/backend-kubernetes-go/models"
"git.acooldomain.co/server-manager/backend/auth"
"git.acooldomain.co/server-manager/backend/dbhandler"
"git.acooldomain.co/server-manager/backend/factories"
instancemanager "git.acooldomain.co/server-manager/backend/instancemanager"
"git.acooldomain.co/server-manager/backend/models"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
)
@@ -28,7 +27,7 @@ var upgrader = websocket.Upgrader{
},
}
type Connection struct {
type ServersApi struct {
ServersDbHandler dbhandler.ServersDbHandler
InstanceManager instancemanager.InstanceManager
ServerAuthorization dbhandler.ServersAuthorizationDbHandler
@@ -65,7 +64,7 @@ type CreateServerRequest struct {
Nickname string `json:"Nickname"`
}
func (con Connection) ServerAuthorized(permissions models.Permission) func(*gin.Context) {
func (con ServersApi) ServerAuthorized(permissions models.Permission) func(*gin.Context) {
return func(ctx *gin.Context) {
claimsPointer, exists := ctx.Get("claims")
if !exists {
@@ -96,7 +95,7 @@ func (con Connection) ServerAuthorized(permissions models.Permission) func(*gin.
}
}
func (con Connection) CreateServer(ctx *gin.Context) {
func (con ServersApi) CreateServer(ctx *gin.Context) {
claims, exists := ctx.Get("claims")
if !exists {
ctx.AbortWithStatus(500)
@@ -157,7 +156,7 @@ type StartServerRequest struct {
Ports []PortMappingRequest `json:"Ports"`
}
func (con Connection) StartServer(ctx *gin.Context) {
func (con ServersApi) StartServer(ctx *gin.Context) {
serverId := ctx.Param("server_id")
var request StartServerRequest
@@ -194,7 +193,7 @@ func (con Connection) StartServer(ctx *gin.Context) {
ctx.JSON(200, instanceServer.Id)
}
func (con Connection) GetServers(ctx *gin.Context) {
func (con ServersApi) GetServers(ctx *gin.Context) {
instanceServers, err := con.InstanceManager.ListServers(ctx)
if err != nil {
ctx.AbortWithError(500, err)
@@ -246,7 +245,7 @@ func (con Connection) GetServers(ctx *gin.Context) {
ctx.JSON(200, servers)
}
func (con Connection) StopServer(ctx *gin.Context) {
func (con ServersApi) StopServer(ctx *gin.Context) {
serverId := ctx.Param("server_id")
err := con.InstanceManager.StopServer(ctx, serverId)
if err != nil {
@@ -257,7 +256,7 @@ func (con Connection) StopServer(ctx *gin.Context) {
ctx.Status(200)
}
func (con Connection) DeleteServer(ctx *gin.Context) {
func (con ServersApi) DeleteServer(ctx *gin.Context) {
serverId := ctx.Param("server_id")
err := con.InstanceManager.DeleteServer(ctx, serverId)
@@ -279,7 +278,7 @@ type RunCommandRequest struct {
Command string `json:"Command"`
}
func (con Connection) RunCommand(ctx *gin.Context) {
func (con ServersApi) RunCommand(ctx *gin.Context) {
var request RunCommandRequest
err := json.NewDecoder(ctx.Request.Body).Decode(&request)
if err != nil {
@@ -312,7 +311,7 @@ type Commands struct {
Arguments string `json:"Arguments"`
}
func (con Connection) AttachServer(ctx *gin.Context) {
func (con ServersApi) AttachServer(ctx *gin.Context) {
serverId := ctx.Param("server_id")
stop := false
var err error
@@ -355,13 +354,10 @@ func (con Connection) AttachServer(ctx *gin.Context) {
hijackedPointer, err := con.InstanceManager.InteractiveTerminal(ctx, serverId)
if err != nil {
ctx.AbortWithError(500, err)
stop = true
return
}
hijacked = *hijackedPointer
if err != nil {
stop = true
break
}
}
if count > 0 {
containerRead <- string(data[:count])
@@ -444,7 +440,7 @@ type UpdateServerRequest struct {
UserPermissions map[string]models.Permission `json:"UserPermissions"`
}
func (con Connection) UpdateServer(ctx *gin.Context) {
func (con ServersApi) UpdateServer(ctx *gin.Context) {
serverId := ctx.Param("server_id")
var request UpdateServerRequest
err := json.NewDecoder(ctx.Request.Body).Decode(&request)
@@ -478,7 +474,7 @@ func (con Connection) UpdateServer(ctx *gin.Context) {
}
func (con Connection) BrowseServer(ctx *gin.Context) {
func (con ServersApi) BrowseServer(ctx *gin.Context) {
serverId := ctx.Param("server_id")
browserInfo, err := con.InstanceManager.StartFileBrowser(ctx, serverId)
@@ -489,7 +485,7 @@ func (con Connection) BrowseServer(ctx *gin.Context) {
ctx.JSON(200, browserInfo.Url)
}
func (con Connection) GetServerUserPermissions(ctx *gin.Context) {
func (con ServersApi) GetServerUserPermissions(ctx *gin.Context) {
claims, exists := ctx.Get("claims")
if !exists {
ctx.AbortWithStatus(500)
@@ -516,7 +512,7 @@ type SetServerUserPermissionsRequest struct {
Permissions models.Permission
}
func (con Connection) SetServerUserPermissions(ctx *gin.Context) {
func (con ServersApi) SetServerUserPermissions(ctx *gin.Context) {
serverId := ctx.Param("server_id")
if serverId == "" {
ctx.AbortWithStatus(500)
@@ -541,36 +537,22 @@ func (con Connection) SetServerUserPermissions(ctx *gin.Context) {
}
func LoadGroup(group *gin.RouterGroup, config models.GlobalConfig) {
var instanceManager instancemanager.InstanceManager
var serversDbHandler dbhandler.ServersDbHandler
var serversAuthorizationHandler dbhandler.ServersAuthorizationDbHandler
var err error
if config.InstanceManager.Type == models.DOCKER {
instanceManager, err = docker.NewInstanceManager(config.InstanceManager.Docker)
if err != nil {
panic(err)
}
instanceManager, err := factories.GetInstanceManager(config.InstanceManager)
if err != nil {
panic(err)
}
if config.ServersDatabase.Type == models.MONGO {
serversDbHandler, err = mongo.NewServersDbHandler(*config.ServersDatabase.Mongo)
if err != nil {
panic(err)
}
serversDbHandler, err := factories.GetServersDbHandler(config.ServersDatabase)
if err != nil {
panic(err)
}
if config.ServersAuthorizationDatabase.Type == models.MONGO {
serversAuthorizationHandler, err = mongo.NewAuthorizationHandler(*config.ServersAuthorizationDatabase.Mongo)
if err != nil {
panic(err)
}
serversAuthorizationHandler, err := factories.GetServersAuthorizationDbHandler(config.ServersAuthorizationDatabase)
if err != nil {
panic(err)
}
connection := Connection{
connection := ServersApi{
ServersDbHandler: serversDbHandler,
ServerAuthorization: serversAuthorizationHandler,
InstanceManager: instanceManager,