| 123456789101112131415161718192021222324252627282930313233343536 | 
							- package clashapi
 
- import (
 
- 	"net/http"
 
- 	E "github.com/sagernet/sing/common/exceptions"
 
- 	"github.com/go-chi/chi/v5"
 
- 	"github.com/go-chi/render"
 
- )
 
- func upgradeRouter(server *Server) http.Handler {
 
- 	r := chi.NewRouter()
 
- 	r.Post("/ui", updateExternalUI(server))
 
- 	return r
 
- }
 
- func updateExternalUI(server *Server) func(w http.ResponseWriter, r *http.Request) {
 
- 	return func(w http.ResponseWriter, r *http.Request) {
 
- 		if server.externalUI == "" {
 
- 			render.Status(r, http.StatusNotFound)
 
- 			render.JSON(w, r, newError("external UI not enabled"))
 
- 			return
 
- 		}
 
- 		server.logger.Info("upgrading external UI")
 
- 		err := server.downloadExternalUI()
 
- 		if err != nil {
 
- 			server.logger.Error(E.Cause(err, "upgrade external ui"))
 
- 			render.Status(r, http.StatusInternalServerError)
 
- 			render.JSON(w, r, newError(err.Error()))
 
- 			return
 
- 		}
 
- 		server.logger.Info("updated external UI")
 
- 		render.JSON(w, r, render.M{"status": "ok"})
 
- 	}
 
- }
 
 
  |