active_hashcash 0.3.0 → 0.3.1

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/app/assets/config/active_hashcash_manifest.js +1 -0
  4. data/app/assets/javascripts/hashcash.js +257 -0
  5. data/app/assets/stylesheets/active_hashcash/application.css +15 -0
  6. data/app/controllers/active_hashcash/addresses_controller.rb +7 -0
  7. data/app/controllers/active_hashcash/application_controller.rb +4 -0
  8. data/app/controllers/active_hashcash/assets_controller.rb +34 -0
  9. data/app/controllers/active_hashcash/stamps_controller.rb +11 -0
  10. data/app/helpers/active_hashcash/addresses_helper.rb +4 -0
  11. data/app/helpers/active_hashcash/application_helper.rb +4 -0
  12. data/app/helpers/active_hashcash/stamps_helper.rb +4 -0
  13. data/app/jobs/active_hashcash/application_job.rb +4 -0
  14. data/app/mailers/active_hashcash/application_mailer.rb +6 -0
  15. data/app/models/active_hashcash/application_record.rb +5 -0
  16. data/app/models/active_hashcash/stamp.rb +70 -0
  17. data/app/views/active_hashcash/addresses/index.html.erb +17 -0
  18. data/app/views/active_hashcash/assets/_logo.svg.erb +1 -0
  19. data/app/views/active_hashcash/assets/_style.css +148 -0
  20. data/app/views/active_hashcash/assets/application.css.erb +1 -0
  21. data/app/views/active_hashcash/assets/ariato.css.erb +2 -0
  22. data/app/views/active_hashcash/assets/favicon.ico +0 -0
  23. data/app/views/active_hashcash/assets/favicon.svg.erb +1 -0
  24. data/app/views/active_hashcash/assets/vendor/_ariato_base.css +1297 -0
  25. data/app/views/active_hashcash/assets/vendor/_ariato_extra.css +1206 -0
  26. data/app/views/active_hashcash/stamps/_filters.html.erb +39 -0
  27. data/app/views/active_hashcash/stamps/index.html.erb +25 -0
  28. data/app/views/active_hashcash/stamps/show.html.erb +21 -0
  29. data/app/views/layouts/active_hashcash/application.html.erb +36 -0
  30. data/config/locales/de.yml +4 -0
  31. data/config/locales/en.yml +4 -0
  32. data/config/locales/es.yml +4 -0
  33. data/config/locales/fr.yml +4 -0
  34. data/config/locales/it.yml +4 -0
  35. data/config/locales/jp.yml +4 -0
  36. data/config/locales/pt.yml +4 -0
  37. data/config/routes.rb +6 -0
  38. data/db/migrate/20240215143453_create_active_hashcash_stamps.rb +25 -0
  39. data/lib/active_hashcash/version.rb +1 -1
  40. metadata +39 -3
