Commit 638a2edb74ba8c8ff311f51d7ccc4c959c11504f

Authored by Edmar Moretti
1 parent acd3b5c8
Exists in master

Inclusão de validação do nome de arquivos e pastas no navegador de diretórios

admin/dicionario/editormapfile.js
@@ -467,7 +467,7 @@ i3GEOadmin.editormapfile.dicionario = { @@ -467,7 +467,7 @@ i3GEOadmin.editormapfile.dicionario = {
467 es : "" 467 es : ""
468 } ], 468 } ],
469 'dataTitulo' : [ { 469 'dataTitulo' : [ {
470 - pt : "Data - SQL ou caminho do arquivo com os dados", 470 + pt : "Data - SQL ou caminho do arquivo com os dados. No caso de shapefile, verifique se o caminho está correto ao usar o navegador de arquivos",
471 en : "", 471 en : "",
472 es : "" 472 es : ""
473 } ], 473 } ],
classesphp/classe_mapa.php
@@ -2031,6 +2031,8 @@ class Mapa @@ -2031,6 +2031,8 @@ class Mapa
2031 { 2031 {
2032 if (file_exists($arq)) 2032 if (file_exists($arq))
2033 { 2033 {
  2034 + $arq = str_replace(".shp","",$arq);
  2035 + $arq = str_replace(".","",$arq).".shp";
2034 $s = ms_newShapefileObj($arq,-1); 2036 $s = ms_newShapefileObj($arq,-1);
2035 /* 2037 /*
2036 if($this->v == 6) 2038 if($this->v == 6)
classesphp/mapa_controle.php
@@ -589,14 +589,40 @@ switch (strtoupper($funcao)) @@ -589,14 +589,40 @@ switch (strtoupper($funcao))
589 include_once("classe_mapa.php"); 589 include_once("classe_mapa.php");
590 copiaSeguranca($map_file); 590 copiaSeguranca($map_file);
591 $m = new Mapa($map_file); 591 $m = new Mapa($map_file);
592 - $retorno = $m->adicionaTemaSHP($_pg["arq"]);  
593 - if ($retorno != "erro")  
594 - {  
595 - $m->salva();$_SESSION["contadorsalva"]++;redesenhaMapa(); 592 + //valida o caminho do arquivo shapefile
  593 + $nome = explode("/",$_pg["arq"]);
  594 + $nome = $nome[0];
  595 + if(empty($nome)){
  596 + $retorno = "erro";
596 } 597 }
597 - else  
598 - {  
599 - $retorno = "erro.Nenhum dado espacializado foi encontrado."; 598 + else{
  599 + //remove o nome do caminho
  600 + $novo = explode("/",$_pg["arq"]);
  601 + $novo[0] = "";
  602 + $_pg["arq"] = implode("/",$novo);
  603 + //
  604 + include(dirname(__FILE__)."/../ms_configura.php");
  605 + $d = $navegadoresLocais[0]["drives"];
  606 + $p = "";
  607 + foreach($d as $n){
  608 + if($n["nome"] == $nome){
  609 + $p = $n["caminho"];
  610 + }
  611 + }
  612 + if($p != "" && file_exists($p)){
  613 +
  614 + $retorno = $m->adicionaTemaSHP($p."/".$_pg["arq"]);
  615 + if ($retorno != "erro") {
  616 + $m->salva();$_SESSION["contadorsalva"]++;redesenhaMapa();
  617 + }
  618 + else{
  619 + $retorno = "erro.Nenhum dado espacializado foi encontrado.";
  620 + }
  621 +
  622 + }
  623 + else{
  624 + $retorno = "erro";
  625 + }
600 } 626 }
601 break; 627 break;
602 /* 628 /*
ferramentas/navegarquivos/exec.php
@@ -6,6 +6,8 @@ $funcoesEdicao = array( @@ -6,6 +6,8 @@ $funcoesEdicao = array(
6 ); 6 );
7 if(in_array(strtoupper($funcao),$funcoesEdicao)){ 7 if(in_array(strtoupper($funcao),$funcoesEdicao)){
8 if(verificaOperacaoSessao("admin/html/editormapfile") == false){ 8 if(verificaOperacaoSessao("admin/html/editormapfile") == false){
  9 + retornaJSON("Vc nao pode realizar essa operacao.");exit;
  10 +
9 //se nao estiver logado permite acesso a pasta i3geo/aplicmap/dados 11 //se nao estiver logado permite acesso a pasta i3geo/aplicmap/dados
10 //localiza a pasta aplicmap/dados 12 //localiza a pasta aplicmap/dados
11 $d = dirname(__FILE__); //precisa descer ainda 13 $d = dirname(__FILE__); //precisa descer ainda
@@ -36,7 +38,15 @@ A lista de drives é definida no ms_configura e permite que o usuár @@ -36,7 +38,15 @@ A lista de drives é definida no ms_configura e permite que o usuár
36 */ 38 */
37 case "LISTADRIVES": 39 case "LISTADRIVES":
38 include(dirname(__FILE__)."/../ms_configura.php"); 40 include(dirname(__FILE__)."/../ms_configura.php");
39 - $retorno = $navegadoresLocais[0]; 41 + //pega apenas os nomes para nao expor o caminho completo
  42 + $d = $navegadoresLocais[0]["drives"];
  43 + $resultado = array();
  44 + //a primeira string sera o nome definido em drives
  45 + foreach($d as $n){
  46 + $n["caminho"] = $n["nome"];
  47 + $resultado[] = $n;
  48 + }
  49 + $retorno = array("drives"=>$resultado);
40 break; 50 break;
41 /* 51 /*
42 Valor: LISTAARQUIVOS* 52 Valor: LISTAARQUIVOS*
@@ -44,7 +54,36 @@ Valor: LISTAARQUIVOS* @@ -44,7 +54,36 @@ Valor: LISTAARQUIVOS*
44 Lista os arquivos de um diretório. 54 Lista os arquivos de um diretório.
45 */ 55 */
46 case "LISTAARQUIVOS": 56 case "LISTAARQUIVOS":
47 - $retorno = listaArquivos($diretorio,true); 57 + //pega o caminho
  58 + //nome
  59 + $nome = explode("/",$_GET["diretorio"]);
  60 + $nome = $nome[0];
  61 + if(empty($nome)){
  62 + $retorno = "erro";
  63 + }
  64 + else{
  65 + //remove o nome do caminho
  66 + $novo = explode("/",$_GET["diretorio"]);
  67 + $novo[0] = "";
  68 + $_GET["diretorio"] = implode("/",$novo);
  69 + //
  70 + include(dirname(__FILE__)."/../../ms_configura.php");
  71 + $d = $navegadoresLocais[0]["drives"];
  72 + $p = "";
  73 + foreach($d as $n){
  74 + if($n["nome"] == $nome){
  75 + $p = $n["caminho"];
  76 + }
  77 + }
  78 + if($p != "" && file_exists($p)){
  79 + $path = $p."/".$_GET["diretorio"];
  80 + $path = str_replace(".","",$path);
  81 + $retorno = listaArquivos($path,true);
  82 + }
  83 + else{
  84 + $retorno = "erro";
  85 + }
  86 + }
48 break; 87 break;
49 } 88 }
50 cpjson($retorno); 89 cpjson($retorno);