http-bash-requests

command module
v0.0.0-...-425a191 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2024 License: ISC Imports: 8 Imported by: 0

README

http-bash-requests

A simple wrapper to make bash (or other shell) commands with http.

DISCLAIMER: This intentionally has no authentication built in, and only works on localhost. As such, be VERY cautious about giving it elevated permissions. This also allows other users on your machine to delete your entire home folder (even without elevated permissions), if they would like, among other things.

I do not take any responsibility for the consequences of you running this, or any other, software on any computer.

OTHER DISCLAIMER: This also has the ability to execute any executable file on your computer as your current user. The X-Bin-Path, X-Bin-Arg and X-Body-Split HTTP headers make this possible. This is very dangerous.

I really do not advise you run this on any open machine that isn't a scrappable VM (READ: DO NOT RUN ON A REAL SYSTEM).

Why?

I wanted a very quick hack to allow my docker containers to reboot themselves.

Usage

# Run
go run main.go -port 6016

# Build to dir
go build -o ~/.local/bin/http-bash-requests .

curl localhost:6016 -d "echo test"

Service

You can also use the services to keep it enabled.

mkdir -p ~/.config/systemd/user/
curl https://raw.githubusercontent.com/5HT2C/http-bash-requests/master/http-bash-requests.service -o ~/.config/systemd/user/http-bash-requests.service
curl https://raw.githubusercontent.com/5HT2C/http-bash-requests/master/http-bash-requests.timer -o ~/.config/systemd/user/http-bash-requests.timer
# Enable the service and timer for the current user
systemctl --user enable --now http-bash-requests.timer

Verify that the service is working like so, and ensure "test" is in the status log:

Library

Here is a basic example for using the library:

package main

import (
	"github.com/5HT2C/http-bash-requests/httpBashRequests"
	"log"
	"net/http"
)

func main() {
	// Setup only needed once
	client := httpBashRequests.Client{Addr: "http://localhost:6016", HttpClient: &http.Client{Timeout: 5 * time.Minute}}
	httpBashRequests.Setup(&client)

	// Now we can run bash requests over http
	log.Println(httpBashRequests.Run("ls"))
}

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL