package shim0

import (
	"encoding/gob"
	"net"

	"git.ophivana.moe/security/fortify/helper/bwrap"
	"git.ophivana.moe/security/fortify/internal/fmsg"
)

const Env = "FORTIFY_SHIM"

type Payload struct {
	// child full argv
	Argv []string
	// bwrap, target full exec path
	Exec [2]string
	// bwrap config
	Bwrap *bwrap.Config
	// sync fd
	Sync *uintptr

	// verbosity pass through
	Verbose bool
}

func (p *Payload) Serve(conn *net.UnixConn) error {
	if err := gob.NewEncoder(conn).Encode(*p); err != nil {
		return fmsg.WrapErrorSuffix(err,
			"cannot stream shim payload:")
	}

	return fmsg.WrapErrorSuffix(conn.Close(),
		"cannot close setup connection:")
}