This repository has been archived by the owner on Apr 14, 2023. It is now read-only.
Releases: nsacyber/WALKOFF
Releases · nsacyber/WALKOFF
v0.6.6
Changed
- Omitting
sender_uids
ornames
ondispatcher.on_xyz_event
decorators
in interfaces now registers the decorated function for all senders. This
is consistent with the previously inaccurate code examples in the tutorials.
v0.6.5
Added
- Webpack is now used to increase UI performance
Changed
- Default return codes for the Walkoff app
Contributor
- Some UI tests are now run on Travis-CI
v0.6.4
Changed
- The accept/decline method returns status codes indicating if the action was
accepted or declined instead of true/false
Fixed
- Fixed a bug where roles weren't being deleted from the database
- Fixed issue preventing permissions to be removed on editing roles
- Fixed issue with messages not properly being marked as responded
v0.6.3
Added
- Added a simple action in the Utilities app named "request user approval"
which sends a message with some text to a user and has an accept/decline
component.
Changed
- Refactoring of AppCache to use multiple objects. We had been storing it as
a large dict which was becoming difficult to reason about. This is the
first step of a larger planned refactoring of how apps are cached and
validated
Fixed
- Bug on UI when arguments using an array type without item types specified
- Fixed issue with workflow migration caused to erroneously deleting a script
v0.6.2
Multithreaded workers for increased asynchronous workflow execution
Added
- Multiple workflows can be executed on each worker process
- Decorator factory to simplify endpoint logic
- Endpoint to get system stats
Fixed
- Bug where roles couldn't be assigned to a user on creation
Contributor
- Added AppVeyor to test Walkoff on Windows
v0.6.1
Changed
- Bumped dependency of
flask-jwt-extended
to version 3.4.0
Fixed
- Default logging config issue
- Removed
walkoff/client/build
which was accidentally version controlled - CodeClimate misconfiguration
- Bug fixes to messaging caused by messaging callback not being registered in
the server
v0.6.0
[0.6.0]
2018-01-03
Introducing roles, messages, and notifications
Added
- Administrators can now create custom roles and assign users to those roles.
Each resource of the server endpoint is protected by a permission, and roles
can be created which combine resource permissions. - Messages and notifications
- Actions can now send messages to users
- Messages can be used to convey information to users or to pause a workflow
and wait for a user to approve its continued execution - When a user receives a message, a notification will appear
- Easy updates
- An update script is provided to update to the most recent version if one is
available. This script includes custom workflow migration scripts and
database migration scripts generated by SqlAlchemy-Alembic. These are a work in progress.- Note: Database migrations only work for default database locations and
using SQLite. This can be changed in thealembic.ini
file
- Note: Database migrations only work for default database locations and
- This script also includes utility functions for backing up the WALKOFF directory, cleaning pycache, setting up WALKOFF after an update, etc.
- An update script is provided to update to the most recent version if one is
- Explicit failure return codes for actions
- Return codes which indicate a failure of the action can be marked with
failure: true
. This will cause an ActionExecutionError event to be sent
- Return codes which indicate a failure of the action can be marked with
- Explicit success default return codes for actions
- The default return code for an action can be specified with
default_return: YourReturnHere
- The default return code for an action can be specified with
- Internal ZeroMQ addresses can be configured through the UI
Changed
- Significant repository restructure
- This repository restructure combined the
core
andserver
packages into
a singlewalkoff
package and moved modules such asappcache
and
devicedb
out of theapps
package - Top-level scripts with the exception of
walkoff.py
are now located in the
scripts
directory - These changes make the Walkoff project follow a more canonical repository
structure, and are one step towards being able to install walkoff using
pip
, our eventual goal.
- This repository restructure combined the
- Classes have been moved out of the
server.context.Context
class. They were
located there to remove circular dependencies, but they have been moved into
their own submodule. - The
interface.__init__
module has been split into multiple modules - The Sphinx Python documentation has been relocated to the
docs
directory
and can be generated usingmake html
. Additionally, they now use the
ReadTheDocs theme. - Google Protocol Buffer message structure has been significantly altered.
- Tags used for action, condition, and transform decorators have been
encapsulated in a WalkoffTag enum setup_walkoff.py
no longer explicitly calls Gulp
Security
- JWT structure changes
- JWTs' identity is now the user ID, not the username
- JWT claims are now the username and a list of role IDs this user
possesses. These claims are populated on login, and require
reauthentication to be updated.
v0.5.2
This release fixes a bug where the config host and port were not initialized before the server started.
v0.5.1
v0.5.0
Changes
Version 0.5.0 includes lots of new features including:
- New user-friendly playbook editor
- Custom interfaces with event handling
- Interfaces are no longer attached to apps; they are now their own plugins and are contained in the
interfaces
directory - Interfaces can use new decorator functions to listen and respond to all events in Walkoff as they occur
- Interfaces are no longer attached to apps; they are now their own plugins and are contained in the
- Better triggers
- Triggers are no longer specified in the database. Instead, each individual action in a workflow can have its own set of conditions which can act as breakpoints in a workflow. You can send data to them through the server and have that data validated against a set of conditions before the action can resume.
- You can still start a workflow from the beginning through the server
- Renamed workflow components for clarity
- "steps" have been renamed "actions"
- "next steps" have been renamed "branches"
- "flags" have been renamed "conditions"
- "filters" have been renamed "branches"
- App-specific conditions and transforms
- Conditions and transforms are now located in apps rather than in core, so they can be more easily created
- Script used to start the server has been renamed
walkoff.py
- Host and port can now be specified on the command line
- Unfortunately, event-driven actions have been broken for some time now. We have removed this functionality, but are working on an even better replacement for them in the meantime
- Branches now contain a "priority" field which can be used to determine the order in which the branches of a given action are evaluated
- Arguments to actions, conditions, and transforms which use references can select which component of the referenced action's output to use.
- HTTPS is enabled by default if certificates are placed in the
.certificates
directory.
This version introduces a variety of backward-breaking changes, but we have also included two scripts,migrate_workflows.py
andmigrate_api.py
which should ease this transition.
Detailed changes
- We have removed accumulated risk from workflows and risk from steps. This feature will be readded at a future date
- We have removed widgets from the backend. This feature will be reimplemented later.
- Playbook file format changes
- Branches are now contained outside of actions, creating two top-level fields.
- Branches have a
source_uid
and adestination_uid
instead of just aname
field - The
start
step on a workflow is indicated with the start step's UID instead of its name - The
app
andaction
fields of actions, conditions, and transforms have been renamedapp_name
andaction_name
respectively. - Conditions and transforms contain an
app_name
field instead of just anaction
field - We have removed the
widgets
field and therisk
field from actions - Devices for actions are specified by id rather than by name
- Actions'
inputs
field, as well as conditions' and transforms'args
field has been renamedarguments
and is now a complete JSON object - Playbooks now contain a
walkoff_version
field which will be used to indicate which version of WALKOFF created them. This will be helpful in the future to migrate workflows to new formats
- ZeroMQ keys are contained in the
.certificates
directory - Minor changes to api.yaml schema
dataIn
has been renameddata_in
termsOfService
has been renamedterms_of_service
externalDocs
has been renamedexternal_docs
and is always an array
- Scripts to create Sphinx documentation have been added to the repository
- Performance of worker processes has been improved by removing gevent from child processes and reducing polling
- The blinker Signals used to trigger events have been wrapped in a WalkoffEvent enum
- Internal sockets used for ZeroMQ communication have been moved to
core.config.config
- Backend support for adding roles to users has been removed. All users are administrators as they have been in previous releases. There was never a UI component for this feature, and it was breaking some other components for editing users. Roles will be readded in the next release.
- Actions which are defined inside of a class must supply a device, or the workflow will fail on initialization
- The REST API to get the APIs of apps has been enhanced significantly and returns all of the API
Contributor changes
- Coverage.py is used to generate test coverage report. Travis-CI will fail if the code coverage is below 81% This percentage will rise over time