<?php

ini_set('display_errors', true); error_reporting(E_ALL);

$ipsPermitidas = [
	'170.253.37.234', '85.214.147.189'
];

if (!in_array($_SERVER['REMOTE_ADDR'], $ipsPermitidas)) {
	echo "No permitido";
	exit;
}

//$_REQUEST['funcion'] = 'setStrategyFile';
//$_REQUEST['strategyFile'] = 'Prueba.py';
//$_REQUEST['contenido'] = 'ASDFADSFi';

if (!isset($_REQUEST['funcion'])) {
	echo "No encontrado";
	exit;
}

$funcion = $_REQUEST['funcion'];
unset($_REQUEST['funcion']);
echo $funcion($_REQUEST);

function startService($arguments) {
	$comando = 'sudo systemctl start '.$arguments['service'];
	$resultado = shell_exec($comando);
	return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $resultado]);
}

function stopService($arguments) {
        $comando = 'sudo systemctl stop '.$arguments['service'];
        $resultado = shell_exec($comando);
        return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $resultado]);
}

function statusService($arguments) {
        $comando = 'sudo systemctl status '.$arguments['service'];
        $resultado = shell_exec($comando);
        return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => strpos($resultado, 'active (running)') !== false]);
}

function setServiceFile($arguments) {
        $rutaAux = '/var/www/html/api_moseratum/'.$arguments['serviceFile'];
        $rutaAux = 'tmp/'.$arguments['serviceFile'];
        $resultado = file_put_contents($rutaAux, $arguments['contenido']);
        if ($resultado === false) {
                $lastError = error_get_last();
                echo 'Error al escribir el archivo: '.$lastError['message']."<br>";
        }
        $ruta = '/etc/systemd/system/'.$arguments['serviceFile'];
        $comando = 'sudo echo "'.$arguments['contenido'].'" > '.$ruta.' 2>&1';
        $comando = 'sudo sh -c "printf '."'".$arguments['contenido']."' > ".$ruta.'"';
        $comando = 'sudo cp '.$rutaAux.' '.$ruta;
        //echo "Comando: ".$comando."<br>";
        $contenido = shell_exec($comando);
        //echo "Contenido: ";
	//var_dump($contenido);

	$comando = 'sudo systemctl daemon-reload';
	$contenido = shell_exec($comando);
	$service = strtr($arguments['serviceFile'], ['.service' => '']);
	$comando = 'sudo systemctl enable '.$service;
	$contenido = shell_exec($comando);

	return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $comando]);
}

function setConfigFile($arguments) {
        $rutaAux = '/var/www/html/api_moseratum/'.$arguments['configFile'];
        $rutaAux = 'tmp/'.$arguments['configFile'];
        $resultado = file_put_contents($rutaAux, $arguments['contenido']);
        if ($resultado === false) {
                $lastError = error_get_last();
                echo 'Error al escribir el archivo: '.$lastError['message']."<br>";
        }
        $ruta = '/root/freqtrade/'.$arguments['configFile'];
        $comando = 'sudo echo "'.$arguments['contenido'].'" > '.$ruta.' 2>&1';
        $comando = 'sudo sh -c "printf '."'".$arguments['contenido']."' > ".$ruta.'"';
        $comando = 'sudo cp '.$rutaAux.' '.$ruta;
        //echo "Comando: ".$comando."<br>";
        $contenido = shell_exec($comando);
        //echo "Contenido: ";
        //var_dump($contenido);
        return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $comando]);
}

function getConfigFile($arguments) {
	$ruta = '/root/freqtrade/'.$arguments['configFile'];
	$comando = 'sudo cat '.$ruta;
	$contenido = shell_exec($comando);
	if (!file_exists($ruta)) {
		#return json_encode(['errorCode' => 400, 'errorMessage' => 'No se ha encontrado el archivo', 'return' => false]);
	}
	#$contenido = file_get_contents($ruta);
	if ($contenido === false) {
		$lastError = error_get_last();
		return json_encode(['errorCode' => 400, 'errorMessage' => $lastError['message'], 'return' => false]);
	}
	return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $contenido]);
}

function setStrategyFile($arguments) {
	$rutaAux = '/var/www/html/api_moseratum/'.$arguments['strategyFile'];
	$rutaAux = 'tmp/'.$arguments['strategyFile'];
	$resultado = file_put_contents($rutaAux, $arguments['contenido']);
	if ($resultado === false) {
		$lastError = error_get_last();
		echo 'Error al escribir el archivo: '.$lastError['message']."<br>";
	}
	$ruta = '/root/freqtrade/user_data/strategies/'.$arguments['strategyFile'];
	$comando = 'sudo echo "'.$arguments['contenido'].'" > '.$ruta.' 2>&1';
	$comando = 'sudo sh -c "printf '."'".$arguments['contenido']."' > ".$ruta.'"';
	$comando = 'sudo cp '.$rutaAux.' '.$ruta;
	//echo "Comando: ".$comando."<br>";
	$contenido = shell_exec($comando);
	//echo "Contenido: ";
	//var_dump($contenido);
	return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $comando]);
}

function getStrategyFile($arguments) {
	$ruta = '/root/freqtrade/user_data/strategies/'.$arguments['strategyFile'];
	$comando = 'sudo cat '.$ruta;
	$contenido = shell_exec($comando);
	return json_encode(['errorCode' => 200, 'errorMessage' => 'Correcto', 'return' => $contenido]);
}

?>
