log_sense 1.2.3 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 793e7473effe036178ca643379f44eea040d15582aa10a26af0874f2cc0cd76b
4
- data.tar.gz: '0950e85c8e60b3a7bdb815db354d0e156a52066405ac85c47996530875dd2eba'
3
+ metadata.gz: e566be6e4288d20605f8dd39aa5fb016534a20af366b4f7ad229af3610397771
4
+ data.tar.gz: cb338c23a5e829876a2649896cacb00f4274f1be7c9a606a1dcd4c3d9f0431b1
5
5
  SHA512:
6
- metadata.gz: 0730de44eb8da2fb80a2f707b66e59d367bed09e71e19cb1a19d2044181ad5deb254f8461c375d2a45230408e5eb8c9aa248f5361c051f41e4406b3ebfdc400a
7
- data.tar.gz: 45fb244c7d0fdc1edbbb75305c943b37a079e48f5e12ed9096c6c64e0e554051a56551bbe74b47f4edf40bd1738ea90a9357bd11d5e74f3395a4d87e7fd9dda9
6
+ metadata.gz: 89ca1ce0379ed828b0a6ea7af79e35626f0b67693f4b3f2ae744df9b6714fff6f02f30c82f78d84fd76e0d947378a0f3fb11fd865cb015cb11964c02694e3e02
7
+ data.tar.gz: ddf3d3a976979e03c9544a613051fab201146db40b6fb0da2e21b521012b6f19413df133d68ae10187baff0a8abef4c43e2a79322a58c851572faa94c792229c
@@ -0,0 +1,53 @@
1
+ module LogSense
2
+ class ApacheLogLineParser
3
+ # parses a query and makes it into an expression which can be evaluated
4
+ # LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
5
+ #
6
+ # %h: IP
7
+ # %l: ident or -
8
+ # %u: userid or -
9
+ # %t: [10/Oct/2000:13:55:36 -0700]
10
+ # day = 2*digit
11
+ # month = 3*letter
12
+ # year = 4*digit
13
+ # hour = 2*digit
14
+ # minute = 2*digit
15
+ # second = 2*digit
16
+ # zone = (`+' | `-') 4*digit
17
+ # %r: GET /apache_pb.gif HTTP/1.0
18
+ # %{User-agent}: "
19
+ #
20
+ # 116.179.32.16 - - [19/Dec/2021:22:35:11 +0100] "GET / HTTP/1.1" 200 135 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
21
+
22
+ DAY = /[0-9]{2}/
23
+ MONTH = /[A-Za-z]{3}/
24
+ YEAR = /[0-9]{4}/
25
+ TIMEC = /[0-9]{2}/
26
+ TIMEZONE = /(\+|-)[0-9]{4}/
27
+
28
+ IP = /(?<ip>[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/
29
+ IDENT = /(?<ident>[^ ]+|-)/
30
+ USERID = /(?<userid>[^ ]+|-)/
31
+
32
+ TIMESTAMP = /(?<date>#{DAY}\/#{MONTH}\/#{YEAR}):(?<time>#{TIMEC}:#{TIMEC}:#{TIMEC} #{TIMEZONE})/
33
+
34
+ VERB=/(?<method>GET|HEAD|POST|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)/
35
+ PROTOCOL=/(?<protocol>HTTP\/[0-9]\.[0-9])/
36
+ URL=/(?<url>[^ ]+)/
37
+ REFERER=/(?<referer>[^ ])+/
38
+ RETURN_CODE=/(?<status>[1-5][0-9][0-9])/
39
+ SIZE=/(?<size>[0-9]+|-)/
40
+
41
+ USER_AGENT = /(?<user_agent>[^"]+)/
42
+
43
+ attr_reader :format
44
+
45
+ def initialize
46
+ @format = /#{IP} #{IDENT} #{USERID} \[#{TIMESTAMP}\] "#{VERB} #{URL} #{PROTOCOL}" #{RETURN_CODE} #{SIZE} "#{REFERER}" "#{USER_AGENT}"/
47
+ end
48
+
49
+ def parse line
50
+ hash = @format.match(line) || raise("Apache LogLine Parser Error: Could not parse #{line}")
51
+ end
52
+ end
53
+ end
@@ -1,4 +1,3 @@
1
- require 'apache_log/parser'
2
1
  require 'sqlite3'
3
2
  require 'browser'
4
3
 
@@ -50,21 +49,20 @@ module LogSense
50
49
  platform_version)
51
50
  values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)')
52
51
 
53
- parser = ApacheLog::Parser.new(options[:format] || 'combined')
52
+ parser = ApacheLogLineParser.new
54
53
 
55
54
  content.each do |line|
56
55
  begin
57
56
  hash = parser.parse line
58
-
59
57
  ua = Browser.new(hash[:user_agent], accept_language: "en-us")
60
58
  ins.execute(
61
- hash[:datetime].iso8601,
62
- hash[:remote_host],
63
- hash[:user],
64
- hash[:datetime].strftime("%Y-%m-%d") + " " + hash[:remote_host] + " " + hash[:user_agent],
65
- hash[:request][:method],
66
- hash[:request][:path],
67
- (hash[:request][:path] ? File.extname(hash[:request][:path]) : ""),
59
+ DateTime.parse("#{hash[:date]}T#{hash[:time]}").iso8601,
60
+ hash[:ip],
61
+ hash[:userid],
62
+ unique_visitor_id(hash),
63
+ hash[:method],
64
+ hash[:url],
65
+ (hash[:url] ? File.extname(hash[:url]) : ""),
68
66
  hash[:status],
69
67
  hash[:size].to_i,
70
68
  hash[:referer],
@@ -75,13 +73,17 @@ module LogSense
75
73
  (ua.platform.name || ""),
76
74
  (ua.platform.version || "")
77
75
  )
78
- rescue
79
- STDERR.puts "Apache Log parser error: could not parse #{line}"
76
+ rescue StandardError => e
77
+ STDERR.puts e.message
80
78
  end
81
79
  end
82
80
 
83
81
  db
84
82
  end
85
83
 
84
+ def self.unique_visitor_id hash
85
+ "#{hash[:date]} #{hash[:ip]} #{hash[:user_agent]}"
86
+ end
87
+
86
88
  end
87
89
  end
@@ -29,14 +29,14 @@
29
29
  }
30
30
 
31
31
  #offCanvas {
32
- color: white;
33
- background: #0D0630;
32
+ color: #DEDEDE;
33
+ background: #1C1C1C;
34
34
  border-right: none;
35
35
  box-shadow: none;
36
36
  padding: 0.5rem;
37
37
  }
38
38
  #offCanvas a {
39
- color: #E6F9AF;
39
+ color: #FFFFFF;
40
40
  }
