rules_remove.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package api
  2. import (
  3. "fmt"
  4. routerService "github.com/xtls/xray-core/app/router/command"
  5. "github.com/xtls/xray-core/main/commands/base"
  6. )
  7. var cmdRemoveRules = &base.Command{
  8. CustomFlags: true,
  9. UsageLine: "{{.Exec}} api rmrules [--server=127.0.0.1:8080] ruleTag1 ruleTag2...",
  10. Short: "Remove routing rules by ruleTag",
  11. Long: `
  12. Remove routing rules by ruleTag from Xray.
  13. Arguments:
  14. -s, -server
  15. The API server address. Default 127.0.0.1:8080
  16. -t, -timeout
  17. Timeout seconds to call API. Default 3
  18. Example:
  19. {{.Exec}} {{.LongName}} --server=127.0.0.1:8080 ruleTag1 ruleTag2
  20. `,
  21. Run: executeRemoveRules,
  22. }
  23. func executeRemoveRules(cmd *base.Command, args []string) {
  24. setSharedFlags(cmd)
  25. cmd.Flag.Parse(args)
  26. ruleTags := cmd.Flag.Args()
  27. if len(ruleTags) == 0 {
  28. fmt.Println("reading from stdin:")
  29. ruleTags = []string{"stdin:"}
  30. }
  31. conn, ctx, close := dialAPIServer()
  32. defer close()
  33. client := routerService.NewRoutingServiceClient(conn)
  34. if len(ruleTags) == 0 {
  35. base.Fatalf("no valid ruleTag input")
  36. }
  37. for _, tag := range ruleTags {
  38. rr := &routerService.RemoveRuleRequest{
  39. RuleTag: tag,
  40. }
  41. resp, err := client.RemoveRule(ctx, rr)
  42. if err != nil {
  43. base.Fatalf("failed to perform RemoveRule: %s", err)
  44. }
  45. showJSONResponse(resp)
  46. }
  47. }