From fe77921e4733b330e69a9f2db8be5de9ecefc8af Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Oct 2016 13:26:44 +0200 Subject: [PATCH] Catching more exceptions that slipped through, removing AR logging from production as it's very verbose and not very useful --- app/controllers/api_controller.rb | 4 ++++ app/controllers/application_controller.rb | 6 ++++++ app/controllers/stream_entries_controller.rb | 15 +++++++++------ app/services/fetch_atom_service.rb | 3 +++ app/services/fetch_remote_account_service.rb | 2 ++ app/services/fetch_remote_status_service.rb | 3 +++ config/environments/production.rb | 2 ++ 7 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index c550b38e8..4ccf20bc9 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -18,6 +18,10 @@ class ApiController < ApplicationController render json: { error: 'Remote data could not be fetched' }, status: 503 end + rescue_from OpenSSL::SSL::SSLError do + render json: { error: 'Remote SSL certificate could not be verified' }, status: 503 + end + protected def current_resource_owner diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c8d7e2084..1f991cf67 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -30,6 +30,12 @@ class ApplicationController < ActionController::Base end end + def gone + respond_to do |format| + format.any { head 410 } + end + end + def current_account current_user.try(:account) end diff --git a/app/controllers/stream_entries_controller.rb b/app/controllers/stream_entries_controller.rb index e1b664b08..a364fa01c 100644 --- a/app/controllers/stream_entries_controller.rb +++ b/app/controllers/stream_entries_controller.rb @@ -8,13 +8,16 @@ class StreamEntriesController < ApplicationController def show @type = @stream_entry.activity_type.downcase - if @stream_entry.activity_type == 'Status' - @ancestors = @stream_entry.activity.ancestors - @descendants = @stream_entry.activity.descendants - end - respond_to do |format| - format.html + format.html do + return gone if @stream_entry.activity.nil? + + if @stream_entry.activity_type == 'Status' + @ancestors = @stream_entry.activity.ancestors + @descendants = @stream_entry.activity.descendants + end + end + format.atom end end diff --git a/app/services/fetch_atom_service.rb b/app/services/fetch_atom_service.rb index 4be7f6355..f2625dcaa 100644 --- a/app/services/fetch_atom_service.rb +++ b/app/services/fetch_atom_service.rb @@ -12,6 +12,9 @@ class FetchAtomService < BaseService else return process_html(fetch(url)) end + + rescue OpenSSL::SSL::SSLError => e + Rails.logger.debug "SSL error: #{e}" end private diff --git a/app/services/fetch_remote_account_service.rb b/app/services/fetch_remote_account_service.rb index 5f45f9b28..83a81a61b 100644 --- a/app/services/fetch_remote_account_service.rb +++ b/app/services/fetch_remote_account_service.rb @@ -19,5 +19,7 @@ class FetchRemoteAccountService < BaseService Rails.logger.debug "Going to webfinger #{username}@#{domain}" return FollowRemoteAccountService.new.call("#{username}@#{domain}") + rescue Nokogiri::XML::XPath::SyntaxError + Rails.logger.debug "Invalid XML or missing namespace" end end diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb index 24a63e841..a507fbeed 100644 --- a/app/services/fetch_remote_status_service.rb +++ b/app/services/fetch_remote_status_service.rb @@ -31,5 +31,8 @@ class FetchRemoteStatusService < BaseService Rails.logger.debug "Going to webfinger #{username}@#{domain}" return FollowRemoteAccountService.new.call("#{username}@#{domain}") + rescue Nokogiri::XML::XPath::SyntaxError + Rails.logger.debug "Invalid XML or missing namespace" + end end end diff --git a/config/environments/production.rb b/config/environments/production.rb index ee7598c4c..5e010b206 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -85,4 +85,6 @@ Rails.application.configure do config.action_mailer.delivery_method = :smtp config.react.variant = :production + + config.active_record.logger = nil end