Sha256: b826e9c1d3e0f3a9d3ace33e3939dbc63907ad8409da64f77f83405c9b6dec55

Contents?: true

Size: 1.29 KB

Versions: 7

Compression:

Stored size: 1.29 KB

Contents

require "rack"
require "thin"
require 'json'
require 'uri'
require_relative '../rule_engine'
require_relative '../visitors/configuration_visitor'
require_relative '../facades/configuration_page_facade'
require_relative '../facades/configuration_file_facade'

class LinterServer
  ConfigurationVisitor.GenerateIDs
  ConfigurationFileFacade.LoadConfigurations

  def call(env)
    req = Rack::Request.new(env)

    case req.path
    when "/configuration"
      if req.post?
        process_form(req)
      elsif req.get?
        configurations_page
      end
    end

  end

  def configurations_page
    configuration_page = ConfigurationPageFacade.AssemblePage

    return [200, { 'Content-Type' => 'text/html' }, [configuration_page]]
  end

  def process_form(req)
    new_conf = URI.decode_www_form(req.body.read)
    new_conf_hash = Hash[new_conf.map {|key, value| [key, value]}]

    begin
      ConfigurationPageFacade.ApplyConfigurations(new_conf_hash)
      ConfigurationFileFacade.SaveConfigurations
    rescue StandardError => error
      return [400, { 'Content-Type' => 'text/plain' }, ["Error: #{error.message}"]]
    end

    return [200, { 'Content-Type' => 'text/plain' }, ["Changes saved successfully"]]
  end

  def self.start(port)
    Rack::Handler::Thin.run(LinterServer.new, :Port => port)
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
puppet-sec-lint-0.5.7 lib/servers/linter_server.rb
puppet-sec-lint-0.5.6 lib/servers/linter_server.rb
puppet-sec-lint-0.5.5 lib/servers/linter_server.rb
puppet-sec-lint-0.5.4 lib/servers/linter_server.rb
puppet-sec-lint-0.5.3 lib/servers/linter_server.rb
puppet-sec-lint-0.5.2 lib/servers/linter_server.rb
puppet-sec-lint-0.5.1 lib/servers/linter_server.rb