hieraviz 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c92243305adbd29684586595b9756031dbab5890
4
- data.tar.gz: 92149f89aebee317256c51b143613111431730ab
3
+ metadata.gz: ecd646feab7d0eb2b8f2e4ed17b7417bad5e1539
4
+ data.tar.gz: ede3db1196637027b576e6180b972d8311f0c5b8
5
5
  SHA512:
6
- metadata.gz: 2910ecf14f76df96f33f1b211bcfe315a6ba2acec195a2375c7cc95a6f3a7a02230e8703256e79d673069178cfaaa7cd19190a86660a9a23420136984bca0852
7
- data.tar.gz: 868f5226fc033dc439515f4b3f81182f6a40068ae17da91fec87a67296384d0789d29b4e70b23176581578069e34abd6a44f71750599640ed829488ed173ad26
6
+ metadata.gz: e6b1383225fdd48cff661db970b4a2ae217bfb852cd11a9d7196c2e8e507ec8f3d169552dde470d8ff2ef2850b7bdaab744317a594df4c7665275c17b6fc5fbf
7
+ data.tar.gz: a97c8a77ad48a4cd2ed204c8113433783e4a85f12d9fff0210381597d4899ccd5afc080a42cd15107143e39288ae94ff6baaba06aaa14cb3dd2e7c144265eb80
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Hieraviz Changelog
2
2
  ========================
3
3
 
4
+ ### v0.2.2 - 2016-04-05
5
+ - sort branches order
6
+ - prepare debian package
7
+ - add a filter on farm api calls
8
+
4
9
  ### v0.2.1 - 2016-04-04
5
10
  - replaced sinatra-flash (weird license, no debian package) with rack-flash3
6
11
 
data/README.md CHANGED
@@ -41,7 +41,7 @@ Production
41
41
  ----------------
42
42
 
43
43
  gem install thin
44
- thin -s 1 -C config.yml -R config.ru start
44
+ thin -s 1 -C config/thin.yml -R config.ru start
45
45
 
46
46
  Contributing
47
47
  ----------------
data/app/apiv1.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'sinatra/json'
2
+ require 'sinatra/cross-origin'
2
3
 
3
4
  require 'digest/sha1'
4
5
  require 'dotenv'
@@ -11,11 +12,18 @@ require File.expand_path '../common.rb', __FILE__
11
12
 
12
13
  module HieravizApp
13
14
  class ApiV1 < Common
15
+ register Sinatra::CrossOrigin
14
16
 
15
17
  configure do
16
18
  set :session_secret, settings.configdata['session_seed']
17
19
  set :protection, :origin_whitelist => ['http://web.example.com']
18
20
  enable :sessions
21
+ enable :cross_origin
22
+ set :allow_origin, :any
23
+ set :allow_methods, [:get, :post, :options]
24
+ set :allow_credentials, true
25
+ set :max_age, "1728000"
26
+ set :expose_headers, ['Content-Type']
19
27
  end
20
28
 
21
29
  case settings.configdata['auth_method']
@@ -53,11 +61,17 @@ module HieravizApp
53
61
  def get_facts(base, node)
54
62
  Hieraviz::Facts.new(settings.configdata['tmpdir'], base, node, username)
55
63
  end
56
- def cors_headers()
57
- headers 'Access-Control-Allow-Origin' => '*'
58
- headers 'Access-Control-Allow-Headers' => 'Authorization,Accepts,Content-Type,X-CSRF-Token,X-Requested-With,X-AUTH'
59
- headers 'Access-Control-Allow-Methods' => 'GET,POST,PUT,DELETE,OPTIONS'
60
- end
64
+ # def cors_headers()
65
+ # headers 'Access-Control-Allow-Origin' => '*'
66
+ # headers 'Access-Control-Allow-Headers' => 'Authorization,Accepts,Content-Type,X-CSRF-Token,X-Requested-With,X-AUTH'
67
+ # headers 'Access-Control-Allow-Methods' => 'GET,POST,PUT,DELETE,OPTIONS'
68
+ # end
69
+ end
70
+
71
+ options '*' do
72
+ response.headers["Allow"] = "HEAD,GET,PUT,POST,DELETE,OPTIONS"
73
+ response.headers["Access-Control-Allow-Headers"] = "X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept"
74
+ 200
61
75
  end
62
76
 
63
77
  get %r{^/?([-_\.a-zA-Z0-9]+)?/nodes} do |base|
@@ -115,7 +129,7 @@ module HieravizApp
115
129
 
116
130
  get %r{^/?([-_\.a-zA-Z0-9]+)?/farms} do |base|
117
131
  check_authorization
118
- cors_headers
132
+ cross_origin
119
133
  hieracles_config = prepare_config(base)
120
134
  json Hieracles::Registry.farms_counted(hieracles_config, base)
121
135
  end
@@ -144,18 +158,22 @@ module HieravizApp
144
158
  json res
145
159
  end
146
160
 
147
- options %r{^/.*/$} do
148
- cors_headers
149
- halt 200
150
- end
151
-
152
161
  get %r{^/?([-_\.a-zA-Z0-9]+)?/farm/([-_\.a-zA-Z0-9]+)$} do |base, farm|
153
162
  # check_authorization
154
- cors_headers
163
+ cross_origin
155
164
  hieracles_config = prepare_config(base)
156
165
  nodes = Hieracles::Registry.nodes_data(hieracles_config, base).each_with_object({}) do |(key, val), acc|
