39 lines
1.3 KiB
Go
39 lines
1.3 KiB
Go
package app
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
// ---------------------------------------------------------------------
|
|
// routes handlers
|
|
// ---------------------------------------------------------------------
|
|
|
|
// EN: HTTP handlers for selective routing control plane operations:
|
|
// EN: status, systemd service/timer control, route cleanup, policy fix, and async update trigger.
|
|
// RU: HTTP-обработчики control-plane для селективной маршрутизации:
|
|
// RU: статус, управление service/timer через systemd, очистка, фиксация policy route и запуск обновления.
|
|
|
|
// ---------------------------------------------------------------------
|
|
// routes service
|
|
// ---------------------------------------------------------------------
|
|
|
|
func makeCmdHandler(name string, args ...string) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodPost {
|
|
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
|
|
return
|
|
}
|
|
stdout, stderr, code, err := runCommand(name, args...)
|
|
res := cmdResult{
|
|
OK: err == nil && code == 0,
|
|
ExitCode: code,
|
|
Stdout: stdout,
|
|
Stderr: stderr,
|
|
}
|
|
if err != nil {
|
|
res.Message = err.Error()
|
|
}
|
|
writeJSON(w, http.StatusOK, res)
|
|
}
|
|
}
|