chore: disallow some restful api for CMFA

This commit is contained in:
wwqgtxx 2024-09-30 13:08:50 +08:00
parent fc9d5cfee9
commit a330fa1506
4 changed files with 24 additions and 7 deletions

View File

@ -24,9 +24,11 @@ import (
func configRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getConfigs)
r.Put("/", updateConfigs)
r.Post("/geo", updateGeoDatabases)
r.Patch("/", patchConfigs)
if !embedMode { // disallow update/patch configs in embed mode
r.Put("/", updateConfigs)
r.Post("/geo", updateGeoDatabases)
r.Patch("/", patchConfigs)
}
return r
}

View File

@ -16,7 +16,7 @@ import (
"github.com/metacubex/mihomo/tunnel"
)
func GroupRouter() http.Handler {
func groupRouter() http.Handler {
r := chi.NewRouter()
r.Get("/", getGroups)

View File

@ -0,0 +1,7 @@
//go:build android && cmfa
package route
func init() {
SetEmbedMode(true) // set embed mode default
}

View File

@ -36,8 +36,14 @@ var (
tlsServer *http.Server
unixServer *http.Server
pipeServer *http.Server
embedMode = false
)
func SetEmbedMode(embed bool) {
embedMode = embed
}
type Traffic struct {
Up int64 `json:"up"`
Down int64 `json:"down"`
@ -114,15 +120,17 @@ func router(isDebug bool, secret string, dohServer string, cors Cors) *chi.Mux {
r.Get("/version", version)
r.Mount("/configs", configRouter())
r.Mount("/proxies", proxyRouter())
r.Mount("/group", GroupRouter())
r.Mount("/group", groupRouter())
r.Mount("/rules", ruleRouter())
r.Mount("/connections", connectionRouter())
r.Mount("/providers/proxies", proxyProviderRouter())
r.Mount("/providers/rules", ruleProviderRouter())
r.Mount("/cache", cacheRouter())
r.Mount("/dns", dnsRouter())
r.Mount("/restart", restartRouter())
r.Mount("/upgrade", upgradeRouter())
if !embedMode { // disallow restart and upgrade in embed mode
r.Mount("/restart", restartRouter())
r.Mount("/upgrade", upgradeRouter())
}
addExternalRouters(r)
})