package handlers

import (
	

	
	
	
	
	
)

// ScriptRunner runs scripts on remote server
func ( *fiber.Ctx) error {
	 := []string{"local_path", "root", "parameters", "server_id"}

	for ,  := range  {
		if len(.FormValue()) < 1 {
			return logger.FiberError(fiber.StatusBadRequest, +" parameter is missing")
		}
	}

	,  := liman.GetServer(&models.Server{ID: .FormValue("server_id")})
	if  != nil {
		return 
	}

	,  := bridge.GetSession(
		.Locals("user_id").(string),
		.ID,
		.IPAddress,
	)
	if  != nil {
		return 
	}

	 := .CreateFileConnection(
		.Locals("user_id").(string),
		.FormValue("server_id"),
		.IPAddress,
	)
	if ! {
		return logger.FiberError(fiber.StatusServiceUnavailable, "cannot establish file connection")
	}

	 := ""
	if .Os == "linux" {
		 = "/tmp/" + filepath.Base(.FormValue("local_path"))
		,  := .Run("rm " + )
		if  != nil {
			return 
		}
	} else {
		 = .WindowsPath + .FormValue("remote_path") + ".ps1"
	}

	 = .Put(.FormValue("local_path"), )
	if  != nil {
		return 
	}

	 := ""
	if .Os == "linux" {
		,  := .Run("chmod +x " + )
		if  != nil {
			return 
		}

		if .FormValue("root") == "yes" {
			,  := liman.GetCredentials(&models.User{ID: .Locals("user_id").(string)}, )
			if  != nil {
				return 
			}

			if .Type == "ssh" {
				 = `sudo -p "liman-pass-sudo" ` + 
			} else {
				 = "sudo " + 
			}
		}

		,  = .Run( + " " + .FormValue("parameters"))
		if  != nil {
			return logger.FiberError(fiber.StatusInternalServerError, "cannot run linux script")
		}
	} else {
		,  = .Run(.WindowsLetter + ":\\" +  + " " + .FormValue("parameters"))
		if  != nil {
			return logger.FiberError(fiber.StatusInternalServerError, "cannot run windows script")
		}
	}

	return .SendString()
}