log_analysis 0.1.1 → 0.1.2
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/Gemfile.lock +4 -4
- data/lib/log_analysis.rb +11 -3
- data/{spmf.jar → lib/log_analysis/files/spmf.jar} +0 -0
- data/lib/log_analysis/preprocess.rb +5 -2
- data/lib/log_analysis/rule_generation.rb +7 -7
- data/lib/log_analysis/transformation.rb +1 -1
- data/lib/log_analysis/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3229e7a8ab9b83925c34270e0e4de8ccec44f62ca94d7c29d1cafe14c1d6adf9
|
4
|
+
data.tar.gz: 9a0c94678156f7dc429d972ecb8f038fe86cd720a7df76963a1ded5abdbd8bf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69adb8ae6e8b12a239b4af81c3b5dd3e17bac46304811ebb3afaa78eba5dedd51120aaa5d371bd400e3237dc14d2c49c4a8b7297cffa06ca453e767be29f3da9
|
7
|
+
data.tar.gz: d0f4459fdfb8416b2c621f54929d397f02e41fdeebdae29d95d5933a4e1db6b28f44701467c7488bc52197c8e2d9cc9b9d7bcd36d2a065bf031669af39d3f1ac
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
log_analysis (0.1.
|
4
|
+
log_analysis (0.1.2)
|
5
5
|
activesupport (~> 6.0.3.1)
|
6
6
|
useragent (~> 0.16.10)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
activesupport (6.0.3.
|
11
|
+
activesupport (6.0.3.2)
|
12
12
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
13
|
i18n (>= 0.7, < 2)
|
14
14
|
minitest (~> 5.1)
|
@@ -17,13 +17,13 @@ GEM
|
|
17
17
|
concurrent-ruby (1.1.6)
|
18
18
|
i18n (1.8.3)
|
19
19
|
concurrent-ruby (~> 1.0)
|
20
|
-
minitest (5.
|
20
|
+
minitest (5.13.0)
|
21
21
|
rake (12.3.1)
|
22
22
|
thread_safe (0.3.6)
|
23
23
|
tzinfo (1.2.7)
|
24
24
|
thread_safe (~> 0.1)
|
25
25
|
useragent (0.16.10)
|
26
|
-
zeitwerk (2.3.
|
26
|
+
zeitwerk (2.3.1)
|
27
27
|
|
28
28
|
PLATFORMS
|
29
29
|
ruby
|
data/lib/log_analysis.rb
CHANGED
@@ -4,6 +4,7 @@ require 'log_analysis/user_identification'
|
|
4
4
|
require 'log_analysis/session_identification'
|
5
5
|
require 'log_analysis/transformation'
|
6
6
|
require 'log_analysis/rule_generation'
|
7
|
+
require 'time'
|
7
8
|
|
8
9
|
class LogAnalysis
|
9
10
|
class Error < StandardError; end
|
@@ -15,7 +16,6 @@ class LogAnalysis
|
|
15
16
|
@path = path
|
16
17
|
@type = type
|
17
18
|
@cleaned_data = PreProcess.input(path, type)
|
18
|
-
system('mkdir', '-p', LogAnalysis::DATA_PATH)
|
19
19
|
end
|
20
20
|
|
21
21
|
def identified_user
|
@@ -30,7 +30,15 @@ class LogAnalysis
|
|
30
30
|
Transformation.execute(identified_session)
|
31
31
|
end
|
32
32
|
|
33
|
-
def rule_generation
|
34
|
-
RuleGeneration.execute(transformation)
|
33
|
+
def rule_generation(conf = 0.5, sup = 60)
|
34
|
+
result = RuleGeneration.execute(transformation, conf, sup)
|
35
|
+
move_data
|
36
|
+
result
|
37
|
+
end
|
38
|
+
|
39
|
+
def move_data
|
40
|
+
system('mv', "transform_data_#{Time.now.strftime('%Y%m%d')}.txt", '/home/app/data/waazabag/')
|
41
|
+
system('mv', "output_#{Time.now.strftime('%Y%m%d')}.txt", '/home/app/data/waazabag/')
|
42
|
+
system('mv', "map_uri_#{Time.now.strftime('%Y%m%d')}.txt", '/home/app/data/waazabag/')
|
35
43
|
end
|
36
44
|
end
|
File without changes
|
@@ -17,9 +17,10 @@ module PreProcess
|
|
17
17
|
|
18
18
|
File.readlines(file_path).each_with_object([]).with_index do |(line, arr), i|
|
19
19
|
preprocessed_log = type.nil? ? line.gsub(/[\t]/i, ' ').chomp! : line
|
20
|
-
|
20
|
+
record_params = send(CONVERT_RECORD[type.nil? ? 'nginx' : type], preprocessed_log)
|
21
|
+
record = Record.new(record_params) if record_params && preprocessed_log
|
21
22
|
|
22
|
-
arr.push(record) if record.status_200? && record.method_get? && record.uri_without_data && !record.robot?
|
23
|
+
arr.push(record) if record && record.status_200? && record.method_get? && record.uri_without_data && !record.robot?
|
23
24
|
|
24
25
|
puts arr.size
|
25
26
|
end
|
@@ -35,6 +36,8 @@ module PreProcess
|
|
35
36
|
|
36
37
|
def self.convert_nginx_logs(log)
|
37
38
|
o = log.split(REGEX_NGINX)
|
39
|
+
|
40
|
+
return false if o.size <= 1
|
38
41
|
o.delete('')
|
39
42
|
|
40
43
|
{}.tap do |p|
|
@@ -2,18 +2,18 @@ require 'time'
|
|
2
2
|
require 'log_analysis/version'
|
3
3
|
|
4
4
|
module RuleGeneration
|
5
|
-
JAR_FILE_PATH = File.
|
6
|
-
TRANSFORM_DATA_PATH =
|
7
|
-
RULE_FILE_PATH =
|
8
|
-
MAP_URI_FILE_PATH =
|
5
|
+
JAR_FILE_PATH = File.join(File.dirname(__FILE__), './files/spmf.jar')
|
6
|
+
TRANSFORM_DATA_PATH = "transform_data_#{Time.now.strftime('%Y%m%d')}.txt".freeze
|
7
|
+
RULE_FILE_PATH = "output_#{Time.now.strftime('%Y%m%d')}.txt".freeze
|
8
|
+
MAP_URI_FILE_PATH = "map_uri_#{Time.now.strftime('%Y%m%d')}.txt".freeze
|
9
9
|
|
10
10
|
class Error < StandardError; end
|
11
11
|
# Your code goes here...
|
12
12
|
|
13
|
-
def self.execute(transform_data)
|
13
|
+
def self.execute(transform_data, min_conf, min_sup)
|
14
14
|
File.open(TRANSFORM_DATA_PATH, 'w+') { |f| transform_data.keys.each { |e| f.puts(transform_data[e].map { |i| i.is_a?(Array) ? i.join(' ') : i }.join(' -1 ').concat(' -1 -2')) } }
|
15
|
-
system("java -jar #{JAR_FILE_PATH} run SPADE #{TRANSFORM_DATA_PATH} #{RULE_FILE_PATH}
|
16
|
-
result = rule_gen(get_seq(File.read(RULE_FILE_PATH)),
|
15
|
+
system("java -jar #{JAR_FILE_PATH} run SPADE #{TRANSFORM_DATA_PATH} #{RULE_FILE_PATH} #{min_sup}%")
|
16
|
+
result = rule_gen(get_seq(File.read(RULE_FILE_PATH)), min_conf)
|
17
17
|
map_uri = File.read(MAP_URI_FILE_PATH).split(' ')
|
18
18
|
|
19
19
|
result.map do |rule|
|
@@ -3,7 +3,7 @@ require 'log_analysis/model/user_identity'
|
|
3
3
|
require 'log_analysis/version'
|
4
4
|
|
5
5
|
module Transformation
|
6
|
-
MAP_URI_FILE_PATH =
|
6
|
+
MAP_URI_FILE_PATH = "map_uri_#{Time.now.strftime('%Y%m%d')}.txt".freeze
|
7
7
|
|
8
8
|
class Error < StandardError; end
|
9
9
|
# Your code goes here...
|
data/lib/log_analysis/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: log_analysis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Tran
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: useragent
|
@@ -57,6 +57,7 @@ files:
|
|
57
57
|
- bin/console
|
58
58
|
- bin/setup
|
59
59
|
- lib/log_analysis.rb
|
60
|
+
- lib/log_analysis/files/spmf.jar
|
60
61
|
- lib/log_analysis/model/record.rb
|
61
62
|
- lib/log_analysis/model/session_identity.rb
|
62
63
|
- lib/log_analysis/model/user_identity.rb
|
@@ -67,14 +68,13 @@ files:
|
|
67
68
|
- lib/log_analysis/user_identification.rb
|
68
69
|
- lib/log_analysis/version.rb
|
69
70
|
- log_analysis.gemspec
|
70
|
-
- spmf.jar
|
71
71
|
homepage: https://github.com/michaelt0520/log_analysis_thesis
|
72
72
|
licenses:
|
73
73
|
- MIT
|
74
74
|
metadata:
|
75
75
|
homepage_uri: https://github.com/michaelt0520/log_analysis_thesis
|
76
76
|
source_code_uri: https://github.com/michaelt0520/log_analysis_thesis
|
77
|
-
post_install_message:
|
77
|
+
post_install_message:
|
78
78
|
rdoc_options: []
|
79
79
|
require_paths:
|
80
80
|
- lib
|
@@ -89,8 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
requirements: []
|
92
|
-
rubygems_version: 3.1.
|
93
|
-
signing_key:
|
92
|
+
rubygems_version: 3.1.2
|
93
|
+
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: Log Analysis for thesis Huflit
|
96
96
|
test_files: []
|