Files
elmprodvpn/selective-vpn-api/app/routes_handlers.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)
}
}