reserved_subdomain 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,20 @@
1
+ class ReservedSubdomain
2
+ class Pattern
3
+ PATTERNS = [
4
+ /.*[_-]feed$/,
5
+ /.*[_-]support$/,
6
+ /^v[0-9]{,2}$/,
7
+ /^xn--/,
8
+ ].freeze
9
+
10
+ attr_reader :subdomain
11
+
12
+ def initialize(subdomain)
13
+ @subdomain = subdomain
14
+ end
15
+
16
+ def reserved?
17
+ PATTERNS.any? { |pattern| subdomain =~ pattern }
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,51 @@
1
+ class ReservedSubdomain
2
+ class Prefix
3
+ PREFIXES = %w[
4
+ db
5
+ dc
6
+ dev
7
+ dns
8
+ ftp
9
+ host
10
+ mail
11
+ mx
12
+ ns
13
+ ntp
14
+ server
15
+ smtp
16
+ static
17
+ support
18
+ test
19
+ vpn
20
+ web
21
+ www
22
+ ].freeze
23
+
24
+ attr_reader :subdomain
25
+
26
+ def initialize(subdomain)
27
+ @subdomain = subdomain
28
+ end
29
+
30
+ def reserved?
31
+ PREFIXES.any? { |prefix| Prefix.new(prefix, subdomain).reserved? }
32
+ end
33
+
34
+ class Prefix
35
+ def initialize(prefix, subdomain)
36
+ @prefix = prefix
37
+ @subdomain = subdomain
38
+ end
39
+
40
+ def reserved?
41
+ @subdomain =~ regex
42
+ end
43
+
44
+ private
45
+
46
+ def regex
47
+ /^#{@prefix}[-_]*[0-9]{,2}$/
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ReservedSubdomain
4
+ VERSION = '0.0.1'.freeze
5
+ end
@@ -0,0 +1,16 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'reserved_subdomain/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'reserved_subdomain'
7
+ s.version = ReservedSubdomain::VERSION
8
+ s.authors = ['Dominic Sayers']
9
+ s.email = ['dominic@sayers.cc']
10
+ s.summary = 'Identify subdomain names that should be reserved'
11
+ s.homepage = 'https://github.com/dominicsayers/reserved_subdomain'
12
+ s.license = 'MIT'
13
+
14
+ s.files = `git ls-files`.split($RS).reject { |file| file =~ %r{^spec/} }
15
+ s.require_paths = ['lib']
16
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reserved_subdomain
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Dominic Sayers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-07-11 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email:
15
+ - dominic@sayers.cc
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - ".rspec"
22
+ - ".rubocop.yml"
23
+ - ".travis.yml"
24
+ - Gemfile
25
+ - Gemfile.local.example
26
+ - LICENSE
27
+ - README.md
28
+ - Rakefile
29
+ - bin/build_literals
30
+ - bin/console
31
+ - bin/rspec
32
+ - bin/rubocop
33
+ - lib/reserved_subdomain.rb
34
+ - lib/reserved_subdomain/literal.rb
35
+ - lib/reserved_subdomain/literals/iso-3166-1.txt
36
+ - lib/reserved_subdomain/literals/iso-639-1.txt
37
+ - lib/reserved_subdomain/literals/reserved_subdomains.txt
38
+ - lib/reserved_subdomain/literals/tlds.txt
39
+ - lib/reserved_subdomain/pattern.rb
40
+ - lib/reserved_subdomain/prefix.rb
41
+ - lib/reserved_subdomain/version.rb
42
+ - reserved_subdomain.gemspec
43
+ homepage: https://github.com/dominicsayers/reserved_subdomain
44
+ licenses:
45
+ - MIT
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.7.7
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Identify subdomain names that should be reserved
67
+ test_files: []