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 467 es : ""
468 468 } ],
469 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 471 en : "",
472 472 es : ""
473 473 } ],
... ...
classesphp/classe_mapa.php
... ... @@ -2031,6 +2031,8 @@ class Mapa
2031 2031 {
2032 2032 if (file_exists($arq))
2033 2033 {
  2034 + $arq = str_replace(".shp","",$arq);
  2035 + $arq = str_replace(".","",$arq).".shp";
2034 2036 $s = ms_newShapefileObj($arq,-1);
2035 2037 /*
2036 2038 if($this->v == 6)
... ...
classesphp/mapa_controle.php
... ... @@ -589,14 +589,40 @@ switch (strtoupper($funcao))
589 589 include_once("classe_mapa.php");
590 590 copiaSeguranca($map_file);
591 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 627 break;
602 628 /*
... ...
ferramentas/navegarquivos/exec.php
... ... @@ -6,6 +6,8 @@ $funcoesEdicao = array(
6 6 );
7 7 if(in_array(strtoupper($funcao),$funcoesEdicao)){
8 8 if(verificaOperacaoSessao("admin/html/editormapfile") == false){
  9 + retornaJSON("Vc nao pode realizar essa operacao.");exit;
  10 +
9 11 //se nao estiver logado permite acesso a pasta i3geo/aplicmap/dados
10 12 //localiza a pasta aplicmap/dados
11 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 38 */
37 39 case "LISTADRIVES":
38 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 50 break;
41 51 /*
42 52 Valor: LISTAARQUIVOS*
... ... @@ -44,7 +54,36 @@ Valor: LISTAARQUIVOS*
44 54 Lista os arquivos de um diretório.
45 55 */
46 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 87 break;
49 88 }
50 89 cpjson($retorno);
... ...