mirror of
https://github.com/alvierahman90/gohookr.git
synced 2024-09-19 15:54:05 +00:00
42 lines
783 B
Go
42 lines
783 B
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
type Command struct {
|
|
Program string
|
|
Arguments []string
|
|
AppendPayload bool
|
|
AppendHeaders bool
|
|
}
|
|
|
|
func (c Command) Execute(payload string, header http.Header) ([]byte, error) {
|
|
arguments := make([]string, len(c.Arguments))
|
|
copy(arguments, c.Arguments)
|
|
|
|
if c.AppendPayload {
|
|
arguments = append(arguments, payload)
|
|
}
|
|
|
|
if c.AppendHeaders {
|
|
var header_builder strings.Builder;
|
|
header.Write(&header_builder);
|
|
|
|
arguments = append(arguments, header_builder.String())
|
|
}
|
|
|
|
return exec.Command(c.Program, arguments...).Output()
|
|
}
|
|
|
|
func (c Command) String() string {
|
|
return fmt.Sprintf(
|
|
"<Command cmd=%v AppendPayload=%v>",
|
|
append([]string{c.Program}, c.Arguments...),
|
|
c.AppendPayload,
|
|
)
|
|
}
|