A revolutionary open-source automation tool

Overview

DopplerTask - Open-source Workflow Automation

DopplerTask - Task Automation

DopplerTask is a revolutionary open-source software that allows you to easily automate tasks. Whether it’s a bunch of bash scripts or just starting your car remotely, you can automate it. Build, run, reuse and share automations with anyone around the globe.

On top of all of this life-simplifying project, we are striving to make an climate friendly software that is fast, easy and consumes as little resources as possible.

DopplerTask - GUI

Demo

Click here to see a short demo of DopplerTask showing some of the capabilities of the software.

Docker

To run the built docker image: docker run -d -p 8090:8090 -p 61614:61614 -v $HOME:/root dopplertask/dopplertask

To rebuild the docker image: docker build -t dopplertask/dopplertask .

Access the GUI on: http://localhost:8090/public/index.html

CLI (Optional)

Install the CLI via NPM: npm install -g dopplertask-cli

Prerequisites

Install JDK 17 and gradle.

(Optional) Install CLI: npm install -g dopplertask-cli

(Optional) Or to install the CLI from the cli directory, run: npm install -g .

Run

To run the backend, go to the backend folder and run: gradle clean build bootRun

If CLI is installed as mentioned in the prerequisites, it can be run like so (See CLI help by typing dopplertask --help): dopplertask run [taskname]

Usage

Example

Add a task

Below is an example json of a Task:

{
  "name": "task_ya0mh2aw9j9n8tyux4fjhj",
  "description": "",
  "parameters": [],
  "actions": [
    {
      "@type": "StartAction",
      "ports": [
        {
          "externalId": "89741e7c-c0f2-2feb-3be5-42cb60c5ff4e",
          "portType": "OUTPUT"
        }
      ],
      "guiXPos": 50,
      "guiYPos": 340
    },
    {
      "@type": "PrintAction",
      "continueOnFailure": "",
      "scriptLanguage": "VELOCITY",
      "retries": "0",
      "failOn": "",
      "message": "Hello world",
      "ports": [
        {
          "externalId": "a4cc77f7-7a1c-d718-09c0-3cd3b01765b3",
          "portType": "INPUT"
        },
        {
          "externalId": "ae299ee3-2f2c-1d98-d375-ad0551090a88",
          "portType": "OUTPUT"
        }
      ],
      "guiXPos": 550,
      "guiYPos": 340
    }
  ],
  "connections": [
    {
      "source": {
        "externalId": "89741e7c-c0f2-2feb-3be5-42cb60c5ff4e"
      },
      "target": {
        "externalId": "a4cc77f7-7a1c-d718-09c0-3cd3b01765b3"
      }
    }
  ]
}

This file is used to add tasks to the system. You can do that by sending a request to the REST API:

curl -X POST http://localhost:8090/task -H "Content-Type: application/json" -d @add_task.json

Run a task

To run a task, send the JSON with the task id and parameters to the REST API:

{
  "taskName": "doppler-example",
  "parameters": {
  }
}

Example of the call:

curl -X POST http://localhost:8090/schedule/task -H "Content-Type: application/json" -d @run_task.json

Task parameters

Task paramters are used to indicate what initial variables are needed to run a task. They can be either required or not required, and can also have a default value.

All task parameters are put into the $parameters variable (see Important Variables).

To add task parameters manually using JSON:

"parameters": [
    {"name": "testVar", "description": "This is just a test var", "required": true, "defaultValue": "testasdasdasas"}
  ],

Actions

Common variables for all actions

  • scriptLanguage: VELOCITY (default), JAVASCRIPT
  • ports: Defined input and output ports for the current action. A connection object connects two ports together. The next action can be reached via a connection object.

PrintAction

Variables
  • message: A message to be printed

SSHAction

Connects to a machine via SSH and executes a command

Variables
  • hostname: hostname to connect to
  • username
  • password
  • command: A command to execute once connected

SecureCopyAction

