mysql_result($result, 0, 'nm_usuario_login_serv_updates'),
											 		mysql_result($result, 0, 'te_senha_login_serv_updates'),
											 		mysql_result($result, 0, 'nu_porta_serv_updates'),
													false
											       );
				}
			  
			$intStatusFTP_GERENTE = CheckFtpLogin(mysql_result($result, 0, 'te_serv_updates'),
    							  		  		  mysql_result($result, 0, 'nm_usuario_login_serv_updates_gerente'),
							  			  		  mysql_result($result, 0, 'te_senha_login_serv_updates_gerente'),
							  			  		  mysql_result($result, 0, 'nu_porta_serv_updates'));
			if ($intStatusFTP_GERENTE == 1)
				{
		  		$v_conexao_ftp_GERENTE = conecta_ftp(mysql_result($result, 0, 'te_serv_updates'),
				                      			     mysql_result($result, 0, 'nm_usuario_login_serv_updates_gerente'),
											 		 mysql_result($result, 0, 'te_senha_login_serv_updates_gerente'),
											 		 mysql_result($result, 0, 'nu_porta_serv_updates'),
													 false
											        );
				}
			// Como são 4 campos críticos para a conexão FTP, separo 2 conjuntos de variáveis para classificação de erro
			$v_classe_campo_user_pass_AGENTE  = "normal";									
			$v_classe_campo_user_pass_GERENTE = "normal";							
			$v_classe_campo_path  			  = "normal";										
					
			if ($v_conexao_ftp_AGENTE && (@ftp_chdir($v_conexao_ftp_AGENTE,mysql_result($result, 0, 'te_path_serv_updates').'/')) &&
			    $v_conexao_ftp_GERENTE && (@ftp_chdir($v_conexao_ftp_GERENTE,mysql_result($result, 0, 'te_path_serv_updates').'/')))			
				{
				echo '<img src="../../imgs/comp.gif" height="55" width="55">';
				?>
              	</font>
				<br>
Esempio n. 2
0
function update_subredes($p_id_ip_rede, $p_origem, $p_objetos, $p_id_local, $p_array_agentes_hashs)
{
    conecta_bd_cacic();
    $MainFolder = GetMainFolder();
    //GravaTESTES('MainFolder: ' . $MainFolder);
    // Função para replicação do conteúdo do REPOSITÓRIO nos servidores de UPDATES das redes cadastradas.
    if ($handle = opendir($MainFolder . '/repositorio')) {
        $v_nomes_arquivos_REP = array();
        $v_versoes_arquivos_REP = array();
        if (file_exists($MainFolder . '/repositorio/versoes_agentes.ini')) {
            $v_array_versoes_agentes = parse_ini_file($MainFolder . '/repositorio/versoes_agentes.ini');
        }
        // Para tratamento dos agentes GNU/Linux  -  Anderson Peterle - Maio/2008 (Dataprev/ES)
        if ($handle = opendir($MainFolder . '/repositorio/agentes_linux')) {
            while (false !== ($v_arquivo = readdir($handle))) {
                if (strpos($p_objetos, $v_arquivo) > 0 || $p_objetos == '*' and substr($v_arquivo, 0, 1) != ".") {
                    // Armazeno o nome do arquivo
                    array_push($v_nomes_arquivos_REP, $v_arquivo);
                    $caminho_arquivo = $MainFolder . '/repositorio/agentes_linux/' . $v_arquivo;
                    if (isset($v_array_versoes_agentes) && ($versao_agente = $v_array_versoes_agentes['pycacic'])) {
                        array_push($v_versoes_arquivos_REP, $v_arquivo . '#' . str_replace('.', '', $versao_agente));
                    } else {
                        array_push($v_versoes_arquivos_REP, $v_arquivo . '#' . strftime("%Y%m%d%H%M", filemtime($caminho_arquivo)));
                    }
                }
            }
        }
        // Para tratamento dos agentes MS-Windows - Anderson Peterle - Maio/2008 (Dataprev/ES)
        $handle = opendir($MainFolder . '/repositorio');
        while (false !== ($v_arquivo = readdir($handle))) {
            if (strpos($p_objetos, $v_arquivo) > 0 || $p_objetos == '*' and substr($v_arquivo, 0, 1) != ".") {
                // Armazeno o nome do arquivo
                array_push($v_nomes_arquivos_REP, $v_arquivo);
                $caminho_arquivo = $MainFolder . '/repositorio/' . $v_arquivo;
                if (isset($v_array_versoes_agentes) && ($versao_agente = $v_array_versoes_agentes[$v_arquivo])) {
                    // A string 0103 será concatenada em virtude da inserção da informação de versão nos agentes
                    // até então era usada a data do arquivo como versão, a string 0103 fará com que o Gerente de Coletas
                    // entenda que as versões atuais são maiores, ou seja, a versão 20100103 é maior que 20051201
                    array_push($v_versoes_arquivos_REP, $v_arquivo . '#' . str_replace('.', '', $versao_agente) . '0103');
                } else {
                    array_push($v_versoes_arquivos_REP, $v_arquivo . '#' . strftime("%Y%m%d%H%M", filemtime($caminho_arquivo)));
                }
            }
        }
        $query_SEL_REDES = '	SELECT 	*
							FROM	redes_versoes_modulos
							WHERE 	id_ip_rede = "' . $p_id_ip_rede . '" AND
									id_local = ' . $p_id_local . ' ORDER BY nm_modulo';
        $v_nomes_arquivos_FTP = array();
        $v_versoes_arquivos_FTP = array();
        $Result_SEL_REDES = mysql_query($query_SEL_REDES);
        $v_achei = 0;
        while ($row = mysql_fetch_array($Result_SEL_REDES)) {
            array_push($v_nomes_arquivos_FTP, trim($row['nm_modulo']));
            array_push($v_versoes_arquivos_FTP, trim($row['nm_modulo']) . '#' . trim($row['te_versao_modulo']));
            for ($cnt_arquivos_REP = 0; $cnt_arquivos_REP < count($v_nomes_arquivos_REP); $cnt_arquivos_REP++) {
                if (trim($v_nomes_arquivos_REP[$cnt_arquivos_REP]) == trim($row['nm_modulo']) && trim($v_versoes_arquivos_REP[$cnt_arquivos_REP]) == trim($row['te_versao_modulo'])) {
                    $v_achei++;
                    $cnt_arquivos_REP = count($v_nomes_arquivos_REP);
                }
            }
        }
        if ($v_achei < count($v_nomes_arquivos_REP)) {
            $query_SEL_REDES = '	SELECT 		re.id_ip_rede,
											re.nm_rede,
											re.te_serv_updates,
											re.nu_porta_serv_updates, 
											re.te_path_serv_updates, 
											re.nm_usuario_login_serv_updates_gerente,								
											re.te_senha_login_serv_updates_gerente,
											re.id_local								
								FROM		redes re 
								WHERE 		re.id_ip_rede = "' . $p_id_ip_rede . '" AND
											re.id_local = ' . $p_id_local;
            $Result_SEL_REDES = mysql_query($query_SEL_REDES);
            $row = mysql_fetch_array($Result_SEL_REDES);
            if (trim($row['te_serv_updates'] . $row['nu_porta_serv_updates'] . $row['te_path_serv_updates'] . $row['nm_usuario_login_serv_updates_gerente'] . $row['te_senha_login_serv_updates_gerente'] . $row['nu_porta_serv_updates']) != '') {
                $v_tripa_objetos_enviados = '';
                $v_conta_objetos_enviados = 0;
                $v_conta_objetos_nao_enviados = 0;
                $v_conta_objetos_atualizados = 0;
                $v_conta_objetos_nao_atualizados = 0;
                $v_conta_objetos_diferentes = 0;
                $v_conta_objetos_inexistentes = 0;
                $v_array_objetos_enviados = array();
                $v_array_objetos_nao_enviados = array();
                $v_array_objetos_atualizados = array();
                $v_array_objetos_nao_atualizados = array();
                $v_efetua_conexao_ftp = -1;
                $v_conexao_ftp = '';
                $v_efetua_conexao_ftp = -1;
                //if (TentaPing("ftp://".$row['nm_usuario_login_serv_updates'].":".
                //                   	   $row['te_senha_login_serv_updates']."@".
                //				       $row['te_serv_updates']).
                //					   $row['te_path_serv_updates']."/cacic.txt")
                if (CheckFtpLogin($row['te_serv_updates'], $row['nm_usuario_login_serv_updates_gerente'], $row['te_senha_login_serv_updates_gerente'], $row['nu_porta_serv_updates'])) {
                    $v_efetua_conexao_ftp = 0;
                    $v_conexao_ftp = conecta_ftp($row['te_serv_updates'], $row['nm_usuario_login_serv_updates_gerente'], $row['te_senha_login_serv_updates_gerente'], $row['nu_porta_serv_updates'], false);
                }
                if ($v_conexao_ftp) {
                    $_SESSION['v_tripa_servidores_updates'] .= $p_origem == 'Pagina' ? '#' . trim($row['id_local']) . trim($row['te_serv_updates']) . '#' : '';
                    sort($v_nomes_arquivos_REP, SORT_STRING);
                    sort($v_versoes_arquivos_REP, SORT_STRING);
                    sort($v_nomes_arquivos_FTP, SORT_STRING);
                    sort($v_versoes_arquivos_FTP, SORT_STRING);
                    $v_efetua_conexao_ftp = 1;
                    for ($cnt_nomes_arquivos_REP = 0; $cnt_nomes_arquivos_REP < count($v_nomes_arquivos_REP); $cnt_nomes_arquivos_REP++) {
                        // Atenção: acertar depois...
                        $v_pasta_agente_linux = stripos2($v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], '.tgz', false) ? 'agentes_linux/' : '';
                        $v_achei = 0;
                        for ($cnt_nomes_arquivos_FTP = 0; $cnt_nomes_arquivos_FTP < count($v_nomes_arquivos_FTP); $cnt_nomes_arquivos_FTP++) {
                            if ($v_nomes_arquivos_FTP[$cnt_nomes_arquivos_FTP] == $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]) {
                                $v_achei = 1;
                                if ($v_versoes_arquivos_FTP[$cnt_nomes_arquivos_FTP] != $v_versoes_arquivos_REP[$cnt_nomes_arquivos_REP]) {
                                    $v_conta_objetos_diferentes++;
                                    @ftp_chdir($v_conexao_ftp, $row['te_path_serv_updates'] . '/' . $v_nomes_arquivos_FTP[$cnt_nomes_arquivos_FTP]);
                                    @ftp_delete($v_conexao_ftp, $row['te_path_serv_updates'] . '/' . $v_nomes_arquivos_FTP[$cnt_nomes_arquivos_FTP]);
                                    if (@ftp_put($v_conexao_ftp, $row['te_path_serv_updates'] . '/' . $v_nomes_arquivos_FTP[$cnt_nomes_arquivos_FTP], $MainFolder . '/repositorio/' . $v_pasta_agente_linux . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], FTP_BINARY)) {
                                        array_push($v_array_objetos_atualizados, $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                                        $arr_versao_arquivo = explode('#', $v_versoes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                                        if ($p_origem == 'Pagina') {
                                            atualiza_red_ver_mod_pagina($row['te_serv_updates'], $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], $arr_versao_arquivo[1], $p_array_agentes_hashs[$v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]]);
                                        } else {
                                            atualiza_red_ver_mod($row['id_ip_rede'], $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], $arr_versao_arquivo[1], $p_array_agentes_hashs[$v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]], $row['id_local']);
                                        }
                                        echo '<font size="1px" color="orange">Atualizado...: <font color="black">' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP] . '</font></font><br>';
                                        $v_conta_objetos_atualizados++;
                                        flush();
                                    } else {
                                        array_push($v_array_objetos_nao_atualizados, $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                                        echo '<font color=red size="1px" color="red">Não Atualizado: <font color="black">' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP] . '</font></font><br>';
                                        $v_conta_objetos_nao_atualizados++;
                                        flush();
                                    }
                                }
                                $cnt_nomes_arquivos_FTP = count($v_nomes_arquivos_FTP);
                            }
                        }
                        if ($v_achei == 0) {
                            $arr_versao_arquivo = explode('#', $v_versoes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                            $v_conta_objetos_inexistentes++;
                            $v_conta_objetos_enviados++;
                            $v_tripa_objetos_enviados .= $v_tripa_objetos_enviados ? '#' : '';
                            $v_tripa_objetos_enviados .= $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP] . ',' . $arr_versao_arquivo[1];
                            @ftp_chdir($v_conexao_ftp, $row['te_path_serv_updates'] . '/' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                            @ftp_delete($v_conexao_ftp, $row['te_path_serv_updates'] . '/' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                            if (@ftp_put($v_conexao_ftp, $row['te_path_serv_updates'] . '/' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], $MainFolder . '/repositorio/' . $v_pasta_agente_linux . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], FTP_BINARY)) {
                                array_push($v_array_objetos_enviados, $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                                if ($p_origem == 'Pagina') {
                                    atualiza_red_ver_mod_pagina($row['te_serv_updates'], $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], $arr_versao_arquivo[1], $p_array_agentes_hashs[$v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]]);
                                } else {
                                    atualiza_red_ver_mod($row['id_ip_rede'], $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP], $arr_versao_arquivo[1], $p_array_agentes_hashs[$v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]], $row['id_local']);
                                }
                                //atualiza_red_ver_mod($row['id_ip_rede'],$v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP],$v_versoes_arquivos_REP[$cnt_nomes_arquivos_REP],$row['id_local']);
                                $v_conta_objetos_enviados++;
                                echo '<font size="1px" color="green">Enviado.......: <font color="black">' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP] . '</font></font><br>';
                                flush();
                            } else {
                                array_push($v_array_objetos_nao_enviados, $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP]);
                                $v_conta_objetos_nao_enviados++;
                                echo '<font color=red size="1px" color="red">Não Enviado: <font color="black">' . $v_nomes_arquivos_REP[$cnt_nomes_arquivos_REP] . '</font></font><br>';
                                $v_achei = 0;
                                flush();
                            }
                        }
                    }
                    if (($v_conta_objetos_diferentes > 0 and $v_conta_objetos_diferentes == $v_conta_objetos_atualizados) || ($v_conta_objetos_inexistentes > 0 and $v_conta_objetos_inexistentes == $v_conta_objetos_enviados) || ($v_conta_objetos_diferentes == 0 and $v_conta_objetos_inexistentes == 0)) {
                        Marca_Atualizado($p_id_ip_rede, $p_id_local);
                    }
                    ftp_quit($v_conexao_ftp);
                } else {
                    if (trim($row['te_serv_updates']) == '' || trim($row['nu_porta_serv_updates']) == '' || trim($row['te_path_serv_updates']) == '' || trim($row['nm_usuario_login_serv_updates_gerente']) == '' || trim($row['te_senha_login_serv_updates_gerente']) == '' || trim($row['nu_porta_serv_updates']) == '') {
                        $_SESSION['v_status_conexao'] = 'NC';
                        // Não Configurado
                    } else {
                        $_SESSION['v_status_conexao'] = 'OFF';
                        // Off Line
                    }
                }
                if ($p_origem == 'Pagina') {
                    $_SESSION['v_tripa_objetos_enviados'] = $v_tripa_objetos_enviados;
                    $_SESSION['v_conta_objetos_enviados'] = $v_conta_objetos_enviados;
                    $_SESSION['v_conta_objetos_nao_enviados'] = $v_conta_objetos_nao_enviados;
                    $_SESSION['v_conta_objetos_atualizados'] = $v_conta_objetos_atualizados;
                    $_SESSION['v_conta_objetos_nao_atualizados'] = $v_conta_objetos_nao_atualizados;
                    $_SESSION['v_efetua_conexao_ftp'] = $v_efetua_conexao_ftp;
                    $_SESSION['v_conexao_ftp'] = $v_conexao_ftp;
                }
            }
        } else {
            $_SESSION['v_efetua_conexao_ftp'] = 1;
        }
    }
}
	$v_conta_objetos_nao_enviados 		= 0;			
	$v_conta_objetos_atualizados 		= 0;
	$v_conta_objetos_nao_atualizados 	= 0;			
	$v_array_objetos_enviados 			= array();			
	$v_array_objetos_nao_enviados 		= array();						
	$v_array_objetos_atualizados 		= array();
	$v_array_objetos_nao_atualizados	= array();
	$v_efetua_conexao_ftp 				= 0;						
		if (trim($row['nu_porta_repositorio'] .
				 $row['nm_usuario_login_repositorio'] .
				 $row['te_senha_login_repositorio']) != '')
			{	
				
			$v_conexao_ftp = conecta_ftp($row['id_ip_gerente'],
										 $row['nm_usuario_login_repositorio'],
										 $row['te_senha_login_repositorio'],
										 $row['nu_porta_repositorio']
										);
	
			if ($v_conexao_ftp)
				{
				$v_efetua_conexao_ftp = 1;
					
				// obtem a lista de arquivos para v_te_path_serv_updates
				$v_arquivos_FTP = ftp_rawlist($v_conexao_ftp, '.');
				$v_nomes_arquivos_FTP = array();
				$v_versoes_arquivos_FTP = array();				
				for ($cnt_arquivos_FTP = 0; $cnt_arquivos_FTP < count($v_arquivos_FTP); $cnt_arquivos_FTP++)
					{	
					while (strpos($v_arquivos_FTP[$cnt_arquivos_FTP],'  ') > 0) 
						{