# Broadcast Control the execution of a program via web interface. ## Description `broadcast` is a simple web application to control another executable program. There are 3 methods to do so: 1. directly, specifying the binary absolute path and all command line options 2. via a systemd unit, specifying the `-systemd` flag (and optionally the `-systemd-as-user` flag, to signal that the unit is a user one) 3. controlling an already existing docker container (note: it has to be already exinsting -although it can be paused- and have a name with the `--name` option) The program exposes a web interface, defaulting on `0.0.0.0:8080`, that can be specified using the `-addr` parameter. ## Examples For the sake of testing, this repository includes a simple program that prints a string every second: [echo](./cmd/echo/). We will use it in the following examples. ### 1. directly ``` broadcast /path/to/echo ``` ### 2. systemd unit Assuming an already existing unit named `echo.service` ``` broadcast -systemd -systemd-as-user echo.service ``` ### 3. docker container Assuming there already exists a docker container, started for example with ``` docker run --name echo --rm -ti echo ``` ``` broadcast -docker echo ``` ## Develop The project includes a [`Makefile`](./Makefile) to ease some tasks. It is possible to begin a developing session, first building the needed images with ``` make dev-build ``` It is then possible to launch a docker compose stack with ``` make dev ``` In order to build the artifacts (output to [bin/](./bin/)) (note that `libsystemd-dev` is a prerequisite) ``` make build ``` ## License GPL-v3 or following.