api_meta_upgrade.go 924 B

123456789101112131415161718192021222324252627282930313233343536
  1. package clashapi
  2. import (
  3. "net/http"
  4. E "github.com/sagernet/sing/common/exceptions"
  5. "github.com/go-chi/chi/v5"
  6. "github.com/go-chi/render"
  7. )
  8. func upgradeRouter(server *Server) http.Handler {
  9. r := chi.NewRouter()
  10. r.Post("/ui", updateExternalUI(server))
  11. return r
  12. }
  13. func updateExternalUI(server *Server) func(w http.ResponseWriter, r *http.Request) {
  14. return func(w http.ResponseWriter, r *http.Request) {
  15. if server.externalUI == "" {
  16. render.Status(r, http.StatusNotFound)
  17. render.JSON(w, r, newError("external UI not enabled"))
  18. return
  19. }
  20. server.logger.Info("upgrading external UI")
  21. err := server.downloadExternalUI()
  22. if err != nil {
  23. server.logger.Error(E.Cause(err, "upgrade external ui"))
  24. render.Status(r, http.StatusInternalServerError)
  25. render.JSON(w, r, newError(err.Error()))
  26. return
  27. }
  28. server.logger.Info("updated external UI")
  29. render.JSON(w, r, render.M{"status": "ok"})
  30. }
  31. }