41
41
 
42
42
  .contents-button {
@@ -69,7 +69,7 @@
69
69
 
70
70
  .card-divider {
71
71
  padding: 0.2rem 0.4rem 0.2rem 0.4rem;
72
- background: #0d0630;
72
+ background: #1C1C1C;
73
73
  color: white;
74
74
  }
75
75
 
@@ -29,14 +29,14 @@
29
29
  }
30
30
 
31
31
  #offCanvas {
32
- color: white;
33
- background: #0D0630;
32
+ color: #CECECE;
33
+ background: #BD000D;
34
34
  border-right: none;
35
35
  box-shadow: none;
36
36
  padding: 0.5rem;
37
37
  }
38
38
  #offCanvas a {
39
- color: #E6F9AF;
39
+ color: #FFFFFF;
40
40
  }
41
41
 
42
42
  .contents-button {
@@ -1,3 +1,3 @@
1
1
  module LogSense
2
- VERSION = "1.2.3"
2
+ VERSION = "1.3.0"
3
3
  end
data/lib/log_sense.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'log_sense/version'
2
2
  require 'log_sense/options_parser'
3
+ require 'log_sense/apache_log_line_parser'
3
4
  require 'log_sense/apache_log_parser'
4
5
  require 'log_sense/apache_data_cruncher'
5
6
  require 'log_sense/rails_log_parser'
data/log_sense.gemspec CHANGED
@@ -27,7 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency "apache_log-parser"
31
30
  spec.add_dependency "browser"
32
31
  spec.add_dependency "ipaddr"
33
32
  spec.add_dependency "iso_country_codes"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_sense
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adolfo Villafiorita
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-22 00:00:00.000000000 Z
11
+ date: 2021-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: apache_log-parser
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: browser
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -144,6 +130,7 @@ files:
144
130
  - ip_locations/dbip-country-lite.sqlite3
145
131
  - lib/log_sense.rb
146
132
  - lib/log_sense/apache_data_cruncher.rb
133
+ - lib/log_sense/apache_log_line_parser.rb
147
134
  - lib/log_sense/apache_log_parser.rb
148
135
  - lib/log_sense/emitter.rb
149
136
  - lib/log_sense/ip_locator.rb