wafris 0.1.2 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05707fe625f71f24a02f26585d89356156b1dc83887195f1042a47856d3c86cf
4
- data.tar.gz: 05e798e3298518a0310f1cdf6a68426b2b12f9c066acc74e78833987e26f2e31
3
+ metadata.gz: b9ad06b7e5b23c313860cbdd76ee405cda36958112889cc591b3733270e31312
4
+ data.tar.gz: 98239b5926e3d57f732c37638ec4166ffb170d1f1f79cc1c36779f803f0c07e4
5
5
  SHA512:
6
- metadata.gz: b41d4ee2190f5a88e263ef6905ffe43e6727923df4f3f1a600f203d10ea2010409e95c02c965cc2161fce47d5d541aaa1217beeb05097134fcaecdcfcd4305f1
7
- data.tar.gz: dd940d846b7892a4607c78767f2ca364c62ab33782deb76b863d8b393f1a5c82134f0b3f6c76a438f9993e7d7702df67899d9e6485bc5491e03fcc3e02a38c1e
6
+ metadata.gz: 1db5393514faa4b605923e039d7270f9eaddcc4d62e5b6f8897372a7b7c4c3a297e8d0900bf18acb53ebf2bb32b43c8ddf6c2ae0a2b1eca67df4ba547446d4b6
7
+ data.tar.gz: fcb42f4ba9a8d1a07f55ebdda5e76dd3e9651675b96f3d7a5ae7024978ac4e81bf35ae9d8fc1c71a67fc10f2f79e0baa8b781bf3a36eeac202fb44b7c386f040
@@ -36,14 +36,6 @@ module Wafris
36
36
  read_lua_dist("wafris_core")
37
37
  end
38
38
 
39
- def graph_sha
40
- @graph_sha ||= redis.script(:load, wafris_graph)
41
- end
42
-
43
- def wafris_graph
44
- read_lua_dist("get_graph_data")
45
- end
46
-
47
39
  private
48
40
 
49
41
  def read_lua_dist(filename)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wafris
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/wafris.rb CHANGED
@@ -48,61 +48,5 @@ module Wafris
48
48
  end
49
49
  end
50
50
  end
51
-
52
- def add_block(ip)
53
- configuration.connection_pool.with do |conn|
54
- conn.zadd(
55
- 'blocked_ranges',
56
- IPAddr.new(ip).to_i,
57
- ip
58
- )
59
- end
60
- end
61
-
62
- def remove_block(ip)
63
- configuration.connection_pool.with do |conn|
64
- conn.zrem(
65
- 'blocked_ranges',
66
- ip
67
- )
68
- end
69
- end
70
-
71
- def request_buckets(_now)
72
- graph_data = []
73
- configuration.connection_pool.with do |conn|
74
- time = Time.now.to_f * 1000
75
- graph_data = conn.evalsha(
76
- configuration.graph_sha,
77
- argv: [
78
- time.to_i
79
- ]
80
- )
81
- end
82
-
83
- return graph_data
84
- end
85
-
86
- def ips_with_num_requests
87
- configuration.connection_pool.with do |conn|
88
- return conn.zunion(
89
- *leader_timebuckets,
90
- 0, -1, with_scores: true
91
- )
92
- end
93
- end
94
-
95
- private
96
-
97
- def leader_timebuckets
98
- timebuckets = []
99
-
100
- time = Time.now.utc
101
- 24.times do |hours|
102
- timebuckets << "ip-leader-sset:#{(time - 60 * 60 * hours).strftime("%Y-%m-%d-%H")}"
103
- end
104
-
105
- return timebuckets
106
- end
107
51
  end
108
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wafris
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micahel Buckbee
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-04-23 00:00:00.000000000 Z
12
+ date: 2023-05-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: connection_pool
@@ -185,7 +185,6 @@ executables: []
185
185
  extensions: []
186
186
  extra_rdoc_files: []
187
187
  files:
188
- - lib/lua/dist/get_graph_data.lua
189
188
  - lib/lua/dist/wafris_core.lua
190
189
  - lib/lua/src/get_time_buckets.lua
191
190
  - lib/lua/src/queries.lua
@@ -1,81 +0,0 @@
1
- -- Compiled from:
2
- -- src/get_time_buckets.lua
3
-
4
- -- Code was pulled from https://otland.net/threads/how-convert-timestamp-to-date-type.251657/
5
- -- An alternate solution is https://gist.github.com/markuman/e96d04139cd8acc33604
6
- local function get_time_bucket_from_timestamp(unix_time_milliseconds)
7
- local function calculate_years_number_of_days(yr)
8
- return (yr % 4 == 0 and (yr % 100 ~= 0 or yr % 400 == 0)) and 366 or 365
9
- end
10
-
11
- local function get_year_and_day_number(year, days)
12
- while days >= calculate_years_number_of_days(year) do
13
- days = days - calculate_years_number_of_days(year)
14
- year = year + 1
15
- end
16
- return year, days
17
- end
18
-
19
- local function get_month_and_month_day(days, year)
20
- local days_in_each_month = {
21
- 31,
22
- (calculate_years_number_of_days(year) == 366 and 29 or 28),
23
- 31,
24
- 30,
25
- 31,
26
- 30,
27
- 31,
28
- 31,
29
- 30,
30
- 31,
31
- 30,
32
- 31,
33
- }
34
-
35
- for month = 1, #days_in_each_month do
36
- if days - days_in_each_month[month] <= 0 then
37
- return month, days
38
- end
39
- days = days - days_in_each_month[month]
40
- end
41
- end
42
-
43
- local unix_time = unix_time_milliseconds / 1000
44
- local year = 1970
45
- local days = math.ceil(unix_time / 86400)
46
- local month = nil
47
-
48
- year, days = get_year_and_day_number(year, days)
49
- month, days = get_month_and_month_day(days, year)
50
- local hours = math.floor(unix_time / 3600 % 24)
51
- -- local minutes, seconds = math.floor(unix_time / 60 % 60), math.floor(unix_time % 60)
52
- -- hours = hours > 12 and hours - 12 or hours == 0 and 12 or hours
53
- return string.format("%04d-%02d-%02d-%02d", year, month, days, hours)
54
- end
55
-
56
- local function get_time_buckets(unix_time_milliseconds)
57
- local time_buckets = {}
58
-
59
- for i = 23, 0, -1 do
60
- table.insert(time_buckets, get_time_bucket_from_timestamp(unix_time_milliseconds - (1000 * 60 * 60 * i)))
61
- end
62
- return time_buckets
63
- end
64
-
65
- local function num_requests(time_bucket)
66
- local request_keys = redis.call("KEYS", "unique-requests:" .. time_bucket)
67
- redis.call("PFMERGE", "merged_unique-requests", unpack(request_keys))
68
- return redis.call("PFCOUNT", "merged_unique-requests")
69
- end
70
-
71
- local graph_data = {}
72
- local unix_time_milliseconds = ARGV[1]
73
- local time_buckets = get_time_buckets(unix_time_milliseconds)
74
- -- use the get_time_buckets method to get each time bucket and
75
- -- the associated count for that bucket
76
- for bucket in pairs(time_buckets) do
77
- table.insert(graph_data, time_buckets[bucket])
78
- table.insert(graph_data, num_requests(time_buckets[bucket]))
79
- end
80
-
81
- return graph_data