startsaiku.php
4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
/*
Importante:
A integracaoo do SAIKU com o i3GEO e experimental.
O SAIKU utiliza os arquivos de fonte de dados que sao criados de forma dinamica na pasta ms_tmp/saiku-datasources.
Esses arquivos apontam para o arquivo XML com o esquema utilizado para construir os cubos, que tambem sao criados de forma dinamica.
Como o SAIKU precisa ler esse arquivo XML, o mesmo deve ter permissoes de leitura de forma que o Apache consiga carregar esse arquivo XML.
E importante destacar que ao fazer isso o arquivo xml fica exposto, o que pode permitir que um usuario qualquer tenha acesso a esse XML.
Esse XML contem os SQL utilizados para acessar o banco de dados. Ao usar o SAIKU e necessario avaliar se essa caracteristica pode
apresentar-se como um problema de seguranc
*/
//
//remova essa linhas para poder usar o SAIKU
//
//echo "Bloqueado. Consulte o administrador.";exit;
include(dirname(__FILE__)."/../../classesphp/funcoes_gerais.php");
include(dirname(__FILE__)."/../../classesphp/classe_metaestatinfo.php");
if(!isset($dir_tmp)){
include(dirname(__FILE__)."/../../ms_configura.php");
}
if(isset($statusFerramentas) && $statusFerramentas["saiku"] != true){
exit;
}
$urlXmlEsquema = "";
$nomeConexao = "i3geo.txt";//criaConexaoEsquema();
//$map_file = $_SESSION["map_file"];
//$arquivoXmlEsquema = dirname($map_file)."/".str_replace(".txt","",$nomeConexao).".xml";
gravaDataSource();
if(empty($_GET["regiao"])){
$_GET["regiao"] = "";
}
ob_clean();
header("Location:".$saikuUrl."/?nomeConexao=".$nomeConexao."&locaplic=".$_GET["locaplic"]."&g_sid=".$_GET["g_sid"]."&mapext=".$_GET["mapext"]."&origem=".$_GET["origem"]."®iao=".$_GET["regiao"]);
function converte($texto){
$texto = str_replace("&","&",htmlentities($texto,ENT_NOQUOTES,'UTF-8'));
return $texto;
}
function criaConexaoEsquema(){
global $dir_tmp, $urlXmlEsquema;
$nomeConexao = nomeRandomico();
//pega a sessao PHP aberta pelo i3Geo ou ms_criamapa.php
if(!empty($_GET["g_sid"])){
session_name("i3GeoPHP");
session_id($_GET["g_sid"]);
session_start();
$map_file = $_SESSION["map_file"];
if(empty($_GET["xmlesquema"])){
$urlXmlEsquema = $_SESSION["tmpurl"].basename(dirname($map_file))."/".$nomeConexao.".xml";
}
else{
$urlXmlEsquema = $_GET["xmlesquema"];
//cria um nome de arquivo reaproveitável
$nomeConexao = md5($_GET["xmlesquema"]);
}
}
//$arquivoXmlEsquema = dirname($map_file)."/".$nomeConexao.".xml";
return $nomeConexao.".txt";
}
function gravaDataSource(){
/*
$saikuConfigDataSource vem do ms_configura.php
Exemplo de arquivo de fonte:
type=OLAP
name=i3geo
driver=mondrian.olap4j.MondrianOlap4jDriver
location=jdbc:mondrian:Jdbc=jdbc:postgresql://localhost:5432/i3geosaude;Catalog=http://localhost/i3geo/ferramentas/saiku/esquemaxml.php;JdbcDrivers=org.postgresql.Driver;
username=postgres
password=postgres
Array com os parametros definidos em ms_configura:
$saikuConfigDataSource = array(
"type"=>"OLAP",
"driver"=>"mondrian.olap4j.MondrianOlap4jDriver",
"location"=>"jdbc:mondrian:Jdbc=jdbc:postgresql",
"serverdb"=>"localhost",
"port"=>"5432",
"database"=>"i3geosaude",
"JdbcDrivers"=>"org.postgresql.Driver",
"username"=>"postgres",
"password"=>"postgres"
);
*/
global $arquivoXmlEsquema,$saikuConfigDataSource,$nomeConexao,$urlXmlEsquema,$dir_tmp;
$nomeDatasource = $dir_tmp."/saiku-datasources/".$nomeConexao;
//nao funciona como url
//error_reporting(E_ALL);
//$urlXmlEsquema = "http://localhost/i3geo/ferramentas/saiku/esquemaxml.php";
$protocolo = explode("/",$_SERVER['SERVER_PROTOCOL']);
$protocolo = $protocolo[0];
$protocolo = strtolower($protocolo) . '://'.$_SERVER['SERVER_NAME'] .":". $_SERVER['SERVER_PORT'];
$urlXmlEsquema = str_replace("startsaiku","esquemaxml",$protocolo.$_SERVER["PHP_SELF"]);
//error_log($urlXmlEsquema);
//if(!file_exists($arquivoXmlEsquema)){
$stringDatasource = "
type={$saikuConfigDataSource["type"]}
name={$nomeConexao}
driver={$saikuConfigDataSource["driver"]}
location={$saikuConfigDataSource["location"]}://{$saikuConfigDataSource["serverdb"]}:{$saikuConfigDataSource["port"]}/{$saikuConfigDataSource["database"]};Catalog={$urlXmlEsquema};JdbcDrivers={$saikuConfigDataSource["JdbcDrivers"]};
username={$saikuConfigDataSource["username"]}
password={$saikuConfigDataSource["password"]}
";
//salva o arquivo com a fonte
gravaDados(array($stringDatasource),$nomeDatasource);
//}
}
?>