Skip to content

Latest commit

 

History

History
62 lines (38 loc) · 1.77 KB

File metadata and controls

62 lines (38 loc) · 1.77 KB

Configuration Management Backdoor for Ruby on Rails

This rails engine enables ruby and SQL invocation via HTTP POST requests. It is meant to be used as a tool for configuration management via local connections.

Usage

This goes into your Gemfile.

gem 'configuration_management_backdoor', '>= 2.1.0', '< 3.0'

Return values

Results are always returned in JSON format where the value is wrapped under the result key. In case of an evaluation error there will be no result but an error message and the return status is 422 aka "Unprocessable Entity".

Examples

Ruby

A simple example:

$ curl -u x:YOUR_SECRET_KEY_BASE  -X POST \
  http://localhost:3000/configuration_management_backdoor/invoke \
  -H 'content-type: application/ruby' -d '1 + 1'

{"result":2}

This will cause an error in the stack. We also use the -i by which curl will output meta data, too:

$ curl -i -u x:YOUR_SECRET_KEY_BASE -X POST  \
    http://localhost:3000/configuration_management_backdoor/invoke \
    -H 'content-type: application/ruby' -d '1/0'

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json; charset=utf-8
...
{"error":"divided by 0"}

SQL

The structure of the value depends on the adapter. This is for the native Postgresql adapter:

$ curl -u x:YOUR_SECRET_KEY_BASE -X POST \
    http://localhost:3000/configuration_management_backdoor/invoke \
    -H 'content-type: application/sql' -d 'SELECT 1 + 1 AS output'

{"result":[{"output":"2"}]}

Error:

$ curl -u x:YOUR_SECRET_KEY_BASE -X POST \
    http://localhost:3000/configuration_management_backdoor/invoke \
    -H 'content-type: application/sql' -d 'SELECT 1 / 0'

{"error":"PG::DivisionByZero: ERROR:  division by zero\n: SELECT 1 / 0"}