rules_remove.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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] [ruleTag]...",
  10. Short: "Remove routing rules by ruleTag",
  11. Long: `
  12. Remove routing rules by ruleTag from Xray.
  13. Arguments:
  14. -s, -server <server:port>
  15. The API server address. Default 127.0.0.1:8080
  16. -t, -timeout <seconds>
  17. Timeout in seconds for calling 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. }