Sha256: 0fecb609d1172717069c6da529c071c3303d96641bbdb2c1573b1760bca5bda0

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 KB

Contents

require "rack"
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

  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::WEBrick.run(LinterServer.new, :Port => port)
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
puppet-sec-lint-0.5.11 lib/servers/linter_server.rb
puppet-sec-lint-0.5.10 lib/servers/linter_server.rb
puppet-sec-lint-0.5.9 lib/servers/linter_server.rb
puppet-sec-lint-0.5.8 lib/servers/linter_server.rb