Class: Neetob::CLI::MonthlyAudit::InstancesAndAddons::NeetoDeployOrHeroku::SslCertificatesOverThirtyDaysFromExpiry
- Inherits:
-
Base
- Object
- Base
- Neetob::CLI::MonthlyAudit::InstancesAndAddons::NeetoDeployOrHeroku::SslCertificatesOverThirtyDaysFromExpiry
- Defined in:
- lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/ssl_certificates_over_thirty_days_from_expiry.rb
Constant Summary collapse
- DOMAINS_AUTO_RENEWED =
%w[ forms.amnd.xyz eligibility.ozoneoverseas.in help.talkflowai.com meeting.reasonableproduct.com scheduling.movechamber.org cal.amnd.xyz meet.darrenaclarke.com meeting.royalhomeliving.uk meet.talkflowai.com ]- NEETO_DEPLOY_DNS_TARGET =
"dns.neetodeployapp.com"- HEROKU_DNS_TARGET =
"herokudns.com"
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize ⇒ SslCertificatesOverThirtyDaysFromExpiry
constructor
A new instance of SslCertificatesOverThirtyDaysFromExpiry.
- #run ⇒ Object
Methods included from Utils
#camel_case_to_slug, #is_upper?, #symbolize_keys
Constructor Details
#initialize ⇒ SslCertificatesOverThirtyDaysFromExpiry
Returns a new instance of SslCertificatesOverThirtyDaysFromExpiry.
26 27 28 29 |
# File 'lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/ssl_certificates_over_thirty_days_from_expiry.rb', line 26 def initialize super() @resolver = Resolv::DNS.new end |
Instance Method Details
#run ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/neetob/cli/monthly_audit/instances_and_addons/neeto_deploy_or_heroku/ssl_certificates_over_thirty_days_from_expiry.rb', line 31 def run ui.success "### 3.1.1. Checking whether SSL certificates are over 30 days from expiry" apps_data = [["App", "Certificates expiring before 30 days present?", "Comments", "Audit Passed"]] ui.info("\n", print_to_audit_log: false) Neetob::CLI::Sre::Base::APPS_LIST[:neetodeploy].select { |app| app.include?("production") }.each do |app| ui.info("Checking Certificates status for #{app}", print_to_audit_log: false) certificates_status = Neetob::CLI::NeetoDeploy::Certificates.new(app).run audit_passed = nil comments = nil certificates_expiring_in_less_than_30_days = "No" if certificates_status.is_a?(Hash) && certificates_status["error"] == "Forbidden" audit_passed = "No" comments = "You do not have permission to access the certificates for this app." else certificates_to_be_flagged = certificates_status.select { |certificate| certificate["expires_before_30_days"] && (certificate["domains"] || []).map { |domain| domain["hostname"] }.any? { |domain| should_flag_domain?(domain) } } audit_passed = certificates_to_be_flagged.empty? ? "Yes" : "No" certificates_expiring_in_less_than_30_days = "Yes" if audit_passed == "No" if audit_passed == "No" certificates_failing_audit = certificates_to_be_flagged.map { |certificate| "#{certificate["name"]}(#{certificate["domains"].map { |domain| domain["hostname"] }.join(", ")})" } comments = "Certificates #{certificates_failing_audit.join(", ")} are expiring in less than 30 days." repo = app.gsub("-production", "") issue_url = GithubIssueCreation.new.create_issue( repo:, title: "SSL certificates over 30 days from expiry", description: comments) audit_passed += " #{issue_url}" end end apps_data << [app, certificates_expiring_in_less_than_30_days, comments, audit_passed] end Neetob::CLI::Sre::Base::APPS_LIST[:heroku].select { |app| app.include?("production") }.each do |app| ui.info("Checking Certificates status for #{app}", print_to_audit_log: false) certificates_status = Neetob::CLI::Heroku::Certs.new(app).run certificates_expiring_in_less_than_30_days = certificates_status.select { |certificate| DateTime.parse(certificate[:expires]) <= 32.days.from_now } comments = nil audit_passed = "No" certificates_expiring_in_less_than_30_days_present = "No" if certificates_expiring_in_less_than_30_days.empty? audit_passed = "Yes" else comments = "Certificates #{certificates_expiring_in_less_than_30_days.map { |certificate| certificate[:name] }.join(", ")} are expiring in less than 30 days." repo = app.gsub("-production", "") issue_url = GithubIssueCreation.new.create_issue( repo:, title: "Renew SSL certificates expiring in less than 30 days", description: comments) audit_passed += " #{issue_url}" certificates_expiring_in_less_than_30_days_present = "Yes" end apps_data << [app, certificates_expiring_in_less_than_30_days_present, comments, audit_passed] end ui.print_table(apps_data) end |