apache_log_report 0.9.2 → 0.9.3
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/exe/apache_log_report +1 -2
- data/lib/apache_log_report.rb +24 -15
- data/lib/apache_log_report/version.rb +1 -1
- 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: ca301cb770ac157383315a770b619d746c5381568bfb2b091942a965a702496f
|
4
|
+
data.tar.gz: 7fa3da83dcc3a9baab9c98ac180adadb7dab256ca7800f882f8f33f1457c3071
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be85ba24ecf36635f055465c5f131054d29032e47b9780031973274a1ebdf579ea30c816eac16f697f83c7a523bd3fe568e653167b8c1420018c160d37f789df
|
7
|
+
data.tar.gz: ba0aa6fbf8112bca663fa2b8df6563d87b02be35034a00c42c887a2b3a5556abdfd56a54560e79e65748c37b5319f23887fa167793dd7b30ce13d0b7fbb1a742
|
data/exe/apache_log_report
CHANGED
@@ -16,13 +16,12 @@ if @log_file and not File.exist? @log_file
|
|
16
16
|
end
|
17
17
|
|
18
18
|
#
|
19
|
-
# Parse Log
|
19
|
+
# Parse Log and Track Statistics
|
20
20
|
#
|
21
21
|
|
22
22
|
@started_at = Time.now
|
23
23
|
@db = ApacheLogReport.parse @log_file
|
24
24
|
ApacheLogReport.analyze_data @db, @options
|
25
|
-
|
26
25
|
@ended_at = Time.now
|
27
26
|
@duration = @ended_at - @started_at
|
28
27
|
|
data/lib/apache_log_report.rb
CHANGED
@@ -45,6 +45,10 @@ module ApacheLogReport
|
|
45
45
|
args[:suffix] = n
|
46
46
|
end
|
47
47
|
|
48
|
+
opts.on("-c", "--code-export=WHAT", String, "Control :export directive in code blocks (code, results, *both*, none)") do |n|
|
49
|
+
args[:code_export] = n
|
50
|
+
end
|
51
|
+
|
48
52
|
opts.on("-h", "--help", "Prints this help") do
|
49
53
|
puts opts
|
50
54
|
exit
|
@@ -58,7 +62,8 @@ module ApacheLogReport
|
|
58
62
|
args[:no_selfpoll] ||= false
|
59
63
|
args[:only_crawlers] ||= false
|
60
64
|
args[:prefix] ||= ""
|
61
|
-
args[:
|
65
|
+
args[:suffix] ||= ""
|
66
|
+
args[:code_export] ||= "both"
|
62
67
|
|
63
68
|
return args
|
64
69
|
end
|
@@ -125,7 +130,7 @@ module ApacheLogReport
|
|
125
130
|
hash[:datetime].iso8601,
|
126
131
|
hash[:remote_host],
|
127
132
|
hash[:user],
|
128
|
-
hash[:remote_host] + hash[:user_agent],
|
133
|
+
hash[:datetime].iso8601 + " " + hash[:remote_host] + " " + hash[:user_agent],
|
129
134
|
hash[:request][:method],
|
130
135
|
hash[:request][:path],
|
131
136
|
(hash[:request][:path] ? File.extname(hash[:request][:path]) : ""),
|
@@ -188,8 +193,8 @@ module ApacheLogReport
|
|
188
193
|
@missed_resources = db.execute "SELECT path, count(path), count(distinct(unique_visitor)) from LogLine where status == '404' and #{@filter} group by path order by count(path) desc limit #{options[:limit]}"
|
189
194
|
|
190
195
|
@reasonable_requests_exts = [ ".html", ".css", ".js", ".jpg", ".svg", ".png", ".woff", ".xml", ".ttf", ".ico", ".pdf", ".htm", ".txt", ".org" ].map { |x|
|
191
|
-
"extension
|
192
|
-
}.join "
|
196
|
+
"extension != '#{x}'"
|
197
|
+
}.join " and "
|
193
198
|
|
194
199
|
@attacks = db.execute "SELECT path, count(path), count(distinct(unique_visitor)) from LogLine where status == '404' and #{@filter} and (#{@reasonable_requests_exts}) group by path order by count(path) desc limit #{options[:limit]}"
|
195
200
|
|
@@ -233,6 +238,7 @@ module ApacheLogReport
|
|
233
238
|
def self.emit options = {}, command, log_file, started_at, ended_at, duration
|
234
239
|
@prefx = options[:prefix]
|
235
240
|
@suffix = options[:suffix]
|
241
|
+
@export = option[:code_export]
|
236
242
|
|
237
243
|
<<EOS
|
238
244
|
#+TITLE: Apache Log Analysis: #{log_file}
|
@@ -253,7 +259,7 @@ module ApacheLogReport
|
|
253
259
|
|
254
260
|
#{ output_table "daily_distribution", ["Day", "Hits", "Visits", "Size"], @daily_distribution }
|
255
261
|
|
256
|
-
#+BEGIN_SRC gnuplot :var data = daily_distribution :results output :exports
|
262
|
+
#+BEGIN_SRC gnuplot :var data = daily_distribution :results output :exports #{@export} :file #{@prefix}daily#{@suffix}.svg
|
257
263
|
reset
|
258
264
|
set grid ytics linestyle 0
|
259
265
|
set grid xtics linestyle 0
|
@@ -267,7 +273,8 @@ set xtics rotate by 60 right
|
|
267
273
|
set title "Hits and Visitors"
|
268
274
|
set xlabel "Date"
|
269
275
|
set ylabel "Hits"
|
270
|
-
set
|
276
|
+
set y2label "Visits"
|
277
|
+
set y2tics
|
271
278
|
|
272
279
|
set style fill transparent solid 0.2 noborder
|
273
280
|
|
@@ -285,7 +292,7 @@ data using 1:($2+100):2 with labels notitle textcolor rgb "#0000AA" axes x1y2
|
|
285
292
|
#{ output_table "time_distribution", ["Hour", "Hits", "Visits", "Size"], @time_distribution }
|
286
293
|
|
287
294
|
|
288
|
-
#+BEGIN_SRC gnuplot :var data = time_distribution :results output :exports
|
295
|
+
#+BEGIN_SRC gnuplot :var data = time_distribution :results output :exports #{@export} :file #{@prefix}time#{@suffix}.svg
|
289
296
|
reset
|
290
297
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
291
298
|
|
@@ -293,7 +300,9 @@ set grid ytics linestyle 0
|
|
293
300
|
|
294
301
|
set title "Hits and Visitors"
|
295
302
|
set xlabel "Date"
|
296
|
-
set ylabel "Hits
|
303
|
+
set ylabel "Hits"
|
304
|
+
set y2label "Visitors"
|
305
|
+
set y2tics
|
297
306
|
|
298
307
|
set style fill solid 0.25
|
299
308
|
set boxwidth 0.6
|
@@ -307,7 +316,7 @@ data using ($0 - 0.2):($2 + 10):2 with labels title "" textcolor rgb("#0000AA"),
|
|
307
316
|
data using ($0 + 0.2):($3 + 10):3 with labels title "" textcolor rgb("#AA0000") axes x1y2
|
308
317
|
#+END_SRC
|
309
318
|
|
310
|
-
#+BEGIN_SRC gnuplot :var data = time_distribution :results output :exports
|
319
|
+
#+BEGIN_SRC gnuplot :var data = time_distribution :results output :exports #{@export} :file #{@prefix}time-traffic#{@suffix}.svg
|
311
320
|
reset
|
312
321
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
313
322
|
|
@@ -345,13 +354,13 @@ data using ($0):($2 + 10):2 with labels title "" textcolor rgb("#00AA00")
|
|
345
354
|
|
346
355
|
* Possible Attacks
|
347
356
|
|
348
|
-
#{ output_table "
|
357
|
+
#{ output_table "attacks", ["Path", "Hits", "Visitors"], @attacks }
|
349
358
|
|
350
359
|
* Statuses
|
351
360
|
|
352
361
|
#{ output_table "statuses", ["Status", "Count"], @statuses }
|
353
362
|
|
354
|
-
#+BEGIN_SRC gnuplot :var data = statuses :results output :exports
|
363
|
+
#+BEGIN_SRC gnuplot :var data = statuses :results output :exports #{@export} :file #{@prefix}statuses#{@suffix}.svg
|
355
364
|
reset
|
356
365
|
set grid ytics linestyle 0
|
357
366
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
@@ -367,7 +376,7 @@ data using ($0):($2+100):2 with labels textcolor rgb "#0000AA"
|
|
367
376
|
|
368
377
|
#{ output_table "daily_statuses", ["Status", "2xx", "3xx", "4xx"], @statuses_by_day }
|
369
378
|
|
370
|
-
#+BEGIN_SRC gnuplot :var data = daily_statuses :results output :exports
|
379
|
+
#+BEGIN_SRC gnuplot :var data = daily_statuses :results output :exports #{@export} :file #{@prefix}daily-statuses#{@suffix}.svg
|
371
380
|
reset
|
372
381
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
373
382
|
|
@@ -396,7 +405,7 @@ data using ($0 + 1. / 4):($4 + 0.5):4 with labels title "" textcolor rgb("#00AA0
|
|
396
405
|
|
397
406
|
#{ output_table "browsers", ["Browser", "Hits", "Visitors", "Size"], @browsers }
|
398
407
|
|
399
|
-
#+BEGIN_SRC gnuplot :var data = browsers :results output :exports
|
408
|
+
#+BEGIN_SRC gnuplot :var data = browsers :results output :exports #{@export} :file #{@prefix}browser#{@suffix}.svg
|
400
409
|
reset
|
401
410
|
set grid ytics linestyle 0
|
402
411
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
@@ -412,7 +421,7 @@ data using ($0):($2+100):2 with labels textcolor rgb "#0000AA"
|
|
412
421
|
|
413
422
|
#{ output_table "platforms", ["Platform", "Hits", "Visitors", "Size"], @platforms }
|
414
423
|
|
415
|
-
#+BEGIN_SRC gnuplot :var data = platforms :results output :exports
|
424
|
+
#+BEGIN_SRC gnuplot :var data = platforms :results output :exports #{@export} :file #{@prefix}platforms#{@suffix}.svg
|
416
425
|
reset
|
417
426
|
set grid ytics linestyle 0
|
418
427
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
@@ -433,7 +442,7 @@ data using ($0):($2+100):2 with labels textcolor rgb "#0000AA"
|
|
433
442
|
|
434
443
|
#{ output_table "referers", ["Referers", "Hits", "Visitors", "Size"], @referers }
|
435
444
|
|
436
|
-
#+BEGIN_SRC gnuplot :var data = referers :results output :exports
|
445
|
+
#+BEGIN_SRC gnuplot :var data = referers :results output :exports #{@export} :file #{@prefix}referers#{@suffix}.svg
|
437
446
|
reset
|
438
447
|
set terminal svg size 1200,800 fname 'Arial' fsize 10
|
439
448
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apache_log_report
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adolfo Villafiorita
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: apache_log-parser
|