feat: Fleet Forge UEM - device management, agent, remote desktop (VNC), TLS reverse proxy
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
ServerURL string `json:"server_url"`
|
||||
EnrollmentToken string `json:"enrollment_token,omitempty"`
|
||||
DeviceID string `json:"device_id"`
|
||||
Credential string `json:"credential"`
|
||||
Label string `json:"label"`
|
||||
HeartbeatSec int `json:"heartbeat_interval_seconds"`
|
||||
}
|
||||
|
||||
func configDir() string {
|
||||
switch runtime.GOOS {
|
||||
case "windows":
|
||||
if p := os.Getenv("ProgramData"); p != "" {
|
||||
return filepath.Join(p, "FleetForge")
|
||||
}
|
||||
return `C:\ProgramData\FleetForge`
|
||||
case "darwin":
|
||||
home, _ := os.UserHomeDir()
|
||||
return filepath.Join(home, "Library", "Application Support", "FleetForge")
|
||||
default:
|
||||
home, _ := os.UserHomeDir()
|
||||
return filepath.Join(home, ".config", "forge-agent")
|
||||
}
|
||||
}
|
||||
|
||||
func ConfigPath() string {
|
||||
return filepath.Join(configDir(), "config.json")
|
||||
}
|
||||
|
||||
func Load() (*Config, error) {
|
||||
data, err := os.ReadFile(ConfigPath())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var cfg Config
|
||||
if err := json.Unmarshal(data, &cfg); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if cfg.HeartbeatSec <= 0 {
|
||||
cfg.HeartbeatSec = 30
|
||||
}
|
||||
return &cfg, nil
|
||||
}
|
||||
|
||||
func Save(cfg *Config) error {
|
||||
dir := filepath.Dir(ConfigPath())
|
||||
if err := os.MkdirAll(dir, 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
data, err := json.MarshalIndent(cfg, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.WriteFile(ConfigPath(), data, 0600)
|
||||
}
|
||||
|
||||
func Delete() error {
|
||||
return os.Remove(ConfigPath())
|
||||
}
|
||||
Reference in New Issue
Block a user