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 7 O padrão XML utilizado é compatível com a estrutura de um projeto do softwrae GVSIG ate a versão 1.1
8 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 14 Licenca:
11 15  
12 16 GPL2
... ... @@ -33,14 +37,17 @@ Arquivo:
33 37  
34 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 40 include("../../ms_configura.php");
41 41 include_once("../../classesphp/funcoes_gerais.php");
42 42 include_once("../../classesphp/carrega_ext.php");
43 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 51 error_reporting(0);
45 52 if(!isset($forcawms)){$forcawms = "nao";}
46 53 $objcontype[0] = "MS_INLINE";
... ... @@ -70,6 +77,13 @@ $objlayertypes[8] = "MS_LAYER_CHART";
70 77  
71 78 $codigoLayer = $id;
72 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 87 $mapa = ms_newMapObj($mapfile);
74 88 if(!isset($tipoparse) || $tipoparse=="")
75 89 {mapfile();exit;}
... ... @@ -267,7 +281,7 @@ function legendaSimples($layername)
267 281 //
268 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 285 $layers = $mapa->getalllayernames();
272 286 $dados = array();
273 287 $xml = "<"."\x3F"."xml version='1.0' encoding='ISO-8859-1' "."\x3F".">";
... ... @@ -355,11 +369,20 @@ function mapfile()
355 369 else
356 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 386 $xml .= "</connection>\n";
364 387 $d = explode("(",$d);
365 388 $d = explode(")",$d[1]);
... ... @@ -448,5 +471,4 @@ function pegaEstilos($xml,$classe)
448 471 }
449 472 return $xml;
450 473 }
451   -
452 474 ?>
453 475 \ No newline at end of file
... ...
classesphp/funcoes_gerais.php
... ... @@ -2451,18 +2451,33 @@ function retornaShapesSelecionados($objLayer,$map_file,$objMapa){
2451 2451 Function: validaAcessoTemas
2452 2452  
2453 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 2466 $indevidos = listaLayersIndevidos($map_file);
  2467 + $existeIndevidos = false;
2457 2468 if(count($indevidos) > 0){
  2469 + $existeIndevidos = true;
2458 2470 $m = ms_newMapObj($map_file);
2459 2471 foreach($indevidos as $i){
2460 2472 $l = $m->getlayerbyname($i);
2461 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 2483 Function: listaTemasRestritos
... ... @@ -2500,6 +2515,10 @@ function listaLayersIndevidos($map_file){
2500 2515 for ($i=0;$i < $c;++$i) {
2501 2516 $layer = $m->getlayer($i);
2502 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 2522 if($meta != ""){
2504 2523 $t = $restritos[$meta];
2505 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 47 e/ou modific&aacute;-lo sob os termos da Licen&ccedil;a P&uacute;blica Geral
48 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 51 de que seja &uacute;til,
52 52 por&eacute;m, SEM NENHUMA GARANTIA; nem mesmo a garantia impl&iacute;cita
53 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 112 $interfaceTemp = $interface;
113 113 //
114 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 117 if ($funcao != "criaMapa" && $funcao != "TEMA2SLD"){
119 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 +
... ...