Sha256: fde3d428db4388299254485226f398930dfa4a4538c0ff027ed7b785704d4929

Contents?: true

Size: 1.25 KB

Versions: 13

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

module Isomorfeus
  module Puppetmaster
    class Server
      class ExecutorMiddleware
        @@request_key = nil

        def initialize(app)
          raise '@@request_key not set!' unless @@request_key
          @app = app
        end

        def call(env)
          if env['PATH_INFO'] == '/__executor__' && env['REQUEST_METHOD'] == 'POST'
            request = Rack::Request.new(env)
            unless request.body.nil?
              request_hash = Oj.load(request.body.read, {})
              if request_hash['key'] != @@request_key
                Rack::Response.new(Oj.dump({ 'error' => 'wrong key given, execution denied' }, {}), 401, 'Content-Type' => 'application/json').finish
              end
              begin
                result = Object.instance_eval(request_hash['code']) if request_hash['code']
              rescue Exception => e
                Rack::Response.new(Oj.dump({ 'error' => "#{e.class}: #{e.message}" }, {}), 200, 'Content-Type' => 'application/json').finish
              end
              Rack::Response.new(Oj.dump({ 'result' => result }, {}), 200, 'Content-Type' => 'application/json').finish
            end
          else
            @app.call(env)
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
isomorfeus-puppetmaster-0.3.2 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.3.1 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.3.0 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.9 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.8 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.7 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.6 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.5 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.4 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.3 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.2 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.1 lib/isomorfeus/puppetmaster/server/executor_middleware.rb
isomorfeus-puppetmaster-0.2.0 lib/isomorfeus/puppetmaster/server/executor_middleware.rb