@@ -0,0 +1,39 @@
1
+ <%= form_tag nil, method: :get do %>
2
+ <div class="grid-auto">
3
+ <div role="group">
4
+ <%= label_tag :created_from do %>
5
+ <%= ActiveHashcash::Stamp::human_attribute_name(:created_at) + " ≥" %>
6
+ <%= date_field_tag :created_from, params[:created_from] %>
7
+ <% end %>
8
+
9
+ <%= label_tag :created_from do %>
10
+ <%= ActiveHashcash::Stamp::human_attribute_name(:created_at) + " ≤" %>
11
+ <%= date_field_tag :created_to, params[:created_to] %>
12
+ <% end %>
13
+ </div>
14
+
15
+ <div role="group">
16
+ <%= label_tag :bits_from do %>
17
+ <%= ActiveHashcash::Stamp::human_attribute_name(:bits) + " ≥" %>
18
+ <%= number_field_tag :bits_from, params[:bits_from] %>
19
+ <% end %>
20
+
21
+ <%= label_tag :bits_to do %>
22
+ <%= ActiveHashcash::Stamp::human_attribute_name(:bits) + " ≤" %>
23
+ <%= number_field_tag :bits_to, params[:bits_to] %>
24
+ <% end %>
25
+ </div>
26
+
27
+ <div>
28
+ <%= label_tag :ip_address_starts_with, ActiveHashcash::Stamp::human_attribute_name(:ip_address) %>
29
+ <%= text_field_tag :ip_address_starts_with, params[:ip_address_starts_with] %>
30
+ </div>
31
+
32
+ <div>
33
+ <%= label_tag :request_path_starts_with, ActiveHashcash::Stamp::human_attribute_name(:request_path) %>
34
+ <%= text_field_tag :request_path_starts_with, params[:request_path_starts_with] %>
35
+ </div>
36
+
37
+ <%= submit_tag t("active_hashcash.submit_filter") %>
38
+ </div>
39
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <details>
2
+ <summary>Filters</summary>
3
+ <%= render "filters" %>
4
+ </details>
5
+
6
+ <table>
7
+ <thead>
8
+ <tr>
9
+ <th><%= ActiveHashcash::Stamp.human_attribute_name(:created_at) %></th>
10
+ <th><%= ActiveHashcash::Stamp.human_attribute_name(:ip_address) %></th>
11
+ <th><%= ActiveHashcash::Stamp.human_attribute_name(:request_path) %></th>
12
+ <th><%= ActiveHashcash::Stamp.human_attribute_name(:bits) %></th>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <% for stamp in @stamps %>
17
+ <tr>
18
+ <td><%= link_to stamp.created_at, stamp %></td>
19
+ <td><%= stamp.ip_address %></td>
20
+ <td><%= stamp.request_path %></td>
21
+ <td><%= stamp.bits %></td>
22
+ </tr>
23
+ <% end %>
24
+ </tbody>
25
+ </table>
@@ -0,0 +1,21 @@
1
+
2
+ <h3><%= @stamp %></h3>
3
+ <dl>
4
+ <dt><%= @stamp.class.human_attribute_name(:created_at) %></dt>
5
+ <dd><%= l @stamp.created_at %></dd>
6
+
7
+ <dt><%= @stamp.class.human_attribute_name(:resource) %></dt>
8
+ <dd><%= @stamp.resource %></dd>
9
+
10
+ <dt><%= @stamp.class.human_attribute_name(:bits) %></dt>
11
+ <dd><%= @stamp.bits %></dd>
12
+
13
+ <dt><%= @stamp.class.human_attribute_name(:ip_address) %></dt>
14
+ <dd><%= @stamp.ip_address %></dd>
15
+
16
+ <dt><%= @stamp.class.human_attribute_name(:request_path) %></dt>
17
+ <dd><%= @stamp.request_path %></dd>
18
+
19
+ <dt><%= @stamp.class.human_attribute_name(:context) %></dt>
20
+ <dd><%= @stamp.context %></dd>
21
+ </dl>
@@ -0,0 +1,36 @@
1
+ <!DOCTYPE html>
2
+ <html class="active-analytics">
3
+ <head>
4
+ <title>Active Hashcash</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= tag.link rel: "icon", href: asset_path(:favicon, format: :ico), sizes: "32x32" %>
9
+ <%= tag.link rel: "icon", href: asset_path(:favicon, format: :svg), type: "image/svg+xml" %>
10
+
11
+ <%= tag.link rel: "stylesheet", href: asset_path(:ariato, format: :css) %>
12
+ <%= tag.link rel: "stylesheet", href: asset_path(:application, format: :css) %>
13
+ </head>
14
+ <body>
15
+ <header>
16
+ <nav aria-label="site">
17
+ <ul role="menu" aria-label="Elements" class="is-horizontal">
18
+ <li role="none" class="logo"><%= link_to(root_path) { render partial: "/active_hashcash/assets/logo", formats: [:svg] } %></li>
19
+ <li role="none"><%= link_to_unless_current ActiveHashcash::Stamp.model_name.human.pluralize, stamps_path %></li>
20
+ <li role="none"><%= link_to_unless_current "Top IP addresses", addresses_path %></li>
21
+ </ul>
22
+ </nav>
23
+ </header>
24
+
25
+ <main class="card">
26
+ <%= yield %>
27
+ </main>
28
+
29
+ <footer>
30
+ Made by <a href="https://www.rorvswild.com">RorVsWild</a> |
31
+ <a href="https://github.com/BaseSecrete/active_hashcash">Source code</a> |
32
+ <a href="https://twitter.com/rorvswild">Twitter</a> |
33
+ <a href="https://ruby.social/@rorvswild">Mastodon</a> |
34
+ </footer>
35
+ </body>
36
+ </html>
@@ -0,0 +1,4 @@
1
+ de:
2
+ active_hashcash:
3
+ waiting_label: "Warten auf die Überprüfung ..."
4
+ submit_filter: Filtern
@@ -0,0 +1,4 @@
1
+ en:
2
+ active_hashcash:
3
+ waiting_label: "Waiting for verification ..."
4
+ submit_filter: Filter
@@ -0,0 +1,4 @@
1
+ es:
2
+ active_hashcash:
3
+ waiting_label: "A la espera de la verificación ..."
4
+ submit_filter: Filtro
@@ -0,0 +1,4 @@
1
+ fr:
2
+ active_hashcash:
3
+ waiting_label: "En attente de vérification ..."
4
+ submit_filter: Filtrer
@@ -0,0 +1,4 @@
1
+ it:
2
+ active_hashcash:
3
+ waiting_label: "In attesa di verifica ..."
4
+ submit_filter: Filtro
@@ -0,0 +1,4 @@
1
+ jp:
2
+ active_hashcash:
3
+ waiting_label: "検証待ち ..."
4
+ submit_filter: フィルター
@@ -0,0 +1,4 @@
1
+ pt:
2
+ active_hashcash:
3
+ waiting_label: "À espera de verificação ..."
4
+ submit_filter: Filtro
data/config/routes.rb ADDED
@@ -0,0 +1,6 @@
1
+ ActiveHashcash::Engine.routes.draw do
2
+ resources :assets, only: [:show]
3
+ resources :stamps, only: [:index, :show]
4
+ resources :addresses, only: [:index, :show]
5
+ root "stamps#index"
6
+ end
@@ -0,0 +1,25 @@
1
+ class CreateActiveHashcashStamps < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :active_hashcash_stamps do |t|
4
+ t.string :version, null: false
5
+ t.integer :bits, null: false
6
+ t.date :date, null: false
7
+ t.string :resource, null: false
8
+ t.string :ext, null: false
9
+ t.string :rand, null: false
10
+ t.string :counter, null: false
11
+ t.string :request_path
12
+ t.string :ip_address
13
+
14
+ if t.respond_to?(:jsonb)
15
+ t.jsonb :context # SQLite JSONB support from version 3.45 (2024-01-15)
16
+ elsif t.respond_to?(:json)
17
+ t.json :context
18
+ end
19
+
20
+ t.timestamps
21
+ end
22
+ add_index :active_hashcash_stamps, [:ip_address, :created_at], where: "ip_address IS NOT NULL"
23
+ add_index :active_hashcash_stamps, [:counter, :rand, :date, :resource, :bits, :version, :ext], name: "index_active_hashcash_stamps_unique", unique: true
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiveHashcash
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_hashcash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Bernard
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-14 00:00:00.000000000 Z
11
+ date: 2024-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -35,6 +35,42 @@ files:
35
35
  - CHANGELOG.md
