http-cmd 0.1.0

Run a command over HTTP
http-cmd-0.1.0 is not a library.

http-cmd

Run a command over HTTP

⚠️ Warning ⚠️

Be very careful with exposing http-cmd to the internet! Most importantly, never use it with a shell as the command to be executed over HTTP! Otherwise, execution of arbitrary programs is possible!

Motivation

The motivation for building this tool is that static site generators like Zola don't allow executing external commands for security reasons. You don't want arbitrary programs to be executed while you try to build a static website! Imagine being hacked by a custom theme 😱

However, such static site generators support fetching remote data. This leads to the hack: What if we run a local server that runs a command for us and returns its output as an HTTP response? 💡

You can find a demonstration example for Zola in the zola_example directory which has its own README.

Installation

You can install http-cmd using Cargo by running: cargo install http-cmd.

You can update it using cargo-update.

Help message

The output of http-cmd -h:

Usage: http-cmd [OPTIONS] -- <PROGRAM> [ARGS]...

Arguments:
  <PROGRAM>  The program to execute over HTTP
  [ARGS]...  The arguments to the command to execute over HTTP

Options:
  -m, --max-body-size <MAX_BODY_SIZE>
          The maximum body size in bytes. The default is 1MiB [default: 1048576]
  -s, --socket-address <SOCKET_ADDRESS>
          The IPv4/IPv6 socket address (with port) to listen on [default: 127.0.0.1:8080]
  -i, --stdin
          Pipe the request body to the command's standard input instead of passing its lines as command arguments
  -h, --help
          Print help (see more with '--help')
  -V, --version
          Print version

Run http-cmd --help (not -h) for more details.