Variables
  • hostname: hostname to connect to
  • username
  • password
  • sourceFilename: location of the file to be transferred
  • destinationFilename: location of where the file will be placed in the remote host

HttpAction

Variables
  • url
  • method: GET, POST, PUT, DELETE
  • body
  • headers: Key-value list of headers

MySQLAction

Executes a MySQL statement, like a SELECT statement.

Variables
  • hostname: hostname to connect to
  • port (Optional)
  • username
  • password
  • database
  • timezone
  • command

IfAction

Variables
  • condition: Velocity condition. Example: $variable == "sometext".
  • pathTrue: Name of the true path.
  • pathFalse: Name of the false path.

TimedWait

Variables
  • seconds: Amount of seconds to wait

LinkedTaskAction

Variables
  • taskName: name of another task
  • parameters: a list of parameters to pass to the other task

BrowseWebAction

Starts a browser and executes a list of UI Actions.

Variables
  • url: URL to navigate to.
  • headless: If set to false, it will show the web browser window. Default is true.
  • actionList: A list of actions to perform.

A UI Action contains the following fields:

  • fieldName: Name of the field to control. Not required when using the actions WAIT OR ACCEPT_ALERT.
  • findByType: Determines how to find the field. Possible values: ID, NAME, XPATH, CSS. Not required when using the actions WAIT OR ACCEPT_ALERT.
  • action: Action to perform.
Action Description
PRESS Clicks on the requested field.
WRITE Writes in the requested field. Useful if the field is an input text or textarea.
SELECT Selects an item from the requested select list / dropdown based on name.
WAIT Waits a certain amount of time. Amount of time is expressed in milliseconds.
ACCEPT_ALERT Closes an alert / confirm box.
  • value: Required only if used with the actions WRITE, SELECT and WAIT.

MouseAction

Provides the following actions: click, move, press and release the mouse button.

Variables
  • action: CLICK, MOVE, PRESS and RELEASE
  • positionX: X position of the mouse. (MOVE action only)
  • positionY: Y position of the mouse. (MOVE action only)
  • button: (Default LEFT) LEFT, RIGHT

ReadFileAction

Reads a file from disk.

Variables
  • filename: name of a file. Using ~ in the beginning of the filename will point to the home directory eg. ~/Downloads/testfile.txt
  • parameterName: The name of the parameter to store the contents in.

WriteFileAction

Variables
  • filename: name of a file. Using ~ in the beginning of the filename will point to the home directory eg. ~/Downloads/testfile.txt
  • outputType: The type of the output. Possible values: clearText, binaryVar
  • contents: the contents to write in the file.

XMLAction

Variables
  • content: XML or JSON input.
  • type: JSON_TO_XML or XML_TO_JSON.

SetVariableAction

Sets or modifies a variable for the current execution.

Variables
  • setVariableList: A list of key-value pairs of variables.

ExecuteCommandAction

Executes a command on the current machine.

Variables
  • command: Command to execute.

ScriptAction

Run Javascript or Velocity script

Variables
  • type: JAVASCRIPT or VELOCITY
  • script: Code to execute

Retry

All actions have retry mechanisms to allow you to retry an action.

Variables

  • continueOnFailure: (Boolean) true or false. Lets the action continue on failure, ignoring any retry.
  • failOn: The current action will fail if this evaluates to anything.
  • retries: (Integer) Amount of retries.

Webhooks

Besides actions, there is the webhooks nodes which can be added to the Task to start the task from a REST call.

Call the webhook using the following URL with a POST method: http://localhost:8090/webhook/taskName/triggerName/triggerSuffix

or with path: http://localhost:8090/webhook/taskName/triggerName/triggerSuffix/path

  • taskName: Name of the task to run
  • triggerName: Name of the webhook trigger, like Webhook.
  • triggerSuffix: A random string to make every webhook unique.
  • path: The specific path for the desired webhook.
  • method: HTTP Method which this webhook will respond to.

Webhook

