Commit 62e6020e5458774802c5316353e15fecc7f732e3

Authored by Edmar Moretti
1 parent bfbca652

Inclusão de validação de temas restritos no parsemapfile.php

admin/admin.db
No preview for this file type
admin/php/parsemapfile.php
@@ -7,6 +7,10 @@ Converte um mapfile em um arquivo XML @@ -7,6 +7,10 @@ Converte um mapfile em um arquivo XML
7 O padrão XML utilizado é compatível com a estrutura de um projeto do softwrae GVSIG ate a versão 1.1 7 O padrão XML utilizado é compatível com a estrutura de um projeto do softwrae GVSIG ate a versão 1.1
8 Esse XML é utilizado pelo plugin do i3Geo para GVSIG, que permite visualizar a árvore de temas do i3Geo dentro do GVSIG. 8 Esse XML é utilizado pelo plugin do i3Geo para GVSIG, que permite visualizar a árvore de temas do i3Geo dentro do GVSIG.
9 9
  10 +No caso de layers que fazem acesso a banco de dados, a string de conexao e bloqueada por default
  11 +
  12 +Para desbloquear e necessario editar a variavel de configuracao existente nesse mesmo arquivo
  13 +
10 Licenca: 14 Licenca:
11 15
12 GPL2 16 GPL2
@@ -33,14 +37,17 @@ Arquivo: @@ -33,14 +37,17 @@ Arquivo:
33 37
34 i3geo/admin/php/parsemapfile.php 38 i3geo/admin/php/parsemapfile.php
35 */ 39 */
36 -//TODO permitir acesso apenas com login e senha  
37 -//TODO verificar restricao de acesso ao tema  
38 -  
39 -//return;  
40 include("../../ms_configura.php"); 40 include("../../ms_configura.php");
41 include_once("../../classesphp/funcoes_gerais.php"); 41 include_once("../../classesphp/funcoes_gerais.php");
42 include_once("../../classesphp/carrega_ext.php"); 42 include_once("../../classesphp/carrega_ext.php");
43 include_once("../../classesphp/pega_variaveis.php"); 43 include_once("../../classesphp/pega_variaveis.php");
  44 +//
  45 +//essa variavel indica se a senha do banco e bloqueada ou nao caso
  46 +//o tema seja do tipo postgis
  47 +//por default e feito o bloqueio
  48 +//
  49 +$bloqueiaStringConexao = true;
  50 +//
44 error_reporting(0); 51 error_reporting(0);
45 if(!isset($forcawms)){$forcawms = "nao";} 52 if(!isset($forcawms)){$forcawms = "nao";}
46 $objcontype[0] = "MS_INLINE"; 53 $objcontype[0] = "MS_INLINE";
@@ -70,6 +77,13 @@ $objlayertypes[8] = "MS_LAYER_CHART"; @@ -70,6 +77,13 @@ $objlayertypes[8] = "MS_LAYER_CHART";
70 77
71 $codigoLayer = $id; 78 $codigoLayer = $id;
72 $mapfile = $locaplic."/temas/".$codigoLayer.".map"; 79 $mapfile = $locaplic."/temas/".$codigoLayer.".map";
  80 +//remove temas restritos pelo sistema de controle de usuarios
  81 +$indevidos = validaAcessoTemas($mapfile,false);
  82 +if($indevidos == true){
  83 + echo "Encontrados layers restritos";
  84 + exit;
  85 +}
  86 +//
