Sha256: f226db84fd5f5a492e562634f54aa29a8c91fa8271d715232900300b0ed82a53

Contents?: true

Size: 873 Bytes

Versions: 8

Compression:

Stored size: 873 Bytes

Contents

# frozen_string_literal: true

require "safe_shell"

module Mihari
  module Endpoints
    class Command < Grape::API
      namespace :command do
        desc "Run a command", {
          success: Entities::CommandResult,
          failure: [{ code: 400, message: "Bad request", model: Entities::Message }],
          summary: "Run a command"
        }
        params do
          requires :command, type: String, documentation: { param_type: "body" }
        end
        post "/" do
          command = params[:command]
          if command.nil?
            error!({ message: "command is required" }, 400)
          end

          command = command.split

          output = SafeShell.execute("mihari", *command)
          success = $?.success?

          present({ output: output, success: success }, with: Entities::CommandResult)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mihari-4.4.1 lib/mihari/web/endpoints/command.rb
mihari-4.4.0 lib/mihari/web/endpoints/command.rb
mihari-4.3.0 lib/mihari/web/endpoints/command.rb
mihari-4.2.0 lib/mihari/web/endpoints/command.rb
mihari-4.1.2 lib/mihari/web/endpoints/command.rb
mihari-4.1.1 lib/mihari/web/endpoints/command.rb
mihari-4.1.0 lib/mihari/web/endpoints/command.rb
mihari-4.0.0 lib/mihari/web/endpoints/command.rb