모듈: Mongo::Address::Validator Private
- 포함 항목:
- Srv::Result, URI
- 다음에 정의됨:
- build/ruby-driver-v2.19/lib/mongo/address/validator.rb
개요
이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
인스턴스 메서드 요약 접기
-
#validate_address_str!(address_str) ⇒ 객체
비공개
ipv4/ipv6/hostname/socket 경로 형식의 주소 string 을 가져와서 형식의 유효성을 검사합니다.
인스턴스 메서드 세부 정보
#validate_address_str!(address_str) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
ipv4/ipv6/hostname/socket 경로 형식의 주소 string 을 가져와서 형식의 유효성을 검사합니다.
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 |