jerakia 2.3.0 → 2.4.0
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/bin/jerakia +6 -2
- data/lib/jerakia/cli.rb +0 -1
- data/lib/jerakia/log.rb +3 -2
- data/lib/jerakia/server/auth/token.rb +6 -2
- data/lib/jerakia/server/rest.rb +42 -23
- data/lib/jerakia/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea3f9b99ad3814fc4868f19d64d8f47adf16e940
|
4
|
+
data.tar.gz: 0ff66c99cdff190f8047dfce865cc01e749efa19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e291ef9b8af754741a04088d6782d1710d2194da4aedc73ddd6a447078e06ad119afca6c338080683300aa2e89be8adea381dba91468790acbcb5ccc97977d9
|
7
|
+
data.tar.gz: 1ffc73296862825e61e8e6eb5ec6c46d6b31b27ce9d47150783879bf4e15762692b9b42fbff07401dd4e15c87aefbb5d84c8c3e53a7bf997ad29af01292e41ff
|
data/bin/jerakia
CHANGED
@@ -4,5 +4,9 @@ lib = File.expand_path('../../lib', __FILE__)
|
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
|
6
6
|
require 'jerakia/cli'
|
7
|
-
|
8
|
-
Jerakia::CLI.start(ARGV)
|
7
|
+
begin
|
8
|
+
Jerakia::CLI.start(ARGV)
|
9
|
+
rescue Jerakia::Error => e
|
10
|
+
STDERR.puts "Error(#{e.class}): #{e.message}"
|
11
|
+
exit 1
|
12
|
+
end
|
data/lib/jerakia/cli.rb
CHANGED
data/lib/jerakia/log.rb
CHANGED
@@ -3,8 +3,9 @@ class Jerakia::Log < Jerakia
|
|
3
3
|
def initialize(level = :info, file = '/var/log/jerakia.log')
|
4
4
|
begin
|
5
5
|
@@logger = Logger.new(file)
|
6
|
-
rescue Errno::EACCES => e
|
7
|
-
|
6
|
+
rescue Errno::EACCES, Errno::ENOENT => e
|
7
|
+
@@logger = Logger.new(STDOUT)
|
8
|
+
info("Failed to open logfile: #{e.message}, logs will be directed to STDOUT")
|
8
9
|
end
|
9
10
|
|
10
11
|
@@level = level
|
@@ -26,8 +26,12 @@ class Jerakia
|
|
26
26
|
property :last_seen, DateTime, :default => DateTime.now
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
begin
|
30
|
+
DataMapper.finalize
|
31
|
+
DataMapper.auto_upgrade!
|
32
|
+
rescue DataObjects::ConnectionError => e
|
33
|
+
raise Jerakia::Error, "Unable to open database file in #{Jerakia.config[:databasedir]}: #{e.message}"
|
34
|
+
end
|
31
35
|
end
|
32
36
|
end
|
33
37
|
end
|
data/lib/jerakia/server/rest.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'sinatra'
|
2
2
|
require 'jerakia'
|
3
3
|
require 'jerakia/server/auth'
|
4
|
-
require 'json'
|
5
4
|
require 'jerakia/scope/server'
|
5
|
+
require 'json'
|
6
|
+
require 'msgpack'
|
6
7
|
|
7
8
|
class Jerakia
|
8
9
|
class Server
|
@@ -44,20 +45,44 @@ class Jerakia
|
|
44
45
|
@authorized_tokens[token] = Time.now
|
45
46
|
end
|
46
47
|
|
48
|
+
def encode_result(data)
|
49
|
+
case @content_type
|
50
|
+
when :json
|
51
|
+
return data.to_json
|
52
|
+
when :msgpack
|
53
|
+
return data.to_msgpack
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def determine_content_type!
|
58
|
+
if not env.key?('CONTENT_TYPE') or env['CONTENT_TYPE'] == "application/json"
|
59
|
+
content_type 'application/json'
|
60
|
+
@content_type = :json
|
61
|
+
elsif env['CONTENT_TYPE'] == "application/x-msgpack"
|
62
|
+
content_type 'application/x-msgpack'
|
63
|
+
@content_type = :msgpack
|
64
|
+
else
|
65
|
+
wrong_media_type("Content type #{env['CONTENT_TYPE']} not supported", 415)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
47
69
|
before do
|
48
70
|
authenticate!
|
49
|
-
|
71
|
+
determine_content_type!
|
50
72
|
end
|
51
73
|
|
52
74
|
get '/' do
|
53
75
|
auth_denied
|
54
76
|
end
|
55
77
|
|
78
|
+
def wrong_media_type(message, status_code=415)
|
79
|
+
halt(status_code, {'Content-Type' => 'text/plain'}, message)
|
80
|
+
end
|
81
|
+
|
56
82
|
def request_failed(message, status_code=501)
|
57
|
-
halt(status_code,
|
58
|
-
|
59
|
-
|
60
|
-
}.to_json)
|
83
|
+
halt(status_code,
|
84
|
+
encode_result({ :status => 'failed',
|
85
|
+
:message => message }))
|
61
86
|
end
|
62
87
|
|
63
88
|
def mandatory_params(mandatory, params)
|
@@ -98,31 +123,27 @@ class Jerakia
|
|
98
123
|
rescue Jerakia::Error => e
|
99
124
|
request_failed(e.message, 501)
|
100
125
|
end
|
101
|
-
{
|
102
|
-
|
103
|
-
:payload => answer.payload
|
104
|
-
}.to_json
|
126
|
+
encode_result({ :status => 'ok',
|
127
|
+
:payload => answer.payload})
|
105
128
|
end
|
106
129
|
|
107
130
|
get '/v1/scope/:realm/:identifier' do
|
108
131
|
resource = Jerakia::Scope::Server.find(params['realm'], params['identifier'])
|
109
132
|
if resource.nil?
|
110
|
-
halt(404,
|
133
|
+
halt(404,
|
134
|
+
encode_result({:status => 'failed',
|
135
|
+
:message => "No scope data found"}))
|
111
136
|
else
|
112
|
-
{
|
113
|
-
|
114
|
-
:payload => resource.scope
|
115
|
-
}.to_json
|
137
|
+
encode_result({:status => 'ok',
|
138
|
+
:payload => resource.scope})
|
116
139
|
end
|
117
140
|
end
|
118
141
|
|
119
142
|
put '/v1/scope/:realm/:identifier' do
|
120
143
|
scope = JSON.parse(request.body.read)
|
121
144
|
uuid = Jerakia::Scope::Server.store(params['realm'], params['identifier'], scope)
|
122
|
-
{
|
123
|
-
|
124
|
-
:uuid => uuid
|
125
|
-
}.to_json
|
145
|
+
encode_result({:status => 'ok',
|
146
|
+
:uuid => uuid})
|
126
147
|
end
|
127
148
|
|
128
149
|
get '/v1/scope/:realm/:identifier/uuid' do
|
@@ -130,10 +151,8 @@ class Jerakia
|
|
130
151
|
if resource.nil?
|
131
152
|
request_failed('No scope data found', 404)
|
132
153
|
else
|
133
|
-
{
|
134
|
-
|
135
|
-
:uuid => resource.uuid
|
136
|
-
}.to_json
|
154
|
+
encode_result({:status => 'ok',
|
155
|
+
:uuid => resource.uuid})
|
137
156
|
end
|
138
157
|
end
|
139
158
|
end
|
data/lib/jerakia/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jerakia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Craig Dunn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.6'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: msgpack
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.1'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.1'
|
111
125
|
description: Extendable and flexible data lookup system
|
112
126
|
email:
|
113
127
|
executables:
|