From 62e6020e5458774802c5316353e15fecc7f732e3 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Thu, 29 Nov 2012 17:22:49 +0000 Subject: [PATCH] Inclusão de validação de temas restritos no parsemapfile.php --- admin/admin.db | Bin 158720 -> 0 bytes admin/php/parsemapfile.php | 44 +++++++++++++++++++++++++++++++++----------- classesphp/funcoes_gerais.php | 25 ++++++++++++++++++++++--- classesphp/mapa_controle.php | 5 ++--- temas/povoado.map | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------- 5 files changed, 113 insertions(+), 70 deletions(-) diff --git a/admin/admin.db b/admin/admin.db index 8effed9..316fa54 100644 Binary files a/admin/admin.db and b/admin/admin.db differ diff --git a/admin/php/parsemapfile.php b/admin/php/parsemapfile.php index 668e7a4..e029356 100644 --- a/admin/php/parsemapfile.php +++ b/admin/php/parsemapfile.php @@ -7,6 +7,10 @@ Converte um mapfile em um arquivo XML O padrão XML utilizado é compatível com a estrutura de um projeto do softwrae GVSIG ate a versão 1.1 Esse XML é utilizado pelo plugin do i3Geo para GVSIG, que permite visualizar a árvore de temas do i3Geo dentro do GVSIG. +No caso de layers que fazem acesso a banco de dados, a string de conexao e bloqueada por default + +Para desbloquear e necessario editar a variavel de configuracao existente nesse mesmo arquivo + Licenca: GPL2 @@ -33,14 +37,17 @@ Arquivo: i3geo/admin/php/parsemapfile.php */ -//TODO permitir acesso apenas com login e senha -//TODO verificar restricao de acesso ao tema - -//return; include("../../ms_configura.php"); include_once("../../classesphp/funcoes_gerais.php"); include_once("../../classesphp/carrega_ext.php"); include_once("../../classesphp/pega_variaveis.php"); +// +//essa variavel indica se a senha do banco e bloqueada ou nao caso +//o tema seja do tipo postgis +//por default e feito o bloqueio +// +$bloqueiaStringConexao = true; +// error_reporting(0); if(!isset($forcawms)){$forcawms = "nao";} $objcontype[0] = "MS_INLINE"; @@ -70,6 +77,13 @@ $objlayertypes[8] = "MS_LAYER_CHART"; $codigoLayer = $id; $mapfile = $locaplic."/temas/".$codigoLayer.".map"; +//remove temas restritos pelo sistema de controle de usuarios +$indevidos = validaAcessoTemas($mapfile,false); +if($indevidos == true){ + echo "Encontrados layers restritos"; + exit; +} +// $mapa = ms_newMapObj($mapfile); if(!isset($tipoparse) || $tipoparse=="") {mapfile();exit;} @@ -267,7 +281,7 @@ function legendaSimples($layername) // function mapfile() { - global $codigoLayer,$mapfile,$mapa,$objcontype,$objlayertypes,$forcawms,$postgis_mapa; + global $codigoLayer,$mapfile,$mapa,$objcontype,$objlayertypes,$forcawms,$postgis_mapa,$bloqueiaStringConexao; $layers = $mapa->getalllayernames(); $dados = array(); $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; @@ -355,11 +369,20 @@ function mapfile() else {$con = $postgis_mapa[$con];} } - $xml .= "".preg_replace('/.*user\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; - $xml .= "".preg_replace('/.*password\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; - $xml .= "".preg_replace('/.*dbname\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; - $xml .= "".preg_replace('/.*host\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; - $xml .= "".preg_replace('/.*port\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; + if($bloqueiaStringConexao == true){ + $xml .= "bloqueado (veja i3geo/admin/php/parsemapfile)\n"; + $xml .= "\n"; + $xml .= "\n"; + $xml .= "\n"; + $xml .= "\n"; + } + else{ + $xml .= "".preg_replace('/.*user\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; + $xml .= "".preg_replace('/.*password\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; + $xml .= "".preg_replace('/.*dbname\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; + $xml .= "".preg_replace('/.*host\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; + $xml .= "".preg_replace('/.*port\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."\n"; + } $xml .= "\n"; $d = explode("(",$d); $d = explode(")",$d[1]); @@ -448,5 +471,4 @@ function pegaEstilos($xml,$classe) } return $xml; } - ?> \ No newline at end of file diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index f60bf58..dd16c85 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -2451,18 +2451,33 @@ function retornaShapesSelecionados($objLayer,$map_file,$objMapa){ Function: validaAcessoTemas Remocao dos layers com restricoes de acesso registradas no sistema de controle de usuarios + +Remove os layers indevidos (considerando o usuario logado) de um mapfile com opção de salvar ou nao o arquivo apos a remocao + +Parametros: + +$map_file - nome do arquivo mapfile, podendo ser um dos que existem em i3geo/temas desde que com o nome completo + +$salva - salva o mapfile com os layers removidos ou nao + +Retorno: boolean indicando se o mapfile contem layers indevidos */ -function validaAcessoTemas($map_file){ +function validaAcessoTemas($map_file,$salva = true){ $indevidos = listaLayersIndevidos($map_file); + $existeIndevidos = false; if(count($indevidos) > 0){ + $existeIndevidos = true; $m = ms_newMapObj($map_file); foreach($indevidos as $i){ $l = $m->getlayerbyname($i); $l->set("status",MS_DELETE); } - $m->save($map_file); + //salva o mapfile + if($salva == true){ + $m->save($map_file); + } } - return; + return $existeIndevidos; } /* Function: listaTemasRestritos @@ -2500,6 +2515,10 @@ function listaLayersIndevidos($map_file){ for ($i=0;$i < $c;++$i) { $layer = $m->getlayer($i); $meta = $layer->getmetadata("arquivotemaoriginal"); + //pode ser que o metadata nao esteja definido ainda + if($meta == ""){ + $meta = str_replace(".map","",basename($map_file)); + } if($meta != ""){ $t = $restritos[$meta]; if($t && !in_array($t,$gruposusr)){ diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 83f2745..1c37308 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -47,7 +47,7 @@ Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation; -Este programa é distribuído na expectativa //TODO MANTEMDADOSREGIAO +Este programa é distribuído na expectativa de que seja útil, porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. @@ -112,8 +112,7 @@ include_once("pega_variaveis.php"); $interfaceTemp = $interface; // //inicializa a sessão -//TEMA2SLD é usado por datadownload.htm //TODO MANTEMDADOSREGIAO - +//TEMA2SLD é usado por datadownload.htm // if ($funcao != "criaMapa" && $funcao != "TEMA2SLD"){ session_name("i3GeoPHP"); diff --git a/temas/povoado.map b/temas/povoado.map index 26815ee..490ca11 100644 --- a/temas/povoado.map +++ b/temas/povoado.map @@ -1,53 +1,56 @@ -MAP - - - FONTSET "../symbols/fontes.txt" - SYMBOLSET "../symbols/simbolos.sym" - LAYER - CONNECTION "" - DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\sc22\povoado.shp" - METADATA - "temporizador" "5" - "cache" "" - "ltempoitemimagem" "" - "CLASSE" "SIM" - "ltempoitemdescricao" "" - "palletestep" "" - "ltempoiteminicio" "" - "permitekmz" "sim" - "ltempoitemtip" "" - "description_template" "" - "ltempoitemtitulo" "" - "iconetema" "" - "ltempoitemlink" "" - "palletefile" "" - "permitedownload" "sim" - "ltempoformatodata" "" - "ltempoitemicone" "" - "permitecomentario" "NAO" - "download" "SIM" - "arquivodownload" "" - "arquivokmz" "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\povoado.kmz" - "permitekml" "sim" - "permiteogc" "" - "TEMA" "Povoado" - "editorsql" "" - "ltempoitemfim" "" - "legendaimg" "http://www.rockingsmileys.com/wp-content/uploads/2011/03/Happy_eyebrowes_smileys-150x150.png" - END - NAME "povoado" - STATUS OFF - TYPE POINT - UNITS METERS - CLASS - NAME "" - STYLE - ANGLE 360 - COLOR 0 0 0 - SIZE 5 - SYMBOL "ponto" - WIDTH 1 - END - END - END -END +MAP + FONTSET "../symbols/fontes.txt" + SYMBOLSET "../symbols/simbolos.sym" + LAYER + CONNECTION "" + DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\sc22\povoado.shp" + METADATA + "METAESTAT_ID_MEDIDA_VARIAVEL" "" + "ltempoitemimagem" "" + "cache" "" + "ltempoitemdescricao" "" + "CLASSE" "SIM" + "ltempoiteminicio" "" + "palletestep" "" + "ltempoitemtip" "" + "permitekmz" "sim" + "temporizador" "5" + "iconetema" "" + "ltempoitemtitulo" "" + "description_template" "" + "ltempoitemlink" "" + "METAESTAT_CODIGO_TIPO_REGIAO" "" + "palletefile" "" + "ltempoformatodata" "" + "permitedownload" "sim" + "permitecomentario" "NAO" + "ltempoitemicone" "" + "metaestat" "" + "download" "SIM" + "arquivokmz" "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\povoado.kmz" + "arquivodownload" "" + "permiteogc" "" + "permitekml" "sim" + "TEMA" "Povoado" + "editorsql" "" + "legendaimg" "http://www.rockingsmileys.com/wp-content/uploads/2011/03/Happy_eyebrowes_smileys-150x150.png" + "ltempoitemfim" "" + END # METADATA + NAME "povoado" + STATUS OFF + TILEITEM "location" + TYPE POINT + UNITS METERS + CLASS + NAME "" + STYLE + COLOR 0 0 0 + OFFSET 0 0 + SIZE 5 + SYMBOL "ponto" + END # STYLE + END # CLASS + END # LAYER + +END # MAP + -- libgit2 0.21.2