Documentation
¶
Index ¶
- Variables
- type AuthController
- func (ac *AuthController) ChangePassword(c *gin.Context)
- func (ac *AuthController) CreateUser(c *gin.Context)
- func (ac *AuthController) DeleteUser(c *gin.Context)
- func (ac *AuthController) GetCurrentUser(c *gin.Context)
- func (ac *AuthController) GetUserByID(c *gin.Context)
- func (ac *AuthController) ListUsers(c *gin.Context)
- func (ac *AuthController) Login(c *gin.Context)
- func (ac *AuthController) Logout(c *gin.Context)
- func (ac *AuthController) Refresh(c *gin.Context)
- func (ac *AuthController) Register(c *gin.Context)
- func (ac *AuthController) UpdateCurrentUser(c *gin.Context)
- func (ac *AuthController) UpdateUser(c *gin.Context)
- type ExecController
- func (ctrl *ExecController) CreateExec(c *gin.Context)
- func (ctrl *ExecController) InspectExec(c *gin.Context)
- func (ctrl *ExecController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
- func (ctrl *ExecController) ResizeExec(c *gin.Context)
- func (ctrl *ExecController) StartExec(c *gin.Context)
- func (ctrl *ExecController) StartExecWebsocket(c *gin.Context)
- type FileController
- func (ctrl *FileController) ArchiveFiles(c *gin.Context)
- func (ctrl *FileController) DownloadFile(c *gin.Context)
- func (ctrl *FileController) EditFile(c *gin.Context)
- func (ctrl *FileController) ExtractArchive(c *gin.Context)
- func (ctrl *FileController) ListFiles(c *gin.Context)
- func (ctrl *FileController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
- func (ctrl *FileController) RemoveFile(c *gin.Context)
- func (ctrl *FileController) TailFile(c *gin.Context)
- func (ctrl *FileController) UploadFile(c *gin.Context)
- type NetworkController
- func (ctrl *NetworkController) ConnectContainer(c *gin.Context)
- func (ctrl *NetworkController) CreateNetwork(c *gin.Context)
- func (ctrl *NetworkController) DeleteNetwork(c *gin.Context)
- func (ctrl *NetworkController) DisconnectContainer(c *gin.Context)
- func (ctrl *NetworkController) GetNetwork(c *gin.Context)
- func (ctrl *NetworkController) ListNetworks(c *gin.Context)
- func (ctrl *NetworkController) PruneNetworks(c *gin.Context)
- func (ctrl *NetworkController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
- type Server
- func (s *Server) DecrementWaitGroup()
- func (s *Server) GetAuthMiddleware() *middleware.AuthMiddleware
- func (s *Server) GetAuthService() auth.Service
- func (s *Server) GetConfig() *config.Config
- func (s *Server) GetDB() database.Database
- func (s *Server) GetDockerManager() docker.Manager
- func (s *Server) GetLogger() *logrus.Logger
- func (s *Server) IncrementWaitGroup()
- func (s *Server) RegisterRoutes() error
- func (s *Server) Router() *gin.Engine
- func (s *Server) Shutdown()
- func (s *Server) Start() error
- func (s *Server) StartTLS() error
- type ServerConfig
- type VolumeController
- func (ctrl *VolumeController) BackupVolume(c *gin.Context)
- func (ctrl *VolumeController) CreateVolume(c *gin.Context)
- func (ctrl *VolumeController) DeleteVolume(c *gin.Context)
- func (ctrl *VolumeController) GetVolume(c *gin.Context)
- func (ctrl *VolumeController) InspectVolume(c *gin.Context)
- func (ctrl *VolumeController) ListVolumes(c *gin.Context)
- func (ctrl *VolumeController) PruneVolumes(c *gin.Context)
- func (ctrl *VolumeController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
- func (ctrl *VolumeController) RestoreVolume(c *gin.Context)
- func (ctrl *VolumeController) UpdateVolumePermissions(c *gin.Context)
Constants ¶
This section is empty.
Variables ¶
var WebsocketUpgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return true }, }
WebsocketUpgrader defines the websocket upgrader settings
Functions ¶
This section is empty.
Types ¶
type AuthController ¶
type AuthController struct {
// contains filtered or unexported fields
}
AuthController handles authentication-related requests
func NewAuthController ¶
func NewAuthController( authService auth.Service, userRepo repositories.UserRepository, logger *logrus.Logger, tokenExpiry time.Duration, refreshExpiry time.Duration, ) *AuthController
NewAuthController creates a new AuthController
func (*AuthController) ChangePassword ¶
func (ac *AuthController) ChangePassword(c *gin.Context)
ChangePassword godoc @Summary Change current user password @Description Allows the authenticated user to change their own password. @Tags User @Accept json @Produce json @Security BearerAuth @Param passwords body models.ChangePasswordRequest true "Password change details" @Success 204 "Password successfully changed" @Failure 400 {object} models.ErrorResponse "Invalid input" @Failure 401 {object} models.ErrorResponse "Authentication required or incorrect current password" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /user/password [put]
func (*AuthController) CreateUser ¶
func (ac *AuthController) CreateUser(c *gin.Context)
CreateUser godoc @Summary Create a new user (Admin) @Description Creates a new user with specified details. Only admins can perform this action. @Tags Admin @Accept json @Produce json @Security BearerAuth @Param user body models.AdminCreateUserRequest true "New user details" @Success 201 {object} models.SuccessResponse{data=models.UserResponse} "Successfully created user" @Failure 400 {object} models.ErrorResponse "Invalid input" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 403 {object} models.ErrorResponse "Admin privileges required" @Failure 409 {object} models.ErrorResponse "Email already in use" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /admin/users [post]
func (*AuthController) DeleteUser ¶
func (ac *AuthController) DeleteUser(c *gin.Context)
DeleteUser godoc @Summary Delete a user (Admin) @Description Deletes a user by ID. Only admins can perform this action. @Tags Admin @Produce json @Security BearerAuth @Param id path int true "User ID" example(1) @Success 204 "Successfully deleted user" @Failure 400 {object} models.ErrorResponse "Invalid user ID" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 403 {object} models.ErrorResponse "Admin privileges required or cannot delete self" @Failure 404 {object} models.ErrorResponse "User not found" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /admin/users/{id} [delete]
func (*AuthController) GetCurrentUser ¶
func (ac *AuthController) GetCurrentUser(c *gin.Context)
GetCurrentUser godoc @Summary Get current user details @Description Retrieves the details of the currently authenticated user. @Tags User @Produce json @Security BearerAuth @Success 200 {object} models.SuccessResponse{data=models.UserResponse} "Successfully retrieved user details" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /user/me [get]
func (*AuthController) GetUserByID ¶
func (ac *AuthController) GetUserByID(c *gin.Context)
GetUserByID godoc @Summary Get user by ID (Admin) @Description Retrieves details for a specific user by their ID. Only admins can perform this action. @Tags Admin @Produce json @Security BearerAuth @Param id path int true "User ID" example(1) @Success 200 {object} models.SuccessResponse{data=models.UserResponse} "Successfully retrieved user details" @Failure 400 {object} models.ErrorResponse "Invalid user ID" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 403 {object} models.ErrorResponse "Admin privileges required" @Failure 404 {object} models.ErrorResponse "User not found" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /admin/users/{id} [get]
func (*AuthController) ListUsers ¶
func (ac *AuthController) ListUsers(c *gin.Context)
ListUsers godoc @Summary List all users (Admin) @Description Retrieves a paginated list of all users. Only admins can perform this action. @Tags Admin @Produce json @Security BearerAuth @Param page query int false "Page number" default(1) @Param page_size query int false "Number of items per page" default(10) minimum(1) maximum(100) @Param sort_by query string false "Field to sort by (e.g., email, name, created_at)" default(id) @Param sort_order query string false "Sort order (asc, desc)" default(asc) Enums(asc, desc) @Param search query string false "Search term for email or name" @Param active query bool false "Filter by active status" @Success 200 {object} models.SuccessResponse{data=models.UserListResponse} "Successfully retrieved users" // Use UserListResponse @Failure 400 {object} models.ErrorResponse "Invalid query parameters" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 403 {object} models.ErrorResponse "Admin privileges required" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /admin/users [get]
func (*AuthController) Login ¶
func (ac *AuthController) Login(c *gin.Context)
Login godoc @Summary Log in a user @Description Logs in a user with email and password, returning JWT tokens. @Tags Auth @Accept json @Produce json @Param credentials body models.LoginRequest true "User login credentials" @Success 200 {object} models.SuccessResponse{data=models.TokenResponse} "Successfully logged in" @Failure 400 {object} models.ErrorResponse "Invalid input" @Failure 401 {object} models.ErrorResponse "Invalid credentials" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /auth/login [post]
func (*AuthController) Logout ¶
func (ac *AuthController) Logout(c *gin.Context)
Logout godoc @Summary Log out a user @Description Invalidates the current access token. @Tags Auth @Security BearerAuth @Success 204 "Successfully logged out" @Failure 400 {object} models.ErrorResponse "Invalid authorization header" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /auth/logout [post]
func (*AuthController) Refresh ¶
func (ac *AuthController) Refresh(c *gin.Context)
Refresh godoc @Summary Refresh JWT tokens @Description Refreshes the access and refresh tokens using a valid refresh token. @Tags Auth @Accept json @Produce json @Param token body models.RefreshTokenRequest true "Refresh token details" @Success 200 {object} models.SuccessResponse{data=models.TokenResponse} "Successfully refreshed tokens" @Failure 400 {object} models.ErrorResponse "Invalid input" @Failure 401 {object} models.ErrorResponse "Invalid or expired refresh token" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /auth/refresh [post]
func (*AuthController) Register ¶
func (ac *AuthController) Register(c *gin.Context)
Register godoc @Summary Register a new user @Description Registers a new user. The first user registered automatically gets the admin role. @Tags Auth @Accept json @Produce json @Param user body models.RegisterRequest true "User registration details" @Success 201 {object} models.SuccessResponse{data=models.TokenResponse} "Successfully registered and logged in" @Failure 400 {object} models.ErrorResponse "Invalid input" @Failure 409 {object} models.ErrorResponse "Email already in use" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /auth/register [post]
func (*AuthController) UpdateCurrentUser ¶
func (ac *AuthController) UpdateCurrentUser(c *gin.Context)
UpdateCurrentUser godoc @Summary Update current user details @Description Updates the name and/or email of the currently authenticated user. Changing email requires re-verification. @Tags User @Accept json @Produce json @Security BearerAuth @Param user body object{name=string,email=string} true "User update details" example({"name": "Updated Name", "email": "updated.email@example.com"}) @Success 200 {object} models.SuccessResponse{data=models.UserResponse} "Successfully updated user details" @Failure 400 {object} models.ErrorResponse "Invalid input" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 409 {object} models.ErrorResponse "Email already in use" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /user/me [put]
func (*AuthController) UpdateUser ¶
func (ac *AuthController) UpdateUser(c *gin.Context)
UpdateUser godoc @Summary Update a user (Admin) @Description Updates a user's details by ID. Only admins can perform this action. @Tags Admin @Accept json @Produce json @Security BearerAuth @Param id path int true "User ID" example(1) @Param user body models.AdminUpdateUserRequest true "User update details (fields are optional)" @Success 200 {object} models.SuccessResponse{data=models.UserResponse} "Successfully updated user" @Failure 400 {object} models.ErrorResponse "Invalid input or user ID" @Failure 401 {object} models.ErrorResponse "Authentication required" @Failure 403 {object} models.ErrorResponse "Admin privileges required" @Failure 404 {object} models.ErrorResponse "User not found" @Failure 409 {object} models.ErrorResponse "Email already in use" @Failure 500 {object} models.ErrorResponse "Internal server error" @Router /admin/users/{id} [put]
type ExecController ¶
type ExecController struct {
// contains filtered or unexported fields
}
ExecController handles container exec-related API requests
func NewExecController ¶
func NewExecController( dockerClient docker.Manager, logger *logrus.Logger, ) *ExecController
NewExecController creates a new exec controller
func (*ExecController) CreateExec ¶
func (ctrl *ExecController) CreateExec(c *gin.Context)
CreateExec handles POST /exec/create
func (*ExecController) InspectExec ¶
func (ctrl *ExecController) InspectExec(c *gin.Context)
InspectExec handles GET /exec/:id
func (*ExecController) RegisterRoutes ¶
func (ctrl *ExecController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
RegisterRoutes registers the exec API routes
func (*ExecController) ResizeExec ¶
func (ctrl *ExecController) ResizeExec(c *gin.Context)
ResizeExec handles POST /exec/resize
func (*ExecController) StartExec ¶
func (ctrl *ExecController) StartExec(c *gin.Context)
StartExec handles POST /exec/start
func (*ExecController) StartExecWebsocket ¶
func (ctrl *ExecController) StartExecWebsocket(c *gin.Context)
StartExecWebsocket handles POST /exec/start/ws
type FileController ¶
type FileController struct {
// contains filtered or unexported fields
}
FileController handles container file-related API requests
func NewFileController ¶
func NewFileController( dockerClient client.APIClient, tempDir string, logger *logrus.Logger, ) *FileController
NewFileController creates a new file controller
func (*FileController) ArchiveFiles ¶
func (ctrl *FileController) ArchiveFiles(c *gin.Context)
ArchiveFiles handles GET /containers/:id/files/archive
func (*FileController) DownloadFile ¶
func (ctrl *FileController) DownloadFile(c *gin.Context)
DownloadFile handles GET /containers/:id/files/download
func (*FileController) EditFile ¶
func (ctrl *FileController) EditFile(c *gin.Context)
EditFile handles PUT /containers/:id/files/edit
func (*FileController) ExtractArchive ¶
func (ctrl *FileController) ExtractArchive(c *gin.Context)
ExtractArchive handles POST /containers/:id/files/extract
func (*FileController) ListFiles ¶
func (ctrl *FileController) ListFiles(c *gin.Context)
ListFiles handles GET /containers/:id/files
func (*FileController) RegisterRoutes ¶
func (ctrl *FileController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
RegisterRoutes registers the file API routes
func (*FileController) RemoveFile ¶
func (ctrl *FileController) RemoveFile(c *gin.Context)
RemoveFile handles DELETE /containers/:id/files/remove
func (*FileController) TailFile ¶
func (ctrl *FileController) TailFile(c *gin.Context)
TailFile handles GET /containers/:id/files/tail
func (*FileController) UploadFile ¶
func (ctrl *FileController) UploadFile(c *gin.Context)
UploadFile handles POST /containers/:id/files/upload
type NetworkController ¶
type NetworkController struct {
// contains filtered or unexported fields
}
NetworkController handles network-related API requests
func NewNetworkController ¶
func NewNetworkController( networkService network.Service, networkRepo repositories.NetworkRepository, dockerManager docker.Manager, logger *logrus.Logger, ) *NetworkController
NewNetworkController creates a new network controller
func (*NetworkController) ConnectContainer ¶
func (ctrl *NetworkController) ConnectContainer(c *gin.Context)
ConnectContainer handles POST /networks/:id/connect
func (*NetworkController) CreateNetwork ¶
func (ctrl *NetworkController) CreateNetwork(c *gin.Context)
CreateNetwork handles POST /networks
func (*NetworkController) DeleteNetwork ¶
func (ctrl *NetworkController) DeleteNetwork(c *gin.Context)
DeleteNetwork handles DELETE /networks/:id
func (*NetworkController) DisconnectContainer ¶
func (ctrl *NetworkController) DisconnectContainer(c *gin.Context)
DisconnectContainer handles POST /networks/:id/disconnect
func (*NetworkController) GetNetwork ¶
func (ctrl *NetworkController) GetNetwork(c *gin.Context)
GetNetwork handles GET /networks/:id
func (*NetworkController) ListNetworks ¶
func (ctrl *NetworkController) ListNetworks(c *gin.Context)
ListNetworks handles GET /networks
func (*NetworkController) PruneNetworks ¶
func (ctrl *NetworkController) PruneNetworks(c *gin.Context)
PruneNetworks handles POST /networks/prune
func (*NetworkController) RegisterRoutes ¶
func (ctrl *NetworkController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
RegisterRoutes registers the network API routes
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server represents the API server
func NewServer ¶
func NewServer(cfg *ServerConfig) (*Server, error)
NewServer creates a new API server
func (*Server) DecrementWaitGroup ¶
func (s *Server) DecrementWaitGroup()
DecrementWaitGroup decrements the shutdown wait group Called when an operation is complete
func (*Server) GetAuthMiddleware ¶
func (s *Server) GetAuthMiddleware() *middleware.AuthMiddleware
GetAuthMiddleware returns the authentication middleware
func (*Server) GetAuthService ¶
GetAuthService returns the authentication service
func (*Server) GetDockerManager ¶
GetDockerManager returns the Docker manager
func (*Server) IncrementWaitGroup ¶
func (s *Server) IncrementWaitGroup()
IncrementWaitGroup increments the shutdown wait group Used to track ongoing operations during shutdown
func (*Server) RegisterRoutes ¶
registerRoutes registers all API routes
type ServerConfig ¶
type ServerConfig struct {
Config *config.Config
Logger *logrus.Logger
DB database.Database // Use Database interface
AuthService auth.Service
DockerManager docker.Manager // Changed from DockerClient
}
ServerConfig contains the configuration for the API server
type VolumeController ¶
type VolumeController struct {
// contains filtered or unexported fields
}
VolumeController handles volume-related API requests
func NewVolumeController ¶
func NewVolumeController( volumeService volume.Service, dockerManager docker.Manager, logger *logrus.Logger, ) *VolumeController
NewVolumeController creates a new volume controller
func (*VolumeController) BackupVolume ¶
func (ctrl *VolumeController) BackupVolume(c *gin.Context)
BackupVolume handles GET /volumes/:id/backup
func (*VolumeController) CreateVolume ¶
func (ctrl *VolumeController) CreateVolume(c *gin.Context)
CreateVolume handles POST /volumes
func (*VolumeController) DeleteVolume ¶
func (ctrl *VolumeController) DeleteVolume(c *gin.Context)
DeleteVolume handles DELETE /volumes/:id
func (*VolumeController) GetVolume ¶
func (ctrl *VolumeController) GetVolume(c *gin.Context)
GetVolume handles GET /volumes/:id
func (*VolumeController) InspectVolume ¶
func (ctrl *VolumeController) InspectVolume(c *gin.Context)
InspectVolume handles POST /volumes/:id/inspect
func (*VolumeController) ListVolumes ¶
func (ctrl *VolumeController) ListVolumes(c *gin.Context)
ListVolumes handles GET /volumes
func (*VolumeController) PruneVolumes ¶
func (ctrl *VolumeController) PruneVolumes(c *gin.Context)
PruneVolumes handles POST /volumes/prune
func (*VolumeController) RegisterRoutes ¶
func (ctrl *VolumeController) RegisterRoutes(router *gin.RouterGroup, authMW *middleware.AuthMiddleware)
RegisterRoutes registers the volume API routes
func (*VolumeController) RestoreVolume ¶
func (ctrl *VolumeController) RestoreVolume(c *gin.Context)
RestoreVolume handles POST /volumes/:id/restore
func (*VolumeController) UpdateVolumePermissions ¶
func (ctrl *VolumeController) UpdateVolumePermissions(c *gin.Context)
UpdateVolumePermissions handles POST /volumes/:id/permissions