dns-monitor 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43571d4f2e82d6f48f9766305e8407c58a018006ce3dc55510e5d4051a805a5c
4
- data.tar.gz: af433b31fdf7d11fcd6baef138a48f2aa54bc75441b68fbd86f119571780330b
3
+ metadata.gz: d9747d0406d551004a09261b0963a7404f2656cd8a33d0dcdc93be963cf84a70
4
+ data.tar.gz: e6256a7d5182cdce76f44ce912438da8ac2b4ea53ec15249a3e69f9047bea3fb
5
5
  SHA512:
6
- metadata.gz: a607cc765edb1aace6865bf17b48415e78b5485600630222e48555ae302d1675e31fa1bf9be5df0dbff9ec84b8f6851df0b6c00e92f361536c1ec81968dac6d2
7
- data.tar.gz: 4793852abad7cf8945137bd3259aa69954d6c613f8ffe2e5f7c37c28a3de704af0023a8eac1f37c37d60d7abc291599d5df51f792664070f9246196b3e6b798e
6
+ metadata.gz: 681d88adfc5c206241bb672e7ee5eaff1f8b93e3093239867c159a603b894adc9fad9125b88cfb55ea1038c4f0927ebeae229da94e140ed9b7b29fcd52d54cd4
7
+ data.tar.gz: 731dde7868fb67b0a5a1002a8d219df547328ef2fa976dce258639d158ac6e001b4859b4cdecfb8be5986e33d7fa194d7737178fd2fe612163167e6578dee2f2
@@ -1,13 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dns-monitor (0.1.1)
4
+ dns-monitor (0.1.3)
5
+ easy_diff (~> 1.0.0)
5
6
  sqlite3 (~> 1.4.2)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
11
  coderay (1.1.2)
12
+ easy_diff (1.0.0)
11
13
  method_source (0.9.2)
12
14
  minitest (5.14.0)
13
15
  pry (0.12.2)
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  The point of this gem is to monitor your hosts for (unwanted) DNS changes. The executable `dns-monitor` file is designed to be run as a CRON job. It takes a return-delimited text file listing domain names, and checks an RDAP database (which you can specify) for JSON entries that match. You will get an error, optionally by GChat, if you encounter a changed entry.
4
4
 
5
+ If you don't think this is something you need, perhaps give [this article](https://krebsonsecurity.com/2019/02/a-deep-dive-on-the-recent-widespread-dns-hijacking-attacks/) a read.
6
+
5
7
 
6
8
 
7
9
  ## Installation
@@ -42,4 +42,5 @@ Gem::Specification.new do |spec|
42
42
  spec.add_development_dependency "pry", "~> 0.12.2"
43
43
 
44
44
  spec.add_dependency "sqlite3", "~>1.4.2"
45
+ spec.add_dependency "easy_diff", "~>1.0.0"
45
46
  end
@@ -1,3 +1,4 @@
1
+ require 'easy_diff'
1
2
  require 'json'
2
3
  require 'net/http'
3
4
  require 'optparse'
@@ -14,6 +14,7 @@ module DNS
14
14
  return if domain.nil? || rdap.nil?
15
15
 
16
16
  changes = diff(most_recent(domain).rdap, rdap)
17
+
17
18
  if changes.empty?
18
19
  Check.new domain, :ok
19
20
  else
@@ -28,13 +29,10 @@ module DNS
28
29
  end
29
30
 
30
31
  # Compare two different RDAP values
31
- # NOTE: We have to do a JSON conversion because the values come back
32
- # from the server in arbitrary JSON key order.
33
- def diff(rdap, previous_rdap)
34
- (
35
- JSON.parse(previous_rdap || '{}').to_a -
36
- JSON.parse(rdap || '{}').to_a
37
- ).to_h
32
+ # NOTE: We have to do a JSON conversion because the values come
33
+ # back from the server in arbitrary JSON key order.
34
+ def diff(previous_rdap, rdap)
35
+ JSON.parse(previous_rdap).easy_diff(JSON.parse(rdap)).last
38
36
  end
39
37
 
40
38
  # Return all entries for a given domain as a Domain struct
@@ -1,5 +1,5 @@
1
1
  module DNS
2
2
  module Monitor
3
- VERSION = "0.1.3"
3
+ VERSION = "0.1.4"
4
4
  end
5
5
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dns-monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Donald Merand
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-27 00:00:00.000000000 Z
11
+ date: 2020-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.4.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: easy_diff
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.0
83
97
  description: "The point of this gem is to monitor your hosts for (unwanted) DNS changes.\nThe
84
98
  `dns-monitor` file is designed to be run as a CRON job. It takes a\nreturn-delimited
85
99
  text file listing domain names, and checks an RDAP\ndatabase (which you can specify)
@@ -112,6 +126,7 @@ files:
112
126
  - lib/dns/monitor/mandrill.rb
113
127
  - lib/dns/monitor/runner.rb
114
128
  - lib/dns/monitor/version.rb
129
+ - test.sqlite3
115
130
  homepage: https://github.com/exploration/dns-monitor
116
131
  licenses:
117
132
  - MIT