neetob 0.5.58 → 0.5.60

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b490069c719d8cd5aed0b087d3d86a2c90bb7bc3bc12a2e85b81fe24af6f72c5
4
- data.tar.gz: ebe6483ae2bda1a8d0fafaeea4f42e377b8fc59fbcdbd9e4dca649d1491263ed
3
+ metadata.gz: f8cc539a463d6f98e1e30b00ffa61660e58616baa5bbf8ab8ff13a7e052161a8
4
+ data.tar.gz: 8f5ed1f06e6d4fef6e18cbd96fe4307af7c30b6dad41ad4e31d90af8af5dda90
5
5
  SHA512:
6
- metadata.gz: 5a2d78732430c0fed4b5f63b3660c63ebb0e9bf4f7958f20a273e7bf7d47250bb7136d4ee200cf41ee4af94267c7ee55607dfd4e0476205a9a10168b8f8c5816
7
- data.tar.gz: 96f969f01a90b0c54a09ca3e1371ef61e3c1fa0f169e4451f4a8288bc82d89a8d1b9494aa81f60b62e020bce4fbbdeceedb63a0ed554ac03faf3366fc6c2fe5b
6
+ metadata.gz: 3d73c528cd3110b22d20f722189d2c2ba8e9d579e25336a5cb33b5ed28f4c2bbf243f5a97e3132cd683b4b34831cc290a966909fea4dd7dfbb7eb4d9adc08737
7
+ data.tar.gz: 3b2470628f67be2c3b811dede5d07fd9366b1fb1ca3701e2c1828e2a02699ef76930b3cf55e2f0a2c54e1174acd2883667447455e820a700c5e422ce014d5958
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- neetob (0.5.58)
4
+ neetob (0.5.60)
5
5
  actionview
6
6
  activesupport
7
7
  brakeman (~> 5.0)
@@ -28,11 +28,10 @@ module Neetob
28
28
  else
29
29
  autoscaling_config = JSON.parse(autoscaling_config_result.gsub("=>", ":"))
30
30
  autoscaling_turned_on_for_web = autoscaling_config["web"]
31
- autoscaling_turned_on_for_worker = autoscaling_config["worker"]
32
31
 
33
- audit_passed = autoscaling_turned_on_for_web && autoscaling_turned_on_for_worker ? "Yes" : "No"
32
+ audit_passed = autoscaling_turned_on_for_web ? "Yes" : "No"
34
33
  if audit_passed == "No"
35
- comments = "Auto-scaling is not enabled for web and/or worker dynos."
34
+ comments = "Auto-scaling is not enabled for web dynos."
36
35
  same_as_last_comment = comments == last_comment
37
36
  last_comment = comments
38
37
  comments = "''" if same_as_last_comment
@@ -18,73 +18,12 @@ module Neetob
18
18
  meet.talkflowai.com
19
19
  ]
20
20
 
21
- DOMAINS_POINTING_TO_HEROKU = %w[
22
- forms.rvrsmartworks.com
23
- forms.cibereduca.org
24
- support.quirkyconsultant.com
25
- meet.perfey.de
26
- meet.aylett.co.uk
27
- meet.fastbound.com
28
- meet.canddi.com
29
- calendar.jimryan.ie
30
- meeting.caliham.com
31
- meet.stripedarts.com
32
- meet.tune.day
33
- meet.shiftx.com
34
- meeting.imarsrl.com
35
- calender.rvrsmartworks.com
36
- demo.variantspark.com
37
- ]
38
-
39
- DOMAINS_WITH_INVALID_CNAME_TARGET = %w[
40
- forms.thenumber.ninja
41
- racer.dingan.org
42
- forms.monadsys.com.au
43
- acumenn.money
44
- techzonce.com
45
- neerajsingh0202.com
46
- engage.quirkyconsultant.com
47
- ibymarketingdigital.com.br
48
- testdomain.cecieee.org
49
- help.neetopopups.com
50
- help.coombined.com
51
- help.neetosign.com
52
- unni-playground.dingan.org
53
- help.peerlist.io
54
- help.neetobugtrap.com
55
- help.neetosocial.com
56
- unni.dingan.org
57
- help.neetostore.com
58
- meet.quirkyconsultant.com
59
- interviews.activepresence.co
60
- book.navapi.com
61
- www.chessconfidence.com
62
- cal.arbaaz.io
63
- mapletalenthub.com
64
- massagebunnik.nl
65
- xplorify.bg
66
- hiredeasy.com
67
- meet.jijinkh.com
68
- waqualityroofing.com
69
- agenda.jylcontadoras.com.uy
70
- yvonnecano.com
71
- influenceintoincome.com
72
- design-narrative.com
73
- agenda.arma.com.mx
74
- bitzen.cl
75
- sanibeltreehouse.com
76
- creativechamps.in
77
- meet.sreeragmsadanandan.com
78
- SHINEBLUEAGENCY.COM
79
- amazyfvideos.com
80
- meet.alpexsolar.com
81
- calendar.alladvance.co.uk
82
- thegreenspace.in
83
- meet.kodair.us
84
- ]
21
+ NEETO_DEPLOY_DNS_TARGET = "dns.neetodeployapp.com"
22
+ HEROKU_DNS_TARGET = "herokudns.com"
85
23
 
