Breaking changes for clean alpha releases: - JWT authentication with user-provided secrets (no more development defaults) - Registration token system for secure agent enrollment - Rate limiting with user-adjustable settings - Enhanced agent configuration with proxy support - Interactive server setup wizard (--setup flag) - Heartbeat architecture separation for better UX - Package status synchronization fixes - Accurate timestamp tracking for RMM features Setup process for new installations: 1. docker-compose up -d postgres 2. ./redflag-server --setup 3. ./redflag-server --migrate 4. ./redflag-server 5. Generate tokens via admin UI 6. Deploy agents with registration tokens
32 lines
1002 B
Go
32 lines
1002 B
Go
package installer
|
|
|
|
import "fmt"
|
|
|
|
// Installer interface for different package types
|
|
type Installer interface {
|
|
IsAvailable() bool
|
|
Install(packageName string) (*InstallResult, error)
|
|
InstallMultiple(packageNames []string) (*InstallResult, error)
|
|
Upgrade() (*InstallResult, error)
|
|
UpdatePackage(packageName string) (*InstallResult, error) // New: Update specific package
|
|
GetPackageType() string
|
|
DryRun(packageName string) (*InstallResult, error) // New: Perform dry run to check dependencies
|
|
}
|
|
|
|
// InstallerFactory creates appropriate installer based on package type
|
|
func InstallerFactory(packageType string) (Installer, error) {
|
|
switch packageType {
|
|
case "apt":
|
|
return NewAPTInstaller(), nil
|
|
case "dnf":
|
|
return NewDNFInstaller(), nil
|
|
case "docker_image":
|
|
return NewDockerInstaller()
|
|
case "windows_update":
|
|
return NewWindowsUpdateInstaller(), nil
|
|
case "winget":
|
|
return NewWingetInstaller(), nil
|
|
default:
|
|
return nil, fmt.Errorf("unsupported package type: %s", packageType)
|
|
}
|
|
} |