inbound_user_remove.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package api
  2. import (
  3. "fmt"
  4. handlerService "github.com/xtls/xray-core/app/proxyman/command"
  5. cserial "github.com/xtls/xray-core/common/serial"
  6. "github.com/xtls/xray-core/main/commands/base"
  7. )
  8. var cmdRemoveInboundUsers = &base.Command{
  9. CustomFlags: true,
  10. UsageLine: "{{.Exec}} api rmu [--server=127.0.0.1:8080] -tag=tag <email1> [email2]...",
  11. Short: "Remove users from inbounds",
  12. Long: `
  13. Remove users from inbounds.
  14. Arguments:
  15. -s, -server
  16. The API server address. Default 127.0.0.1:8080
  17. -t, -timeout
  18. Timeout seconds to call API. Default 3
  19. -tag
  20. Inbound tag
  21. Example:
  22. {{.Exec}} {{.LongName}} --server=127.0.0.1:8080 -tag="vless-in" "[email protected]" ...
  23. `,
  24. Run: executeRemoveUsers,
  25. }
  26. func executeRemoveUsers(cmd *base.Command, args []string) {
  27. setSharedFlags(cmd)
  28. var tag string
  29. cmd.Flag.StringVar(&tag, "tag", "", "")
  30. cmd.Flag.Parse(args)
  31. emails := cmd.Flag.Args()
  32. if len(tag) < 1 {
  33. base.Fatalf("inbound tag not specified")
  34. }
  35. conn, ctx, close := dialAPIServer()
  36. defer close()
  37. client := handlerService.NewHandlerServiceClient(conn)
  38. success := 0
  39. for _, email := range emails {
  40. fmt.Println("remove user:", email)
  41. _, err := client.AlterInbound(ctx, &handlerService.AlterInboundRequest{
  42. Tag: tag,
  43. Operation: cserial.ToTypedMessage(
  44. &handlerService.RemoveUserOperation{
  45. Email: email,
  46. }),
  47. })
  48. if err == nil {
  49. success += 1
  50. } else {
  51. fmt.Println(err)
  52. }
  53. }
  54. fmt.Println("Removed", success, "user(s) in total.")
  55. }