157
166
  acc[key] = val if val['farm'] == farm
158
167
  end
168
+ params = request.env['rack.request.query_hash']
169
+ if params.count > 0
170
+ puts params
171
+ params.each do |k, v|
172
+ nodes = nodes.keep_if do |key, item|
173
+ item[k] == v
174
+ end
175
+ end
176
+ end
159
177
  json nodes
160
178
  end
161
179
 
data/app/web.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'sinatra/content_for'
2
2
 
3
- require 'better_errors'
4
3
  require 'rack-flash'
5
4
  require 'dotenv'
6
5
  require 'oauth2'
@@ -24,11 +23,6 @@ module HieravizApp
24
23
  enable :sessions
25
24
  end
26
25
 
27
- configure :development do
28
- use BetterErrors::Middleware
29
- BetterErrors.application_root = File.expand_path('../../', __FILE__)
30
- end
31
-
32
26
  case settings.configdata['auth_method']
33
27
  when 'dummy'
34
28
 
@@ -12,7 +12,7 @@ module Hieraviz
12
12
  def basepaths
13
13
  basepath_dir = @_config['basepath_dir']
14
14
  if @_config && basepath_dir
15
- Dir.glob(root_path(basepath_dir)).map { |path| File.expand_path(path) }
15
+ Dir.glob(root_path(basepath_dir)).map { |path| File.expand_path(path) }.sort
16
16
  end
17
17
  end
18
18
 
data/lib/hieraviz.rb CHANGED
@@ -5,6 +5,7 @@ require 'hieraviz/store'
5
5
  require 'hieraviz/facts'
6
6
  require 'hieraviz/auth_gitlab'
7
7
  require 'hieraviz/puppetdb'
8
+ require 'sinatra/cross-origin'
8
9
 
9
10
  module Hieraviz
10
11
  # Your code goes here...
@@ -0,0 +1,82 @@
1
+ require 'sinatra/base'
2
+
3
+ # Helper to enable cross origin requests.
4
+ # More on Cross Origin Resource Sharing here:
5
+ # https://developer.mozilla.org/En/HTTP_access_control
6
+ #
7
+ # To enable cross origin requests for all routes:
8
+ # configure do
9
+ # enable :cross_origin
10
+ # ...
11
+ #
12
+ # To enable cross origin requests for a single domain:
13
+ # get '/' do
14
+ # cross_origin
15
+ # ...
16
+ #
17
+ # More info at:
18
+ # http://github.com/britg/sinatra-cross_origin
19
+ #
20
+
21
+ module Sinatra
22
+ module CrossOrigin
23
+ module Helpers
24
+
25
+ # Apply cross origin headers either
26
+ # from global config or custom config passed
27
+ # as a hash
28
+ def cross_origin(hash=nil)
29
+ request_origin = request.env['HTTP_ORIGIN']
30
+ return unless request_origin
31
+ settings.set hash if hash
32
+
33
+ if settings.allow_origin == :any
34
+ origin = request_origin
35
+ else
36
+ allowed_origins = *settings.allow_origin # make sure its an array
37
+ origin = allowed_origins.join('|') # we'll return this unless allowed
38
+
39
+ allowed_origins.each do |allowed_origin|
40
+ if allowed_origin.is_a?(Regexp) ?
41
+ request_origin =~ allowed_origin :
42
+ request_origin == allowed_origin
43
+ origin = request_origin
44
+ break
45
+ end
46
+ end
47
+ end
48
+
49
+ methods = settings.allow_methods.map{ |m| m.to_s.upcase! }.join(', ')
50
+
51
+ headers_list = {
52
+ 'Access-Control-Allow-Origin' => origin,
53
+ 'Access-Control-Allow-Methods' => methods,
54
+ 'Access-Control-Allow-Headers' => settings.allow_headers.map(&:to_s).join(', '),
55
+ 'Access-Control-Allow-Credentials' => settings.allow_credentials.to_s,
56
+ 'Access-Control-Max-Age' => settings.max_age.to_s,
57
+ 'Access-Control-Expose-Headers' => settings.expose_headers.join(', ')
58
+ }
59
+
60
+ headers headers_list
61
+ end
62
+ end
63
+
64
+ def self.registered(app)
65
+
66
+ app.helpers CrossOrigin::Helpers
67
+
68
+ app.set :cross_origin, false
69
+ app.set :allow_origin, :any
70
+ app.set :allow_methods, [:post, :get, :options]
71
+ app.set :allow_credentials, true
72
+ app.set :allow_headers, ["*", "Content-Type", "Accept", "AUTHORIZATION", "Cache-Control"]
73
+ app.set :max_age, 1728000
74
+ app.set :expose_headers, ['Cache-Control', 'Content-Language', 'Content-Type', 'Expires', 'Last-Modified', 'Pragma']
75
+
76
+ app.before do
77
+ cross_origin if settings.cross_origin
78
+ end
79
+
80
+ end
81
+ end
82
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hieraviz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - mose
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-04 00:00:00.000000000 Z
11
+ date: 2016-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -301,6 +301,7 @@ files:
301
301
  - lib/hieraviz/store.rb
302
302
  - lib/hieraviz/utilities.rb
303
303
  - lib/hieraviz/version.rb
304
+ - lib/sinatra/cross-origin.rb
304
305
  - spec/app/apiv1_spec.rb
305
306
  - spec/app/web_dummy_auth_spec.rb
306
307
  - spec/app/web_spec.rb