package main import ( "net/http" "strings" "super-frpc/postLog" ) func setupRoutes() { postLog.Info("Setting up routes...") http.HandleFunc("/register", RegisterHandler) http.HandleFunc("/login", LoginHandler) http.HandleFunc("/logout", LogoutHandler) http.HandleFunc("/frpcAct/instanceMgr/create", CreateInstanceHandler) http.HandleFunc("/frpcAct/instanceMgr/list", ListInstancesHandler) http.HandleFunc("/frpcAct/instanceMgr/", func(w http.ResponseWriter, r *http.Request) { path := r.URL.Path if len(path) < len("/frpcAct/instanceMgr/") { // Check if path is at least as long as the base path SendErrorResponse(w, http.StatusNotFound, "invalid path") return } remainingPath := path[len("/frpcAct/instanceMgr/"):] // Get the remaining path after the base path if r.Method == http.MethodGet { // Handle `/list` and `/list/` by GET request if remainingPath == "list" { ListInstancesHandler(w, r) return } instanceName := strings.Trim(remainingPath, "/") // Get the instance name from the remaining path if instanceName != "" { ListInstancesHandler(w, r) return } } if r.Method == http.MethodPost { // Handle `/create`, `/delete`, and `/modify/` by POST request if remainingPath == "create" { CreateInstanceHandler(w, r) return } if remainingPath == "delete" { DeleteInstanceHandler(w, r) return } if remainingPath == "modify" { // Handle `/modify` by POST request ModifyInstanceHandler(w, r) return } } SendErrorResponse(w, http.StatusNotFound, "endpoint not found") // Send error response if no endpoint is found }) }