This webhook will respond to a REST call and start the flow.

Important variables

  • $lastLog.output / lastLog.getOutput(): Gets the last actions output
  • $parameters.get("paramname") / parameters.get("paramname"): Retrieves a stored parameter value. All Task paramters are stored here. You can also get the byte array of the parameter by adding .getParamValue() to the end of the statement.
  • $logs / logs: A list of all task action logs. Can be traversed to look up specific values.
  • $executionId / executionId: It's the ID of the current execution.
  • When a webhook is called from an HTTP call, the headers can be accessed using the following syntax: $parameters.get("TRIGGER_headername"). Example: $parameters.get("TRIGGER_authorization"). The body of the request can be accessed using $parameters.get("TRIGGER_body").

Contribution

If you would like to contribute to this project, you can create pull requests, open issues and features and join discussions. Our mission is to great open-source software to everyone. The basic node in each task is an action. Our focus will be partially on improving the software and the other part will be to expand the library of actions.

Authors

  • Feras Wilson

License

This project is licensed under the MIT license - see the LICENSE file for details

Comments
  • INSERT INTO MySQL / MariaDB

    INSERT INTO MySQL / MariaDB

    Hello, I just became aware of your software. I find it exciting. I am currently checking whether I can possibly use it for our club homepage. Use case: When a new membership application is received via the website, the data should be automatically entered into the member database (MySQL). Via the contact form in wordpress I can in principle control a webhook.

    Now I wanted to test an INSERT INTO - the following query: INSERT INTO test (test1,test2,test3) VALUES ('1','2','3')

    But I get the message: Action execution result: java.sql.SQLException: Can not issue data manipulation statements with executeQuery().

    The query SELECT * FROM test works. Action execution result: Quering: SELECT * FROM test Result:

    1 test1, 2 test2, 3 test3 1 test1, 2 test2, 3 test3 1 test1, 2 test2, 3 test3

    What is wrong here?

    opened by Azathoth88 8
  • Pass data from webhook (Array) in INSERT INTO

    Pass data from webhook (Array) in INSERT INTO

    I hope I'm not annoying.... Things are getting exciting now. The webhook is running and can be accessed via my reverse proxy.

    I had already written that I would like to access the member database via our association homepage. Unfortunately, I am far away from being a developer and therefore need support. Professionally, I am only a product owner - at least I can give you feedback for your great software-project.

    Maybe you can have a look here. I use the following Wordpress plugin: https://pafe.piotnet.com/docs/webhook/

    When I submit a contact form, the webhook can be accessed. How do I get the data from the array into my MySQL INSERT? Can I include the data from the array in the SQL query?

    Does something like this work (pseudo code) - refers to the description of piotnet

    INSERT INTO test (test1,test2,test3) VALUES ('[first_name]','[last_name]','[email]')

    best regards from Berlin

    opened by Azathoth88 6
  • Script Generation

    Script Generation

    Hello,

    I was wondering if you can imagine generate script so you can run the task configure to another desktop like we can do with actionaz ? And add keyboard action :D. This could be awesome!

    Any way your product is very cool :).

    opened by b4b857f6ee 3
  • Cant save when starting with webhook

    Cant save when starting with webhook

    I have tried to testing the Webhook-Parameter. When I start with the webhook parameter, I cannot save the task. I always seem to have to use "StartAction". Then the saving works. However, I understand that the webhook call should work without this function, right?

    Example: https://i.imgur.com/4vp4iRi.png

    enhancement 
    opened by Azathoth88 3
  • cannot refference task parametters inside HttpAction url

    cannot refference task parametters inside HttpAction url

    I am having an error using taskParameters inside the url. I also wanted to tell you that I am very happy to have found this tool !

    java.lang.IllegalArgumentException: Illegal character in query at index 115: .../api/v1/onboarding_sessions?loan_application_id=$parameters.get("loanid") image

    opened by igloar96 2
  • Security improvement: Encrypt passwords

    Security improvement: Encrypt passwords

    The passwords of database connections (MySQL) are displayed unencrypted in the GUI. This may still work in an earlier alpha version. For the future, they should be encrypted in the GUI and also in the database.

    opened by Azathoth88 1
  • Security improvement: Login / Authentication for configuration

    Security improvement: Login / Authentication for configuration

    So, if you want to use a webhook or similar, I have to release Dopplertask on the Internet. If you are serious about the whole thing, you need a login.

    enhancement 
    opened by Azathoth88 1
  • Bump follow-redirects from 1.14.7 to 1.14.9 in /backend/out/production/resources/static

    Bump follow-redirects from 1.14.7 to 1.14.9 in /backend/out/production/resources/static

    Bumps follow-redirects from 1.14.7 to 1.14.9.

    Commits
    • 13136e9 Release version 1.14.9 of the npm package.
    • 2ec9b0b Keep headers when upgrading from HTTP to HTTPS.
    • 5fc74dd Reduce nesting.
    • 3d81dc3 Release version 1.14.8 of the npm package.
    • 62e546a Drop confidential headers across schemes.
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • cannot refference task parametters inside HttpAction url

    cannot refference task parametters inside HttpAction url

    I am having an error using taskParameters inside the url. I also wanted to tell you that I am very happy to have found this tool !

    java.lang.IllegalArgumentException: Illegal character in query at index 115: .../api/v1/onboarding_sessions?loan_application_id=$parameters.get("loanid")

    image

    opened by nacholopez2022 0
  • AutoSave Integration

    AutoSave Integration

    It would be good if dopplertask would automatically save changes. The automatically stored versions should be marked accordingly.

    2022-06-07T12:13:57[...]-AUTO SAVED

    This could also circumvent the problem: https://github.com/dopplertask/dopplertask/issues/30#issuecomment-1148667382

    opened by Azathoth88 0
  • Reset input / Undo

    Reset input / Undo

    I have just entered data on a test basis and overwritten my server data (MySQL action). Now I wanted to undo my changes. Now I realise that I can't. When I click on the X, the data is saved immediately.

    A save and / or cancel button would be nice.

    opened by Azathoth88 1
  • Underline is not displayed correctly

    Underline is not displayed correctly

    If I use underscores in the MySQL action (e.g. user or password), this is not displayed correctly in the browser. The input field is too narrow. Example: https://i.imgur.com/GrS361T.png

    opened by Azathoth88 2
  • Hostname issues

    Hostname issues

    When using in docker with hostname containing _ throws "java.lang.IllegalArgumentException: The character [_] is never valid in a domain name.". Is this check necessary?

    opened by xor7589 3
  • Webhooks does not work with a Task name consisting of a forward slash

    Webhooks does not work with a Task name consisting of a forward slash

    At the moment, when using webhooks, a Task name cannot contain forward slashes, because it interferes with the ability to read the Task name from the URL when calling a Webhook.

    bug 
    opened by feraswilson 0
Releases(0.14.7)
A new generation GUI automation framework for Web and Desktop Application Testing and Automation.

Clicknium-docs Clicknium is a new generation GUI automation framework for all types of applications. It provides easy and smooth developer experience

null 109 Dec 19, 2022
Android ROM device support and bringup tool, designed for maximum automation and speed.

adevtool Android ROM device support and bringup tool, designed for maximum automation and speed. Features This tool automates the following tasks for

Danny Lin 186 Dec 21, 2022
Minimalistic, opinionated, and predictable release automation tool.

Release Minimalistic, opinionated, and predictable release automation tool. General idea Think Prettier but for automated releases: minimalistic, opin

Open Source: JavaScript 173 Dec 18, 2022
An unofficial companion tool created for use alongside PhotoPrism to enable API endpoints and automation.

PhotoPrism Helper PhotoPrism Helper is an unofficial companion tool created for use alongside PhotoPrism. This project isn't associated with the Photo

Ryan Miller 9 Dec 25, 2022
Reference for How to Write an Open Source JavaScript Library - https://egghead.io/series/how-to-write-an-open-source-javascript-library

Reference for How to Write an Open Source JavaScript Library The purpose of this document is to serve as a reference for: How to Write an Open Source

Sarbbottam Bandyopadhyay 175 Dec 24, 2022
An Open-Source Platform to certify open-source projects.

OC-Frontend This includes the frontend for Open-Certs. ?? After seeing so many open-source projects being monetized ?? without giving any recognition

Open Certs 15 Oct 23, 2022
Shikhar 4 Oct 9, 2022
This is a project for open source enthusiast who want to contribute to open source in this hacktoberfest 2022. 💻 🎯🚀

HACKTOBERFEST-2022-GDSC-IET-LUCKNOW Beginner-Hacktoberfest Need Your first pr for hacktoberfest 2k22 ? come on in About Participate in Hacktoberfest b

null 8 Oct 29, 2022
Solana blockchain candy machine app boilerplate on top of Metaplex Candy Machine. NextJS, Tailwind, Anchor, SolanaLabs.React, dev/mainnet automation scripts.

NFT Candy Factory NOTE: This repo will prob only work on unix-based environments. The NFT Candy Factory project is designed to let users fork, customi

Kevin Faveri 261 Dec 30, 2022
Tools for the openHAB JavaScript Automation Add-On.

openHAB JS Automation Tools This library provides some utilites for the openHAB JS Scripting Add-On. The JavaScript Add-On is using the NodeJS version

Florian Hotze 4 Oct 18, 2022
This repository contains a basic example on how to set up and run test automation jobs with CircleCI and report results to Testmo.

CircleCI test automation example This repository contains a basic example on how to set up and run test automation jobs with CircleCI and report resul

Testmo 2 Dec 23, 2021
A demo for E2E build piplelines in Design Systems using monorepo's and automation :zap:.

Design System Pipelines demo What is it? A working demonstration for end-to-end build piplelines in Design Systems using Primer Primitives, Primer CSS

Rez 7 Oct 20, 2022
Automation scripts I use for my Bitburner gameplay videos.

Bitburner Automation Note: I release a new piece of code when I finish a video segment in the series. If it's a multi-part series, the scripts will no

Chris Rabe 68 Dec 25, 2022
BI, API and Automation layer for your Engineering Operations data

Faros Community Edition Faros Community Edition (CE) is an open-source engineering operations platform that connects the dots between all your operati

Faros AI 272 Dec 23, 2022
BBGO Karma Bot - BBG token distribution automation

BBGO Karma Bot - BBG token distribution automation Requirement node 16 yarn pm2 mongodb Setup Note that while setting a secret is optional on GitHub,

StarCrypto 3 Dec 15, 2022
Service Installer for VMware Tanzu is a one-click automation solution that enables VMware field engineers to easily and rapidly install, configure, and operate VMware Tanzu services across a variety of cloud infrastructures.

Service Installer for VMware Tanzu Service Installer for VMware Tanzu seeks to provide a one-click automation solution to enable our VMware engineers

VMware Tanzu 42 Dec 1, 2022
Campus hiring and training automation platform.

⚡ Supported Use Cases Student register themselves on the portal Student fills details in their academic profile Student opt for campus hiring / intern

null 7 Aug 24, 2022
Boilerplate project to run MOBILE Test Automation with WebdriverIO v7, Mocha, Appium, Allure reporting and Momentum Suite cloud device farm support

WebdriverIO Mocha Appium Momentumsuite WebdriverIO Integration with local or Momentum Suite real mobile farm devices Supports Native or Hybrid Android

Momentum Suite 21 Dec 5, 2022
Browser tab reload automation.

SpeedFeed Browser tab reload automation. Report Bug · Request Feature · View License (back to top) Contributing Contributions are what make the open s

Start Rev Technology 4 Aug 10, 2022