<?php

session_start(); //Iniciamos la session
if(!isset($_SESSION['user'])) {
  header("location: error404.php");
}
else{
  
  include('Net/SSH2.php');
  
  define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);
  
  $ssh = new Net_SSH2('sun01'); //cambiar esto luego por "Sun01"
  if (!$ssh->login($_SESSION['user'], $_SESSION['pass'])) {
    exit('Login Failed');
  }
  
  include('Net/SFTP.php');
  
  $sftp = new Net_SFTP('sun01'); //cambiar esto luego por "Sun01"
  if (!$sftp->login($_SESSION['user'], $_SESSION['pass'])) {
  	exit('Login Failed');
  }
}


$numcores = $_POST["numcores"];
$numservers = $_POST["numservers"];
$lista_multiple = $_POST["listmultiple"];

  switch( $_POST['boton'] ) {

  case "Descargar":
			$permisos = $sftp->stat('/home/'.($_SESSION['user']).'/scripts/');
			$sftp->chmod(0777, '/home/'.($_SESSION['user']).'/scripts/');
			if (count($lista_multiple) > 0){
				 for($i=0;$i<count($lista_multiple);$i++){
				  if(($i+1)==count($lista_multiple)){
				   $ListaArchivos = $ListaArchivos."/home/".($_SESSION['user'])."/scripts/".$lista_multiple[$i];
				 }
				  else{
				$ListaArchivos = $ListaArchivos."/home/".($_SESSION['user'])."/scripts/".$lista_multiple[$i].",";
				  }
				}
				require_once('pclzip.lib.php');
				$archivo_zip = new PclZip('ceconea.zip');
				if ($archivo_zip->create($ListaArchivos) == 0) {
				  die('Error : '.$archivo_zip->errorInfo(true));
				}
				header("Content-disposition: attachment; filename=ceconea.zip");
				header("Content-type: application/octet-stream");
				readfile("ceconea.zip");
				exec("rm ceconea.zip",$salida);
			}
			$sftp->chmod($permisos['permissions'], '/home/'.($_SESSION['user']).'/scripts/');
    break;


	case "Eliminar": //ELIMINARRR
			$permisos = $sftp->stat('/home/'.($_SESSION['user']).'/scripts/');
			$sftp->chmod(0777, '/home/'.($_SESSION['user']).'/scripts/');
			for($i=0;$i<count($lista_multiple);$i++){
			  unlink("/home/".($_SESSION['user'])."/scripts/".$lista_multiple[$i]);
			}
			$sftp->chmod($permisos['permissions'], '/home/'.($_SESSION['user']).'/scripts/');
			header("location: colas_upload.php");
    break;


    case "Ejecutar":
			$permisos = $sftp->stat('/home/'.($_SESSION['user']).'/scripts/');
			$sftp->chmod(0777, '/home/'.($_SESSION['user']).'/scripts/');
			if((count($lista_multiple))==1){
			  $filename=$lista_multiple[0];
			  $longstring = strlen($filename);
			  $extension = substr($filename,($longstring-3),$longstring);
			  

			  if((".sh" == $extension) || ("exe" == $extension) || ("bin" == $extension) || (".SH" == $extension) || ("EXE" == $extension) || ("BIN" == $extension)){
				if ($numcores!="" && $numservers!=""){
							$ssh->exec('echo "
							#PBS -N '.$filename.'
							#PBS -l nodes='.$numservers.':ppn='.$numcores.'
							#PBS -d /home/'.($_SESSION['user']).'/scripts/

							source /usr/local/intel/composer_xe_2011_sp1.11.339/bin/ifortvars.sh intel64
							source /usr/local/intel/composer_xe_2011_sp1.10.319/bin/iccvars.sh intel64
							source /usr/local/intel/mpi/bin64/mpivars.sh
							export NETCDF=/usr/local/netcdf-intel/
							export WRFIO_NCD_LARGE_FILE_SUPPORT=1

							mpirun ./'.$filename.'" > scripts/script_ejecutar'
								);

								$ssh->exec('qsub ~/scripts/script_ejecutar');
								$ssh->exec('rm ~/scripts/script_ejecutar');
								echo "<SCRIPT LANGUAGE=\"javascript\">
								alert('Ejecutable enviado correctamente a las colas de ejecucion.');
								document.location=('colas_upload.php');
								</SCRIPT>";
				}
				else{
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('No ha indicado el nro de cores o de servidores a utilizar.');
					document.location=('colas_upload.php');
					</SCRIPT>";
				}
			  }
			  else{
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('No ha seleccionado una aplicacion que pueda ser ejecutada.');
					document.location=('colas_upload.php');
					</SCRIPT>";
			  }
			}
			else{
				if((count($lista_multiple))==0){
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('No ha seleccionado una aplicacion para ser ejecutada.');
					document.location=('colas_upload.php');
					</SCRIPT>";
				}
				else{
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('Solo puede subir una aplicacion a la vez.');
					document.location=('colas_upload.php');
					</SCRIPT>";
				}
			  }
			$sftp->chmod($permisos['permissions'], '/home/'.($_SESSION['user']).'/scripts/');
    break;


	case "Encolar":
			$permisos = $sftp->stat('/home/'.($_SESSION['user']).'/scripts/');
			$sftp->chmod(0777, '/home/'.($_SESSION['user']).'/scripts/');
			if((count($lista_multiple))==1){
			  $filename=$lista_multiple[0];
			  $longstring = strlen($filename);
			  $extension = substr($filename,($longstring-3),$longstring);
			  

			  if((".sh" == $extension)  || (".SH" == $extension)){
				$ssh->exec('qsub ~/scripts/'.$filename);
				$ssh->exec('rm ~/scripts/'.$filename);
				echo "<SCRIPT LANGUAGE=\"javascript\">
				alert('Script enviado correctamente a las colas de ejecucion.');
				document.location=('colas_upload.php');
				</SCRIPT>";
			  }
			  else{
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('No ha seleccionado un script que pueda ser encolado.');
					document.location=('colas_upload.php');
					</SCRIPT>";
			  }
			}
			else{
				if((count($lista_multiple))==0){
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('No ha seleccionado una aplicacion para ser ejecutada.');
					document.location=('colas_upload.php');
					</SCRIPT>";
				}
				else{
					echo "<SCRIPT LANGUAGE=\"javascript\">
					alert('Solo puede subir una aplicacion a la vez.');
					document.location=('colas_upload.php');
					</SCRIPT>";
				}
			  }
			$sftp->chmod($permisos['permissions'], '/home/'.($_SESSION['user']).'/scripts/');
    break;
  }
?>