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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/auto_scaling_enabled.rb +2 -3
- data/lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/ssl_certificates_over_thirty_days_from_expiry.rb +47 -72
- data/lib/neetob/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8cc539a463d6f98e1e30b00ffa61660e58616baa5bbf8ab8ff13a7e052161a8
|
4
|
+
data.tar.gz: 8f5ed1f06e6d4fef6e18cbd96fe4307af7c30b6dad41ad4e31d90af8af5dda90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d73c528cd3110b22d20f722189d2c2ba8e9d579e25336a5cb33b5ed28f4c2bbf243f5a97e3132cd683b4b34831cc290a966909fea4dd7dfbb7eb4d9adc08737
|
7
|
+
data.tar.gz: 3b2470628f67be2c3b811dede5d07fd9366b1fb1ca3701e2c1828e2a02699ef76930b3cf55e2f0a2c54e1174acd2883667447455e820a700c5e422ce014d5958
|
data/Gemfile.lock
CHANGED
@@ -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
|
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
|
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
|
-
|
22
|
-
|
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
|
-
|
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
|
data/lib/neetob/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2025-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|