Skip to content
This repository has been archived by the owner on Apr 14, 2023. It is now read-only.

Releases: nsacyber/WALKOFF

v0.6.6

02 Feb 17:25
Compare
Choose a tag to compare

Changed

  • Omitting sender_uids or names on dispatcher.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

02 Feb 15:11
Compare
Choose a tag to compare

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

18 Jan 19:47
Compare
Choose a tag to compare

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

18 Jan 16:59
Compare
Choose a tag to compare

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

05 Jan 20:15
Compare
Choose a tag to compare

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

03 Jan 22:37
Compare
Choose a tag to compare

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

03 Jan 14:40
2065229
Compare
Choose a tag to compare

[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 the alembic.ini file
    • This script also includes utility functions for backing up the WALKOFF directory, cleaning pycache, setting up WALKOFF after an update, etc.
  • 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
  • Explicit success default return codes for actions
    • The default return code for an action can be specified with
      default_return: YourReturnHere
  • Internal ZeroMQ addresses can be configured through the UI

Changed

  • Significant repository restructure
    • This repository restructure combined the core and server packages into
      a single walkoff package and moved modules such as appcache and
      devicedb out of the apps 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.
  • 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 using make 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

20 Dec 15:36
Compare
Choose a tag to compare

This release fixes a bug where the config host and port were not initialized before the server started.

v0.5.1

14 Dec 18:42
Compare
Choose a tag to compare

This release includes a bug fix for case management due to a typo in the TS.

v0.5.0

29 Nov 20:16
Compare
Choose a tag to compare

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
  • 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 and migrate_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 a destination_uid instead of just a name field
    • The start step on a workflow is indicated with the start step's UID instead of its name
    • The app and action fields of actions, conditions, and transforms have been renamed app_name and action_name respectively.
    • Conditions and transforms contain an app_name field instead of just an action field
    • We have removed the widgets field and the risk 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 renamed arguments 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 renamed data_in
    • termsOfService has been renamed terms_of_service
    • externalDocs has been renamed external_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