nolint:dupl
(authenticatedMetadata metadata.ConnectionAuthenticatedMetadata, requestID uint64, connection SSHConnectionHandler, req *ssh.Request, logger log.Logger)
| 658 | |
| 659 | //nolint:dupl |
| 660 | func (s *serverImpl) handleGlobalRequest(authenticatedMetadata metadata.ConnectionAuthenticatedMetadata, requestID uint64, connection SSHConnectionHandler, req *ssh.Request, logger log.Logger) { |
| 661 | reply := s.createReply(req, logger) |
| 662 | payload, err := s.unmarshalGlobalRequestPayload(req) |
| 663 | if payload == nil { |
| 664 | connection.OnUnsupportedGlobalRequest(requestID, req.Type, req.Payload) |
| 665 | reply(false, fmt.Sprintf("unsupported global request type: %s", req.Type), nil) |
| 666 | return |
| 667 | } |
| 668 | if err != nil { |
| 669 | logger.Debug( |
| 670 | messageCodes.Wrap( |
| 671 | err, |
| 672 | messageCodes.ESSHDecodeFailed, |
| 673 | "failed to unmarshal %s request payload", |
| 674 | req.Type, |
| 675 | ), |
| 676 | ) |
| 677 | connection.OnFailedDecodeGlobalRequest(requestID, req.Type, req.Payload, err) |
| 678 | reply(false, "failed to unmarshal payload", nil) |
| 679 | return |
| 680 | } |
| 681 | |
| 682 | logger.Debug( |
| 683 | messageCodes.NewMessage( |
| 684 | messageCodes.MSSHGlobalRequest, |
| 685 | "%s global request from client", |
| 686 | req.Type, |
| 687 | ).Label("RequestType", req.Type), |
| 688 | ) |
| 689 | if err := s.handleDecodedGlobalRequest( |
| 690 | authenticatedMetadata, |
| 691 | requestID, |
| 692 | ssh2.RequestType(req.Type), |
| 693 | payload, |
| 694 | connection, |
| 695 | ); err != nil { |
| 696 | logger.Debug( |
| 697 | messageCodes.NewMessage( |
| 698 | messageCodes.MSSHGlobalRequestFailed, |
| 699 | "%s global request from client failed", |
| 700 | req.Type, |
| 701 | ).Label("RequestType", req.Type), |
| 702 | ) |
| 703 | reply(false, err.Error(), err) |
| 704 | return |
| 705 | } |
| 706 | logger.Debug( |
| 707 | messageCodes.NewMessage( |
| 708 | messageCodes.MSSHGlobalRequestSuccessful, |
| 709 | "%s global request from client successful", |
| 710 | req.Type, |
| 711 | ).Label("RequestType", req.Type), |
| 712 | ) |
| 713 | reply(true, "", nil) |
| 714 | } |
| 715 | |
| 716 | func (s *serverImpl) handleDecodedGlobalRequest( |
| 717 | authenticatedMetadata metadata.ConnectionAuthenticatedMetadata, |
no test coverage detected