command.go 997 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package command
  2. import (
  3. "context"
  4. core "github.com/v2fly/v2ray-core/v4"
  5. "github.com/v2fly/v2ray-core/v4/app/observatory"
  6. "github.com/v2fly/v2ray-core/v4/common"
  7. "github.com/v2fly/v2ray-core/v4/features/extension"
  8. "google.golang.org/grpc"
  9. )
  10. type service struct {
  11. UnimplementedObservatoryServiceServer
  12. v *core.Instance
  13. Observatory extension.Observatory
  14. }
  15. func (s *service) GetOutboundStatus(ctx context.Context, request *GetOutboundStatusRequest) (*GetOutboundStatusResponse, error) {
  16. resp, err := s.Observatory.GetObservation(ctx)
  17. if err != nil {
  18. return nil, err
  19. }
  20. retdata := resp.(*observatory.ObservationResult)
  21. return &GetOutboundStatusResponse{
  22. Status: retdata,
  23. }, nil
  24. }
  25. func (s *service) Register(server *grpc.Server) {
  26. RegisterObservatoryServiceServer(server, s)
  27. }
  28. func init() {
  29. common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, cfg interface{}) (interface{}, error) {
  30. s := core.MustFromContext(ctx)
  31. return &service{v: s}, nil
  32. }))
  33. }