opdo_epfl_spymiddleware 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9185a45e6c1c1c38f95b054c2c906bed90e195f59c096bc50ff2db6afcbb7ac4
4
+ data.tar.gz: 4347d69022f6ef045350e1e023a23df937aa8b7c8e276d1046788e9f7d3cd65c
5
+ SHA512:
6
+ metadata.gz: 5139c6d1f302eaf12817eef3a41a6bf4458b42a40cdb76232aebcbaf2d6cde2e7f8fbf3089cf363476a26d74f1db7284ba6c7a294d2259524023f5cde92120db
7
+ data.tar.gz: 9f8112fdd6e32e4e6f209a99e889f576abd52fb1565b8b75e078e9b182dcc0486cf431b6a34172b8c2737fc536ebb460ffe4e4328069fb77e3ae2e90dd287b82
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPDO_EPFL_Middleware
4
+
5
+ class Middleware
6
+ PATHSKIP_RE = %r{/(rails/|assets|path_to_skip)}
7
+
8
+ def initialize(app)
9
+ @app = app
10
+ @file_logger = Logger.new('/tmp/opdo_epfl_spymiddleware.log')
11
+ @file_logger.info("===> OPDo EPFL Spy is starting")
12
+ end
13
+
14
+ def call(env)
15
+ status, headers, response = @app.call(env)
16
+ spy(env)
17
+ [status, headers, response]
18
+ end
19
+
20
+ def spy(env)
21
+ req = Rack::Request.new env
22
+ return if req.path =~ PATHSKIP_RE
23
+
24
+ route = Rails.application.routes.recognize_path(req.path)
25
+ report = {
26
+ 'time' => Time.zone.now.strftime('%Y%m%d-%H%M-%s'),
27
+ 'user' => user(req),
28
+ 'path' => req.path,
29
+ 'params' => req.params,
30
+ 'route' => route,
31
+ }
32
+ @file_logger.debug("=== #{report.to_yaml}")
33
+ end
34
+
35
+ def user(req)
36
+ u = req.env['warden'].user(:user)
37
+ u.nil? ? "NO AUTH" : u.slice(:name, :email, :username).to_h
38
+ end
39
+ end
40
+
41
+ end
@@ -0,0 +1,11 @@
1
+ require "opdo_epfl_spymiddleware/middleware"
2
+
3
+ module OPDO_EPFL_Middleware
4
+
5
+ class OPDO_EPFL_SpyMiddleware < Rails::Railtie
6
+ initializer "opdo_epfl_spymiddleware.configure_rails_initialization" do |app|
7
+ app.middleware.use OPDO_EPFL_Middleware::Middleware
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,2 @@
1
+ require "opdo_epfl_spymiddleware/middleware"
2
+ require "opdo_epfl_spymiddleware/railtie" if defined?(Rails::Railtie)
metadata ADDED
@@ -0,0 +1,40 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: opdo_epfl_spymiddleware
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - EPFL/FSD
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-03-26 00:00:00.000000000 Z
11
+ dependencies: []
12
+ executables: []
13
+ extensions: []
14
+ extra_rdoc_files: []
15
+ files:
16
+ - lib/opdo_epfl_spymiddleware.rb
17
+ - lib/opdo_epfl_spymiddleware/middleware.rb
18
+ - lib/opdo_epfl_spymiddleware/railtie.rb
19
+ homepage: https://www.epfl.ch/campus/services/data-protection/laws-and-regulations/fadp-and-gpdr/
20
+ licenses:
21
+ - MIT
22
+ metadata: {}
23
+ rdoc_options: []
24
+ require_paths:
25
+ - lib
26
+ required_ruby_version: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 3.0.0
31
+ required_rubygems_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ requirements: []
37
+ rubygems_version: 3.6.5
38
+ specification_version: 4
39
+ summary: Get OPDo logs of RoR EPFL applications
40
+ test_files: []