domaine 0.0.4 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/domaine.rb +19 -2
  3. metadata +45 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca84b35a909c64543409fcf5a83da042d48d2b927d59e081cac337b69b623667
4
- data.tar.gz: 7822b648808788da7e09fa66369198349c7625f7de04388b2c04520d557759b0
3
+ metadata.gz: 38ac7e9daa545d9045267326cd3f5404dae50244cbc241092a3e8d18ae6a7f60
4
+ data.tar.gz: 88285190ce1bbaa1f44fc559b109aed03d33795306fa27563a089dfeedf3e327
5
5
  SHA512:
6
- metadata.gz: 5a40c584f54b0b54d2e326c6f0909655f8b61f11aa488af2a4407913041e9be524816ebe11847c423e3436da76760f9d1c654a366f869b3f4746ab871df15970
7
- data.tar.gz: 17b99c22a7e2861380d9bdfdf0a5c158e8a8e33e1c1e2c5c077867572ccc85799c5057ad800e142cbb2f475d4eab8574dfd1b67f343e9cc0d178e241116c4720
6
+ metadata.gz: 96d7f491d12c2fc06d7042e4338d66e835992af4779171f4ae68677149a678f180a3e385c49732a5db3b6e8966b3bdbc87c015a5e6263423e646ddf2b3a9769f
7
+ data.tar.gz: 2f1324ac37e2e79819e6d4d1b0c4e17d2fc186956df16803b041070e05fb948fb836ede9de2ae1f55176d8b55009de9feceb80a99bbb338b8b2af94e7bba3970
data/lib/domaine.rb CHANGED
@@ -1,20 +1,37 @@
1
1
  module Domaine
2
2
 
3
3
  VALID_DKIM_KEY = 'ANSWER: 1'.freeze
4
+ VALID_SPF_KEY = 'v=spf1'.freeze
4
5
 
5
6
  ##################################################################
6
7
  # This method is used to validate the domain and selector and return
7
8
  # true if the domain and selector are listed in the DNS records.
8
9
  ##################################################################
9
- def self.valid_dkim(domain, selector)
10
+ def self.valid_dkim(domain, selector, io_class: IO)
10
11
  dig_command = "dig txt #{selector}._domainkey.#{domain}"
11
12
  valid_domain = false
12
13
 
13
- IO.popen(dig_command) do |stdout|
14
+ io_class.popen(dig_command) do |stdout|
14
15
  output = stdout.read
15
16
  valid_domain = output.include?(VALID_DKIM_KEY) if output
16
17
  end
17
18
 
18
19
  valid_domain
19
20
  end
21
+
22
+ ##################################################################
23
+ # This method is used to validate the domain and return true if the
24
+ # domain has a valid SPF record.
25
+ ##################################################################
26
+ def self.valid_spf(domain, io_class: IO)
27
+ dig_command = "dig txt #{domain}"
28
+ valid_domain = false
29
+
30
+ io_class.popen(dig_command) do |stdout|
31
+ output = stdout.read
32
+ valid_domain = output.include?(VALID_SPF_KEY) if output
33
+ end
34
+
35
+ valid_domain
36
+ end
20
37
  end
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: domaine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Kadlec
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-20 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-03-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.5.6
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.5.6
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '13.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.8'
13
55
  description: A simple domain validation for DKIM and SPF records
14
56
  email: mkadlec99@gmail.com
15
57
  executables: []