arii 1.7 → 1.8
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/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:
|