wafris 2.2.0 → 2.3.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 +4 -4
- data/lib/wafris/version.rb +1 -1
- data/lib/wafris.rb +44 -36
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fad1d400c6106dc0f2f29b6b46a0ab919f4060ef45a4bde4dbb8607b95c1cae
|
4
|
+
data.tar.gz: b3b854a117e0a7021bf3194e339da5f0acdf320439f973226e850249bc445dcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd8e5e8109a7aa1b51c1361d7c288d11e2cca0ea4a5c0e66a198bbde30d9835b57ce2711f2869c575cc604577b4fe927836bfb0e47764f4e08a4c39c2a2e82db
|
7
|
+
data.tar.gz: fb171df540399f4a128e9bd28a1f80c3aa41e6a97e3cccc5eae0f2fa13b1de86be516d227bce3582fc9cefb35eb067e1b4ced665e79e5af89672187195eac109
|
data/lib/wafris/version.rb
CHANGED
data/lib/wafris.rb
CHANGED
@@ -187,20 +187,25 @@ module Wafris
|
|
187
187
|
|
188
188
|
url_and_api_key = @configuration.upsync_url + "/" + @configuration.api_key
|
189
189
|
|
190
|
+
LogSuppressor.puts_log("[Upsync] Beginning request thread...")
|
191
|
+
current_time = Time.now
|
190
192
|
response = HTTParty.post(
|
191
193
|
url_and_api_key,
|
192
194
|
body: body,
|
193
195
|
headers: headers,
|
194
|
-
timeout:
|
196
|
+
timeout: 5
|
195
197
|
)
|
196
198
|
|
197
199
|
if response.code == 200
|
198
200
|
@configuration.upsync_status = "Complete"
|
199
201
|
else
|
200
|
-
LogSuppressor.puts_log("Upsync Error. HTTP Response: #{response.code}")
|
202
|
+
LogSuppressor.puts_log("[Upsync] Error. HTTP Response: #{response.code}")
|
201
203
|
end
|
202
204
|
rescue HTTParty::Error => e
|
203
|
-
LogSuppressor.puts_log("Upsync Error. Failed to send upsync requests: #{e.message}")
|
205
|
+
LogSuppressor.puts_log("[Upsync] Thread Error. Failed to send upsync requests: #{e.message}")
|
206
|
+
ensure
|
207
|
+
elapsed_time = Time.now - current_time
|
208
|
+
LogSuppressor.puts_log("[Upsync] request thread complete in #{elapsed_time.round(2)} seconds.")
|
204
209
|
end
|
205
210
|
|
206
211
|
# This method is used to queue upsync requests. It takes in several parameters including:
|
@@ -226,7 +231,7 @@ module Wafris
|
|
226
231
|
@configuration.upsync_queue = []
|
227
232
|
@configuration.last_upsync_timestamp = Time.now.to_i
|
228
233
|
|
229
|
-
send_upsync_requests(requests_array)
|
234
|
+
Thread.new { send_upsync_requests(requests_array) }
|
230
235
|
end
|
231
236
|
|
232
237
|
@configuration.upsync_status = "Enabled"
|
@@ -255,10 +260,10 @@ module Wafris
|
|
255
260
|
begin
|
256
261
|
lockfile = File.open(lockfile_path, File::RDWR | File::CREAT | File::EXCL)
|
257
262
|
rescue Errno::EEXIST
|
258
|
-
LogSuppressor.puts_log("[
|
263
|
+
LogSuppressor.puts_log("[Downsync][downsync_db] Lockfile already exists, skipping downsync.")
|
259
264
|
return
|
260
265
|
rescue Exception => e
|
261
|
-
LogSuppressor.puts_log("[
|
266
|
+
LogSuppressor.puts_log("[Downsync] Error creating lockfile: #{e.message}")
|
262
267
|
end
|
263
268
|
|
264
269
|
begin
|
@@ -280,10 +285,14 @@ module Wafris
|
|
280
285
|
# puts "Downloading from #{@configuration.downsync_url}/#{db_rule_category}/#{@configuration.api_key}?current_version=#{current_filename}&process_id=#{Process.pid}"
|
281
286
|
uri = "#{@configuration.downsync_url}/#{db_rule_category}/#{@configuration.api_key}?#{data.to_query}"
|
282
287
|
|
288
|
+
LogSuppressor.puts_log("[Downsync] Beginning request thread for #{db_rule_category}...")
|
289
|
+
current_time = Time.now
|
290
|
+
|
283
291
|
response = HTTParty.get(
|
284
292
|
uri,
|
285
293
|
follow_redirects: true, # Enable following redirects
|
286
|
-
max_redirects: 2
|
294
|
+
max_redirects: 2, # Maximum number of redirects to follow
|
295
|
+
timeout: 30
|
287
296
|
)
|
288
297
|
|
289
298
|
# TODO: What to do if timeout
|
@@ -291,13 +300,12 @@ module Wafris
|
|
291
300
|
|
292
301
|
if response.code == 401
|
293
302
|
@configuration.upsync_status = "Disabled"
|
294
|
-
LogSuppressor.puts_log("[
|
295
|
-
LogSuppressor.puts_log("[
|
303
|
+
LogSuppressor.puts_log("[Downsync] Unauthorized: Bad or missing API key")
|
304
|
+
LogSuppressor.puts_log("[Downsync] API Key: #{@configuration.api_key}")
|
296
305
|
filename = current_filename
|
297
306
|
|
298
307
|
elsif response.code == 304
|
299
308
|
@configuration.upsync_status = "Enabled"
|
300
|
-
LogSuppressor.puts_log("[Wafris][Downsync] No new rules to download")
|
301
309
|
|
302
310
|
filename = current_filename
|
303
311
|
|
@@ -332,12 +340,12 @@ module Wafris
|
|
332
340
|
# DB file is bad or empty so keep using whatever we have now
|
333
341
|
else
|
334
342
|
filename = old_file_name
|
335
|
-
LogSuppressor.puts_log("[
|
343
|
+
LogSuppressor.puts_log("[Downsync] DB Error - No tables exist in the db file #{@configuration.db_file_path}/#{filename}")
|
336
344
|
end
|
337
345
|
|
338
346
|
end
|
339
347
|
rescue => e
|
340
|
-
LogSuppressor.puts_log("[
|
348
|
+
LogSuppressor.puts_log("[Downsync] Error downloading rules: #{e.message}")
|
341
349
|
|
342
350
|
# This gets set even if the API key is bad or other issues
|
343
351
|
# to prevent hammering the distribution server on every request
|
@@ -353,42 +361,47 @@ module Wafris
|
|
353
361
|
# Ensure the lockfile is removed after operations
|
354
362
|
lockfile.close
|
355
363
|
File.delete(lockfile_path)
|
364
|
+
|
365
|
+
elapsed_time = Time.now - current_time
|
366
|
+
LogSuppressor.puts_log("[Downsync] request thread complete in #{elapsed_time.round(2)} seconds for #{db_rule_category}.")
|
356
367
|
end
|
357
368
|
|
358
369
|
filename
|
359
370
|
end
|
360
371
|
|
372
|
+
def sync_interval(db_rule_category)
|
373
|
+
if db_rule_category == "custom_rules"
|
374
|
+
@configuration.downsync_custom_rules_interval
|
375
|
+
else
|
376
|
+
@configuration.downsync_data_subscriptions_interval
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
361
380
|
# Returns the current database file,
|
362
381
|
# if the file is older than the interval, it will download the latest db
|
363
382
|
# if the file doesn't exist, it will download the latest db
|
364
383
|
# if the lockfile exists, it will return the current db
|
365
384
|
def current_db(db_rule_category)
|
366
|
-
interval = if db_rule_category == "custom_rules"
|
367
|
-
@configuration.downsync_custom_rules_interval
|
368
|
-
else
|
369
|
-
@configuration.downsync_data_subscriptions_interval
|
370
|
-
end
|
371
|
-
|
372
385
|
# Checks for existing current modfile, which contains the current db filename
|
373
386
|
if File.exist?("#{@configuration.db_file_path}/#{db_rule_category}.modfile")
|
374
387
|
|
375
|
-
LogSuppressor.puts_log("[
|
388
|
+
LogSuppressor.puts_log("[Downsync] Modfile exists, skipping downsync")
|
376
389
|
|
377
390
|
# Get last Modified Time and current database file name
|
378
391
|
last_db_synctime = File.mtime("#{@configuration.db_file_path}/#{db_rule_category}.modfile").to_i
|
379
392
|
returned_db = File.read("#{@configuration.db_file_path}/#{db_rule_category}.modfile").strip
|
380
393
|
|
381
|
-
LogSuppressor.puts_log("[
|
382
|
-
LogSuppressor.puts_log("[
|
394
|
+
LogSuppressor.puts_log("[Downsync] Modfile Last Modified Time: #{last_db_synctime}")
|
395
|
+
LogSuppressor.puts_log("[Downsync] DB in Modfile: #{returned_db}")
|
383
396
|
|
384
397
|
# Check if the db file is older than the interval
|
385
|
-
if (Time.now.to_i - last_db_synctime) >
|
398
|
+
if (Time.now.to_i - last_db_synctime) > sync_interval(db_rule_category)
|
386
399
|
|
387
|
-
LogSuppressor.puts_log("[
|
400
|
+
LogSuppressor.puts_log("[Downsync] DB is older than the interval")
|
388
401
|
|
389
402
|
# Make sure that another process isn't already downloading the rules
|
390
403
|
if !File.exist?("#{@configuration.db_file_path}/#{db_rule_category}.lockfile")
|
391
|
-
|
404
|
+
Thread.new { downsync_db(db_rule_category, returned_db) }
|
392
405
|
end
|
393
406
|
|
394
407
|
returned_db
|
@@ -396,7 +409,7 @@ module Wafris
|
|
396
409
|
# Current db is up to date
|
397
410
|
else
|
398
411
|
|
399
|
-
LogSuppressor.puts_log("[
|
412
|
+
LogSuppressor.puts_log("[Downsync] DB is up to date")
|
400
413
|
|
401
414
|
returned_db = File.read("#{@configuration.db_file_path}/#{db_rule_category}.modfile").strip
|
402
415
|
|
@@ -413,24 +426,18 @@ module Wafris
|
|
413
426
|
# No modfile exists, so download the latest db
|
414
427
|
else
|
415
428
|
|
416
|
-
LogSuppressor.puts_log("[
|
429
|
+
LogSuppressor.puts_log("[Downsync] No modfile exists, downloading latest #{db_rule_category} db")
|
417
430
|
|
418
431
|
# Make sure that another process isn't already downloading the rules
|
419
432
|
if File.exist?("#{@configuration.db_file_path}/#{db_rule_category}.lockfile")
|
420
|
-
LogSuppressor.puts_log("[
|
433
|
+
LogSuppressor.puts_log("[Downsync][current_db] Lockfile exists, skipping downsync")
|
421
434
|
# Lockfile exists, but no modfile with a db filename
|
422
435
|
nil
|
423
436
|
else
|
424
|
-
|
425
|
-
LogSuppressor.puts_log("[Wafris][Downsync] No modfile exists, downloading latest db")
|
426
437
|
# No modfile exists, so download the latest db
|
427
|
-
|
438
|
+
Thread.new { downsync_db(db_rule_category, nil) }
|
428
439
|
|
429
|
-
|
430
|
-
nil
|
431
|
-
else
|
432
|
-
returned_db
|
433
|
-
end
|
440
|
+
nil
|
434
441
|
end
|
435
442
|
end
|
436
443
|
end
|
@@ -444,11 +451,12 @@ module Wafris
|
|
444
451
|
|
445
452
|
return "Passed" if @configuration.api_key.nil?
|
446
453
|
|
454
|
+
# Now current_db can return the actual db, nil, or a future object
|
447
455
|
rules_db_filename = current_db("custom_rules")
|
448
456
|
data_subscriptions_db_filename = current_db("data_subscriptions")
|
449
457
|
|
450
458
|
# Checks to see if the filenames are present before loading the db
|
451
|
-
if rules_db_filename.to_s.strip != "" && data_subscriptions_db_filename.
|
459
|
+
if rules_db_filename.to_s.strip != "" && data_subscriptions_db_filename.to_s.strip != ""
|
452
460
|
|
453
461
|
rules_db = SQLite3::Database.new "#{@configuration.db_file_path}/#{rules_db_filename}"
|
454
462
|
data_subscriptions_db =
|
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: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Buckbee
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-11-
|
12
|
+
date: 2024-11-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|