73 $mapa = ms_newMapObj($mapfile); 87 $mapa = ms_newMapObj($mapfile);
74 if(!isset($tipoparse) || $tipoparse=="") 88 if(!isset($tipoparse) || $tipoparse=="")
75 {mapfile();exit;} 89 {mapfile();exit;}
@@ -267,7 +281,7 @@ function legendaSimples($layername) @@ -267,7 +281,7 @@ function legendaSimples($layername)
267 // 281 //
268 function mapfile() 282 function mapfile()
269 { 283 {
270 - global $codigoLayer,$mapfile,$mapa,$objcontype,$objlayertypes,$forcawms,$postgis_mapa; 284 + global $codigoLayer,$mapfile,$mapa,$objcontype,$objlayertypes,$forcawms,$postgis_mapa,$bloqueiaStringConexao;
271 $layers = $mapa->getalllayernames(); 285 $layers = $mapa->getalllayernames();
272 $dados = array(); 286 $dados = array();
273 $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">"; 287 $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">";
@@ -355,11 +369,20 @@ function mapfile() @@ -355,11 +369,20 @@ function mapfile()
355 else 369 else
356 {$con = $postgis_mapa[$con];} 370 {$con = $postgis_mapa[$con];}
357 } 371 }
358 - $xml .= "<user>".preg_replace('/.*user\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</user>\n";  
359 - $xml .= "<password>".preg_replace('/.*password\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</password>\n";  
360 - $xml .= "<dbname>".preg_replace('/.*dbname\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</dbname>\n";  
361 - $xml .= "<host>".preg_replace('/.*host\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</host>\n";  
362 - $xml .= "<port>".preg_replace('/.*port\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</port>\n"; 372 + if($bloqueiaStringConexao == true){
  373 + $xml .= "<user>bloqueado (veja i3geo/admin/php/parsemapfile)</user>\n";
  374 + $xml .= "<password></password>\n";
  375 + $xml .= "<dbname></dbname>\n";
  376 + $xml .= "<host></host>\n";
  377 + $xml .= "<port></port>\n";
  378 + }
  379 + else{
  380 + $xml .= "<user>".preg_replace('/.*user\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</user>\n";
  381 + $xml .= "<password>".preg_replace('/.*password\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</password>\n";
  382 + $xml .= "<dbname>".preg_replace('/.*dbname\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</dbname>\n";
  383 + $xml .= "<host>".preg_replace('/.*host\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</host>\n";
  384 + $xml .= "<port>".preg_replace('/.*port\s*=\s*([a-zA-Z0-9_.]+).*/i', '\1', $con)."</port>\n";
  385 + }
363 $xml .= "</connection>\n"; 386 $xml .= "</connection>\n";
364 $d = explode("(",$d); 387 $d = explode("(",$d);
365 $d = explode(")",$d[1]); 388 $d = explode(")",$d[1]);
@@ -448,5 +471,4 @@ function pegaEstilos($xml,$classe) @@ -448,5 +471,4 @@ function pegaEstilos($xml,$classe)
448 } 471 }
449 return $xml; 472 return $xml;
450 } 473 }
451 -  
452 ?> 474 ?>
453 \ No newline at end of file 475 \ No newline at end of file
classesphp/funcoes_gerais.php
@@ -2451,18 +2451,33 @@ function retornaShapesSelecionados($objLayer,$map_file,$objMapa){ @@ -2451,18 +2451,33 @@ function retornaShapesSelecionados($objLayer,$map_file,$objMapa){
2451 Function: validaAcessoTemas 2451 Function: validaAcessoTemas
2452 2452
2453 Remocao dos layers com restricoes de acesso registradas no sistema de controle de usuarios 2453 Remocao dos layers com restricoes de acesso registradas no sistema de controle de usuarios
  2454 +
  2455 +Remove os layers indevidos (considerando o usuario logado) de um mapfile com opção de salvar ou nao o arquivo apos a remocao
  2456 +
  2457 +Parametros:
  2458 +
  2459 +$map_file - nome do arquivo mapfile, podendo ser um dos que existem em i3geo/temas desde que com o nome completo
  2460 +
  2461 +$salva - salva o mapfile com os layers removidos ou nao
  2462 +
  2463 +Retorno: boolean indicando se o mapfile contem layers indevidos
2454 */ 2464 */
2455 -function validaAcessoTemas($map_file){ 2465 +function validaAcessoTemas($map_file,$salva = true){
2456 $indevidos = listaLayersIndevidos($map_file); 2466 $indevidos = listaLayersIndevidos($map_file);
  2467 + $existeIndevidos = false;
2457 if(count($indevidos) > 0){ 2468 if(count($indevidos) > 0){
  2469 + $existeIndevidos = true;
2458 $m = ms_newMapObj($map_file); 2470 $m = ms_newMapObj($map_file);
2459 foreach($indevidos as $i){ 2471 foreach($indevidos as $i){
2460 $l = $m->getlayerbyname($i); 2472 $l = $m->getlayerbyname($i);
2461 $l->set("status",MS_DELETE); 2473 $l->set("status",MS_DELETE);
2462 } 2474 }
2463 - $m->save($map_file); 2475 + //salva o mapfile
  2476 + if($salva == true){
  2477 + $m->save($map_file);
  2478 + }
2464 } 2479 }
2465 - return; 2480 + return $existeIndevidos;
2466 } 2481 }
2467 /* 2482 /*
2468 Function: listaTemasRestritos 2483 Function: listaTemasRestritos
@@ -2500,6 +2515,10 @@ function listaLayersIndevidos($map_file){ @@ -2500,6 +2515,10 @@ function listaLayersIndevidos($map_file){
2500 for ($i=0;$i < $c;++$i) { 2515 for ($i=0;$i < $c;++$i) {
2501 $layer = $m->getlayer($i); 2516 $layer = $m->getlayer($i);
2502 $meta = $layer->getmetadata("arquivotemaoriginal"); 2517 $meta = $layer->getmetadata("arquivotemaoriginal");
  2518 + //pode ser que o metadata nao esteja definido ainda
  2519 + if($meta == ""){
  2520 + $meta = str_replace(".map","",basename($map_file));
  2521 + }
2503 if($meta != ""){ 2522 if($meta != ""){
2504 $t = $restritos[$meta]; 2523 $t = $restritos[$meta];
2505 if($t && !in_array($t,$gruposusr)){ 2524 if($t && !in_array($t,$gruposusr)){
classesphp/mapa_controle.php
@@ -47,7 +47,7 @@ Este programa &amp;eacute; software livre; voc&amp;ecirc; pode redistribu&amp;iacute;-lo @@ -47,7 +47,7 @@ Este programa &amp;eacute; software livre; voc&amp;ecirc; pode redistribu&amp;iacute;-lo
47 e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral 47 e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
48 GNU conforme publicada pela Free Software Foundation; 48 GNU conforme publicada pela Free Software Foundation;
49 49
50 -Este programa &eacute; distribu&iacute;do na expectativa //TODO MANTEMDADOSREGIAO 50 +Este programa &eacute; distribu&iacute;do na expectativa
51 de que seja &uacute;til, 51 de que seja &uacute;til,
52 por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita 52 por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
53 de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA. 53 de COMERCIABILIDADE OU ADEQUA&Ccedil;&Atilde;O A UMA FINALIDADE ESPEC&Iacute;FICA.
@@ -112,8 +112,7 @@ include_once(&quot;pega_variaveis.php&quot;); @@ -112,8 +112,7 @@ include_once(&quot;pega_variaveis.php&quot;);
112 $interfaceTemp = $interface; 112 $interfaceTemp = $interface;
113 // 113 //
114 //inicializa a sess&atilde;o 114 //inicializa a sess&atilde;o
115 -//TEMA2SLD &eacute; usado por datadownload.htm //TODO MANTEMDADOSREGIAO  
116 - 115 +//TEMA2SLD &eacute; usado por datadownload.htm
117 // 116 //
118 if ($funcao != "criaMapa" && $funcao != "TEMA2SLD"){ 117 if ($funcao != "criaMapa" && $funcao != "TEMA2SLD"){
119 session_name("i3GeoPHP"); 118 session_name("i3GeoPHP");
temas/povoado.map
1 -MAP  
2 -  
3 -  
4 - FONTSET "../symbols/fontes.txt"  
5 - SYMBOLSET "../symbols/simbolos.sym"  
6 - LAYER  
7 - CONNECTION ""  
8 - DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\sc22\povoado.shp"  
9 - METADATA  
10 - "temporizador" "5"  
11 - "cache" ""  
12 - "ltempoitemimagem" ""  
13 - "CLASSE" "SIM"  
14 - "ltempoitemdescricao" ""  
15 - "palletestep" ""  
16 - "ltempoiteminicio" ""  
17 - "permitekmz" "sim"  
18 - "ltempoitemtip" ""  
19 - "description_template" ""  
20 - "ltempoitemtitulo" ""  
21 - "iconetema" ""  
22 - "ltempoitemlink" ""  
23 - "palletefile" ""  
24 - "permitedownload" "sim"  
25 - "ltempoformatodata" ""  
26 - "ltempoitemicone" ""  
27 - "permitecomentario" "NAO"  
28 - "download" "SIM"  
29 - "arquivodownload" ""  
30 - "arquivokmz" "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\povoado.kmz"  
31 - "permitekml" "sim"  
32 - "permiteogc" ""  
33 - "TEMA" "Povoado"  
34 - "editorsql" ""  
35 - "ltempoitemfim" ""  
36 - "legendaimg" "http://www.rockingsmileys.com/wp-content/uploads/2011/03/Happy_eyebrowes_smileys-150x150.png"  
37 - END  
38 - NAME "povoado"  
39 - STATUS OFF  
40 - TYPE POINT  
41 - UNITS METERS  
42 - CLASS  
43 - NAME ""  
44 - STYLE  
45 - ANGLE 360  
46 - COLOR 0 0 0  
47 - SIZE 5  
48 - SYMBOL "ponto"  
49 - WIDTH 1  
50 - END  
51 - END  
52 - END  
53 -END 1 +MAP
  2 + FONTSET "../symbols/fontes.txt"
  3 + SYMBOLSET "../symbols/simbolos.sym"
  4 + LAYER
  5 + CONNECTION ""
  6 + DATA "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\sc22\povoado.shp"
  7 + METADATA
  8 + "METAESTAT_ID_MEDIDA_VARIAVEL" ""
  9 + "ltempoitemimagem" ""
  10 + "cache" ""
  11 + "ltempoitemdescricao" ""
  12 + "CLASSE" "SIM"
  13 + "ltempoiteminicio" ""
  14 + "palletestep" ""
  15 + "ltempoitemtip" ""
  16 + "permitekmz" "sim"
  17 + "temporizador" "5"
  18 + "iconetema" ""
  19 + "ltempoitemtitulo" ""
  20 + "description_template" ""
  21 + "ltempoitemlink" ""
  22 + "METAESTAT_CODIGO_TIPO_REGIAO" ""
  23 + "palletefile" ""
  24 + "ltempoformatodata" ""
  25 + "permitedownload" "sim"
  26 + "permitecomentario" "NAO"
  27 + "ltempoitemicone" ""
  28 + "metaestat" ""
  29 + "download" "SIM"
  30 + "arquivokmz" "c:\ms4w\apache\htdocs\i3geo\aplicmap\dados\povoado.kmz"
  31 + "arquivodownload" ""
  32 + "permiteogc" ""
  33 + "permitekml" "sim"
  34 + "TEMA" "Povoado"
  35 + "editorsql" ""
  36 + "legendaimg" "http://www.rockingsmileys.com/wp-content/uploads/2011/03/Happy_eyebrowes_smileys-150x150.png"
  37 + "ltempoitemfim" ""
  38 + END # METADATA
  39 + NAME "povoado"
  40 + STATUS OFF
  41 + TILEITEM "location"
  42 + TYPE POINT
  43 + UNITS METERS
  44 + CLASS
  45 + NAME ""
  46 + STYLE
  47 + COLOR 0 0 0
  48 + OFFSET 0 0
  49 + SIZE 5
  50 + SYMBOL "ponto"
  51 + END # STYLE
  52 + END # CLASS
  53 + END # LAYER
  54 +
  55 +END # MAP
  56 +