github.com/igoogolx/clash@v1.19.8/hub/route/rules.go (about) 1 package route 2 3 import ( 4 "net/http" 5 6 "github.com/igoogolx/clash/tunnel" 7 8 "github.com/go-chi/chi/v5" 9 "github.com/go-chi/render" 10 ) 11 12 func ruleRouter() http.Handler { 13 r := chi.NewRouter() 14 r.Get("/", getRules) 15 return r 16 } 17 18 type Rule struct { 19 Type string `json:"type"` 20 Payload string `json:"payload"` 21 Proxy string `json:"proxy"` 22 } 23 24 func getRules(w http.ResponseWriter, r *http.Request) { 25 rawRules := tunnel.Rules() 26 27 rules := []Rule{} 28 for _, rule := range rawRules { 29 rules = append(rules, Rule{ 30 Type: rule.RuleType().String(), 31 Payload: rule.Payload(), 32 Proxy: rule.Adapter(), 33 }) 34 } 35 36 render.JSON(w, r, render.M{ 37 "rules": rules, 38 }) 39 }