smart_proxy_omaha 0.0.3 → 0.0.4
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 +5 -5
- data/Gemfile +18 -6
- data/lib/smart_proxy_omaha/omaha_protocol/handler.rb +8 -1
- data/lib/smart_proxy_omaha/omaha_protocol/request.rb +5 -2
- data/lib/smart_proxy_omaha/version.rb +1 -1
- data/smart_proxy_omaha.gemspec +4 -2
- data/test/fixtures/request_update_complete_noupdate.xml +1 -1
- data/test/omaha/omaha_api_test.rb +37 -2
- data/test/omaha/omaha_protocol/request_test.rb +11 -0
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: de92f226437fa125e5902abdbaeb331847d8155397c2cf1808c353d04c3b0d6f
|
4
|
+
data.tar.gz: a270d730e518668d7239588599f99cf5d6c860c3ca0ca048ec4400fef1c3c8e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4103c51a5cab4583fd5ac2310de72d7cd79510ce83996d899a8887f1c3cc196ee6334f2965d0b45355a9eb2d95f14039c10e8abe01bd11338dab9ba3c78045ad
|
7
|
+
data.tar.gz: c7bcc7867a4000af179765219cce24ac5e4d0cfed6882089ddd54171ccc2f026e00d5c89a08b1ba727d48a91dea806db9dec0a384cf09976d514e8e38d4a51a0
|
data/Gemfile
CHANGED
@@ -7,16 +7,28 @@ group :development do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
group :test do
|
10
|
-
gem 'rack-test'
|
11
10
|
gem 'single_test'
|
12
11
|
gem 'test_xml'
|
13
12
|
|
14
|
-
if RUBY_VERSION < '1
|
15
|
-
gem '
|
13
|
+
if RUBY_VERSION < '2.1'
|
14
|
+
gem 'public_suffix', '< 3'
|
15
|
+
gem 'nokogiri', '< 1.7'
|
16
16
|
else
|
17
|
-
gem '
|
17
|
+
gem 'public_suffix'
|
18
|
+
gem 'nokogiri'
|
19
|
+
end
|
20
|
+
|
21
|
+
if RUBY_VERSION < '2.2'
|
22
|
+
gem 'rack-test', '< 0.8'
|
23
|
+
else
|
24
|
+
gem 'rack-test'
|
18
25
|
end
|
19
26
|
end
|
20
27
|
|
21
|
-
|
22
|
-
gem '
|
28
|
+
if RUBY_VERSION < '2.2'
|
29
|
+
gem 'sinatra', '< 2'
|
30
|
+
gem 'rack', '>= 1.1', '< 2.0.0'
|
31
|
+
else
|
32
|
+
gem 'sinatra'
|
33
|
+
gem 'rack', '>= 1.1'
|
34
|
+
end
|
@@ -86,7 +86,10 @@ module Proxy::Omaha::OmahaProtocol
|
|
86
86
|
'host' => request.hostname,
|
87
87
|
'status' => request.to_status.to_s,
|
88
88
|
'omaha_version' => request.version,
|
89
|
-
'
|
89
|
+
'machineid' => request.machineid,
|
90
|
+
'omaha_group' => request.track,
|
91
|
+
'oem' => request.oem,
|
92
|
+
'reported_at' => report_timestamp
|
90
93
|
}
|
91
94
|
foreman_client.post_report({'omaha_report' => report}.to_json)
|
92
95
|
end
|
@@ -109,5 +112,9 @@ module Proxy::Omaha::OmahaProtocol
|
|
109
112
|
)
|
110
113
|
end
|
111
114
|
end
|
115
|
+
|
116
|
+
def report_timestamp
|
117
|
+
Time.now.getutc.to_s
|
118
|
+
end
|
112
119
|
end
|
113
120
|
end
|
@@ -4,7 +4,7 @@ require 'ipaddr'
|
|
4
4
|
module Proxy::Omaha::OmahaProtocol
|
5
5
|
class Request
|
6
6
|
attr_reader :appid, :version, :track, :updatecheck, :eventtype, :eventresult, :board,
|
7
|
-
:alephversion, :oemversion, :oem,
|
7
|
+
:alephversion, :oemversion, :oem, :machineid,
|
8
8
|
:platform, :osmajor, :osminor, :hostname, :ipaddress, :ipaddress6,
|
9
9
|
:body, :ip, :base_url, :ping
|
10
10
|
|
@@ -63,6 +63,7 @@ module Proxy::Omaha::OmahaProtocol
|
|
63
63
|
def parse_request
|
64
64
|
xml_request = Nokogiri::XML(body)
|
65
65
|
@appid = xml_request.xpath('/request/app/@appid').to_s.tr('{}', '')
|
66
|
+
@machineid = xml_request.xpath('/request/app/@machineid').to_s
|
66
67
|
@version = xml_request.xpath('/request/app/@version').to_s
|
67
68
|
@osmajor = version.gsub(/^(\d+)\.\d\.\d$/, '\1')
|
68
69
|
@osminor = version.gsub(/^\d+\.(\d\.\d)$/, '\1')
|
@@ -83,6 +84,7 @@ module Proxy::Omaha::OmahaProtocol
|
|
83
84
|
def parse_ipaddress
|
84
85
|
ipaddr = IPAddr.new(ip) rescue nil
|
85
86
|
return if ipaddr.nil?
|
87
|
+
ipaddr = IPAddr.new(ipaddr.to_s.sub('::ffff:', '')) if ipaddr.ipv4_mapped?
|
86
88
|
@ipaddress = ipaddr.to_s if ipaddr.ipv4?
|
87
89
|
@ipaddress6 = ipaddr.to_s if ipaddr.ipv6?
|
88
90
|
@hostname = lookup_hostname(ipaddr.to_s)
|
@@ -108,7 +110,8 @@ module Proxy::Omaha::OmahaProtocol
|
|
108
110
|
:osminor => osminor,
|
109
111
|
:ipaddress => ipaddress,
|
110
112
|
:ipaddress6 => ipaddress6,
|
111
|
-
:hostname => hostname
|
113
|
+
:hostname => hostname,
|
114
|
+
:machineid => machineid
|
112
115
|
}
|
113
116
|
end
|
114
117
|
end
|
data/smart_proxy_omaha.gemspec
CHANGED
@@ -16,14 +16,16 @@ Gem::Specification.new do |s|
|
|
16
16
|
|
17
17
|
if RUBY_VERSION < '1.9'
|
18
18
|
s.add_dependency('nokogiri', '<= 1.5.11')
|
19
|
+
elsif RUBY_VERSION < '2.1'
|
20
|
+
s.add_dependency('nokogiri', '>= 1.5.11')
|
19
21
|
else
|
20
|
-
s.add_dependency('nokogiri', '>= 1.
|
22
|
+
s.add_dependency('nokogiri', '>= 1.8.1')
|
21
23
|
end
|
22
24
|
s.add_dependency('json')
|
23
25
|
|
24
26
|
s.add_development_dependency('test-unit', '~> 2')
|
25
27
|
s.add_development_dependency('mocha', '~> 1')
|
26
28
|
s.add_development_dependency('webmock', '~> 1')
|
27
|
-
s.add_development_dependency('rack-test'
|
29
|
+
s.add_development_dependency('rack-test')
|
28
30
|
s.add_development_dependency('rake', '~> 10')
|
29
31
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<request protocol="3.0" version="CoreOSUpdateEngine-0.1.0.0" updaterversion="CoreOSUpdateEngine-0.1.0.0" installsource="ondemandupdate" ismachine="1">
|
3
3
|
<os version="Chateau" platform="CoreOS" sp="1122.2.0_x86_64"></os>
|
4
|
-
<app appid="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}" version="1122.2.0" track="stable" bootid="{5c43ee37-70da-48b7-9328-636618c2807c}" oem="" oemversion="" alephversion="1010.5.0" machineid="8e9450f47a4c47adbfe48b946e201c84" lang="en-US" board="amd64-usr" hardware_class="" delta_okay="false" >
|
4
|
+
<app appid="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}" version="1122.2.0" track="stable" bootid="{5c43ee37-70da-48b7-9328-636618c2807c}" oem="vmware" oemversion="10.1.10" alephversion="1010.5.0" machineid="8e9450f47a4c47adbfe48b946e201c84" lang="en-US" board="amd64-usr" hardware_class="" delta_okay="false" >
|
5
5
|
<ping active="1"></ping>
|
6
6
|
<updatecheck></updatecheck>
|
7
7
|
<event eventtype="3" eventresult="2" previousversion=""></event>
|
@@ -5,8 +5,25 @@ require 'smart_proxy_omaha/omaha_plugin'
|
|
5
5
|
ENV['RACK_ENV'] = 'test'
|
6
6
|
|
7
7
|
class TestForemanClient
|
8
|
-
|
9
|
-
|
8
|
+
@@requests = {}
|
9
|
+
|
10
|
+
def self.requests
|
11
|
+
@@requests
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.clear_requests
|
15
|
+
@@requests = {}
|
16
|
+
end
|
17
|
+
|
18
|
+
def post_facts(factsdata)
|
19
|
+
@@requests[:facts] ||= []
|
20
|
+
@@requests[:facts] << JSON.parse(factsdata)
|
21
|
+
end
|
22
|
+
|
23
|
+
def post_report(report)
|
24
|
+
@@requests[:reports] ||= []
|
25
|
+
@@requests[:reports] << JSON.parse(report)
|
26
|
+
end
|
10
27
|
end
|
11
28
|
|
12
29
|
class TestReleaseRepository
|
@@ -70,10 +87,28 @@ class OmahaApiTest < Test::Unit::TestCase
|
|
70
87
|
Proxy::Omaha::Api.new
|
71
88
|
end
|
72
89
|
|
90
|
+
def setup
|
91
|
+
TestForemanClient.clear_requests
|
92
|
+
end
|
93
|
+
|
73
94
|
def test_processes_update_complete_noupdate
|
95
|
+
Proxy::Omaha::OmahaProtocol::Handler.any_instance.stubs(:report_timestamp).returns('fake_timestamp')
|
74
96
|
post "/v1/update", xml_fixture('request_update_complete_noupdate')
|
75
97
|
assert last_response.ok?, "Last response was not ok: #{last_response.status} #{last_response.body}"
|
76
98
|
assert_xml_equal xml_fixture('response_update_complete_noupdate'), last_response.body
|
99
|
+
assert_equal [
|
100
|
+
{
|
101
|
+
'omaha_report' => {
|
102
|
+
'host' => 'localhost',
|
103
|
+
'status' => 'complete',
|
104
|
+
'omaha_version' => '1122.2.0',
|
105
|
+
'machineid' => '8e9450f47a4c47adbfe48b946e201c84',
|
106
|
+
'omaha_group' => 'stable',
|
107
|
+
'oem' => 'vmware',
|
108
|
+
'reported_at' => 'fake_timestamp'
|
109
|
+
}
|
110
|
+
}
|
111
|
+
], TestForemanClient.requests[:reports]
|
77
112
|
end
|
78
113
|
|
79
114
|
def test_processes_update_complete_update
|
@@ -22,6 +22,7 @@ class RequestTest < Test::Unit::TestCase
|
|
22
22
|
assert_equal '', @request.oemversion
|
23
23
|
assert_equal '', @request.oem
|
24
24
|
assert_equal 'CoreOS', @request.platform
|
25
|
+
assert_equal '8e9450f47a4c47adbfe48b946e201c84', @request.machineid
|
25
26
|
assert_equal 3, @request.eventtype
|
26
27
|
assert_equal 2, @request.eventresult
|
27
28
|
assert @request.updatecheck
|
@@ -46,6 +47,7 @@ class RequestTest < Test::Unit::TestCase
|
|
46
47
|
:hostname => 'omaha.example.com',
|
47
48
|
:ipaddress => '1.1.1.1',
|
48
49
|
:ipaddress6 => nil,
|
50
|
+
:machineid => '8e9450f47a4c47adbfe48b946e201c84',
|
49
51
|
:oem => '',
|
50
52
|
:oemversion => '',
|
51
53
|
:osmajor => '1068',
|
@@ -77,5 +79,14 @@ class RequestTest < Test::Unit::TestCase
|
|
77
79
|
|
78
80
|
assert_nil request6.ipaddress
|
79
81
|
assert_equal '2001:db8::1', request6.ipaddress6
|
82
|
+
|
83
|
+
request64 = Proxy::Omaha::OmahaProtocol::Request.new(
|
84
|
+
xml_fixture('request_update_complete_update'),
|
85
|
+
:ip => '::ffff:1.1.1.1',
|
86
|
+
:base_url => 'http://www.example.org/'
|
87
|
+
)
|
88
|
+
|
89
|
+
assert_equal '1.1.1.1', request64.ipaddress
|
90
|
+
assert_nil request64.ipaddress6
|
80
91
|
end
|
81
92
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_proxy_omaha
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Timo Goebel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.8.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.8.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,14 +84,14 @@ dependencies:
|
|
84
84
|
name: rack-test
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
version: '0'
|
197
197
|
requirements: []
|
198
198
|
rubyforge_project:
|
199
|
-
rubygems_version: 2.
|
199
|
+
rubygems_version: 2.7.3
|
200
200
|
signing_key:
|
201
201
|
specification_version: 4
|
202
202
|
summary: Omaha protocol support for smart-proxy
|