package rac

import (
	"os"
	"os/exec"
	"strings"

	log "github.com/sirupsen/logrus"
	"goauthentik.io/internal/outpost/ak"
)

const (
	guacdPath        = "/opt/guacamole/sbin/guacd"
	guacdDefaultArgs = " -b 0.0.0.0 -f"
)

func (rs *RACServer) startGuac() error {
	guacdArgs := strings.Split(guacdDefaultArgs, " ")
	guacdArgs = append(guacdArgs, "-L", rs.ac.Outpost.Config[ak.ConfigLogLevel].(string))
	rs.guacd = exec.Command(guacdPath, guacdArgs...)
	rs.guacd.Env = os.Environ()
	rs.guacd.Stdout = rs.log.WithField("logger", "authentik.outpost.rac.guacd").WriterLevel(log.InfoLevel)
	rs.guacd.Stderr = rs.log.WithField("logger", "authentik.outpost.rac.guacd").WriterLevel(log.InfoLevel)
	rs.log.Info("starting guacd")
	return rs.guacd.Start()
}