<?php
// ce programme envoie cycliquement les fichiers de tm_gery vers votre ftp

require 'includes/tm_gery_config.php';		// charge tm_gery_config (necessaire pour la configuration)

$max_exec_time = 60;						// maximal execution time for one loop.

$conn_id = 0;								// ne pas toucher

function save_ftp2($remote_file,$file) {
global $use_ftp;
global $ftp_server;
global $ftp_user;
global $ftp_pass;
global $conn_id;

	// Mise en place d'une connexion basique
	if (!$conn_id) {
		$conn_id = @ftp_connect($ftp_server); 
		if ($conn_id) {
			// Définission du délai de connexion à 15 secondes
			if (!@ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 15)) {
				echo "ftp_set_option echec\n";
			}
			// Tentative d'identification
			if (!@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
				echo "Connexion impossible en tant que $ftp_user\n";
				// Fermeture de la connexion
				ftp_close($conn_id);  
				$conn_id = 0; 
			}
			else {
				// Activation du mode passif
				if (!@ftp_pasv($conn_id, true)) {
					echo "ftp_pasv echec\n";
					ftp_close($conn_id);  
					$conn_id = 0; 
				}
			}
		}
		else {
			echo "Couldn't connect to $ftp_server\n\r";
		}
	}

	if ($conn_id) {
		// ecrit un fichier
		if (!@ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
			echo "erreur ecriture fichier $file\n";
			// Fermeture de la connexion
			ftp_close($conn_id);  
			$conn_id = 0; 
		}
		else unlink($file);
	}
}

function save_ftp($remote_file,$file) {
global $use_ftp;
global $ftp_server;
global $ftp_user;
global $ftp_pass;
global $ftp_perm;

	if ($ftp_perm) {
		save_ftp2($remote_file,$file);
		return;
	}

	// Mise en place d'une connexion basique
	$conn_id = @ftp_connect($ftp_server); 
	if ($conn_id) {
		// Définission du délai de connexion à 15 secondes
		if (!@ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 15)) {
		    echo "ftp_set_option echec\n";
		}
		// Tentative d'identification
		if (!@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
		    echo "Connexion impossible en tant que $ftp_user\n";
		}
		else {
			// Activation du mode passif
			if (!@ftp_pasv($conn_id, true)) {
				echo "ftp_pasv echec\n";
			}
			// ecrit un fichier
			if (!@ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
				echo "erreur ecriture fichier $file\n";
			}
			else unlink($file);
		}
		// Fermeture de la connexion
		ftp_close($conn_id);  
	}
	else echo "Couldn't connect to $ftp_server\n\r";
}

function Error($errstr, $errline){
  if($errline != -1000){
 	 echo("Error: $errstr [$errline]\n\r");
  }
}

$start_time=0;

while(true){

	$end_time = time();
	if (($end_time-$start_time) >= $ftp_t_status) {
		echo "[".date("H:i:s")."]". " envoi status serveur vers ftp\n\r";
		$start_time=$end_time;
		if ($handle = @opendir($repftptmp.$repplayer)) {
		//    echo "Directory handle: $handle\n\r";
		//    echo "Files\n\r>";
			while (false !== ($file = readdir($handle))) {
				if ( is_file($repftptmp.$repplayer.$file)) { 
					save_ftp($ftpplayer.$file, $repftptmp.$repplayer.$file);
				}
			}
			closedir($handle);
		}
		if ($handle = @opendir($repftptmp.$reprecord)) {
		//    echo "Directory handle: $handle\n\r";
		//    echo "Files\n\r>";
			while (false !== ($file = readdir($handle))) {
				if ( is_file($repftptmp.$reprecord.$file)) { 
					save_ftp($ftprecord.$file, $repftptmp.$reprecord.$file);
				}
			}
			
			closedir($handle);
		}
		if ($handle = @opendir($repftptmp)) {
		//    echo "Directory handle: $handle\n\r";
		//    echo "Files\n\r>";
			while (false !== ($file = readdir($handle))) {
				if ( is_file($repftptmp.$file)) { 
					if ($file == $local_status) save_ftp($remote_status, $repftptmp.$file);
					if ($file == $local_maplist) save_ftp($remote_maplist, $repftptmp.$file);
				}
			}
			
			closedir($handle);
		}
	}
	sleep(1);
	set_time_limit ($max_exec_time);
}

?>
