diff --git a/admin/php/subirshapefile.php b/admin/php/subirshapefile.php index c5009cf..43f4265 100755 --- a/admin/php/subirshapefile.php +++ b/admin/php/subirshapefile.php @@ -29,6 +29,8 @@ error_reporting(0); if (isset($_FILES['i3GEOuploadshp']['name'])) { $dirDestino = $_POST["dirDestino"]; + $dirDestino = str_replace(".","",$dirDestino); + if(empty($dirDestino)){ echo "Pasta nao encontrada"; exit; } @@ -45,8 +47,8 @@ if (isset($_FILES['i3GEOuploadshp']['name'])) flush(); sleep(1); $dirmap = $dirDestino; - if(!file_exists($dirmap)){ - echo "
Pasta não existe no servidor"; + if(!file_exists($dirmap) || $dirmap == dirname ( $locaplic ) || $dirmap == dirname ( $locaplic )."/"){ + echo "
Pasta não existe no servidor ou não permitido"; paraAguarde(); exit; } diff --git a/admin1/dicionario/uploadshp.js b/admin1/dicionario/uploadshp.js index 0614281..e9bba8c 100755 --- a/admin1/dicionario/uploadshp.js +++ b/admin1/dicionario/uploadshp.js @@ -1,6 +1,6 @@ i3GEOadmin.uploadshp.dicionario = { 'pastaArmazenamento' : [ { - pt : "Pasta no servidor onde os dados serão armazenados (caminho físico completo)", + pt : "Pasta no servidor onde os dados serão armazenados. Apenas pastas localizadas no mesmo local onde o i3Geo está instalado são permitidas. Exemplo, no caso da instalação ser /var/www e existir a pasta /var/www/data, digite apenas data.", en : "", es : "" } ], diff --git a/admin1/upload/arquivo/exec.php b/admin1/upload/arquivo/exec.php index 6f2eba9..728c986 100755 --- a/admin1/upload/arquivo/exec.php +++ b/admin1/upload/arquivo/exec.php @@ -1,248 +1,197 @@ + +
+ + + + ++Carregando o arquivo...
"; + ob_flush (); + flush (); + sleep ( 1 ); + $dirmap = $dirDestino; + if (! file_exists ( $dirmap ) || $dirmap == dirname ( $locaplic ) || $dirmap == dirname ( $locaplic )."/") { + echo "Pasta não existe no servidor ou o local não é permitido"; exit (); - break; - case "LISTA" : - $usuarios = pegaDados ( "SELECT id_usuario,ativo,data_cadastro,email,login,nome_usuario from " . $esquemaadmin . "i3geousr_usuarios order by nome_usuario", $dbh, false ); - $papeis = pegaDados ( "SELECT P.id_papel, P.nome, P.descricao, UP.id_usuario FROM " . $esquemaadmin . "i3geousr_usuarios AS U JOIN " . $esquemaadmin . "i3geousr_papelusuario AS UP ON U.id_usuario = UP.id_usuario JOIN " . $esquemaadmin . "i3geousr_papeis AS P ON UP.id_papel = P.id_papel ", dbh, false ); - if ($usuarios === false || $papeis === false) { - $dbhw = null; - $dbh = null; - header ( "HTTP/1.1 500 erro ao consultar banco de dados" ); - exit (); - } - $o = array (); - foreach ( $usuarios as $usuario ) { - // pega os papeis registrados para cada operacao - $p = array (); - foreach ( $papeis as $papel ) { - if ($papel["id_usuario"] == $usuario["id_usuario"]) { - $p[$papel["id_papel"]] = $papel; - } - } - $usuario["papeis"] = $p; - $o[] = $usuario; - } - $papeis = pegaDados ( "SELECT * from " . $esquemaadmin . "i3geousr_papeis order by nome", $dbh ); - $dbhw = null; - $dbh = null; - if ($papeis === false) { - header ( "HTTP/1.1 500 erro ao consultar banco de dados" ); - exit(); - } - retornaJSON ( array ( - "usuarios" => $o, - "papeis" => $papeis - ) ); - break; - case "EXCLUIR" : - $retorna = excluir ( $id_usuario, $dbhw ); - $dbhw = null; - $dbh = null; - if ($retorna === false) { - header ( "HTTP/1.1 500 erro ao consultar banco de dados" ); - exit (); - } - retornaJSON ( $id_usuario ); + } + // verifica nomes + verificaNome ( $_FILES ['i3GEOuploadshp'] ['name'] ); + verificaNome ( $_FILES ['i3GEOuploadshx'] ['name'] ); + verificaNome ( $_FILES ['i3GEOuploaddbf'] ['name'] ); + + if ($_FILES ['i3GEOuploadprj'] ['name'] != "") { + verificaNome ( $_FILES ['i3GEOuploadprj'] ['name'] ); + } + + // remove acentos + $nomePrefixo = str_replace ( " ", "_", removeAcentos ( str_replace ( ".shp", "", $_FILES ['i3GEOuploadshp'] ['name'] ) ) ); + + $nomePrefixo = str_replace ( ".", "", $nomePrefixo ); + $nomePrefixo = strip_tags ( $nomePrefixo ); + $nomePrefixo = htmlspecialchars ( $nomePrefixo, ENT_QUOTES ); + + // sobe arquivo + $Arquivo = $_FILES ['i3GEOuploadshp'] ['tmp_name']; + if (file_exists ( $dirmap . "/" . $nomePrefixo . ".shp" )) { + echo "
Já existe um SHP com o nome "; + paraAguarde (); exit (); - break; - case "ENVIARSENHA" : - if($senha == "" || $email == ""){ - header ( "HTTP/1.1 500 erro ao enviar e-mail. Prrencha o valor de e-mail e senha" ); - exit (); - } - $retorna = enviarSenha ( $senha, $email ); - if ($retorna === false) { - header ( "HTTP/1.1 500 erro ao enviar e-mail $email" ); + } + $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".shp" ); + if ($status != 1) { + echo "
Ocorreu um erro no envio do arquivo SHP. Pode ser uma limitação quanto ao tamanho do arquivo ou permissão de escrita na pasta indicada."; + paraAguarde (); + exit (); + } + + $Arquivo = $_FILES ['i3GEOuploadshx'] ['tmp_name']; + $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".shx" ); + if ($status != 1) { + echo "
Ocorreu um erro no envio do arquivo SHX"; + paraAguarde (); + exit (); + } + + $Arquivo = $_FILES ['i3GEOuploaddbf'] ['tmp_name']; + $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".dbf" ); + if ($status != 1) { + echo "
Ocorreu um erro no envio do arquivo DBF"; + paraAguarde (); + exit (); + } + + if ($_FILES ['i3GEOuploadprj'] ['name'] != "") { + $Arquivo = $_FILES ['i3GEOuploadprj'] ['tmp_name']; + $status = move_uploaded_file ( $Arquivo, $dirmap . "/" . $nomePrefixo . ".prj" ); + if ($status != 1) { + echo "
Ocorreu um erro no envio do arquivo PRJ"; + paraAguarde (); exit (); } - retornaJSON ( true ); + } + + if (! file_exists ( $dirmap . "/" . $nomePrefixo . ".shp" )) { + echo "
Ocorreu algum problema no envio do arquivo "; + paraAguarde (); exit (); - break; -} -cpjson ( $retorno ); + } -function enviarSenha( $senha, $email ){ - $to = $email; - $subject = 'senha i3geo criada em '. date('l jS \of F Y h:i:s A'); - $message = $senha; - return mail($to, $subject, $message); -} -// $papeis deve ser um array -function adicionar($ativo, $data_cadastro, $email, $login, $nome_usuario, $senha, $papeis, $dbhw) { - global $esquemaadmin; - try { - $dataCol = array( - "nome_usuario" => '', - "login" => '', - "email" => '', - "ativo" => 0, - "data_cadastro" => '', - "senha" => '' - ); - $id_usuario = i3GeoAdminInsertUnico ( $dbhw, "i3geousr_usuarios", $dataCol, "nome_usuario", "id_usuario" ); - $data_cadastro = date('l jS \of F Y h:i:s A'); - $retorna = alterar ( $id_usuario, $ativo, $data_cadastro, $email, $login, $nome_usuario, $senha, $papeis, $dbhw ); - return $retorna; - } catch ( PDOException $e ) { - return false; + $checkphp = fileContemString ( $dirmap . "/" . $nomePrefixo . ".prj", "" ); + if ($checkphp == true) { + echo "Arquivo prj invalido"; + unlink ( $dirmap . "/" . $nomePrefixo . ".shp" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".dbf" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".shx" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".prj" ); + exit (); } -} -// $papeis deve ser um array -function alterar($id_usuario, $ativo, $data_cadastro, $email, $login, $nome_usuario, $senha, $papeis, $dbhw) { - global $esquemaadmin; - if ($convUTF) { - $nome_usuario = utf8_encode ( $nome_usuario ); - } - $dataCol = array ( - "nome_usuario" => $nome_usuario, - "login" => $login, - "email" => $email, - "ativo" => $ativo - ); - // se a senha foi enviada, ela sera trocada - if ($senha != "") { - $dataCol ["senha"] = md5 ( $senha ); - } - $resultado = i3GeoAdminUpdate ( $dbhw, "i3geousr_usuarios", $dataCol, "WHERE id_usuario = $id_usuario" ); - if ($resultado === false) { - return false; - } - // apaga todos os papeis - $resultado = excluirPapeis ( $id_usuario, $dbhw ); - if ($resultado === false) { - return false; - } - if (! empty ( $papeis )) { - // atualiza papeis vinculados - foreach ( $papeis as $p ) { - $resultado = adicionaPapel ( $id_usuario, $p, $dbhw ); - if ($resultado === false) { - return false; - } + $checkphp = fileContemString ( $dirmap . "/" . $nomePrefixo . ".shx", "" ); + if ($checkphp == true) { + echo "Arquivo shx invalido"; + unlink ( $dirmap . "/" . $nomePrefixo . ".shp" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".dbf" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".shx" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".prj" ); + exit (); + } + $checkphp = fileContemString ( $dirmap . "/" . $nomePrefixo . ".dbf", "" ); + if ($checkphp == true) { + echo "Arquivo dbf invalido"; + unlink ( $dirmap . "/" . $nomePrefixo . ".shp" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".dbf" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".shx" ); + unlink ( $dirmap . "/" . $nomePrefixo . ".prj" ); + exit (); + } + echo "
Arquivo enviado.
"; + echo ""; + if ($i3GEOuploadCriaMapfile == "on") { + // verifica se o usuario marcou a opcao de cria mapfile + // nesse caso o aplicativo de upload esta sendo executado de dentro do sistema de administracao, e o mapfile devera + // ser criado e registrado no sistema + $nome = $nomePrefixo; + $codigo = $nomePrefixo; + $it = $nomePrefixo; + $en = $nomePrefixo; + $es = $nomePrefixo; + $sfileObj = ms_newShapefileObj ( $dirmap . "/" . $nomePrefixo . ".shp", - 1 ); + if (! isset ( $tipo ) || $tipo == "") { + $tipo = $sfileObj->type; + } + if ($tipo == 1) { + $tipoLayer = "point"; + } + if ($tipo == 3) { + $tipoLayer = "line"; } + if ($tipo == 5) { + $tipoLayer = "polygon"; + } + $funcao = "CRIARNOVOMAP"; + $output = "retorno"; + $data = $dirmap . "/" . $nomePrefixo . ".shp"; + include_once ($locaplic . "/admin/php/editormapfile.php"); + echo "Criado!!!
";
+ echo "Para editar clique: editar";
+ echo "";
}
- return $id_usuario;
-}
-function adicionaPapel($id_usuario, $id_papel, $dbhw) {
- global $esquemaadmin;
- $dataCol = array (
- "id_usuario" => $id_usuario,
- "id_papel" => $id_papel
- );
- $resultado = i3GeoAdminInsert ( $dbhw, "i3geousr_papelusuario", $dataCol );
- return $resultado;
+ echo "
Pode fechar essa janela.
"; +} else { + echo "Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.
"; } -function excluir($id_usuario, $dbhw) { - global $esquemaadmin; - $resultado = i3GeoAdminExclui ( $esquemaadmin . "i3geousr_usuarios", "id_usuario", $id_usuario, $dbhw, false ); - if ($resultado === false) { - return false; + +function verificaNome($nome) { + if (strlen ( basename ( $nome ) ) > 200) { + exit (); } - if ($resultado === true) { - $resultado = excluirPapeis ( $id_usuario, $dbhw ); + $nome = strtolower ( $nome ); + $lista = explode ( ".", $nome ); + $extensao = $lista [count ( $lista ) - 1]; + if (($extensao != "dbf") && ($extensao != "shx") && ($extensao != "shp") && ($extensao != "prj")) { + echo "Nome de arquivo inválido. $nome"; + paraAguarde (); + exit (); } - return $resultado; -} -function excluirPapeis($id_usuario, $dbhw) { - global $esquemaadmin; - $resultado = i3GeoAdminExclui ( $esquemaadmin . "i3geousr_papelusuario", "id_usuario", $id_usuario, $dbhw, false ); - return $resultado; } ?> + + + + diff --git a/admin1/upload/arquivo/index.js b/admin1/upload/arquivo/index.js index d39f018..852bb55 100755 --- a/admin1/upload/arquivo/index.js +++ b/admin1/upload/arquivo/index.js @@ -31,7 +31,6 @@ i3GEOadmin.uploadshp = { .done( function(data, status){ var json = jQuery.parseJSON(data); - console.info(json) var html = Mustache.to_html( "{{#data}}" + $("#templateProj").html() + "{{/data}}", json diff --git a/admin1/upload/arquivo/index.php b/admin1/upload/arquivo/index.php index 70222b7..ef2dae9 100755 --- a/admin1/upload/arquivo/index.php +++ b/admin1/upload/arquivo/index.php @@ -42,25 +42,26 @@ include "../../head.php";