diff --git a/admin/admin.db b/admin/admin.db index fa9e6e7..9738605 100755 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/mapas.php b/admin/php/mapas.php index 4805835..378c0d3 100755 --- a/admin/php/mapas.php +++ b/admin/php/mapas.php @@ -189,6 +189,8 @@ function salvaMapfile(){ //a string que vai no metadata segue o padrao JSON //o parser para reconstruir os valores e feito em javascript, no cliente // + $_GET["arqmapfile"] = str_replace(".map","",$_GET["arqmapfile"]); + $_GET["arqmapfile"] = str_replace(".","",$_GET["arqmapfile"]).".map"; $customizacoesinit = array(); if(isset($_GET["preferenciasbase64"]) || isset($_GET["geometriasbase64"]) || isset($_GET["graficosbase64"]) || isset($_GET["tabelasbase64"])){ $customizacoesinit[] = '"preferenciasbase64":"'.$_GET["preferenciasbase64"].'"'; @@ -209,13 +211,15 @@ function salvaMapfile(){ $handle = fopen ($_GET["arqmapfile"], 'r'); $conteudo = fread ($handle, filesize ($_GET["arqmapfile"])); fclose ($handle); - $conteudo = base64_encode($conteudo); - if($conteudo == false){ - return array("id"=>"","status"=>"erro"); - } + //$conteudo = base64_encode($conteudo); + $conteudo = str_replace("'","_!_",$conteudo); + $conteudo = str_replace('"',"_!!_",$conteudo); + $conteudo = str_replace(array(""),"",$conteudo); + require_once("conexao.php"); if($convUTF){ - $_GET["nome_mapa"] = utf8_encode($_GET["nome_mapa"]); + $_GET["nome_mapa"] = utf8_encode($_GET["nome_mapa"]); + $conteudo = utf8_encode($conteudo); } $retorna = ""; if(empty($id_mapa)){ @@ -237,6 +241,9 @@ function salvaMapfile(){ else{ $id = $id_mapa; } + if (filter_var($id, FILTER_VALIDATE_INT) === false){ + return array("id"=>"","status"=>"Error!: "); + } $dataCol = array( "mapfile" => $conteudo, "publicado_mapa" => "sim", @@ -249,7 +256,7 @@ function salvaMapfile(){ return array("id"=>$id,"status"=>"ok"); } catch (PDOException $e){ - return array("id"=>"","status"=>"Error!: " . " "); + return array("id"=>"","status"=>"Error!: "); } } /* diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 7258ed5..8c19e7d 100755 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -2910,31 +2910,50 @@ function cloneInlineSymbol($layern,$nmapa,$mapa){ //recupera um mapfile armazenado no banco de dados de administracao //ver admin/php/mapas.php salvaMapfile function restauraMapaAdmin($id_mapa,$dir_tmp){ - return; + if (filter_var($id_mapa, FILTER_VALIDATE_INT) === false){ + exit; + } include(dirname(__FILE__)."/../admin/php/conexao.php"); if(!empty($esquemaadmin)){ $esquemaadmin = str_replace(".","",$esquemaadmin)."."; } $q = $dbh->query("select * from ".$esquemaadmin."i3geoadmin_mapas where id_mapa=$id_mapa ",PDO::FETCH_ASSOC); $mapasalvo = $q->fetchAll(); + $dbh = null; + $dbhw = null; $mapasalvo = $mapasalvo[0]; $base = ""; if(strtoupper($mapasalvo["publicado"]) != "NAO"){ - $base = $dir_tmp."/".nomeRandomico().".map"; + $base = $dir_tmp."/".nomeRandomico()."_restaurado.map"; $baseh = fopen($base,'w'); - $registro = $mapasalvo["mapfile"]; + $mapfile = $mapasalvo["mapfile"]; + //$registro = $mapasalvo["mapfile"]; //verifica se existem parametros junto com o registro - $registro = explode(",",$registro); - $mapfile = $registro[0]; + //$registro = explode(",",$registro); + //$mapfile = $registro[0]; //adapta para versoes novas do mapserver - $mapfile = base64_decode($mapfile); - $mapfile = str_replace("TYPE ANNOTATION","TYPE POINT",$mapfile); + //verifica se esta em base 64 (versoes antigas) + if (!preg_match('/MAP/',$mapfile)) { + $mapfile = base64_decode($mapfile); + } + else { + //substitui strings especiais + $mapfile = str_replace("_!!_",'"',$mapfile); + $mapfile = str_replace("_!_","'",$mapfile); + } + $mapfile = str_ireplace("TYPE ANNOTATION","TYPE POINT",$mapfile); + $mapfile = str_replace(array(""),"",$mapfile); $s = fwrite($baseh,$mapfile); fclose($baseh); } - $dbh = null; - $dbhw = null; - return $base; + + if (@ms_newMapObj($base)){ + return $base; + } + else{ + unlink($base); + } + return false; } // //converte uma string de conexao do mapserver em um array com os componentes da conexao diff --git a/ferramentas/carregamapa/upload.php b/ferramentas/carregamapa/upload.php index e38f117..16eddd6 100755 --- a/ferramentas/carregamapa/upload.php +++ b/ferramentas/carregamapa/upload.php @@ -95,6 +95,7 @@ if (isset($_FILES['i3GEOcarregamapafilemap']['name']) && strlen(basename($_FILES $layertemp->set("status",MS_DELETE); } } + $map->setmetadata("CUSTOMIZACOESINIT",""); $map->save($map_file); restauraCon($map_file,$postgis_mapa); unlink($dirmap."/".$Arquivo); diff --git a/ferramentas/salvamapa/geraminiatura.php b/ferramentas/salvamapa/geraminiatura.php index 8d17547..e7746a1 100755 --- a/ferramentas/salvamapa/geraminiatura.php +++ b/ferramentas/salvamapa/geraminiatura.php @@ -15,8 +15,11 @@ if (filter_var($_GET["restauramapa"], FILTER_VALIDATE_INT) === false){ } $base = restauraMapaAdmin($_GET["restauramapa"],$dir_tmp); - + $nomeImagem = dirname($base)."/".str_replace(".map","","restauramapa".$_GET["restauramapa"])."_miniatura.png"; +//por seguranca +$nomeImagem = str_replace(".png","",$nomeImagem); +$nomeImagem = str_replace(".","",$nomeImagem).".png"; if(!file_exists($nomeImagem)){ $mapa = ms_newMapObj($base); @@ -45,8 +48,7 @@ if(!file_exists($nomeImagem)){ $sca = $mapa->scalebar; $sca->set("status",MS_OFF); $objImagemM = @$mapa->draw(); - $objImagemM->saveImage($nomeImagem); - + $objImagemM->saveImage($nomeImagem); } ob_clean(); header('Content-Length: '.filesize($nomeImagem)); diff --git a/mapas/index.js b/mapas/index.js index 927ec22..ad2cb14 100755 --- a/mapas/index.js +++ b/mapas/index.js @@ -45,7 +45,7 @@ function mostraBotoesBT(){ } }); }; - //cpJSON vem de class_php.js + //cpJSON vem de classe_php.js cpJSON.call("../classesphp/mapa_controle.php?map_file=&funcao=pegaMapas&g_sid=", "foo", r); } function verificaMapa(mapa){ -- libgit2 0.21.2