From 4689d10e8dbfb612e03f4fb922d61010fb10f24c Mon Sep 17 00:00:00 2001 From: jazzari Date: Thu, 21 Sep 2023 16:22:45 -0300 Subject: [PATCH 1/4] feat: instalada gema device_detector #14334 --- Gemfile | 1 + config/initializers/device_detector.rb | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 config/initializers/device_detector.rb diff --git a/Gemfile b/Gemfile index dd880219..7e1beda9 100644 --- a/Gemfile +++ b/Gemfile @@ -78,6 +78,7 @@ gem 'validates_hostname' gem 'webpacker' gem 'yaml_db', git: 'https://0xacab.org/sutty/yaml_db.git' gem 'kaminari' +gem 'device_detector' # database gem 'hairtrigger' diff --git a/config/initializers/device_detector.rb b/config/initializers/device_detector.rb new file mode 100644 index 00000000..95500315 --- /dev/null +++ b/config/initializers/device_detector.rb @@ -0,0 +1,3 @@ +DeviceDetector.configure do |config| + config.max_cache_keys = 5_000 # to check if not too much + end \ No newline at end of file From 74e371eb36c6b9d4714e0cfba98851ec1a36a65c Mon Sep 17 00:00:00 2001 From: jazzari Date: Fri, 22 Sep 2023 13:51:36 -0300 Subject: [PATCH 2/4] feat: ignorar reportes de bots con device_detector #14334 --- app/controllers/api/v1/notices_controller.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v1/notices_controller.rb b/app/controllers/api/v1/notices_controller.rb index 436c78b5..c5b88e28 100644 --- a/app/controllers/api/v1/notices_controller.rb +++ b/app/controllers/api/v1/notices_controller.rb @@ -9,10 +9,11 @@ module Api # Generar un stacktrace en segundo plano y enviarlo por correo # solo si la API key es verificable. Del otro lado siempre # respondemos con lo mismo. - def create - if site&.airbrake_valid? airbrake_token + def create + if site&.airbrake_valid? airbrake_token && !detected_device.bot? BacktraceJob.perform_later site_id: params[:site_id], - params: airbrake_params.to_h + params: airbrake_params.to_h + end end render status: 201, json: { id: 1, url: '' } @@ -34,6 +35,11 @@ module Api def airbrake_token @airbrake_token ||= params[:key] end + + # @return [DeviceDetector] + def detected_device + @detected_device ||= DeviceDetector.new(request.headers) + end end end end From 6866f827f6547655709405ad258783464bb72b06 Mon Sep 17 00:00:00 2001 From: jazzari Date: Fri, 22 Sep 2023 15:10:46 -0300 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20error=20de=20sintaxis=20y=20par?= =?UTF-8?q?=C3=A1metros=20a=20device=5Fdetector=20#14334?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 18 ++++++++++-------- app/controllers/api/v1/notices_controller.rb | 5 ++--- config/initializers/device_detector.rb | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f71053d7..5e6d09f9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -86,7 +86,7 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) autoprefixer-rails (10.4.13.0) @@ -142,6 +142,7 @@ GEM rake (> 10, < 14) ruby-statistics (>= 2.1) thor (>= 0.19, < 2) + device_detector (1.1.1) devise (4.9.2) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -166,10 +167,10 @@ GEM railties (>= 3.2) down (5.4.1) addressable (~> 2.8) - dry-configurable (1.0.1) + dry-configurable (1.1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-core (1.0.0) + dry-core (1.0.1) concurrent-ruby (~> 1.0) zeitwerk (~> 2.6) dry-inflector (1.0.0) @@ -178,7 +179,7 @@ GEM concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-schema (1.13.1) + dry-schema (1.13.3) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -344,7 +345,7 @@ GEM method_source (1.0.0) mini_histogram (0.3.1) mini_magick (4.12.0) - mini_mime (1.1.2) + mini_mime (1.1.5) mini_portile2 (2.8.2) minitest (5.18.0) mobility (1.2.9) @@ -461,7 +462,7 @@ GEM responders (3.1.0) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.2.5) + rexml (3.2.6) rgl (0.6.3) pairing_heap (>= 0.3.0) rexml (~> 3.2, >= 3.2.4) @@ -526,7 +527,7 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - sqlite3 (1.6.3-x86_64-linux-musl) + sqlite3 (1.6.4-x86_64-linux-musl) mini_portile2 (~> 2.8.0) stackprof (0.2.25-x86_64-linux-musl) stream (0.5.5) @@ -575,7 +576,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.8) + zeitwerk (2.6.11) PLATFORMS x86_64-linux-musl @@ -592,6 +593,7 @@ DEPENDENCIES concurrent-ruby-ext database_cleaner derailed_benchmarks + device_detector devise devise-i18n devise_invitable diff --git a/app/controllers/api/v1/notices_controller.rb b/app/controllers/api/v1/notices_controller.rb index c5b88e28..3d74a48f 100644 --- a/app/controllers/api/v1/notices_controller.rb +++ b/app/controllers/api/v1/notices_controller.rb @@ -10,10 +10,9 @@ module Api # solo si la API key es verificable. Del otro lado siempre # respondemos con lo mismo. def create - if site&.airbrake_valid? airbrake_token && !detected_device.bot? + if (site&.airbrake_valid? airbrake_token) && !detected_device.bot? BacktraceJob.perform_later site_id: params[:site_id], params: airbrake_params.to_h - end end render status: 201, json: { id: 1, url: '' } @@ -38,7 +37,7 @@ module Api # @return [DeviceDetector] def detected_device - @detected_device ||= DeviceDetector.new(request.headers) + @detected_device ||= DeviceDetector.new(request.headers['User-Agent'], request.headers) end end end diff --git a/config/initializers/device_detector.rb b/config/initializers/device_detector.rb index 95500315..e6f6118a 100644 --- a/config/initializers/device_detector.rb +++ b/config/initializers/device_detector.rb @@ -1,3 +1,3 @@ DeviceDetector.configure do |config| - config.max_cache_keys = 5_000 # to check if not too much - end \ No newline at end of file + config.max_cache_keys = 5_000 # to check if not too much +end \ No newline at end of file From 5c43214e46a06f125459c89df9568c1986dd01ea Mon Sep 17 00:00:00 2001 From: jazzari Date: Mon, 25 Sep 2023 14:32:28 -0300 Subject: [PATCH 4/4] fix: arreglados cambios en Gemfile.lock #14334 --- Gemfile.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5e6d09f9..a786e060 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -86,7 +86,7 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.5) + addressable (2.8.4) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) autoprefixer-rails (10.4.13.0) @@ -167,10 +167,10 @@ GEM railties (>= 3.2) down (5.4.1) addressable (~> 2.8) - dry-configurable (1.1.0) + dry-configurable (1.0.1) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-core (1.0.1) + dry-core (1.0.0) concurrent-ruby (~> 1.0) zeitwerk (~> 2.6) dry-inflector (1.0.0) @@ -179,7 +179,7 @@ GEM concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) zeitwerk (~> 2.6) - dry-schema (1.13.3) + dry-schema (1.13.1) concurrent-ruby (~> 1.0) dry-configurable (~> 1.0, >= 1.0.1) dry-core (~> 1.0, < 2) @@ -345,7 +345,7 @@ GEM method_source (1.0.0) mini_histogram (0.3.1) mini_magick (4.12.0) - mini_mime (1.1.5) + mini_mime (1.1.2) mini_portile2 (2.8.2) minitest (5.18.0) mobility (1.2.9) @@ -462,7 +462,7 @@ GEM responders (3.1.0) actionpack (>= 5.2) railties (>= 5.2) - rexml (3.2.6) + rexml (3.2.5) rgl (0.6.3) pairing_heap (>= 0.3.0) rexml (~> 3.2, >= 3.2.4) @@ -527,7 +527,7 @@ GEM actionpack (>= 5.2) activesupport (>= 5.2) sprockets (>= 3.0.0) - sqlite3 (1.6.4-x86_64-linux-musl) + sqlite3 (1.6.3-x86_64-linux-musl) mini_portile2 (~> 2.8.0) stackprof (0.2.25-x86_64-linux-musl) stream (0.5.5) @@ -576,7 +576,7 @@ GEM websocket-extensions (0.1.5) xpath (3.2.0) nokogiri (~> 1.8) - zeitwerk (2.6.11) + zeitwerk (2.6.8) PLATFORMS x86_64-linux-musl