From 2c07e3c34db6932e4db76497583fed83838295d1 Mon Sep 17 00:00:00 2001 From: TibshoOT Date: Tue, 12 Apr 2016 17:26:03 +0200 Subject: [PATCH 1/2] Add necessary stuff before oxidized patch to hide enable password from REST API --- lib/oxidized/web.rb | 5 ++++- lib/oxidized/web/webapp.rb | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/oxidized/web.rb b/lib/oxidized/web.rb index 1ecf5c5..30eaeda 100644 --- a/lib/oxidized/web.rb +++ b/lib/oxidized/web.rb @@ -6,7 +6,9 @@ class Web require 'rack/handler' attr_reader :thread Rack::Handler::WEBrick = Rack::Handler.get(:puma) - def initialize nodes, listen + # in order to don't crash existing setup, + # we set hide_enable at false by default + def initialize nodes, listen, hide_enable=false require 'oxidized/web/webapp' listen, uri = listen.split '/' addr, port = listen.split ':' @@ -17,6 +19,7 @@ def initialize nodes, listen Port: port, } WebApp.set :nodes, nodes + WebApp.set :hide_enable, hide_enable @app = Rack::Builder.new do map uri do run WebApp diff --git a/lib/oxidized/web/webapp.rb b/lib/oxidized/web/webapp.rb index 711b959..157c9a4 100644 --- a/lib/oxidized/web/webapp.rb +++ b/lib/oxidized/web/webapp.rb @@ -25,6 +25,7 @@ class WebApp < Sinatra::Base node[:status] = node[:last][:status] node[:time] = node[:last][:end] end + hide_enable? node node end end @@ -40,6 +41,7 @@ class WebApp < Sinatra::Base node[:status] = node[:last][:status] node[:time] = node[:last][:end] end + hide_enable? node node end out :nodes @@ -113,6 +115,7 @@ class WebApp < Sinatra::Base get '/node/show/:node' do node, @json = route_parse :node @data = nodes.show node + hide_enable? @data out :node end @@ -221,6 +224,14 @@ class WebApp < Sinatra::Base private + def hide_enable? node + if settings.hide_enable + if (node.has_key? :vars) and (node[:vars].has_key? :enable) + node[:vars][:enable] = 'HIDDEN' + end + end + end + def out template = :text if @json or params[:format] == 'json' if @data.is_a?(String) From 3f7d7052e1f5447d33c8eb4c63914abc72a03a27 Mon Sep 17 00:00:00 2001 From: TibshoOT Date: Fri, 15 Apr 2016 18:09:50 +0200 Subject: [PATCH 2/2] hide_enable OK with dup and clone --- lib/oxidized/web/webapp.rb | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/oxidized/web/webapp.rb b/lib/oxidized/web/webapp.rb index 157c9a4..62c2876 100644 --- a/lib/oxidized/web/webapp.rb +++ b/lib/oxidized/web/webapp.rb @@ -26,7 +26,6 @@ class WebApp < Sinatra::Base node[:time] = node[:last][:end] end hide_enable? node - node end end out :nodes @@ -42,7 +41,6 @@ class WebApp < Sinatra::Base node[:time] = node[:last][:end] end hide_enable? node - node end out :nodes end @@ -114,8 +112,7 @@ class WebApp < Sinatra::Base get '/node/show/:node' do node, @json = route_parse :node - @data = nodes.show node - hide_enable? @data + @data = hide_enable?(nodes.show(node)) out :node end @@ -226,10 +223,21 @@ class WebApp < Sinatra::Base def hide_enable? node if settings.hide_enable + # We need to dup/clone twice not to break in memory node. if (node.has_key? :vars) and (node[:vars].has_key? :enable) - node[:vars][:enable] = 'HIDDEN' + n = node.clone + node.each_key do |k| + if node[k].is_a?(Symbol) + n[k] = node[k] + else + n[k] = node[k].dup unless node[k].nil? + end + end + n[:vars][:enable] = 'HIDDEN' + return n end end + return node end def out template = :text