Module: DomainValidatorJp
- Defined in:
- lib/domain_validator_jp.rb,
lib/domain_validator_jp/version.rb
Constant Summary collapse
- VERSION =
"0.3.0"
Class Method Summary collapse
- .fqdn?(domain) ⇒ Boolean
-
.include_subdomain?(domain) ⇒ Boolean
common.
- .parsed(domain) ⇒ Object
-
.sld_multibyte?(domain) ⇒ Boolean
only multibyte.
- .utf8_to_sjis(str) ⇒ Object
- .valid?(domain) ⇒ Boolean
- .valid_jisx0208?(domain) ⇒ Boolean
- .valid_length_domain?(domain) ⇒ Boolean
- .valid_length_sld?(domain) ⇒ Boolean
- .valid_length_sld_multibyte?(domain) ⇒ Boolean
- .valid_public_suffix?(domain) ⇒ Boolean
-
.valid_sld_chars?(domain) ⇒ Boolean
only multibyte.
- .valid_sld_not_dotted?(domain) ⇒ Boolean
- .valid_sld_not_end_with_hyphen?(domain) ⇒ Boolean
- .valid_sld_not_start_with_hyphen?(domain) ⇒ Boolean
Class Method Details
.fqdn?(domain) ⇒ Boolean
26 27 28 29 |
# File 'lib/domain_validator_jp.rb', line 26 def fqdn?(domain) splitted = domain.split('.') splitted.length >= 2 && splitted.all?{|label| !label.empty? } end |
.include_subdomain?(domain) ⇒ Boolean
common
39 40 41 |
# File 'lib/domain_validator_jp.rb', line 39 def include_subdomain?(domain) !parsed(domain).subdomain.nil? end |
.parsed(domain) ⇒ Object
31 32 33 34 35 |
# File 'lib/domain_validator_jp.rb', line 31 def parsed(domain) PublicSuffix.parse(domain) rescue PublicSuffix::DomainNotAllowed PublicSuffix::Domain.new(domain) # set as TLD end |
.sld_multibyte?(domain) ⇒ Boolean
only multibyte
61 62 63 |
# File 'lib/domain_validator_jp.rb', line 61 def sld_multibyte?(domain) parsed(domain).sld !~ /^[0-9A-Za-z\-]+$/ end |
.utf8_to_sjis(str) ⇒ Object
88 89 90 |
# File 'lib/domain_validator_jp.rb', line 88 def utf8_to_sjis(str) str.encode('Windows-31J') rescue nil end |
.valid?(domain) ⇒ Boolean
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/domain_validator_jp.rb', line 6 def valid?(domain) return false unless fqdn?(domain) return false if include_subdomain?(domain) return false unless valid_public_suffix?(domain) return false unless valid_sld_not_dotted?(domain) return false unless valid_sld_not_start_with_hyphen?(domain) return false unless valid_sld_not_end_with_hyphen?(domain) if sld_multibyte?(domain) return false unless valid_length_sld_multibyte?(domain) return false unless valid_jisx0208?(domain) else return false unless valid_sld_chars?(domain) return false unless valid_length_domain?(domain) return false unless valid_length_sld?(domain) end true end |
.valid_jisx0208?(domain) ⇒ Boolean
83 84 85 86 |
# File 'lib/domain_validator_jp.rb', line 83 def valid_jisx0208?(domain) valid = /^#{utf8_to_sjis("[\-0-9A-Za-z・ヽヾゝゞ仝々〆〇ーぁ-んァ-ヶ亜-腕弌-熙]")}+$/ valid.match(utf8_to_sjis(parsed(domain).sld)) if utf8_to_sjis(parsed(domain).sld) end |
.valid_length_domain?(domain) ⇒ Boolean
75 76 77 |
# File 'lib/domain_validator_jp.rb', line 75 def valid_length_domain?(domain) domain.length <= 253 end |
.valid_length_sld?(domain) ⇒ Boolean
79 80 81 |
# File 'lib/domain_validator_jp.rb', line 79 def valid_length_sld?(domain) parsed(domain).sld.length <= 63 end |
.valid_length_sld_multibyte?(domain) ⇒ Boolean
65 66 67 |
# File 'lib/domain_validator_jp.rb', line 65 def valid_length_sld_multibyte?(domain) 1 <= parsed(domain).sld.length && parsed(domain).sld.length <= 15 end |
.valid_public_suffix?(domain) ⇒ Boolean
43 44 45 |
# File 'lib/domain_validator_jp.rb', line 43 def valid_public_suffix?(domain) PublicSuffix.valid?(domain, default_rule: nil, ignore_private: true) end |
.valid_sld_chars?(domain) ⇒ Boolean
only multibyte
71 72 73 |
# File 'lib/domain_validator_jp.rb', line 71 def valid_sld_chars?(domain) parsed(domain).sld =~ /^[0-9A-Za-z\-]+$/ end |
.valid_sld_not_dotted?(domain) ⇒ Boolean
47 48 49 |
# File 'lib/domain_validator_jp.rb', line 47 def valid_sld_not_dotted?(domain) parsed(domain).sld !~ /\./ end |
.valid_sld_not_end_with_hyphen?(domain) ⇒ Boolean
55 56 57 |
# File 'lib/domain_validator_jp.rb', line 55 def valid_sld_not_end_with_hyphen?(domain) parsed(domain).sld !~ /\-$/ end |
.valid_sld_not_start_with_hyphen?(domain) ⇒ Boolean
51 52 53 |
# File 'lib/domain_validator_jp.rb', line 51 def valid_sld_not_start_with_hyphen?(domain) parsed(domain).sld !~ /^\-/ end |