# Broadcast [English version](./README.en.md) Per controllare l'esecuzione di un programma via web. ## Descrizione `broadcast` è una semplice applicazione web per controllare un altro programma in esecuzione. Ci sono 3 modi in cui questo può avvenire: 1. direttamente, specificando percorso assoluto del binario e tutte le opzioni 2. attraverso una unit systemd, specificando l'opzione `-systemd` (e opzionalmente `-systemd-as-user` per indicare che la unit è di tipo *user*) 3. controllando un docker container già in esecuzione (n.b.: il container deve avere un nome, specificato con `--name` e deve già esistere (può essere in pausa)) Il programma espone un'interfaccia web, di default su `0.0.0.0:8080`, controllabile con il parametro `-addr` a riga di comando. ## Esempi Per scopi di test, questa repository include un programma go che stampa una stringa ogni secondo: [echo](./cmd/echo/). Lo useremo negli esempi successivi. ### 1. direttamente ``` broadcast /path/to/echo ``` ### 2. unit systemd Assumendo che esista una unit `echo.service` ``` broadcast -systemd -systemd-as-user echo.service ``` ### 3. container docker Assumendo che già esista un container docker, lanciato ad esempio con ``` docker run --name echo --rm -ti echo ``` ``` broadcast -docker echo ``` ## Sviluppo Il progetto include un [`Makefile`](./Makefile) per facilitare alcuni compiti. Si può iniziare una sessione di sviluppo, innanzitutto facendo il build delle immagini necessarie ``` make dev-build ``` Si può quindi lanciare uno stack docker compose così ``` make dev ``` Per fare la build degli artefatti (verranno creati in [bin/](./bin/)) (`libsystemd-dev` è un prerequisito) ``` make build ``` ## Licenza GPL-v3 o successive.