Module: DomainValidatorJp
- Defined in:
- lib/domain_validator_jp.rb,
lib/domain_validator_jp/version.rb
Constant Summary collapse
- VERSION =
"0.2.1"
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
37 38 39 |
# File 'lib/domain_validator_jp.rb', line 37 def include_subdomain?(domain) !parsed(domain).subdomain.nil? end |
.parsed(domain) ⇒ Object
31 32 33 |
# File 'lib/domain_validator_jp.rb', line 31 def parsed(domain) PublicSuffix.parse(domain) end |
.sld_multibyte?(domain) ⇒ Boolean
only multibyte
59 60 61 |
# File 'lib/domain_validator_jp.rb', line 59 def sld_multibyte?(domain) parsed(domain).sld !~ /^[0-9A-Za-z\-]+$/ end |
.utf8_to_sjis(str) ⇒ Object
86 87 88 |
# File 'lib/domain_validator_jp.rb', line 86 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
81 82 83 84 |
# File 'lib/domain_validator_jp.rb', line 81 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
73 74 75 |
# File 'lib/domain_validator_jp.rb', line 73 def valid_length_domain?(domain) domain.length <= 253 end |
.valid_length_sld?(domain) ⇒ Boolean
77 78 79 |
# File 'lib/domain_validator_jp.rb', line 77 def valid_length_sld?(domain) parsed(domain).sld.length <= 63 end |
.valid_length_sld_multibyte?(domain) ⇒ Boolean
63 64 65 |
# File 'lib/domain_validator_jp.rb', line 63 def valid_length_sld_multibyte?(domain) 1 <= parsed(domain).sld.length && parsed(domain).sld.length <= 15 end |
.valid_public_suffix?(domain) ⇒ Boolean
41 42 43 |
# File 'lib/domain_validator_jp.rb', line 41 def valid_public_suffix?(domain) PublicSuffix.valid?(domain, default_rule: nil, ignore_private: true) end |
.valid_sld_chars?(domain) ⇒ Boolean
only multibyte
69 70 71 |
# File 'lib/domain_validator_jp.rb', line 69 def valid_sld_chars?(domain) parsed(domain).sld =~ /^[0-9A-Za-z\-]+$/ end |
.valid_sld_not_dotted?(domain) ⇒ Boolean
45 46 47 |
# File 'lib/domain_validator_jp.rb', line 45 def valid_sld_not_dotted?(domain) parsed(domain).sld !~ /\./ end |
.valid_sld_not_end_with_hyphen?(domain) ⇒ Boolean
53 54 55 |
# File 'lib/domain_validator_jp.rb', line 53 def valid_sld_not_end_with_hyphen?(domain) parsed(domain).sld !~ /\-$/ end |
.valid_sld_not_start_with_hyphen?(domain) ⇒ Boolean
49 50 51 |
# File 'lib/domain_validator_jp.rb', line 49 def valid_sld_not_start_with_hyphen?(domain) parsed(domain).sld !~ /^\-/ end |