모듈: Mongo::Address::Validator Private

포함 항목:
Srv::Result, URI
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/address/validator.rb

개요

이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#validate_address_str!(address_str) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

ipv4/ipv6/hostname/socket 경로 형식의 주소 string 을 가져와서 형식의 유효성을 검사합니다.

이후:

  • 2.0.0



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 파일 'build/ruby-driver-v2.19/lib/mongo/address/validator.rb', 줄 27

def validate_address_str!(주소_str)
  case 주소_str
  when /\A\[[\d:]+\](?::(\d+))?\z/
    # ipv6 (선택 사항 포트 포함)
    만약 port_str = $1
      validate_port_str!(port_str)
    end
  when /\A\//, /\.sock\z/
    # Unix 소켓 경로입니다.
    # 사양에서는 경로에 이스케이프되지 않은 항목이 없는지 검증해야 합니다.
    # 슬래시, 그러나 이 경우 구문 분석은
    # URI가 다음과 같이 분할되었기 때문에 다른 곳에서는 이미 실패했습니다.
    # 이상한 곳.
    # 사양은 상대 소켓 경로도 허용하며 다음을 요구합니다.
    # 소켓 경로는 ".sock"으로 끝납니다. 특별한 경우를 제외하고 모든 경로를 허용합니다.
    # .sock 상대 경로가
    # host:port case.
  when /[\/\[\]]/
    # host:port 또는 선택적 포트가 있는 ipv4 주소가 아닙니다.
    # ipv6 주소가 다음과 같이 손상되었을 수 있습니다. 포트 구분 기호가 있고
    포트 #개가 누락되었거나 전후에 추가 정크가 발생했습니다.
    올리다 오류::InvalidAddress,
      "Invalid hostname: #{address_str}"
  when /:.*:/m
    올리다 오류::InvalidAddress,
      "여러 포트 구분자는 허용되지 않습니다: #{주소_문자열}"
  other
    # host:port 또는 ipv4 주소(선택 사항)
    호스트, 포트 = 주소_str.split(':')
    만약 호스트.비어 있나요?
      올리다 오류::InvalidAddress, "호스트가 비어 있습니다: #{주소_문자열}"
    end

    validate_hostname!(호스트)

    만약 포트 && 포트.비어 있나요?
      올리다 오류::InvalidAddress, "포트가 비어 있습니다: #{주소_문자열}"
    end

    validate_port_str!(포트)
  end
end