Sha256: 74bedae43f4bd3d07c4489d623a5e60232a52874e601c32b3c0c095bd5eb59f2

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 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

end

Rack::Handler::Thin.run(LinterServer.new, :Port => 9292)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puppet-sec-lint-0.5.0 lib/servers/linter_server.rb