pg_rails 7.6.28 → 7.6.30

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: 774db48c26f0aeb3fd091956f27d32ccde51494853c6ecd82c61ccdd90dfe5a1
4
- data.tar.gz: 938d4df455ebfc0e61fe200fd08139914b9da512307d10d0f533741a2a2591d8
3
+ metadata.gz: 02fec9c121e284ea6ad059dc7f04d29166f622e8bb52e803646a1c806ef6a1c6
4
+ data.tar.gz: b0aace6af7ac7454e0695f27bea869c6c6416d6a5d16310818239eda4efd21eb
5
5
  SHA512:
6
- metadata.gz: 41c6353df109a853aee9f8230efabd2f51383eff814b8631bbb60b501576a0aab5d5d39cda27505506e26a8e44672b00ac1957f4131107eb77f400b06de9ab8e
7
- data.tar.gz: c8cb6d6d87be289911ff9db57849153db8cb3438088ca8adc2408f38e6aca75d687a5b8334b593d90ba16fb8458fe5026d6a770734b11df03febf65ca2b33e3a
6
+ metadata.gz: 23c6c66f106c56ea1e6c426e0ef55c1ba09486fc7092ad98876933c77dc83fcc0e83f15868678c6e25e7f3a955071c251d8d18ec80b8f948a9e039d8a463fcfd
7
+ data.tar.gz: fcfce082512699a846d870928335a0732eccafac7a870613ebb4347422915dbc447656fbc6c512d1cbc08232933e0cdecd2ff8719810f51a05b5d9a644a9083d
@@ -10,9 +10,7 @@ module PgEngine
10
10
  check_redis
11
11
  check_postgres
12
12
  check_websocket
13
- PgEngine.config.health_ssl_urls.each do |url|
14
- check_ssl(url)
15
- end
13
+ check_ssl
16
14
  render_up
17
15
  end
18
16
 
@@ -59,41 +57,25 @@ module PgEngine
59
57
  end
60
58
  # rubocop:enable Metrics/MethodLength
61
59
 
62
- def check_ssl(url)
63
- uri = URI.parse(url)
64
- http_session = Net::HTTP.new(uri.host, uri.port)
65
-
66
- # Use SSL/TLS
67
- http_session.use_ssl = true
60
+ def check_ssl
61
+ raise PgEngine::Error, 'no ssl log file' unless File.exist?(PgEngine::SslVerifier::OUTPUT_PATH)
68
62
 
69
- # Create a request
70
- request = Net::HTTP::Get.new(uri.request_uri)
71
-
72
- begin
73
- # Start the HTTP session
74
- http_session.start do |http|
75
- http.request(request)
63
+ sites = JSON.parse(File.read(PgEngine::SslVerifier::OUTPUT_PATH))
64
+ PgEngine.config.health_ssl_urls.each do |url|
65
+ check_site_ssl(sites, url)
66
+ end
67
+ end
76
68
 
77
- # Check the response code
69
+ def check_site_ssl(sites, url)
70
+ raise PgEngine::Error, "SSL record not present: #{url}" if sites[url].blank?
78
71
 
79
- # Get the SSL certificate
80
- cert = http.peer_cert
72
+ if Time.zone.parse(sites[url]['verified_at']) < 2.days.ago
73
+ raise PgEngine::Error, "The SSL info is outdated: #{url}"
74
+ end
81
75
 
82
- raise PgEngine::Error, "#{url}: No SSL certificate found." unless cert
83
- # puts "Certificate Subject: #{cert.subject}"
84
- # puts "Certificate Issuer: #{cert.issuer}"
85
- # puts "Certificate Valid From: #{cert.not_before}"
86
- # puts "Certificate Valid Until: #{cert.not_after}"
76
+ return unless Time.zone.parse(sites[url]['expires_at']) < 7.days.from_now
87
77
 
88
- if cert.not_after < 7.days.from_now
89
- raise PgEngine::Error, "#{url}: The SSL certificate is expired (or about to expire)."
90
- end
91
- end
92
- rescue OpenSSL::SSL::SSLError => e
93
- raise PgEngine::Error, "#{url}: SSL Error: #{e.message}"
94
- rescue StandardError => e
95
- raise PgEngine::Error, "#{url}: An error occurred: #{e.message}"
96
- end
78
+ raise PgEngine::Error, "The SSL certificate is expired (or about to expire): #{url}"
97
79
  end
98
80
 
99
81
  def render_up