36
36
  - LICENSE.txt
37
37
  - README.md
38
+ - app/assets/config/active_hashcash_manifest.js
39
+ - app/assets/javascripts/hashcash.js
40
+ - app/assets/stylesheets/active_hashcash/application.css
41
+ - app/controllers/active_hashcash/addresses_controller.rb
42
+ - app/controllers/active_hashcash/application_controller.rb
43
+ - app/controllers/active_hashcash/assets_controller.rb
44
+ - app/controllers/active_hashcash/stamps_controller.rb
45
+ - app/helpers/active_hashcash/addresses_helper.rb
46
+ - app/helpers/active_hashcash/application_helper.rb
47
+ - app/helpers/active_hashcash/stamps_helper.rb
48
+ - app/jobs/active_hashcash/application_job.rb
49
+ - app/mailers/active_hashcash/application_mailer.rb
50
+ - app/models/active_hashcash/application_record.rb
51
+ - app/models/active_hashcash/stamp.rb
52
+ - app/views/active_hashcash/addresses/index.html.erb
53
+ - app/views/active_hashcash/assets/_logo.svg.erb
54
+ - app/views/active_hashcash/assets/_style.css
55
+ - app/views/active_hashcash/assets/application.css.erb
56
+ - app/views/active_hashcash/assets/ariato.css.erb
57
+ - app/views/active_hashcash/assets/favicon.ico
58
+ - app/views/active_hashcash/assets/favicon.svg.erb
59
+ - app/views/active_hashcash/assets/vendor/_ariato_base.css
60
+ - app/views/active_hashcash/assets/vendor/_ariato_extra.css
61
+ - app/views/active_hashcash/stamps/_filters.html.erb
62
+ - app/views/active_hashcash/stamps/index.html.erb
63
+ - app/views/active_hashcash/stamps/show.html.erb
64
+ - app/views/layouts/active_hashcash/application.html.erb
65
+ - config/locales/de.yml
66
+ - config/locales/en.yml
67
+ - config/locales/es.yml
68
+ - config/locales/fr.yml
69
+ - config/locales/it.yml
70
+ - config/locales/jp.yml
71
+ - config/locales/pt.yml
72
+ - config/routes.rb
73
+ - db/migrate/20240215143453_create_active_hashcash_stamps.rb
38
74
  - lib/active_hashcash.rb
39
75
  - lib/active_hashcash/engine.rb
40
76
  - lib/active_hashcash/version.rb