package handlers

import (
	

	
	
	
	
	
	
	
	
)

// ExtensionRunner runs extensions and returns rendered HTML/JSON views
func ( *fiber.Ctx) error {
	if len(.FormValue("extension_id")) < 1 {
		return logger.FiberError(fiber.StatusBadRequest, "extension not found")
	}

	,  := liman.GetExtension(&models.Extension{
		ID: .FormValue("extension_id"),
	})

	if  != nil {
		return 
	}

	if .Status == "0" {
		return logger.FiberError(fiber.StatusServiceUnavailable, "extension is unavailable")
	}

	 := &models.Credentials{}
	if .RequireKey == "true" {
		,  = liman.GetCredentials(
			&models.User{
				ID: .Locals("user_id").(string),
			},
			&models.Server{
				ID: .FormValue("server_id"),
			},
		)

		if  != nil || len(.Username) < 1 {
			return logger.FiberError(fiber.StatusForbidden, "you need a key to use this extension")
		}
	}

	 := helpers.GetFormData()

	 := .FormValue("token")
	if len(.FormValue("liman-token")) > 0 {
		 = .FormValue("liman-token")
	}

	,  := sandbox.GenerateCommand(
		,
		,
		&models.CommandParams{
			TargetFunction: .FormValue("lmntargetFunction"),
			User:           .Locals("user_id").(string),
			Extension:      .FormValue("extension_id"),
			Server:         .FormValue("server_id"),
			RequestData:    ,
			Token:          ,
			BaseURL:        .FormValue("lmnbaseurl", .Get("origin")),
			Locale:         .FormValue("locale", helpers.Env("APP_LANG", "tr")),
			LogID:          .Locals("log_id").(string),
		},
	)

	if  != nil {
		return 
	}

	 := linux.Execute()

	if helpers.IsJSON() {
		type  struct {
			 any `json:"message"`
			  int `json:"status"`
		}
		 := &{}

		 := json.Unmarshal([]byte(), &)
		if  != nil {
			return .Type("json").SendString()
		}

		if  != nil && . > 399 {
			return .Status(201).Type("json").SendString()
		}

		if  != nil {
			return .Status(.).Type("json").SendString()
		}

		return .Type("json").SendString()
	}

	return .SendString()
}

func ( *fiber.Ctx) error {
	 := []string{
		"title",
		"message",
	}

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

	 := helpers.GetFormData()

	 := ""
	if .Locals("user_id") != nil {
		 = .Locals("user_id").(string)
	}

	logger.Sugar().WithOptions(
		zap.WithCaller(false),
	).Infow(
		"send log handler",
		"lmn_level", "high_level",
		"log_id", .Locals("log_id").(string),
		"user_id", ,
		"route", "/",
		"ip_address", .IP(),
		"request_details", ,
	)

	return .Type("json").SendString(`{
		"status":  200,
		"message": "log added successfully"
	}`)
}