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..62c2876 100644 --- a/lib/oxidized/web/webapp.rb +++ b/lib/oxidized/web/webapp.rb @@ -25,7 +25,7 @@ class WebApp < Sinatra::Base node[:status] = node[:last][:status] node[:time] = node[:last][:end] end - node + hide_enable? node end end out :nodes @@ -40,7 +40,7 @@ class WebApp < Sinatra::Base node[:status] = node[:last][:status] node[:time] = node[:last][:end] end - node + hide_enable? node end out :nodes end @@ -112,7 +112,7 @@ class WebApp < Sinatra::Base get '/node/show/:node' do node, @json = route_parse :node - @data = nodes.show node + @data = hide_enable?(nodes.show(node)) out :node end @@ -221,6 +221,25 @@ class WebApp < Sinatra::Base private + 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) + 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 if @json or params[:format] == 'json' if @data.is_a?(String)