86
24
  def initialize
87
25
  super()
26
+ @resolver = Resolv::DNS.new
88
27
  end
89
28
 
90
29
  def run
@@ -103,15 +42,9 @@ module Neetob
103
42
  else
104
43
  certificates_to_be_flagged = certificates_status.select { |certificate|
105
44
  certificate["expires_before_30_days"] &&
106
- !(certificate["domains"] || []).map {
45
+ (certificate["domains"] || []).map {
107
46
  |domain| domain["hostname"]
108
- }.any? { |domain|
109
- (
110
- DOMAINS_AUTO_RENEWED +
111
- DOMAINS_POINTING_TO_HEROKU +
112
- DOMAINS_WITH_INVALID_CNAME_TARGET
113
- ).include?(domain)
114
- }
47
+ }.any? { |domain| should_flag_domain?(domain) }
115
48
  }
116
49
  audit_passed = certificates_to_be_flagged.empty? ? "Yes" : "No"
117
50
  certificates_expiring_in_less_than_30_days = "Yes" if audit_passed == "No"
@@ -141,6 +74,48 @@ module Neetob
141
74
  end
142
75
  ui.print_table(apps_data)
143
76
  end
77
+
78
+ private
79
+
80
+ def should_flag_domain?(hostname)
81
+ valid_dns_configuration?(hostname) &&
82
+ !points_to_heroku?(hostname) &&
83
+ !DOMAINS_AUTO_RENEWED.include?(hostname)
84
+ end
85
+
86
+ def points_to_heroku?(hostname)
87
+ Timeout.timeout(10) do
88
+ cname_records = @resolver.getresources(hostname, Resolv::DNS::Resource::IN::CNAME)
89
+ cname_records.any? { |record| record.name.to_s.include?(HEROKU_DNS_TARGET) }
90
+ end
91
+ rescue Resolv::ResolvError, Timeout::Error => e
92
+ ui.error("Heroku DNS resolution failed for #{hostname}: #{e.message}")
93
+ false
94
+ end
95
+
96
+ def valid_dns_configuration?(hostname)
97
+ Timeout.timeout(10) do
98
+ cname_records = @resolver.getresources(hostname, Resolv::DNS::Resource::IN::CNAME)
99
+ return true if cname_records.any? { |record| record.name.to_s.include?(NEETO_DEPLOY_DNS_TARGET) }
100
+
101
+ if root_level_domain?(hostname)
102
+ a_records = @resolver.getresources(hostname, Resolv::DNS::Resource::IN::A)
103
+ target_a_records = @resolver.getresources(NEETO_DEPLOY_DNS_TARGET, Resolv::DNS::Resource::IN::A)
104
+ return true if a_records.any? do |record|
105
+ target_a_records.any? { |target| target.address.to_s == record.address.to_s }
106
+ end
107
+ end
108
+
109
+ false
110
+ end
111
+ rescue Resolv::ResolvError, Timeout::Error => e
112
+ ui.error("Neetodeploy DNS resolution failed for #{hostname}: #{e.message}")
113
+ false
114
+ end
115
+
116
+ def root_level_domain?(hostname)
117
+ hostname.split(".").length == 2
118
+ end
144
119
  end
145
120
  end
146
121
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Neetob
4
- VERSION = "0.5.58"
4
+ VERSION = "0.5.60"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neetob
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.58
4
+ version: 0.5.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - Udai Gupta
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-05-05 00:00:00.000000000 Z
11
+ date: 2025-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor