demonic

A suite of programs designed to execute commands in a sandboxed environment.

Give it a Spin!

Demonic runs commands in a remote sandbox allowing users to quickly try out a given program or script. Click on any of the example programs below to give them a spin.

palindrome prime 10101 withfeathers --print pipes.sh fortune | cowsay | lolcat cmatrix | lolcat

Run any of the code samples below by clicking on the ▶ button:

For more languages see the demonic-docs page.

Python

def greet():
    name = input('Enter your name: ')
    print('Hello', name)

if __name__ == '__main__':
    greet()

C

#include <stdio.h>

int main(int argc, char** argv) {
    fprintf(stderr, "%s", "Enter your name: ");
    char name[100];
    scanf("%s", name);

    fprintf(stderr, "Hello %s!\n", name);
    return 0;
}

Installation

0. Prerequisites

node.js :: for running the server.

npm :: for installing the dependencies.

firejail :: for running programs in a sandboxed chroot environment.

git :: for a quick git clone.

If you are running Windows, the above utilities will be packaged in any of the following: babun, cmder, or Linux Subsystem for Windows. Take your pick! : )

The above utilities should be installed (or readily available) if you are running a Unix derivative (such as Linux, macOS, or any of the BSD’s).

1. Quickstart

# clone the git repo
git clone https://github.com/lbeckman314/demonic

# enter directory
cd demonic

# install dependencies
npm install

# copy example config
cp config-example.js config.js

# edit key, certificate, and passphrase information
nano config.js

# run server (if no port number is provided, 12345 in this example, the server will default to port 8181)
node server.js 12345

# edit server information
nano demonic.js

# then you can connect to the server from a client (e.g. client-example.html)


Uninstallation

0. Delete the directory/folder.

# remove this directory
rm -rfI demonic