@@ -0,0 +1,65 @@
1
+ # :nocov:
2
+ module PgEngine
3
+ class SslVerifier
4
+ OUTPUT_PATH = 'tmp/ssl_verifier.json'.freeze
5
+
6
+ def run
7
+ PgEngine.config.health_ssl_urls.each do |url|
8
+ check_ssl(url)
9
+ end
10
+ end
11
+
12
+ def check_ssl(url)
13
+ uri = URI.parse(url)
14
+ http_session = Net::HTTP.new(uri.host, uri.port)
15
+
16
+ # Use SSL/TLS
17
+ http_session.use_ssl = true
18
+
19
+ # Create a request
20
+ request = Net::HTTP::Get.new(uri.request_uri)
21
+
22
+ begin
23
+ # Start the HTTP session
24
+ http_session.start do |http|
25
+ http.request(request)
26
+
27
+ # Check the response code
28
+
29
+ # Get the SSL certificate
30
+ cert = http.peer_cert
31
+
32
+ raise PgEngine::Error, "#{url}: No SSL certificate found." unless cert
33
+ # puts "Certificate Subject: #{cert.subject}"
34
+ # puts "Certificate Issuer: #{cert.issuer}"
35
+ # puts "Certificate Valid From: #{cert.not_before}"
36
+ # puts "Certificate Valid Until: #{cert.not_after}"
37
+
38
+ if cert.not_after < 7.days.from_now
39
+ raise PgEngine::Error, "#{url}: The SSL certificate is expired (or about to expire)."
40
+ end
41
+
42
+ log_output(url, cert.not_after)
43
+ end
44
+ rescue OpenSSL::SSL::SSLError => e
45
+ raise PgEngine::Error, "#{url}: SSL Error: #{e.message}"
46
+ rescue StandardError => e
47
+ raise PgEngine::Error, "#{url}: An error occurred: #{e.message}"
48
+ end
49
+ end
50
+
51
+ def log_output(url, expires_at)
52
+ current_content =
53
+ if File.exist?(OUTPUT_PATH)
54
+ JSON.parse(File.read(OUTPUT_PATH))
55
+ else
56
+ {}
57
+ end
58
+
59
+ current_content[url] = { verified_at: Time.current, expires_at: }
60
+
61
+ File.write(OUTPUT_PATH, current_content.to_json)
62
+ end
63
+ end
64
+ end
65
+ # :nocov:
@@ -11,6 +11,7 @@ require_relative 'pg_engine/email_observer'
11
11
  require_relative 'pg_engine/mailgun/log_sync'
12
12
  require_relative 'pg_engine/route_helpers'
13
13
  require_relative 'pg_engine/utils/pg_logger'
14
+ require_relative 'pg_engine/utils/ssl_verifier'
14
15
  require_relative 'pg_engine/utils/pdf_preview_generator'
15
16
 
16
17
  require_relative '../app/helpers/pg_engine/print_helper'
@@ -0,0 +1,18 @@
1
+ # require 'rails_helper'
2
+ #
3
+ # describe PgEngine::SslVerifier do
4
+ # describe 'check_ssl' do
5
+ # subject do
6
+ # described_class.new.check_ssl(url)
7
+ # end
8
+ #
9
+ # let(:url) { 'https://factura.bien.com.ar' }
10
+ # let(:output_file) { File.read(PgEngine::SslVerifier::OUTPUT_PATH) }
11
+ # let(:output_json) { JSON.parse(output_file) }
12
+ #
13
+ # it 'checks the SSL certificate and saves the file' do
14
+ # expect { subject }.not_to raise_error
15
+ # expect(output_json.keys).to include 'https://bien.com.ar'
16
+ # end
17
+ # end
18
+ # end
@@ -5,6 +5,11 @@ html
5
5
  meta charset="UTF-8"
6
6
  meta http-equiv="X-UA-Compatible" content="IE=edge"
7
7
  meta name="viewport" content="width=device-width,initial-scale=1"
8
+ - if @meta_robots.present?
9
+ meta name="robots" content=@meta_robots
10
+ - else
11
+ meta name="robots" content="noindex, nofollow"
12
+
8
13
  - if @turbo_page_requires_reload
9
14
  meta name="turbo-visit-control" content="reload"
10
15
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  # :nocov:
4
4
  module PgRails
5
- VERSION = '7.6.28'
5
+ VERSION = '7.6.30'
6
6
  end
7
7
  # :nocov:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.6.28
4
+ version: 7.6.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martín Rosso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-01-22 00:00:00.000000000 Z
11
+ date: 2025-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -893,6 +893,7 @@ files:
893
893
  - pg_engine/lib/pg_engine/utils/pdf_preview_generator.rb
894
894
  - pg_engine/lib/pg_engine/utils/pg_logger.rb
895
895
  - pg_engine/lib/pg_engine/utils/resource_reports.rb
896
+ - pg_engine/lib/pg_engine/utils/ssl_verifier.rb
896
897
  - pg_engine/lib/tasks/auto_anotar_modelos.rake
897
898
  - pg_engine/spec/components/alert_component_spec.rb
898
899
  - pg_engine/spec/components/internal_error_component_spec.rb
@@ -930,6 +931,7 @@ files:
930
931
  - pg_engine/spec/lib/pg_engine/form_helper_spec.rb
931
932
  - pg_engine/spec/lib/pg_engine/mailgun/log_sync_spec.rb
932
933
  - pg_engine/spec/lib/pg_engine/utils/pg_engine/pg_logger_spec.rb
934
+ - pg_engine/spec/lib/pg_engine/utils/ssl_verifier_spec.rb
933
935
  - pg_engine/spec/lib/pg_form_builder_spec.rb
934
936
  - pg_engine/spec/mailers/pg_engine/base_mailer_spec.rb
935
937
  - pg_engine/spec/mailers/previews/devise_preview.rb