arii 1.7 → 1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/arii.gemspec +2 -0
- data/lib/arii/sqldetector.rb +90 -22
- data/lib/arii/version.rb +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ceec14f03110e8d331a9d7ca37d85615809acd1
|
4
|
+
data.tar.gz: bc1b1746618ced80dfb370a3841757c22d70f44b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8f3437c76db16e9da58601dc1a3f7c759e51422ac60e24b133e669121918abbb07efc8f5e06cc4c6f52ae7d1eaadd7734071fcbd1a6fea50f60ebf632a2a441
|
7
|
+
data.tar.gz: 3a924acb65a55a0c0e6d97a17d833063bb0e334b4578cf143e91a7daf54af52a174f562f0064114c4d1f1f02d7a29a3ed42dbbde37d61c5bfe5d6fcf3f9bf8dc
|
data/arii.gemspec
CHANGED
@@ -25,4 +25,6 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_runtime_dependency 'rubyXL'
|
26
26
|
spec.add_runtime_dependency 'spreadsheet'
|
27
27
|
spec.add_runtime_dependency 'jsonpath', '~> 0'
|
28
|
+
spec.add_runtime_dependency 'tiny_tds', '> 0.6.3.rc1'
|
29
|
+
spec.add_runtime_dependency 'pg'
|
28
30
|
end
|
data/lib/arii/sqldetector.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#require 'helper'
|
2
2
|
require 'mysql2'
|
3
|
+
require 'tiny_tds'
|
4
|
+
requie 'pg'
|
3
5
|
|
4
6
|
module ARII
|
5
7
|
|
@@ -17,34 +19,100 @@ module ARII
|
|
17
19
|
def detect object
|
18
20
|
ARII::Config.log.debug(self.class.name) { "Monitoring #{object[:host]}" }
|
19
21
|
begin
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
case object[:server]
|
23
|
+
when 'mysql'
|
24
|
+
@client = Mysql2::Client.new(:host => object[:host], :username => object[:username], :password => object[:password], :database => object[:database])
|
25
|
+
@client.query(object[:query]).each(:symbolize_keys => false) do |row|
|
26
|
+
unless object[:cache].nil? then
|
27
|
+
@response = Cashier.verify row[object[:cache]], object, row, object[:seed]
|
28
|
+
else
|
29
|
+
@response = Cashier.verify row["id"], object, row, object[:seed]
|
30
|
+
end
|
31
|
+
|
32
|
+
# Process ARII cache response
|
33
|
+
@cache = JSON.parse(@response, {:symbolize_names => true})
|
34
|
+
unless @cache[:templates].nil? then
|
35
|
+
@cache[:templates].each do |t|
|
36
|
+
@templates.push t
|
37
|
+
end
|
38
|
+
end
|
39
|
+
# The actual processing
|
40
|
+
#
|
41
|
+
if @cache[:cache][:status] == 100 then
|
42
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
43
|
+
# add row data to payload from selectors (key => key, value => column name)
|
44
|
+
payload = Hash.new
|
45
|
+
object[:selectors].each do |selector|
|
46
|
+
selector.each do |k, v|
|
47
|
+
payload[k] = row[v]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
# add payload object to payloads list
|
51
|
+
@payloads.push payload
|
52
|
+
end
|
26
53
|
end
|
54
|
+
when 'mssql'
|
55
|
+
@client = TinyTds::Client.new username: object[:username], password: object[:password], host: object[:host], database: object[:database], port: object[:port], timeout: 60
|
56
|
+
@results = @client.execute(@agent[:payload][:query])
|
57
|
+
@results.each(:symbolize_keys => false) do |row|
|
58
|
+
unless object[:cache].nil? then
|
59
|
+
@response = Cashier.verify row[object[:cache]], object, row, object[:seed]
|
60
|
+
else
|
61
|
+
@response = Cashier.verify row["id"], object, row, object[:seed]
|
62
|
+
end
|
27
63
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
64
|
+
# Process ARII cache response
|
65
|
+
@cache = JSON.parse(@response, {:symbolize_names => true})
|
66
|
+
unless @cache[:templates].nil? then
|
67
|
+
@cache[:templates].each do |t|
|
68
|
+
@templates.push t
|
69
|
+
end
|
70
|
+
end
|
71
|
+
# The actual processing
|
72
|
+
#
|
73
|
+
if @cache[:cache][:status] == 100 then
|
74
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
75
|
+
# add row data to payload from selectors (key => key, value => column name)
|
76
|
+
payload = Hash.new
|
77
|
+
object[:selectors].each do |selector|
|
78
|
+
selector.each do |k, v|
|
79
|
+
payload[k] = row[v]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
# add payload object to payloads list
|
83
|
+
@payloads.push payload
|
33
84
|
end
|
34
85
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
86
|
+
when 'postgresql'
|
87
|
+
client = PG::Connection.new(:host => object[:host], :user => object[:username], :password => object[:password], :dbname => object[:database])
|
88
|
+
client.exec(object[:query]).each do |row|
|
89
|
+
unless object[:cache].nil? then
|
90
|
+
@response = Cashier.verify row[object[:cache]], object, row, object[:seed]
|
91
|
+
else
|
92
|
+
@response = Cashier.verify row["id"], object, row, object[:seed]
|
93
|
+
end
|
94
|
+
|
95
|
+
# Process ARII cache response
|
96
|
+
@cache = JSON.parse(@response, {:symbolize_names => true})
|
97
|
+
unless @cache[:templates].nil? then
|
98
|
+
@cache[:templates].each do |t|
|
99
|
+
@templates.push t
|
100
|
+
end
|
101
|
+
end
|
102
|
+
# The actual processing
|
103
|
+
#
|
104
|
+
if @cache[:cache][:status] == 100 then
|
105
|
+
ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
|
106
|
+
# add row data to payload from selectors (key => key, value => column name)
|
107
|
+
payload = Hash.new
|
108
|
+
object[:selectors].each do |selector|
|
109
|
+
selector.each do |k, v|
|
110
|
+
payload[k] = row[v]
|
111
|
+
end
|
44
112
|
end
|
113
|
+
# add payload object to payloads list
|
114
|
+
@payloads.push payload
|
45
115
|
end
|
46
|
-
# add payload object to payloads list
|
47
|
-
@payloads.push payload
|
48
116
|
end
|
49
117
|
end
|
50
118
|
rescue Exception => e
|
data/lib/arii/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arii
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Lopes
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: tiny_tds
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.6.3.rc1
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.6.3.rc1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pg
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
description: 'ARiiP: integrate everything. Automated real-time integration & interoperability
|
112
140
|
platform.'
|
113
141
|
email:
|