Security/Projects/Minion/ImplDetails

From MozillaWiki
Jump to: navigation, search

Minion Implementation Details

OK, so this is a brain dump at the moment - will need to restructure soon ;)

Configuration Abstraction

To pass data between components, a standard configuration and data scheme must be used. For Minion, we have decided to use JSON and a REST API as the format for passing data. For example, the user interface will collect the necessary options, then call the task engine and pass it a JSON string of those options. The task engine will read the options and use each installed tool's REST API to make requests to the tool (some tools may need different options than others). The tool will pass its results back to the task engine as a JSON string and the task engine will compile all returned results into a single JSON string which will be returned to the interface. The interface will deconstruct the string into human-readable results and display them on the results page.

Installation Notes

PYTHONPATH="$PYTHONPATH:$HOME/minion/task_engine"
PYTHONPATH="$PYTHONPATH:$HOME/minion/plugins"
export PYTHONPATH

Libraries

The libraries we're currently using (in alphabetical order):

WhatWhy
bottleSimple comms - may well be replaced in the future
loggingLogging (well, what else can you say?)
unittestRegression tests
zapZAP python client API