Ocomon + Active Directory (AD)

Publicado por Carlos R F Júnior em 18/09/2009

[ Hits: 57.983 ]

Blog: http://www.solutiondei.com.br

 


Ocomon + Active Directory (AD)



Creio que muita gente tenha tido o mesmo problema, apesar do Ocomon fornecer configurações para o LDAP, muita gente precisou utilizá-lo com o Active Directory. Nesse vou demonstrar uma forma muito fácil de se resolver isso com uma classe que encontrei na NET chamada adLDAP.

Primeiro vamos fazer o download da classe adLDAP.
Copie somente o arquivo adLDAP.php para a pasta ../ocomon/includes/classes, ou outra se preferir. Agora entre no adLDAP.php com editor PHP ou use um editor de sua preferência. Procure as seguintes linhas e altere:

protected $_account_suffix = "@meudominio.local";
protected $_base_dn = "DC=meudominio,DC=local";
protected $_domain_controllers = array ("servidorldap01.meudominio.local");

Acesse a pasta ../ocomon/includes/common e edite o arquivo login.php, altere o arquivo conforme mostrado abaixo:

session_start();

include ("../../includes/include_geral.inc.php");
include ("../../includes/functions/browser_detection.php");
include ("../../includes/classes/adLDAP.php"); #Adicionar o caminho da class adLDAP.php

Comente as linhas:

/*$conec->conLDAP(LDAP_HOST, LDAP_DOMAIN, LDAP_DN, LDAP_PASSWORD);
$conecSec = new conexao; //Para testar no LDAP Labin
$conecSec->conLDAP(LDAP_HOST, LDAP_DOMAIN_SEC, LDAP_DN, LDAP_PASSWORD);*/

Adicione logo abaixo:

try {
   $adldap = new adLDAP();
}
catch (adLDAPException $e) {
   echo $e; exit();  
}

Comente a linha:

//if ((senha_ldap($_POST['login'],$_POST['password'],'usuarios')=="ok") && ($conec->userLDAP($_POST['login'],$_POST['password']) || $conecSec->userLDAP($_POST['login'],$_POST['password'])))

Adicione logo abaixo:

if ($adldap -> authenticate($_POST['login'],$_POST['password']) && ($_POST['login']!=NULL && $_POST['password']!=NULL))
{
   $s_usuario=$_POST['login'];
   $s_senha=$_POST['password'];
        
   //Nessa parte ele pega o endereço de e-mail do AD

   $result=$adldap -> user_info($_POST['login']);
   $U_MAILG=$result[0]["mail"][0];

   //Já nesta linha ele verifica se usuário existe no Banco de Dados se não existir ele criar como usuário default

   $qry="SELECT * FROM `usuarios` WHERE `login` = '".$s_usuario."'";
   $qry3 = mysql_query($qry) or die('Impossível aceder à base de dados de utilizadores!!!');
   $rowUSER = mysql_fetch_array($qry3);
   if (($rowUSER['login'])!=($s_usuario)){
      $adduser = "INSERT INTO usuarios (login, nome, password, data_inc, data_admis, email, fone, nivel, AREA, user_admin) " .
      "values ('".$s_usuario."','".$s_usuario."','e267cfcd18461ce938067eca67c59f41','".date("Y-m-d")."','" .
      date("Y-m-d")."','".$U_MAILG."','1234','2','2','0')";
      mysql_query($adduser) or die (TRANS('ERR_INSERT').$s_usuario);

Uma dica, o usuário que ele adicionar automaticamente terá o direito somente para abrir o chamado, para classificar o usuário como administrador você deve informar manualmente.

Bom, por fim, se alguém tiver necessidade de incluir o grupo também, basta consultar a classe adLDAP ou usar o paramento $result[0]["primarygroupid"][0].

Abraços.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Arch Linux - Limpeza de pacotes

Windows XP e Slackware 10.2 no mesmo micro com 2 HDs

Universidade Linux - Dicas sobre Linux

Shell script pós-instalação para CentOS 7 - Uso: Workstation

Instalando o Kurumin

  

Comentários
[1] Comentário enviado por sneves em 18/09/2009 - 09:39h

Muito interessante.

Quando puder, irei testar.

[]s

[2] Comentário enviado por balani em 18/09/2009 - 18:54h

Otima dica, me será muito util.

Abraços.

[3] Comentário enviado por bbrasil em 23/09/2009 - 14:14h

Não funcionou, estou na versão 2.0 RC6, da um erro de "ELSE" inexperado na linha 184, logo após que se coloca usuario e senha, não entendo muito de programação e não consegui identificar o erro.

[4] Comentário enviado por carlosrfjunior em 23/09/2009 - 14:52h

Boa Tarde, bbrasil!

Realmente esqueci o '}' no final da instrução: Substitua o trecho do código por esse:

if (AUTH_TYPE == "LDAP") {
/*$conec->conLDAP(LDAP_HOST, LDAP_DOMAIN, LDAP_DN, LDAP_PASSWORD);
$conecSec = new conexao; //Para testar no LDAP Labin
$conecSec->conLDAP(LDAP_HOST, LDAP_DOMAIN_SEC, LDAP_DN, LDAP_PASSWORD);*/

//if ((senha_ldap($_POST['login'],$_POST['password'],'usuarios')=="ok") && ($conec->userLDAP($_POST['login'],$_POST['password']) || $conecSec->userLDAP($_POST['login'],$_POST['password'])))
try {
$adldap = new adLDAP();
}
catch (adLDAPException $e) {
echo $e; exit();
}

//if ((senha_ldap($_POST['login'],$_POST['password'],'usuarios')=="ok") && ($conec->userLDAP($_POST['login'],$_POST['password']) || $conecSec->userLDAP($_POST['login'],$_POST['password'])))
if ($adldap -> authenticate($_POST['login'],$_POST['password']) && ($_POST['login']!=NULL && $_POST['password']!=NULL))
{
$s_usuario=$_POST['login'];
$s_senha=$_POST['password'];

$result=$adldap -> user_info($_POST['login']);
$U_MAILG=$result[0]["mail"][0];
//*****************************************************************************************************************************
$qry="SELECT * FROM `usuarios` WHERE `login` = '".$s_usuario."'";
$qry3 = mysql_query($qry) or die('Impossível aceder à base de dados de utilizadores!!!');
$rowUSER = mysql_fetch_array($qry3);
if (($rowUSER['login'])!=($s_usuario)){
$adduser = "INSERT INTO usuarios (login, nome, password, data_inc, data_admis,
email, fone, nivel, AREA, user_admin) ".
"values ('".$s_usuario."','".$result[0]["displayname"][0]."','e267cfcd18461ce938067eca67c59f41','".date("Y-m-d")."','".
date("Y-m-d")."','".$U_MAILG."','1234','2','".$result[0]["primarygroupid"][0]."','0')";
mysql_query($adduser) or die (TRANS('ERR_INSERT').$s_usuario);

$addarea = "INSERT INTO `usuarios_areas` (`uarea_uid`,`uarea_sid`) VALUES ('".$rowUSER['user_id']."', '".$result[0]["primarygroupid"][0]."')";
mysql_query($addarea) or die (TRANS('ERR_INSERT').$s_usuario);
}

//*****************************************************************************************************************************
$rwGroup=$adldap -> user_groups($_POST['login']);

$qruy="SELECT * FROM `sistemas` WHERE `sis_id` = '".$result[0]["primarygroupid"][0]."'";
$qruy3 = mysql_query($qruy) or die('Impossível aceder à base de dados de utilizadores!!!');
$rowGroup = mysql_fetch_array($qruy3);
if (($rowGroup['sis_id'])!=($result[0]["primarygroupid"][0])){
$addgroup = "INSERT INTO `sistemas` VALUES ('".$result[0]["primarygroupid"][0]."', '".$rwGroup[0]."',
'1', 'ti@meuemail.com.br', '0', null)";
$addpermi = "INSERT INTO `permissoes` (`perm_area`,`perm_modulo`,`perm_flag`) VALUES ('".$result[0]["primarygroupid"][0]."', '1', '1')";

mysql_query($addgroup) or die (TRANS('ERR_INSERT').$rwGroup[0]);
mysql_query($addpermi) or die (TRANS('ERR_INSERT').$rwGroup[0]);
}
//*****************************************************************************************************************************

$queryOK = "SELECT u.*, n.*,s.* FROM usuarios u left join sistemas as s on u.AREA = s.sis_id ".
"left join nivel as n on n.nivel_cod =u.nivel WHERE u.login = '".$_POST['login']."'";

Substitua até na variável $queryOK.

Abraços

[5] Comentário enviado por carlosrfjunior em 23/09/2009 - 15:22h

Desculpa tem mais um erro ai!

Na Tabela usuarios muda o tamanho do campo para 5. Pode acontecer o gid do grupo ultrapasse o número caracteries.

Ok

Inté

[6] Comentário enviado por bbrasil em 23/09/2009 - 16:26h

Ola,

Funcionou ! Nem acredito, anos correndo atras da solução, rsrsrsrs... para ficar perfeito eu gostaria que ele cadastra-se usuarios novos no grupo padrão do ocomon "USUÁRIOS" (isso mesmo com acento), pois ele cadastra no grupo que tenho no AD, tentei fazer a alteração mas não consegui.

Valeu.

[7] Comentário enviado por carlosrfjunior em 24/09/2009 - 08:47h

Bom dia!

Para definir um grupo manual, altere todos .$result[0]["primarygroupid"][0]. para o ID do seu grupo!
Exemplo:

de:
"INSERT INTO `sistemas` VALUES ('".$result[0]["primarygroupid"][0]."', '".$rwGroup[0]."',
'1', 'ti@meuemail.com.br', '0', null)";

Para:
"INSERT INTO `sistemas` VALUES ('1', '".$rwGroup[0]."',
'1', 'ti@meuemail.com.br', '0', null)";

Abraços!

[8] Comentário enviado por quirinobytes em 27/09/2009 - 13:48h

Saudações ilustre Carlos,

Muito interessante essa solução para manter o Controlador de Domínio como responsável pela autenticação de usuários. É muito chato ter que cadastrar o mesmo usuário em 12 sistemas diferentes, qdo existe integração, reduzimos muito o trabalho de TI e o esforço do usuário manter várias senhas atualizadas ou ao menos lembra-las.

O fato é que meu AD segue uma política de senhas, que não permite ao usuário usar senhas fáceis.
Ele mescla caracteres alfanuméricos e especias.

O problema que eu tive está sendo em autenticar usuário com senhas que contém $,#,@, e etc...

Já comentei o alert do javascript para não reclamar o erro, mas mesmo assim não loga.

Usuários do AD com senhas 123, abcdmudar e etc, funcionam perfeitamente.

Gostaria de saber se é possível usar senhas fortes para autenticar no ocomon, usando o AD como servidor de autenticação?

Alguém poderia me ajudar?

Parabéns pelo how-to e abraços...

[9] Comentário enviado por quirinobytes em 27/09/2009 - 14:40h

Pessoal

Consegui resolver o problema de login ao usar senhas com caracteres especias...

Altere o arquivo ocomon/includes/javascript/funcoes.js

Na linha 467:
alert("Esse campo só aceita carateres do alfabeto sem espaços!");

Comente essa linha 467, deixando assim:
<!-- alert("Esse campo só aceita carateres do alfabeto sem espaços!"); -->

Na linha 476:
alert("Esse campo só aceita valores alfanuméricos sem espaços ou separados por um ponto(no máximo um)!");

Comente essa linha 476, deixando assim:
<!-- alert("Esse campo só aceita valores alfanuméricos sem espaços ou separados por um ponto(no máximo um)!"); -->

Na linha 485:
alert("Esse campo só aceita valores alfanuméricos sem espaços!");

Comente essa linha 485, deixando assim:
<!-- alert("Esse campo só aceita valores alfanuméricos sem espaços!"); -->

Altere o resultado de retorno na linha 487:
return false;

Deixa a linha 487, assim:
return true;

Pronto, bastou fazer isso que já está funcionando o Login usando senhas com caracteres especiais.
Não se esqueça de alterar o tipo de login no arquivo config.inc.php para LDAP.

//define ( "AUTH_TYPE" , "SYSTEM"); //DEFAULT
define ( "AUTH_TYPE", "LDAP"); // ALTERNATIVE

Após você logar com seu usário do AD, será criado seu usuário no banco de dados do Ocomon, para fazer esse usuário ser o Administrador do Ocomon faça o seguinte:

Volte o tipo de autenticação para SYSTEM, faça login com admin/admin, clicar no menu Admin -> Usuários e edite o seu usuário passando-o para Administrador, salve e saia.

Depois basta voltar o tipo de autenticação para LDAP denovo, faça login com seu usuário e senhas do AD e administre o sistema Ocomon normalmente.

Carlos, mais uma vez, parabéns pela brilhante solução,

e Viva o LINUX !!!


[10] Comentário enviado por jacquesteixeira em 28/09/2009 - 23:12h

gente fiz todas as configuraçoes conferi erros ,mas um ultimo erro nao consegui identificar quando tento logar com um usuario do AD aparece o seguinte erro:
Fatal error: call to undefined function ldap_connect() in C:\xampp\htdocs\ocomon\includes\classes\adLDAP.php on line 360

[11] Comentário enviado por carlosrfjunior em 29/09/2009 - 10:50h

Bom dia, jacquesteixeira!

Como está a sua configuração do

protected $_account_suffix = "@meudominio.local";
protected $_base_dn = "DC=meudominio,DC=local";
protected $_domain_controllers = array ("servidorldap01.meudominio.local");

[12] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 14:46h

Olá!
Segui as instruções do Carlos, mas quando tento logar com qualquer usuário aparece a seguinte mensagem.

Parse error: syntax error, unexpected T_ELSE in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Ocomon\includes\common\login.php on line 235

Alguém poderia me ajudar??

Obrigado.

Erick Albuquerque

[13] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 15:10h

Descobri o problema era uma chave....!

[14] Comentário enviado por carlosrfjunior em 29/09/2009 - 15:12h

Boa tarde, a Todos!

Para quem está com dificuldades, segue o link do arquivo login.php com a configuração correta, o que está descrito nessa dica está faltando chave'}' para finalizar a instrução.

http://www.4shared.com/file/136310384/58c72ddc/login.html

[15] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 15:26h

Mais um duvida operacional...

Apos entrar com login/senha, aparece a msg abaixo:

Fatal error: Call to undefined function ldap_connect() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Ocomon\includes\classes\adLDAP.php on line 360

Segue config do adLDAP.php:

protected $_account_suffix = "@lita";
protected $_base_dn = "DC=lita";
protected $_domain_controllers = array ("lmsrvvm-dc");

Você pode em orientar a fazer da forma correta, caso esteja errado?

Obrigado desde já.

Erick Albuquerque

[16] Comentário enviado por carlosrfjunior em 29/09/2009 - 15:32h

Boa tarde, Erick!

Tente usar o IP da máquina no lugar do hostname
protected $_domain_controllers = array ("lmsrvvm-dc");
para
protected $_domain_controllers = array ("IPAddress");

[17] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 15:37h

Boa tarde!!

O mesmo erro!! :(

So uma coisa os arquivo de configuração do "config.ini.php", eu mantenho correto?

#define ( "AUTH_TYPE" , "SYSTEM"); //DEFAULT
define ( "AUTH_TYPE", "LDAP"); // ALTERNATIVE

/* Variáveis para conexão LDAP DEVEM SER CONFIGURADAS EM CASO DE AUTH_TYPE==LDAP DE ACORDO COM AS CONFIGURAÇÕES DO SEU SERVIDOR LDAP*/
define ( "LDAP_HOST", "192.168.254.5"); //IP do servidor LDAP
define ( "LDAP_DOMAIN", "ou=Usuarios,dc=lita");

[18] Comentário enviado por carlosrfjunior em 29/09/2009 - 15:55h

Bom a unica coisa que vai ser últil é
define ( "AUTH_TYPE", "LDAP");
o resto vc tem que configurar no arquivo adLDAP.php

[19] Comentário enviado por carlosrfjunior em 29/09/2009 - 16:01h

Outra coisa, o seu Apache está com o modulo ldap ativo?
Para que a função funcione você tem que habilitar.

phpinfo()

ldap
LDAP Support enabled
RCS Version $Id: ldap.c,v 1.161.2.3.2.1 2006/06/15 18:33:07 dmitry Exp $
Total Links 0/unlimited
API Version 2004
Vendor Name OpenLDAP
Vendor Version 20130

[20] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 16:23h

Já está habilitado no php.ini
extension=php_ldap.dll.

Mesmo assim não funcionou, você teria mais alguma dica adicional??

[]s

[21] Comentário enviado por carlosrfjunior em 29/09/2009 - 16:25h

Só do php? E do modulo do Apache vc habilitou?

[22] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 16:32h

Habilitei agora o do apache...

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so

Continuo na mesma...!

Erick Albuquerque

[23] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 16:42h

No PHPInfo, aparece da seguinte forma..

Loaded Modules
core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_asis mod_auth_basic mod_authn_default mod_authn_file mod_authnz_ldap mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_isapi util_ldap mod_log_config mod_mime mod_negotiation mod_setenvif mod_php5

[24] Comentário enviado por Erick Albuquerqu em 29/09/2009 - 17:00h

Opa consegui "resolver"

Copiei as *.dll

libsasl.dll
libeay32.dll
ssleay32.dll

Para a pasta %system32%.

Mas depois que loga aparece a seguinte msg:


Warning: ldap_close() expects parameter 1 to be resource, null given in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Ocomon\includes\classes\conecta.class.php on line 163

Fatal error: Call to a member function desconLDAP() on a non-object in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\Ocomon\includes\common\login.php on line 242

URL:http://lmsrvvm-apl:8080/ocomon/includes/common/login.php?b1f4530bdd179625a30121f9026e0e68

Se eu alterar a url para http://lmsrvvm-apl:8080/ocomon/, ele funciona...!


[25] Comentário enviado por jacquesteixeira em 29/09/2009 - 20:44h

Bom dia, jacquesteixeira!

Como está a sua configuração do

protected $_account_suffix = "@meudominio.local";
protected $_base_dn = "DC=meudominio,DC=local";
protected $_domain_controllers = array ("servidorldap01.meudominio.local");


Segue minhas configurações:
sendo q o Dominio é jacquues e o nome do servidor e win2003

protected $_account_suffix = "@jacques.local";
protected $_base_dn = "DC=jacques,DC=local";
protected $_domain_controllers = array ("win2003.jacques.local");

[26] Comentário enviado por carlosrfjunior em 30/09/2009 - 09:01h

Bom dia, jacquesteixeira!

Creio que o seu problema é o mesmo do Erick Albuquerqu. O Seu Apache não está configurado corretamente, por isso não está conseguindo localizar a funções.

Veja se no arquivo php.ini está marcado a opção extension=php_ldap.dll e se o modulo do ldap está habilitado no Apache

LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so

Caso não resolva sigua os passos dos comentários anteriores.

Ok

[27] Comentário enviado por Erick Albuquerqu em 30/09/2009 - 09:45h

Vale lembrar que só habilitar os modulos no apache e descomentar a extension no php.ini não vai adiantar é necessário copiar as *.dll para a system32, feito isso de um restart no apache e veja se funciona...

Copie as dll's abaixo que se encontra na pasta do php para a system32.

libsasl.dll
libeay32.dll
ssleay32.dll

[]s

Erick Albuquerque

[28] Comentário enviado por malladi em 16/10/2009 - 16:28h

Olá Pessoal,

Instalei o ocmomon num servidor ubuntu, tá funcionando normalmente mas não consegui colocar pra funcionar esta integração, como vi os comentários anteriores, todos são para windows e não Linux...

Agradeceria bastante se alguem pudesse me ajudar.

Marcio Ricardo

[29] Comentário enviado por Douglas Oliveira em 26/10/2009 - 10:54h

Bom Dia a Todos.

Na empresa onde trabalho, possui 2 Controladores de Dominio. Gostaria de saber, se é possível configurar o Ocomon, para reconhecer os 2 Controladores de Domínio.

Quem puder me ajudar, eu agradeço.

[30] Comentário enviado por arthurbovolon em 05/11/2009 - 09:22h

Bom dia Carlos,

Cara, to com uma duvida pra saber como faço pra colocar isso pra funcionar no meu ambiente.

Meu ocomon esta instalado em um servidor externo (Locaweb) e meu AD fica em um servidor win2003 aqui na empresa. Como teria que ser feito para que o ocomon converse com meu servidor AD aqui da empresa?

Fico no aguardo,
Abraços!

[31] Comentário enviado por marcovinycios em 12/11/2009 - 11:43h

Carlos Junior, bom dia.


Em primeiro lugar parabéns pelo seu artigo, foi muito útil. Estou usando o ocomon 2.0-RC5 que está instalado em um servidor Redhat 5.3 e está em um domínio com Windows 2008. Consegui colocar para funcionar mas tenho uma dúvida. Quando criei um usuário novo no meu AD e tentei logar no ocomon apareceu a mensagem abaixo:

IMPOSSÍVEL ACESSAR A BASE DE PERMISSÕES: LOGIN.PHP

Sabe informar o que pode estar acontecendo?

Valeu

[32] Comentário enviado por marquestome em 07/12/2009 - 13:56h

OLA... BLZ

IMPLEMENTEI TUDO CERTINHO CONFORME OS TUTO AI...

MAS AO AUTENTICAR APARECE O O SEGUINTE ERRO.


ERRO NA TENTATIVA DE INCLUIR O REGISTRO!Usuários do depurador

ALGUEM SABE ME DIZER O QUE POSSA SER.

[33] Comentário enviado por marquestome em 07/12/2009 - 15:43h

hum.... ESTE ERRO AI É PQ NAO ESTA CONSEGUINDO INCLUIR OS GRUPOS...

ONDE EU POSSO ESTA CONSERTANDO O PROBLEMA...
ALGUEM SABE...

[34] Comentário enviado por ratelgda em 08/12/2009 - 12:56h

Estou com este mesmo problema:
IMPOSSÍVEL ACESSAR A BASE DE PERMISSÕES: LOGIN.PHP

o que pode ser?

Grato.

[35] Comentário enviado por marcellphelipe em 07/01/2010 - 12:10h

Boa tarde galera..

Segui todas as dicas que foram postadas ai.. e tudo funcionou quase perfeitamente.

a unica coisa que esta me fazendo quebrar a cabeça é que, agora quando entro com um novo usuario no sistema, ao abrir a pagina inicial o navegador fica atualizando a pagina... entra num ciclo sem fim... rs

Alguem tem alguma ideia de como solucioar esse problema?

Grato!

[36] Comentário enviado por danilo.rf em 28/01/2010 - 19:56h

URGENTE estou com uma versão do Ubuntu 9.10 todas as conf´s indicadas aki tudo OK mais não integra...não lê a base de dados do meu AD

Agradeço alguma ajuda

[37] Comentário enviado por liberdade em 10/02/2010 - 17:29h

Uma grande dúvida, quando logo usando autenticação do AD eu não consigo mais usar o usuário ADMIN do sistema que me permite personalizar a parametrizar o sistema Ocomon. Agora que todos os usuários vem do AD como fazer para definir quem é administrador dos que são usuários normais?

[38] Comentário enviado por sialber em 23/02/2010 - 13:59h

Carlos,

Eu uso o LDAP em vez do AD, e tenho o problema de ter que cadastrar todos os usuários no Ocomon, mesmo usando o LDAP. Haveria como cadastrar os usuários na hora do login do LDAP dentro do Ocomon ?? assim como feito com o AD no seu artigo???

[39] Comentário enviado por mparramauricio em 18/03/2010 - 09:58h

Estou auxiliando o desenvolvedor que está implantando o Ocomon na empresa e fiquei com dúvidas no arquivo login.php.

Teria como enviar o texto do arquivo após a configuração do dominio.

Ficou confuso onde tenho que substituir as linhas e também o que tenho que habilitar no Apache.

Algúem poderia me enviar um passo a passo da alteração do arquivo e ativação do Apache para utilização com AD.

Utilizo a versão 2.0-RC6.1 e AD do Windows Server 2003

[40] Comentário enviado por neobyte em 06/05/2010 - 09:19h

Prezados,
Bom dia!

Ao Iniciar o Ocomon aparece as mensagens abaixo, alguem pode ajudar a solucionar estes Warnings ?

---
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\xampp\htdocs\ocomon\includes\classes\auth.class.php on line 52

Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\xampp\htdocs\ocomon\includes\classes\auth.class.php on line 52

Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\xampp\htdocs\ocomon\includes\functions\funcoes.inc on line 653

Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\xampp\htdocs\ocomon\includes\functions\funcoes.inc on line 665

Warning: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\xampp\htdocs\ocomon\includes\functions\funcoes.inc on line 665
---

Atenciosamente,

Anderson William

[41] Comentário enviado por djcelsodub em 06/06/2010 - 21:06h

Carlos,

Parabens pelo tutorial... funcionou perfeitamente.

Tenho apenas 2 dúvidas e gostaria de saber se pode me ajudar:

1. A empresa em que trabalho possui uma floresta do AD com 6 domínios em relação de confiança... todos formato empresa.com.br, filial1.empresa.com.br etc.
Integrei o Ocomon no domínio PAI, os usuários deste domínio logam normalmente. Mas os usuários dos domínio filhos não podem se logar. Li em um forum da Micro$oft que para utilizar a base LDAP do AD na floresta é necessário alterar a porta padrão 389 para 3268 e alterar a base DN para uma forma que seja comum com todos os domínios da floresta, mais ou menos assim: dc=com,dc=br (suprimindo o dc=empresa).

Essa é a pergunta que não quer calar: É possível alterar as configurações dessa forma para que o Ocomon alcance todos os usuários da floresta e não somente os do domínio PAI??

2. Os usuários que se logam no Ocomon e que ainda não existiam na base mysql são criados automaticamente com sucesso, porém, sao criados como operadores e não como usuários com permissão "somente abertura de chamados".

A segunda pergunta que não quer calar: O que deve ser feito para que os usuários "comuns" sejam criados da forma correta no Ocomon (somente abertura)???

Agradeço se puder me ajudar...
Parabéns novamente pelo tutorial.

Celso S. Faria
Americana/SP

[42] Comentário enviado por ecarlao em 29/07/2010 - 10:55h

Gostaria de parabenizar pelo excelente tutorial, mas estou com um problema já descrito por alguns acima. Poderiam disponibilizar o login.php pra mim?
Está aparecendo o erro
Fatal error: Call to undefined function ldap_connect() in C:\xampp\htdocs\helpdesk\includes\classes\adLDAP.php on line 360

adLDAP.php
protected $_account_suffix = "@ecovap.local";
protected $_base_dn = "DC=ecovap,DC=local";
protected $_domain_controllers = array ("172.18.0.3");

Já fiz todas as alterações citadas acima, copiei as DLLs e tudo mais.
Estou usando em um servidor Windows 2003 Server com XAMPP.

Obrigado,

[43] Comentário enviado por mparramauricio em 25/08/2010 - 13:50h

Prezado Carlos,

O tutorial está legal, mas fiquei com uma dúvida no arquivo do login.php.

Quando você pede para incluir a instrução, foi informado que há erros, e abaixo você passa a nova instrução e há um espaço em branco.

Devo copiar toda a instrução contida na página a primeira parte e logo a seguir a outra parte da instrução depois da parte em branco?

Por acaso voce não poderia enviar um arquivo login.php de exemplo com as alterações?

Obrigado

Mauricio
São Paulo - SP

[44] Comentário enviado por carlosrfjunior em 27/08/2010 - 22:21h

Olá Galera!

Desculpa pela demora, pois são muitos projetos que estou trabalhando atualmente e não tive como responder a todos!
Bom devo colocar em breve outro artigo mais elaborado em meu site www.carlosrfjunior.com.br, já com todas dúvidas
publicadas.


Abraços a todos

Inté


Carlos R F Júnior
Especialista em TI

[45] Comentário enviado por mardjmax em 24/09/2010 - 13:45h

Boa tarde gostaria de saber como resolvo este erro
esta me fritando o cerebro

Parse error: syntax error, unexpected $end in /var/www/ocomon/includes/common/login.php on line 477

[46] Comentário enviado por kflin em 24/09/2010 - 16:36h

mardjmax, manda a linha pra gente ver como tá e o que pode ser.

djcelsodub, estou com o mesmo problema dos usuários serem criados como operadores.Conseguiu descobrir algo?

Ao autor do artigo, parabéns, funcionou bacana!

[47] Comentário enviado por antoniormjr em 27/09/2010 - 13:05h

Ola Pessoal, Encontrei um BUG novo ai no codigo... Esta tudo funcionando certinho com o AD, porem o codigo nao esta conseguindo analisar a diferença entre usuarios com letra MAIUSCULA E MINUSCULA, ou seja, tenho um usuario chamado teste no ad. Se eu logar com o usuario teste ele loga normalmente e cria o usuario no ocomon, porem se eu logar com o usuario TESTE ele cria um novo usuario no AD duplicando assim minha base de usuarios no ocomon. Alguem poderia me auxiliar. VALEUUUUUUUUUUUUUUUUUUUUUUUUUUU.

[48] Comentário enviado por carlosrfjunior em 28/09/2010 - 00:14h

Boa Noite, Galera!

Estou disponibilizando um complemento para OcoMon, segue o link:
http://blog.carlosrfjunior.com.br/2010/09/integrando-o-ocomon-com-active-directory-ad/

Abraçosss

[49] Comentário enviado por kflin em 28/09/2010 - 11:41h

Opa, blz Carlos.Vou testar ainda hoje.
Faço meus comentários assim que o teste estiver concluído.

Valeu!!!

[50] Comentário enviado por kflin em 28/09/2010 - 13:10h

Substitui os arquivos, reconfigurei o adLDAP mas não rolou.Ao logar, cai na página em branco.Tem alguma idéia do que possa ser?

[51] Comentário enviado por carlosrfjunior em 28/09/2010 - 13:21h

Opa Boa Tarde, Galera!

Vacilo meu, veja se o arquivo config.inc.php existe, se existir faça um backup do arquivo e delete ou mova para outro lugar,
e tente executar novamente.

Abraçosss

[52] Comentário enviado por antoniormjr em 28/09/2010 - 16:22h

Ola Pessoal, Encontrei um BUG novo ai no codigo... Esta tudo funcionando certinho com o AD, porem o codigo nao esta conseguindo analisar a diferença entre usuarios com letra MAIUSCULA E MINUSCULA, ou seja, tenho um usuario chamado teste no ad. Se eu logar com o usuario teste ele loga normalmente e cria o usuario no ocomon, porem se eu logar com o usuario TESTE ele cria um novo usuario no AD duplicando assim minha base de usuarios no ocomon. Alguem poderia me auxiliar. VALEUUUUUUUUUUUUUUUUUUUUUUUUUUU.

[53] Comentário enviado por antoniormjr em 29/09/2010 - 09:10h

Pessoal, para solucionar esse problema preciso de alguem que manja de PHP para fazer o tratamento do usuario alterando para letra Minuscula antes de consultar o AD.

[54] Comentário enviado por carlosrfjunior em 29/09/2010 - 09:18h

Bom dia, antoniormjr!

Esse problema já foi resolvido no pacote disponibilizei http://blog.carlosrfjunior.com.br/2010/09/integrando-o-ocomon-com-active-directory-ad/

Abraços

[55] Comentário enviado por kflin em 29/09/2010 - 16:45h

Carlos,

Teria como postar uma nova dica, ou editar esta (não sei se o VOL permite) incluindo a parte do pacote?
Sei que é simples o procedimento, mas para mim não funcionou (o index.php da pasta install simplesmente não traz nada além da página em branco).
Já refiz o procedimento, mas mesmo assim não deu certo.

O que fiz? Instalei o Ocomon novamente do zero, testei seu funcionamento e estava ok.Baixei o pacote que vc disponibilizou, movi o config.inc.php pro /home (fiz backup dele), copiei os arquivos para as pastas corretas preservando as permissões dos que já existiam e acertando as dos que não existiam, configurei o novo adLDAP.php para acessar meu AD e quando fui acessar o sistema, ele direciona para a pasta install mas nada mais acontece além da tela em branco.

Obrigado pela atenção e paciência, e disposição em ajudar.

[56] Comentário enviado por kflin em 29/09/2010 - 17:03h

Carlos,

Em tempo, removi o --> do final do index.php e funcionou.Agora vou preencher o que pede na tela de configuração e ver se consigo prosseguir.

[57] Comentário enviado por carlosrfjunior em 29/09/2010 - 17:18h

Boa Tarde, kflin!

Obrigado pela informação devo atualizar o pacote corrigindo isso, testei na base windows e linux, nenhuma apresentou o problema, mas te aconselho que remova também <!-- que fica antes do -->.

Já o adLDAP.php não é necessário informar nada, pois a configuração é feita através do instalador inicial, o que você colocar lá não vai ser levado em conta pelo sistema.

Abraços


[58] Comentário enviado por kflin em 29/09/2010 - 18:03h

Estranho que se removo o <!-- dá pagina em branco de novo.Removendo só o -->, aparece só até o inicio da configuração de autenticação (Configuração da Conexão para autenticação) Tipo de conexão, e o botão confirmar.

Daí pra baixo fica em branco e não continua para inserir as configurações do AD.

[59] Comentário enviado por kflin em 30/09/2010 - 11:26h

Consegui fazer autenticar no AD com o novo pacote, mas configurei a parte do AD no config.inc.php na mão (como comentei antes, a parte de conexão ao banco ele cria).

Não sei se por ter feito deste modo, ainda persiste o problema de usuários duplicarem ao se logar com maiuscula (ou qq padrão diferente.p. ex: OCOmon, oCOmOn... cada uma tentavia destas de logon, ele cria um usuário diferente), e o novo usuário ainda continua caindo no grupo Operadores em vez de Usuário.

Antes de testar o pacote, eu havia conseguido contornar o problema do usuário ser criado como somente abertura.

O que fiz? Alterei a seguinte linha do login.php:


date("Y-m-d")."','".$U_MAILG."','1234','2','".$result[0]["primarygroupid"][0]."','0')";

Por esta:

date("Y-m-d")."','".$U_MAILG."','1234','3','2','0')";
OBS: O '3' e '2' acima (os separados por vírgulas) correpondem ao nível (3 = Somente Abertura) e área (2 = usuários).
OBS2: Só funciona na dica anterior, sem o novo pacote do Carlos, pois neste, o esquema é outro.

Com isso forço o novo usuário a ser inserido no nível Somente Abertura e na área USUÁRIOS do Ocomon. (Obviamente) ;-)

PS: Não sou programador, então não sei se é a melhor saída.Pra mim atendeu e não tive problema nos testes realizados.

No aguardo para prosseguir com os testes do novo pacote.

Abs

[60] Comentário enviado por antoniormjr em 30/09/2010 - 13:01h

Kflin e Carlos, realmente deve estar com algum "bug" no codigo. Refiz uma instalação do 0 no SuSE SLES 10SP3, a versao atual do Ocomon RC6 e apliquei a patch de atualização. Inseri os codigos ajustados na pagina do carlos e apos efetuar o acesso http://localhost/ocomon a pagina fica em branco porem o cabeçalho da pagina apresenta (configuração do ocomon). Ficarei acompanhando voces caso tenham novas novidades, e favor quando solucionar incluir no pacote de download na pagina do carlos. Abraços e vamos matar esse bixo... hehehe.

[61] Comentário enviado por kflin em 30/09/2010 - 13:51h

Antoniormjr,

Tive esse mesmo problema e acabei editando o config.inc.php, mas é melhor o que vc disse mesmo, aguardar novos testes e um update do próprio Carlos.

Por hora, estou testando ainda no esquema antigo (sem patch, mas com a correção de novos usuários cairem no nível Somente Abertura e na área USUÁRIOS), pois preciso demonstrar as funcionalidades do Ocomon e desse jeito dá pra demonstrar, e estou com o patch "na manga" pra quando o Carlos der novas instruções.

Vamos lá que tá quase! rs

[62] Comentário enviado por carlosrfjunior em 30/09/2010 - 23:05h

Boa Noite, Galera!

Desculpa-me a demora, agradeço os comentários isso me ajudará aprimorar o código e ajudará a outros que estiverem com o mesmo problema.

Ainda não consegui achar o erro devido estar funcionando perfeitamente nos ambientes que testei (Windows e Linux).
Para tentar localizar o problema posto os requisitos minímos necessário:

Apache 2.0
PHP Version 5.3.1

O instalador foi testado no Windows 7 com XAMPP 1.7.3 e Linux Debian 5.0 Lenny

Abraçosss

[63] Comentário enviado por antoniormjr em 01/10/2010 - 08:53h

Bom Dia Carlos,


Estou com essas versões porem no Suse. Para testarmos voce poderia nos auxiliar no seguinte item. Compactar a pasta Ocomon que esta dentro do srv/www/htdocs e disponibilizar no seu wordpress para download? Assim analiso os arquivos, porem voce tem que de passar a dica de como alterar as configuracoes do AD pois o arquivo adLDAP.php nao necessita mais a inclusão desses dados.

[64] Comentário enviado por kflin em 01/10/2010 - 09:47h

Opa! Valeu Carlos. O apache tá ok mas meu PHP precisa de atualização.

Vou atualizar e comento aqui se surtiu efeito.

Outra coisa, a idéia do antoniormjr parece muito boa.

[65] Comentário enviado por kflin em 01/10/2010 - 12:47h

Consegui fazer funcionar (creio que era o PHP desatualizado mesmo uma das causas), mas os erros de duplicação e nível incorreto continuam.

[66] Comentário enviado por antoniormjr em 13/10/2010 - 08:58h

Carlos, meu apache que esta desatualizado. Porem como meu Ocomon ja esta em produção com e tudo funcionando corretamente, porem so a questão do logon com usuários MAIÚSCULOS e Minúsculos estão duplicando no banco, voce poderia fazer um favor para mim editando apenas o login.php incluindo o STRTOFLOAT (acho que é assim) que seria a função do PHP para "pegar" tudo que digita no campo usuários e diminuir para minúsculo antes de autenticar no AD?

[67] Comentário enviado por carlosrfjunior em 13/10/2010 - 20:15h

Boa Noite kflin!
Mude no arquivo login.php todos os códigos $_POST['login'] para
strtoupper($_POST["login"]) -> Todas em maiúscula ou
strtolower($_POST["login"]) -> Todas minuscula.

Abraçossss...

[68] Comentário enviado por antoniormjr em 14/10/2010 - 15:53h

Ola Carlos, não consegui fazer funcionar pela alteração explicada por voce. Fiz as alterações do arquivo login.php porem nao consegui fazer funcionar, pois apresenta erro de authenticação no AD (utilizei o strtolower). Se possivel voce poderia me ajudar publicando o arquivo alterado para download em seu blog? Depois acertamos a ceva hehehe. Abraços

[69] Comentário enviado por kflin em 18/10/2010 - 17:20h

Opa, fala Carlos!!

Tentei desse jeito e tb não consegui, aí fiz assim e foi:

Alterei na linha 47 (pode variar o número da linha,dependendo de como está o login.php, mas é por aí):

De: $s_usuario=$_POST['login'];

Para: $s_usuario=strtolower($_POST['login']);

E assim rolou.Quando tenta logar com maiuscula, ele dá a mensagem de erro: IMPOSSÍVEL ACESSAR A BASE DE USUÁRIOS 02: LOGIN.PHP

Alterei essa mensagem para uma que atende minhas necessidades

Com isto, consigo ter o Ocomon customizado e em produção!!!

Obrigado pelas ajudas e dicas!!!!!!!!!!

[70] Comentário enviado por antoniormjr em 26/10/2010 - 23:22h

Kflin, Mato a PAU... funfou o meu ocomon... bah muito obrigado pela Ajuda... Nao querendo demais saberia me dizer a dica de qual linha devo alterar para apresentar a mensagem para o usuario exemplo (favor efetuar o login com fonte baixa). Outro detalhe meus usuarios novos estao indo direto para o grupo informatica, sendo que eu gostaria que todos usuarios novos fossem para o grupo usuarios, saberia me informar a solucao? Valeu

[71] Comentário enviado por kflin em 28/10/2010 - 11:38h

Opa antoniormjr, fico grato por poder ajudar e somar à grande ajuda do Carlos e de outros.

Sobre a mensagem, alterei no login.php:

De: $execUa = mysql_query($qryUa) or die('IMPOSSIVEL ACESSAR A BASE DE USUARIOS 02: LOGIN.PHP');
Para: $execUa = mysql_query($qryUa) or die('MENSAGEM CUSTOMIZADA)');

Quanto à área e nível, comentei no post 59 acima, mas repito aqui:

O que fiz? Alterei a seguinte linha do login.php:


date("Y-m-d")."','".$U_MAILG."','1234','2','".$result[0]["primarygroupid"][0]."','0')";

Por esta:

date("Y-m-d")."','".$U_MAILG."','1234','3','2','0')";
OBS: O '3' e '2' acima (os separados por vírgulas) correpondem ao nível (3 = Somente Abertura) e área (2 = usuários).

Com essas duas alterações, todo usuário novo que logar corretamente (login em minúsculas), será cadastrado na área usuários com nível de somente abertura.

[72] Comentário enviado por ottohardy em 28/10/2010 - 11:58h

Bom Dia, a todos.

Estou com um probleminha na integração do OCOMON com o AD, meu usuario integrou com o AD, e estou utilizando o mesmo no OCOMON, pois estou no modo de autenticação LDAP (o usuario admin não loga, pois logicamente não existe no meu AD). O meu problema na verdade é que todos os demais usuarios não integram, não sei o porque. Os mesmos ficam na tela de login, não apresentam nenhum erro e não saem da tela de login de jeito nenhum. Alguem passou por isso?

Otto Hardy

[73] Comentário enviado por dfabretti em 16/12/2010 - 16:09h

Pessoal,

Boa tarde.

Sempre usei o ocomon a nível operacional, e não cheguei a implementá-lo (é bem simples por sinal). Estou querendo autenticar com o AD. Fiz esse procedimento. Está acusando a seguinte mensagem 'IMPOSSÍVEL ACESSAR A BASE DE PERMISSÕES: LOGIN.PHP'. Fui pesquisar na net e vi que a oppão de register_global estava off. Liguei-o mas o problema persiste. Seguindo a risca não consegui fazer com que autentica-se pelo AD :S!

Obrigado pela atenção pessoal!

Abraços

[74] Comentário enviado por dfabretti em 17/12/2010 - 16:34h

Seguinte, consegui fazer funcionar! Tirei os caracteres até ocomon! Consegui autenticar com o meu usuário no AD! Troquei a forma para AUTH_SYSTEM e defini o meu usuário como adm! Voltei para AUTH_LDAP (config.inc.php). Fiz testes com outros usuários, funcionou perfeitamente. Troquei a senha do AD e consegui logar com a nova senha. Claro que fazendo as configurações de tirar as validaç~eos da senha e colocar tudo minúsculo no usuário (forçar usando strtolower). Só para passar para o pessoal.

Achei que não conseguiria, mas com muito persist~encia consegui, obrigado a todos.

Meu ambiente é Ubuntu 10.04 server, Apache 2 e PHP 5. Windows 2K3 AD.

Dieison Fabretti

[75] Comentário enviado por carlosrfjunior em 17/12/2010 - 23:59h

Boa Noite Dieison!

Qualquer coisa você pode consultar em meu blog: http://blog.carlosrfjunior.com.br lá tenho outro exemplo de como integrar com o AD

Ass. Carlos R F Júnior

[76] Comentário enviado por dolvieira2010rj em 11/01/2011 - 17:22h

Boa tarde, estou tento um problema com a autenticação com AD e nao consigo indentificar o problema. Quando efetuo o login me transfere para outra tela com o erro " ERRO NA TENTATIVA DE INCLUIR O REGISTRO!Users" aguem poderia me ajudar, seriamos grato se as pessoas que conseguiram poudessem disponibilizar o ocomon como um todo para o download, seria mais pratico so teriamos que cadastrar nossos dados e alterar alguns detalhes.

[77] Comentário enviado por valcenir-TI em 26/01/2011 - 13:06h

OI funcinou corretamente mais eu gostar de saber como fica no código a área é '2'

Por exemplo quando o usuário loga pela primeira vez o área responsavel é o 'TI"...

Gostaria que fosse o "AREA char(3) 2"

Pode me ajudar???



[78] Comentário enviado por gabrielladislau em 18/04/2011 - 08:53h

erro Ocomon + AD

Boa tarde

Preciso da ajuda de voces tenho o ocomon funcionando aqui mas gostaria de integrar ele com AD 2003 server, segui o tutorial que tem aqui http://www.vivaolinux.com.br/dica/Ocomon-+-Active-Directory-(AD) mas quando eu vou logar com o usuario do AD aparece a seguinte mensagem de erro o que é ?

ERRO NA TENTATIVA DE INCLUIR O REGISTRO!Proprietários criadores de diretiva de grupo

[79] Comentário enviado por lmoraes.br em 20/05/2011 - 15:19h

Eu fiz o procedimento, mas dá Usuário,senha ou permissão inválida!
AUTH_TYPE: LDAP

[80] Comentário enviado por gerllys em 18/07/2011 - 18:28h

Boa tarde, estou fazendo um monografia baseando no ocomon,
Preciso autenticar no ad, porém, estou com dificuldades. Alguem pode me enviar o arquivo login.php configurado??

email: gerllys@gmail.com

[81] Comentário enviado por lucasfelipec em 30/11/2011 - 16:26h


Ja utilizo o ocomon gostaria de colocar com meu AD, fiz todos os passo mais não da certo.


Erro
Erro no servidor
O site encontrou um erro ao recuperar http://192.168.0.33/chamados/includes/common/login.php?3p41qe9g5a3rgpu4j72q9a1vi3.

O que faço?

[82] Comentário enviado por andre.bolzan em 09/12/2011 - 13:20h

amigos estou com um pequeno problema, gostaria de pedir gentilmente a ajuda de vocês.

Meus usuário estão validando e criados normalmente, só o campo e-mail que não esta sendo completado, no banco de dados o campo esta vazio....

alguem sabe o que pode ser isso ?

Meu Ad esta em ums ervidor 2008 com nivel do 2003.

[83] Comentário enviado por dfabretti em 09/12/2011 - 16:40h

Eu estou com o mesmo problema André. Acontece muito comigo de usuários novos autenticarem, abriem o chamado e ocorrer o erro de SMTP (por não ter e-mail cadastrado no OCOMON). Tenho feito manualmente para contornar. Estou sem tempo para olhar essa questão, se alguém tiver a solução agradeço =D!

[84] Comentário enviado por andre.bolzan em 09/12/2011 - 17:36h

Resolvido !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Para todos que tiver qualquer problema com informação de usuário...

Problema esta na configuração da classe adLDAP.php, existe um parametrco $_base_dn que exige as informações do FQDN, como nos EUA os dominio são fulano.com ele colocaram apenas 2 parametros:

$_base_dn = "DC=fulano,DC=com";

MAS no brasil os dominios sempre tem .com.BR...

Inicialemtne configurei:

$_base_dn = "DC=fulano,DC=com.br";

Depois de muito pensar, tentei incluir mais um DC, ficando assim:

$_base_dn = "DC=fulano,DC=com,DC=br";

Dei uma mexidinha no Inset do usuário, agora ele pega alendo do e-mail o nome completo e o telefone.

Abs

[85] Comentário enviado por dfabretti em 12/12/2011 - 09:15h

André Bolzan,

Bom dia.

Tu poderias nos dizer exatamente onde e o que tu mudaste na configuração da inserção do usuário no AD pelo OCOMON? Não estou conseguindo achar :\!

Vlw!

[86] Comentário enviado por andre.bolzan em 14/12/2011 - 01:42h

Entra na Classe adLDAP.php e coloca os parâmetros "corretos".

Segundo manual dessa classe nosso problema ocorre porque o parâmetro $_base_dn esta incorreto, por padrão ele vem assim:

$_base_dn = "DC=,DC=";
Você deve ter cofigurado errado assim como, ex: domio é vivalinux.net.ws
$_base_dn = "DC=vivalunux, DC=net.ws";

Mas o correto é:
$_base_dn = "DC=vivalinux,DC=net,DC=ws";

Qualquer coisa avisa ou da uma olhada nesse site é dos criados dessa classe http://adldap.sourceforge.net/ lá você vai ter toda documentação, explos etc...

Abs

[87] Comentário enviado por piassa em 23/01/2012 - 18:15h

fala galera..

Estou tentando autenticar meu meus usuários do AD no ocomon e estou tendo problemas.
faço todos os passos altero as configurações conforme solicitado, mas quando logo com o usuário do dominio ou até mesmo com o usuário default.. a tela fica branca.. se remover as configurações volta tudo ao normal.
esse sintoma está relacionado a alguma configuração errada que já é conhecida por alguém. se precisar de mais informações me avise.

[88] Comentário enviado por dfabretti em 23/01/2012 - 18:17h

Piassa,

Boa tarde.

Lembro que quando ocorria esse tipo de sintoma, era por simiples erro de digitação ou mesmo um espaço e tal... Verifica direitinho se tu escreveste corretamente os dados.

[89] Comentário enviado por noslek em 24/01/2012 - 19:02h

Fala aí galera, estou começando agora com o Ocomon, e já gostaria de implanta-lo aqui no meu trabalho com autenticação no AD, alguém teria os arquivos do Ocomon para disponibilizar. Nas minhas tentativas sempre dá usuário ou senha inválidos! Obrigado!!

[90] Comentário enviado por octavio.batera em 25/01/2012 - 09:16h

Bom dia a todos.

Consegui fazer todos os procedimentos aqui, consigo autenticar pelo AD, com caracteres especiais e tudo mais... o ´unico problema que estou tendo eh que usuarios criados no grupo USUARIOS com permissao apenas de abertura, nao aparecem as opçoes na tela inicial para abrir chamados. Ele loga certinho, mas na pagina home nao aparece nenhuma opçao, a nao ser o logoff.

Alguem passou por isso, ou tem alguma dica sobre como resolver?

Desde ja, agradeço.

[91] Comentário enviado por piassa em 25/01/2012 - 09:51h

Estou com problemas para autenticação via AD, já vi vários tutoriais, refiz as configurações, mas não consigo. entendo pouco de php então fica mais dificil.
Alguém poderia postar .php pelo menos somente com a parte que é referente a essa autenticação para comparar.

Agradeço.

[92] Comentário enviado por noslek em 25/01/2012 - 18:36h

piassa, para colocar o ocomon para funcionar vc tem que configurar os arquivos config.ini.php, adLDAP.php e login.php. Se quiser eu tenho os arquivos já configurados, porém ai tem alguns erros.

[93] Comentário enviado por noslek em 25/01/2012 - 18:40h

Galera o meu está ocorrendo o seguinte erro:Fatal error: Call to undefined method adLDAP::user_info() in C:\EasyPHP-5.3.8.0\www\ocomon_2.0-RC6\includes\common\login.php on line 50
O código é esse: $result=$adldap -> user_info($_POST['login']);
Alguem já viu!!!!

[94] Comentário enviado por piassa em 26/01/2012 - 10:03h

Então noslek, conforme os tutoriais que encontrei alterei as confs dos 3 arquivos, mas acredito que o problema esteja na conf do login.php, se quiser me enviar o .php eu agradeço.
meu e-mail é: m_piassa@hotmail.com
verifico o que está diferente tento resolver e como os erros são diferentes entre sua configuração e a minha te retorno para você fazer uma comparação.


[95] Comentário enviado por noslek em 26/01/2012 - 18:33h

É galera... está dificil cada hora um erro diferente srsrsrs:
Notice: Undefined property: adLDAP::$domainControllers in C:\EasyPHP-5.3.8.0\www\ocomon_2.0-RC6\includes\classes\adLDAP.php on line 918

Warning: array_rand() expects parameter 1 to be array, null given in C:\EasyPHP-5.3.8.0\www\ocomon_2.0-RC6\includes\classes\adLDAP.php on line 918

Notice: Undefined property: adLDAP::$domainControllers in C:\EasyPHP-5.3.8.0\www\ocomon_2.0-RC6\includes\classes\adLDAP.php on line 918

Notice: Undefined variable: _base_dn in C:\EasyPHP-5.3.8.0\www\ocomon_2.0-RC6\includes\classes\adLDAP.php on line 669

Fatal error: Cannot access empty property in C:\EasyPHP-5.3.8.0\www\ocomon_2.0-RC6\includes\classes\adLDAP.php on line 669

[96] Comentário enviado por diego.luisi em 08/03/2012 - 21:54h

boa noite galera, estou batendo cabeça aqui e não consigo resolver

eu uso o centos e nao consigo autenticar no ad

no meu a tela fica branca e não carrega nada,

não sei mais o que fazer

skype diego.luisi
msn diego.luisi@hotmail.com

Por favor me ajudem, obrigado

[97] Comentário enviado por geralldoneto em 23/05/2012 - 10:21h

No meu fica o erro abaixo se alguem sobre de algo por favor me ajude

Parse error: syntax error, unexpected '.', expecting T_FUNCTION in C:\Users\ocomon\Desktop\xampp\htdocs\ocomon\includes\classes\adLDAP.php on line 112

Geraldo Neto
geralldoneto@gmail.com

[98] Comentário enviado por dalua_wil em 22/06/2012 - 11:46h

haviam alguns detalhes no "login.php" que precisavam ser corrigidas, quem quiser pode baixar o arquivo nesse link http://www.4shared.com/file/S5hXExoH/login.html

pode ocorrer também de você estar usando uma senha com caracteres especiais (muito provavelmente), então deve-se colocar a senha entre aspas duplas no arquivo "adLDAP.php"

Exemplo:
protected $_ad_password="SUA_SENHA";

[99] Comentário enviado por dalua_wil em 22/06/2012 - 11:49h

e para resolver o problema dos logins com letras maiusculas, eu apenas ativei o lower case no mysql, desse modo ele sempre irá incluir no banco mysql em minúsculo, independente de como digita

[100] Comentário enviado por rcsimao em 27/08/2012 - 12:05h

D+ deu certo aqui amigo. Muito obrigado pelo artigo.

[101] Comentário enviado por andersonsurf em 27/09/2012 - 20:39h

Pessoal boa noite!!


pessoal além da dúvida citada acima, sempre que tento cadastrar uma senha para um usuário usando símbolos como por exemplo adm@2011 aparece uma mensagem dizendo que esse campo só aceita valores alfanuméricos sem espaços. Gostaria de saber qual linha da conf abaixo tenho que alterar para resolver este problema da senha.

[102] Comentário enviado por andersonsurf em 29/09/2012 - 19:45h

Pessoal boa noite!!


Estou com um erro: Sempre que efetuo o login do usuário no Ocomon, o navegador fica atualizando sozinho em um ciclo sem parar. Gostaria de saber como faço para resolver este problema no Ocomon versão 2.0-RC6..

<?php /* Copyright 2005 Flávio Ribeiro

This file is part of OCOMON.

OCOMON is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

OCOMON is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Foobar; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

define ( "MENU_USUARIO","<link rel='stylesheet' type='text/css' href='../includes/css/estilos.css.php'>");
define ( "MENU_ADMIN","");

function NVL($VALOR){
if ($VALOR=='')
return ' '; else
return $VALOR;
}

function NL ($colspan=1) { //NEW LINE
print "<tr><td colspan='".$colspan."'> </td></tr>";
}

function valueSeparator ($VALUE, $SEP){
$NOTSEP = "";
if ($SEP == ".") $NOTSEP = ",";
if ($SEP == ",") $NOTSEP = ".";

if(strpos($VALUE,$NOTSEP)) {
$VALUE = str_replace($NOTSEP,$SEP, $VALUE);
}
if(!strpos($VALUE,$SEP)) $VALUE.=$SEP."00";
return $VALUE;
}


function TRANS($INDEX, $SUGGEST='', $ASPAS=1){
$aviso ="";
//$aviso = " <font color=green>OK</font>";
$destaca1 = ""; $destaca2 = "";
//$destaca1 = "<u>"; $destaca2 = "</u>";
//$destaca1 = "<font color=green>"; $destaca2 = "</font>";
if (!isset($_SESSION['s_language'])) $_SESSION['s_language']= "en.php";

if (is_file ("../../includes/languages/".$_SESSION['s_language'].""))
include ("../../includes/languages/".$_SESSION['s_language'].""); else
if (is_file ("../languages/".$_SESSION['s_language'].""))
include ("../languages/".$_SESSION['s_language'].""); else
if (is_file ("./includes/languages/".$_SESSION['s_language'].""))
include ("./includes/languages/".$_SESSION['s_language'].""); else
if (is_file ("../includes/languages/".$_SESSION['s_language'].""))
include ("../includes/languages/".$_SESSION['s_language'].""); else {

print "SORRY! WRONG PATH TO THE LANGUAGE FILE!<BR>See ocomon/includes/languages/ to see the available language files!";
exit;
}

if (!isset($TRANS[$INDEX])) {
if ($ASPAS) {
return '<font color=red>$TRANS[\''.$INDEX.'\']="</font>'.$SUGGEST.'<font color=red>";</font>';
} else
return '<font color=red>$TRANS['.$INDEX.']="</font>'.$SUGGEST.'<font color=red>";</font>';
}else
return $destaca1.$TRANS[$INDEX].$destaca2.$aviso;
}



function start_session(){
static $started=false;
if(!$started){
session_start();
$started = true;
}
}

function dump($variavel,$info="",$cor='magenta'){
//if ( isLocked() ){
if (trim($info)!="") {
echo "<br><font color='".$cor."'>".$info."</font>";
}

if (is_array($variavel)) {
echo "<pre>";
print_r($variavel);
echo "</pre>";
} else {
echo "<pre>";
echo $variavel;
echo "</pre>";
}
//}
}

function normaliza ($str){
//$str2 = $str;
//$str2 = toHtml($str2);
return toHtml($str);
}


function reIndexArray(&$array) {
$tmpArray = array();

if (is_array($array)){
$array = array_unique($array);
foreach($array as $value) {
$tmpArray[] = $value;
}
//unset ($array);
for ($i = 0; $i<=count($array); $i++){
array_pop($array);
}
}

$array = $tmpArray;
}



function reIndexArray_05_03_07(&$array) {
$tmpArray = array();

if (is_array($array)){
$array = array_unique($array);
foreach($array as $value) {
$tmpArray[] = $value;
}
//unset ($array);
for ($i = 0; $i<count($array); $i++){
array_pop($array);
}
}
$array = $tmpArray;
}

function reIndexArray2(&$array) {
$tmpArray = array();

$array = array_unique($array);
foreach($array as $value) {
if ($value!="")
$tmpArray[] = $value;
}
//unset ($array);
for ($i = 0; $i<count($array); $i++){
array_pop($array);
}

$array = $tmpArray;
}



function conecta($host, $bd, $user, $senha, $sistema)
{
// $host = servidor do mysql, $bd = nome do banco de dados, $user = usuário do mysql, $senha = senha dp mysql, $sistema = sistema que esta sendo usado
$conexao=mysql_connect($host,$user,$senha) or die(mysql_error());
$db=mysql_select_db($bd,$conexao);
if ($conexao == 0)
{
$retorno = "ERRO DE CONEXÃO - Servidor ".$host." - Sistema ".$sistema."<br>";
}
else
if ($db == 0)
{
$retorno = "ERRO DE CONEXÃO - Banco de dados ".$bd." - Sistema ".$sistema."<br>";
}
else
{
$retorno = "ok";
}
return $retorno;
}

function desconecta($conexao){
mysql_close($conexao);
}

function senha_system($user,$password,$tabela)
{
// $user = usuário para login, $senha = senha do usuário, $tabela = nome da tabela de usuários
$login = md5($password);
$query = "SELECT * from ".$tabela." where (login = '".$user."' and password = '".$login."')";

$resultado = mysql_query($query) or die(mysql_error());
if ($resultado == 0)
{
$retorno = "ERRO DE LOGIN - Tabela ".$tabela."<br>";
}
else
if (mysql_numrows($resultado) == 0)
{
$retorno = "ERRO DE LOGIN - Usuário ".$user."<br>";
}
else
{
$retorno = "ok";
}
return $retorno;
}

function senha_ldap($user,$password,$tabela)
{
// $user = usuário para login, $senha = senha do usuário, $tabela = nome da tabela de usuários
$login = md5($password);
$query = "SELECT * from $tabela where (login = '$user')";

$resultado = mysql_query($query) or die(mysql_error());
if ($resultado == 0)
{
$retorno = "ERRO DE LOGIN - Tabela $tabela<br>";
}
else
if (mysql_numrows($resultado) == 0)
{
$retorno = "ERRO DE LOGIN - Usuário $user<br>";
}
else
{
$retorno = "ok";
}
return $retorno;
}

function geraLog($filename,$data,$usuario,$pagina,$acao){
$conteudo = "DATA: $data\t";
$conteudo.= "USUÁRIO: $usuario\t";
$conteudo.= "PAGINA: $pagina\t";
$conteudo.= " AÇÃO: $acao\t";
$conteudo.="\n";

if (is_writable($filename)) {

if (!$handle = fopen($filename, 'a')) {
$warning = "O arquivo não pode ser aberto (".$filename.")!";
exit;
}
if (!fwrite($handle, $conteudo)) {
$warning = "O arquivo não pode ser escrito (".$filename.")!";
exit;
}
$warning= "Sucesso, (".$conteudo.") escrito no arquivo (".$filename.")!";
fclose($handle);

} else {
$warning = "O arquivo ".$filename." não tem permissão de escrita!";
}

return $warning;
}

###############################################################################



#################################################################################
function cabecalho($logo,$msg1,$msg2,$titulo)
{
return "
<table width=80% border=0 cellspacing=1 cellpadding=1 align=center bgcolor=black>
<tr bgcolor=#FFFFFF>
<td width=30%>
<div align=center><font size=3 face=Arial, sans-serif><img src=./$logo></font></div>
</td>
<td width=40%>
<div align=center><font size=3 face=Arial, sans-serif> <b>$msg1</b></font></div>
</td>
<td width=30%>
<div align=center><font size=3 face=Arial, sans-serif><b><font size=2>$msg2</font></b></font></div>
</td>
</tr>
<tr bgcolor=#FFFFFF>
<td colspan=3>
<div align=center><font size=2 face=Arial, sans-serif><b>$titulo</b></font></div>
</td>
</tr>
</table>

";
}


function testaArea($area,$rowArea,$horarios){

if (array_key_exists($rowArea,$horarios)){ //verifica se o código da área possui carga horária definida no arquivo config.inc.php
$area = $rowArea; //Recebe o valor da área de atendimento do chamado
} else $area= 1; //Carga horária default definida no arquivo config.inc.php
return $area;
}

###################################################################################################

//TIPO: tipo de relatório - formatação específica
//SQL: Query no banco de dados
//CAMPOS: Array com o nome dos campos que eu quero imprimir no relatório
//HEADERS: Array com os cabeçalhos de cada coluna do relatório
function gera_relatorio($tipo,$sql,$campos,$headers,$logo,$msg1,$msg2,$msg3){
//Estilo aplicado nos relatórios
print "<style type=\"text/css\"><!--";
print "table.relatorio_1 {width:80%; margin-left:auto; margin-right: auto; text-align:left;
border: 0px; border-spacing:1 ;background-color:white; padding-top:10px;
page-break-after: auto;}";
print "td.linha {font-family:arial; font-size:12px; line-height:0.8em;}";
print "td.linha_par {font-family:arial; font-size:12px; line-height:0.8em; background-color:#EAEAEA}";
print "td.linha_impar {font-family:arial; font-size:12px; line-height:0.8em;background-color:#C8C8C8}";
print "td.cabs {font-family:arial; font-size:12px; font-weight:bold; background-color: #A3A352;}";
print "td.foot {font-family:arial; font-size:12px; font-weight:bold; line-height:0.8em; background-color: #A8A8A8;}";
//print "{page-break-after: always;}";
print "--></STYLE>";

if (count($campos) != count($headers)) {//Verifica se cada campo da tabela possui um header!
print "O número de campos não fecha com o número de headers!";
exit;
}//if campos == headers


$commit = mysql_query($sql);
$linhas = mysql_num_rows($commit);
$k=0;
$fields ="";
$total = "";
while($k < mysql_num_fields($commit)){ //quantidade de campos retornados da consulta
$field = mysql_fetch_field($commit,$k);//Retorna um objeto com informações dos campos
$fields.=$field->name; //Joga os nomes dos campos para uma string
$k++;
} // while

if ($linhas==0) {
print "Nenhuma linha retornada pela consulta";
}else{
print cabecalho($logo,$msg1,$msg2,$msg3);


if ($tipo==1|| $tipo==0) {//Tipo definido de relatório //
print "<TABLE class=\"relatorio_1\" cellpadding=4>";
print "<tr>";
for ($i=0; $i<count($headers); $i++){
print "<td class=\"cabs\">".$headers[$i]."</td>";
}//for
print "</tr>";
$l = 0; //variável que controla se a linha é par ou impar
while($row=mysql_fetch_array($commit)){
if ($l % 2) {
$par_impar = "_par";
} else {
$par_impar = "_impar";
}//if - else
print "<tr>";
for ($i=0; $i<count($campos); $i++){ //IMPRIME CAMPO A CAMPO
print "<td class=\"linha$par_impar\">";
$sep = explode(",",$campos[$i]); //Se algum campo passado tem mais de um argumento é separado
for ($j=0; $j<count($sep); $j++){
$pos = strpos($fields,$sep[$j]); //Verifica na string gerada se o argumento passado existe como um nome de campo
if ($pos===false) {
print $sep[$j]; //Se o campo não existe é impresso literalmente
} else
print $row[$sep[$j]]; //Se o campo existe é impresso seu valor;
} //for J//
print "</td>";
}//for i//
print "</tr>";
$l++;
} // while
//RODAPÉ
print "<tr>";
for ($i=0; $i<count($campos); $i++){ //IMPRIME CAMPO A CAMPO
if ($i==count($campos)-1) {
$total = $linhas;
} else
if ($i==count($campos)-2) {
$total = "TOTAL";
}
print "<td class=\"foot\">$total</td>";
}//for
print "</tr>";
print "</table>";
} else

if ($tipo==2) {//Outra formatação para saída do relatório//
print "<table class=\"relatorio_1\">";
while($row=mysql_fetch_array($commit)){
//print "<tr>";
for ($i=0; $i<count($campos); $i++){ //IMPRIME CAMPO A CAMPO
print "<tr>";
//print "<td>".$headers[$i]."</td>";
print "<td>";
$sep = explode(",",$campos[$i]); //Se algum campo passado tem mais de um argumento é separado
for ($j=0; $j<count($sep); $j++){
$pos = strpos($fields,$sep[$j]); //Verifica na string gerada se o argumento passado existe como um nome de campo
if ($pos===false) {
print $sep[$j]; //Se o campo não existe é impresso literalmente
} else {
print $row[$sep[$j]]; //Se o campo existe é impresso seu valor;
}
//print "</td>";
} //for J//
print "</td>";


}//for i//
print "</tr>";
}//while
print "</table>";
} //fim do tipo==2 //
} //else linhas != 0 //
}//função


function menu_admin(){
return "";
}



function veremail($email)
{
if(!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$",$email))
$passou = "erro";
else
$passou = "ok";
return $passou;
}


function mensagem($msg){

return "<TABLE class='msg' ". //#EFEFE7 "STYLE='{border-bottom: solid #999999; border-top: thin solid #999999; border-left:thin ".
//"solid #999999; border-right: thin solid #999999; }' ".
"cellspacing='1' border='0' cellpadding='1' align='center' width='320'>".//#5E515B
"<TR>".
"<TD align='center'><b>".$msg."<b></td>".
"</TR>".
"</TABLE>";

}

################################################################################

function putComma ($vetor){
$chamados="";
if (is_array($vetor)){

if (count($vetor) >= 1) {

for ($i=0; $i<count($vetor); $i++){
$chamados.= "$vetor[$i],";
}
if (strlen($chamados)>0) {
$chamados = substr($chamados,0,-1);
}
} else
//$chamados = $vetor[0];
$chamados = $vetor;
} else
$chamados = $vetor;
return $chamados;
}

###############################################################################

function converte_dma_para_amd($dataform)//converte a data do formato dd/mm/aaaa para aaaa-mm-dd
{
if (empty($dataform)) {
$data = "";
} else {

if (strpos($dataform," ")){
$datatransHora = explode(" ",$dataform);

$hora = $datatransHora[1];
$datatrans = $datatransHora[0];
} else {
$hora = "00:00:00";
$datatrans = $dataform;
}
if (strpos($datatrans,"-")) {
$datatransf = explode("-",$datatrans);
} else
$datatransf = explode("/",$datatrans);
$data = "$datatransf[2]-$datatransf[1]-$datatransf[0]";
}
return $data;
}


function converte_datacomhora($dataform)//pega a data do formato aaaa-mm-dd +hora, e transforma p/ dd-mm-aaaa +hora
{
if (empty($dataform)){
$datacompleta = "";
} else {
//separando o dia e a hora
$data_hora = explode(" ",$dataform);
$data="$data_hora[0]";
$hora="$data_hora[1]";

//formatando o dia em dd-mm-aaaa
$datatransf = explode("-",$data);
$data = "$datatransf[2]/$datatransf[1]/$datatransf[0]";
$datacompleta = $data." ".$hora;
}
return $datacompleta;
}

################################################################################

function date_difference($data1, $data2)
{

if ($data1>$data2) {
$temp = $data1;
$data1 = $data2;
$data2 = $temp;
}
$s = strtotime($data2)-strtotime($data1);
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

$v = $d." dias, ".$h.":".$m.":".$s;
return $v;
}


function date_diff2($data1, $data2)
{
$s = strtotime($data2)-strtotime($data1);
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

$v = $d;
return $v;
}

function date_diff_dias($data1, $data2)
{
if (empty($data1) || empty($data2)){
$v = "";
} else {
$s = strtotime($data2)-strtotime($data1);
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

$v = $d;
}
return $v;
}



function segundos_em_horas($segundos){

$h=0;
$m=0;

while($segundos >=60){
if ($segundos >= 3600) {
while ($segundos >= 3600) { //ORDEM DE HORAS
$segundos-=3600;
$h+=1;
}
} else
if ($segundos >= 60) {
while ($segundos >= 60) {//ORDEM DE MINUTOS
$segundos-=60;
$m+=1;
}
}
}

if(strlen($h) == 1){$h = "0".$h;}; //Coloca um zero antes
if(strlen($m) == 1){$m = "0".$m;}; //Coloca um zero antes
if(strlen($segundos) == 1){$segundos = "0".$segundos;}; //Coloca um zero antes

$horas = $h.":".$m.":".$segundos;

return $horas;
}


##UTILIZAR SEMPRE PARA GRAVAR NO BANCO
function FDate ($data){ //Retorna saída no formado AAAA-MM-DD HH:mm:SS

if (!empty($data)) {
$ano = 0;
$mes = 0;
$dia = 0;
$hora = 0;
$minuto = 0;
$segundo = 0;
$Time = "00:00:00";

$DateParts= explode(" ",$data);
$Date = $DateParts[0];
if (isset($DateParts[1]))
$Time = $DateParts[1];

//formato brasileiro com hora!!!
if (ereg ("([0-9]{1,2})[/|-]([0-9]{1,2})[/|-]([0-9]{4}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $Date." ".$Time, $sep)) {

$dia = $sep[1];
$mes = $sep[2];
$ano = $sep[3];
$hora = $sep[4];
$minuto = $sep[5];
$segundo = $sep[6];
} else
//formato americano com hora
if (ereg ("([0-9]{4})[/|-]([0-9]{1,2})[/|-]([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $Date." ".$Time, $sep)) {
$dia = $sep[3];
$mes = $sep[2];
$ano = $sep[1];
$hora = $sep[4];
$minuto = $sep[5];
$segundo = $sep[6];
} else
print "Invalid date format!!";
//$data = strtotime($ano."-".$mes."-".$dia." ".$hora.":".$minuto.":".$segundo);
$data = $ano."-".$mes."-".$dia." ".$hora.":".$minuto.":".$segundo;
return $data;
} else
return "0000-00-00 00:00:00";
//...
}


#######################################################
## Exibe a data formatada conforme definido no menu de administração
function formatDate($DATE, $TIMEFORMAT = "" )
{
if($DATE != "0000-00-00 00:00:00" && !empty($DATE)) {
//if($DATE != "0000-00-00 00:00:00") {
if (strtotime($DATE) != -1) {
//DATE = "2007/05/25"; //Always American format
$Date = $_SESSION['s_date_format'];

if ($TIMEFORMAT!=""){
if (strpos($_SESSION['s_date_format']," ")){
$DateParts= explode(" ",$_SESSION['s_date_format']);
$Date = $DateParts[0];
$Time = $DateParts[1];
}
}
//$output = strftime($Date.$TIMEFORMAT, strtotime($DATE));
$output = strftime($Date, strtotime($DATE));

return $output;
} else
return "INVALID DATE FORMAT!";
} else {
return "";
}
}

function diff_em_segundos ($data1, $data2) {

$data1 = FDate($data1);
$data2 = FDate($data2);

$s = strtotime($data2)-strtotime($data1);
$secs = $s;

$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

if(strlen($h) == 1){$h = "0".$h;}; //Coloca um zero antes
if(strlen($m) == 1){$m = "0".$m;}; //Coloca um zero antes
if(strlen($s) == 1){$s = "0".$s;}; //Coloca um zero antes

$v = $d." dias ".$h.":".$m.":".$s;
$min = $m;

$dias = $d;

$horas = $h;
$minutos = $m;
$segundos = $s;

$dias *=86400; //Dia de 24 horas
$horas *=3600;
$minutos *=60;
$segundos +=$dias+$horas+$minutos;

$h = intval($segundos/3600);
$m = intval($segundos/60);

return $secs;
}



function datam($dataform)//pega a data informada, e formata dd-mm-aaaa c/ a hora atual
{
if (empty($dataform)){
$data = "";
} else {
$data = "";
$datatrans = array();
$datatransHora = array();
//$dataArray = array();

if (strpos($dataform," ")){
$datatransHora = explode(" ",$dataform);

$hora = $datatransHora[1];
$datatrans = $datatransHora[0];
} else {
$datatransHora[0] = $dataform;
$hora = strftime("%H:%M:%S");
}

if (strpos($datatransHora[0],"-")){
$datatrans = explode("-",$datatransHora[0]);
} else
if (strpos($datatransHora[0],"/")) {
$datatrans = explode("/",$datatransHora[0]);
}
$data = $datatrans[2]."-".$datatrans[1]."-".$datatrans[0];
$data = $data." ".$hora;
}
return $data;
}

function datam2($dataform)
{
if (empty($dataform)) {
$data = "";
} else {
$datatrans = explode("-",$dataform);
$data = "$datatrans[2]/$datatrans[1]/$datatrans[0]";
$hora = strftime("%H:%M:%S");
$data = $data." ".$hora;
}
return $data;
}


function inteiro ($string){

settype ($string,"integer");
return $string;
}


function horaAhora($valor,$hora){

for ($i=1; $i<=$valor; $i++){
if ($hora>=23) {
$hora=-1;
}
$hora++;
}
return $hora;
}

function datab($dataform)
{
if (empty($dataform)) {
$data = "";
} else {
$hora = substr($dataform,11,17);
$data = substr($dataform,0,10);
$datatrans = explode("-",$data);
$data = "$datatrans[2]/$datatrans[1]/$datatrans[0]";
$data = $data." ".$hora;
}
return $data;
}
function datab2($dataform)
{
if (empty($dataform)) {
$data = "";
} else {
$hora = substr($dataform,11,17);
$data = substr($dataform,0,10);
$datatrans = explode("-",$data);
$data = "$datatrans[2]/$datatrans[1]/$datatrans[0]";
}

return $data;
}


function dataRED($dataform)
{
//Formato de Data Reduzido
$hora = substr($dataform,11,17);
$data = substr($dataform,0,10);

$hora = substr($hora,0,5);

$datatrans = explode("-",$data);
$anored= substr($datatrans[0],2,2);
$data = "$datatrans[2]/$datatrans[1]/$anored";
$data = $data."-".$hora;

return $data;
}
#################################################################################


function ajusta ($palavra,$num) {
$limite = $num;
$i = strlen($palavra);
while ($i < $limite) {
$palavra.='-';
$i++;
}

return $palavra;

}

################################################################################

function envia_email_new_user($login, $nome, $email, $rand, $site)
{
$msg = "";
$msg .= "SISTEMA OCOMON\t\n";
$msg .= "Prezado ".$nome."\t\n";
$msg .= "Sua solicitação para criação do login: ".$login." foi bem sucedida!\t\n";
$msg .= "Para confirmar sua inscrição clique no link abaixo: \t\n";
$msg .= "".$site."/ocomon/geral/confirma.php?rand=".$rand." \t\n";

$mailheaders = "From: SISTEMA_OCOMON\n";
$mailheaders .= "Replay-to: ".$email."\n\n";

mail($email, "OCOMON - CONFIRMAÇÃO DE CADASTRO", $msg, $mailheaders);
return "OK";
}


function noHtml ($string) {

$string=addslashes($string);
//$string=addslashes($string);
return stripslashes(htmlspecialchars($string, ENT_QUOTES));
}

function toHtml ($string){

$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}

function isIn ($pattern, $values){

$found = false;
if (strpos($values,",")){
$valuesArray = explode(",",$values);

for ($i = 0; $i < count($valuesArray); $i++){
if ($valuesArray[$i] == (int)$pattern) $found = true;

}

} else
if ($values == (int)$pattern) $found = true;

return $found;

}

function sepComma($value,$array){
if (strpos($value,",")) {
$array = explode(",",$value);

} else $array = $value;

return $array;
}



function random (){
$rand ="";
for ($i=0; $i<10; $i++) {
$rand.= mt_rand(1,300);
}

return ($rand);
}

function transbool ($bool){
if ($bool == 0) $trans = TRANS('NOT'); else
if ($bool == 1) $trans = TRANS('YES'); else
$trans = $bool;

return $trans;
}


function transvars ($msg, $arrayEnv) {

foreach ($arrayEnv as $id=> $var){
$msg = str_replace($id, $var, $msg);
}

return $msg;
}


function send_mail($event, $e_destino,$mailConf, $msgConf, $envVars){


//$event: Tipo de evento, os eventos são definidos pela situação (abertura, edição ou assentamento)
// e pelo destino (usuário, operador ou área)
//$e_destino: e-mail de destino
//$mailConf: array com as informações de conexão smtp
//$msgConf: array com as informações de mensagem
//$envVar: array com as variáveis de ambiente
if (is_file( "./.root_dir" )) {
require_once("./includes/phpmailer/class.phpmailer.php");
} else {
require_once("../../includes/phpmailer/class.phpmailer.php");
}

$mail = new PHPMailer();
$mail->SetLanguage("en", "../../includes/phpmailer/language/");


if ($mailConf['mail_issmtp']) {
$mail->IsSMTP();
} // set mailer to use SMTP
$mail->Host = $mailConf['mail_host']; // specify main and backup server
$mail->SMTPAuth = $mailConf['mail_isauth']; // turn on SMTP authentication
$mail->Username = $mailConf['mail_user']; // SMTP username
$mail->Password = $mailConf['mail_pass']; // SMTP password

$mail->From = $mailConf['mail_from'];
//$mail->IsHTML(false);
$mail->IsHTML($mailConf['mail_ishtml']); //$mail->IsHTML(true); // set email format to HTML



$mail->FromName = $msgConf['msg_fromname'];
$mail->AddAddress($e_destino);
//$mail->AddAddress("josh@example.net", "Josh Adams");
//$mail->AddAddress("ellen@example.com"); // name is optional
$mail->AddReplyTo($msgConf['msg_replyto'], "SISTEMA OCOMON");

//$mail->WordWrap = 50; // set word wrap to 50 characters
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
$mail->Subject = transvars($msgConf['msg_subject'],$envVars);

if ($mailConf['mail_ishtml']){
$mail->Body = transvars($msgConf['msg_body'],$envVars);
} else {
$mail->Body = nl2br(transvars($msgConf['msg_altbody'],$envVars));
}

$mail->AltBody = nl2br(transvars($msgConf['msg_altbody'],$envVars));

## TO USE ONLY FOR DEVELOPERS WHEN DEBUGING
// dump ($mailConf['mail_issmtp'],'IsSMTP');
// dump ($mail->Host,'Host');
// dump ($mail->SMTPAuth,'SMTPAuth');
// dump ($mail->Username,'Username');
// dump ($mail->Password,'Password');
// dump ($mail->From,'From');
// dump ($mailConf['mail_ishtml'],'IsHTML');
// dump ($mail->FromName,'FromName');
// dump ($e_destino,'AddAddress');
// dump ($msgConf['msg_replyto'],'AddReplyTo');
// dump ($mail->Subject,'Subject');
// dump ($mail->Body,'Body');
// dump ($mail->AltBody,'AltBody');
// exit;

if(!$mail->Send())
{
echo "A mensagem não pôde ser enviada. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

return true;
}


function mail_send($mailConf,$to,$cc,$subject,$body,$replyto, $envVars){

//$mailConf: array com as informações de conexão smtp

if (is_file( "./.root_dir" )) {
require_once("./includes/phpmailer/class.phpmailer.php");
} else {
require_once("../../includes/phpmailer/class.phpmailer.php");
}

$mail = new PHPMailer();
$mail->SetLanguage("en", "../../includes/phpmailer/language/");

if ($mailConf['mail_issmtp']) {
$mail->IsSMTP();
} // set mailer to use SMTP
$mail->Host = $mailConf['mail_host']; // specify main and backup server
$mail->SMTPAuth = $mailConf['mail_isauth']; // turn on SMTP authentication
$mail->Username = $mailConf['mail_user']; // SMTP username
$mail->Password = $mailConf['mail_pass']; // SMTP password

$mail->From = $mailConf['mail_from'];
$mail->FromName =$mailConf['mail_from_name'];
$mail->IsHTML($mailConf['mail_ishtml']);


$mail->AddReplyTo($replyto, $mail->FromName =$mailConf['mail_from_name']);

// $mail->AddAddress($to);
// if (isset($cc) && $cc!=""){
// $mail->AddCC($cc);
// }

$sepTo = explode(",",$to);
if (is_array($sepTo)){
$recipients = count($sepTo);
} else
$recipients = 1;

for ($i = 0; $i < $recipients; $i++) {
$mail->AddAddress(trim($sepTo[$i]));
}

if (isset($cc) && $cc!=""){

$sepCC = explode(",",$cc);

if (is_array($sepCC)){
$copies = count($sepCC);
} else
$copies = 1;

for ($i = 0; $i < $copies; $i++) {
$mail->AddCC(trim($sepCC[$i]));
}
}


//$mail->Subject = $subject;
$mail->Subject = transvars($subject,$envVars);

if ($mailConf['mail_ishtml']){
//$mail->Body = nl2br($body);
$mail->Body = nl2br(transvars($body,$envVars));
} else {
//$mail->Body = nl2br($body);
$mail->Body = nl2br(transvars($body,$envVars));
}

$mail->AltBody = nl2br($body);

if(!$mail->Send())
{
echo "A mensagem não pôde ser enviada. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
//exit;
}

return true;
}



function showArray($array){
print "<pre>";
print_r ($array);
print "</pre>";
return true;
}

function isImage($type){
if(eregi("^image\/(pjpeg|jpeg|png|gif|x-ms-bmp)$", $type))
return true; else
return false;
}

function noSpace($WORD) {

$newWord = trim(str_replace(" ","_", $WORD));
return $newWord;
}


function upload($img_file,$config, $FILE_TYPES="%%IMG%") {
// Prepara a variável caso o formulário tenha sido postado
$arquivo = isset($_FILES[$img_file]) ? $_FILES[$img_file] : FALSE;

/* $config = array();
// Tamano máximo da imagem, em bytes
$config["tamanho"] = 307200; //Aproximadamente 300k
// Largura Máxima, em pixels
$config["largura"] = 800;
// Altura Máxima, em pixels
$config["altura"] = 600;*/

$saida = "OK";

if($arquivo) {
$erro = array();

// Verifica o mime-type do arquivo para ver se é de imagem.
// Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
//
// if(!eregi("\.(jpg|jpeg|bmp|gif|png){1}$", $arquivo["name"])) {
// $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; }
//
// Mas, o que ocorre é que alguns usuários mal-intencionados, podem pegar um vírus .exe e simplesmente mudar a extensão
// para alguma das imagens e enviar. Então, não adiantaria em nada verificar a extensão do nome do arquivo.

$mime = array();

$TYPE = explode("%",$FILE_TYPES);

reIndexArray2($TYPE);

$mime['PDF'] = "application\/pdf";
$mime['TXT'] = "text\/plain";
$mime['RTF'] = "application\/rtf";
$mime['HTML'] = "text\/html";
$mime['IMG'] = "image\/(pjpeg|jpeg|png|gif|x-ms-bmp)";

$mime['ODF'] = "application\/vnd.oasis.opendocument.(text|spreadsheet|presentation|graphics)";
$mime['OOO'] = "application\/vnd.sun.xml.(writer|calc|draw|impress)";
$mime['MSO'] = "application\/(msword|vnd.ms-excel|vnd.ms-powerpoint)";
//application/vnd.ms-powerpoint
//application/vnd.sun.xml.writer; application/vnd.sun.xml.calc; application/vnd.sun.xml.draw; application/vnd.sun.xml.impress

//if(preg_match('/^(.*)\.(doc|txt|pdf|xls|htm|html|rtf)$/', $arquivo["type"])) //application/pdf
//if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {

$typeOK = false;
$types = "";
for ($i=0; $i<count($TYPE); $i++) {
if (strlen($types)>0) $types.=", ";
$types.=$TYPE[$i];
if(eregi("^".$mime[$TYPE[$i]]."$", $arquivo["type"])) {
$typeOK = true;
}
}

if (!$typeOK) {
$erro[] = "Arquivo em formato inválido! Os Tipos permitidos são: ".$types;

} else {
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["conf_upld_size"]) {
$kbytes = $config["conf_upld_size"]/1024;

$erro[] = "Arquivo em tamanho muito grande! O arquivo deve ser de no máximo " . $kbytes . " Kbytes.";
}

if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["conf_upld_width"]) {
$erro[] = "Largura da imagem não deve ultrapassar " . $config["conf_upld_width"] . " pixels";
}
// Verifica altura
if($tamanhos[1] > $config["conf_upld_height"]) {
$erro[] = "Altura da imagem não deve ultrapassar " . $config["conf_upld_height"] . " pixels";
}
}
}

if(sizeof($erro)) {
$saida = "<b>ALERTA:</b><br />";
foreach($erro as $err) {
$saida.=" - ".$err."<br>";
}
}

if($arquivo && !sizeof($erro)) {
//echo "<BR><BR>UPLOAD REALIZADO COM SUCESSO!";
$saida = "OK";
}

} else print "ERRO NO ARQUIVO!";

return $saida;

}


function montaArray($mysql_result,$mysql_fetch_array){
$k=0;
$valores = array();
while($k < mysql_num_fields($mysql_result)){ //quantidade de campos retornados da consulta
$field = mysql_fetch_field($mysql_result,$k);//Retorna um objeto com informações dos campos
$valores[$field->name] = $mysql_fetch_array[$field->name];
$k++;
} // while
return $valores;
}

function findAllOccurences($Haystack, $needle, $limit=0)
{
$Positions = array();
$currentOffset = 0;
$count=0;
while(($pos = strpos($Haystack, $needle, $offset)) && ($count < $limit || $limit == 0))
{
$Positions[] = $pos;
$offset = $pos + strlen($needle);
$count++;
}
return $Positions;
}


//Destaca as entradas '$string' em um texto '$texto' passado
function destaca($string, $texto) {

$string.="|".noHtml($string)."|".toHtml($string);

//$string = htmlentities($string);

$pattern = explode("|", $string);
$pattern = array_unique($pattern);
$destaque = array();

reIndexArray($pattern);

$texto2 = toHtml(strtolower($texto));
//$texto2 = htmlentities($texto);

for ($i=0; $i<count($pattern); $i++) {
$destaque = "<font style='{background-color:yellow}'>".$pattern[$i]."</font></b>";
$texto2 = str_replace(strtolower($pattern[$i]), strtolower($destaque), $texto2);
}

return $texto2;
}


function valida($CAMPO, $VALOR, $TIPO, $OBRIGATORIO, &$ERR) {

$LISTA = array();
$LISTA['INTFULL'] = "/^\d*$/"; //INTEIRO QUALQUER
$LISTA['INTEIRO'] = "/^[1-9]\d*$/"; //NÃO INICIADOS POR ZERO
$LISTA['MAIL']= "/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/";
$LISTA['DATA'] = "/^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/";
$LISTA['DATA_'] = "/^((0?[1-9]|[12]\d)\-(0?[1-9]|1[0-2])|30\-(0?[13-9]|1[0-2])|31\-(0?[13578]|1[02]))\-(19|20)?\d{2}$/";
$LISTA['DATAHORA'] = "/^(((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2})[ ]([0-1]\d|2[0-3])+:[0-5]\d:[0-5]\d$/";
$LISTA['MOEDA'] = "/^\d{1,3}(\.\d{3})*\,\d{2}$/";
$LISTA['MOEDASIMP'] = "/^\d*\,\d{2}$/";
$LISTA['ETIQUETA'] = "/^[1-9]\d*(\,\d+)*$/"; //expressão para validar consultas separadas por vírgula;
$LISTA['ALFA'] = "/^[A-Z]|[a-z]([A-Z]|[a-z])*$/";
$LISTA['ALFANUM'] = "/^([A-Z]|[a-z]|[0-9])([A-Z]|[a-z]|[0-9])*\.?([A-Z]|[a-z]|[0-9])([A-Z]|[a-z]|[0-9])*$/"; //Valores alfanumérias aceitando separação com no máximo um ponto.
$LISTA['ALFAFULL'] = "/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*$/";
$LISTA['FONE'] = "/^(([+][\d]{2,2})?([-]|[\s])?[\d]*([-]|[\s])?[\d]+)+([,][\s]([+][\d]{2,2})?([-]|[\s])?[\d]*([-]|[\s])?[\d]+)*$/";
$LISTA['COR'] = "/^([#]([A-F]|[a-f]|[\d]){6,6})|([I][M][G][_][D][E][F][A][U][L][T])$/";

$ERRO = array();
$ERRO['OBRIGATORIO'] = "O campo ".$CAMPO." é obrigatório!";
$ERRO['INTFULL'] = "O campo ".$CAMPO." deve conter apenas numeros inteiros!";
$ERRO['INTEIRO'] = "O campo ".$CAMPO." deve conter apenas numeros inteiros não iniciados por ZERO!";
$ERRO['MAIL']= "Formato de e-mail inválido!";
$ERRO['DATA'] ="Formato de data invalido! dd/mm/aaaa";
$ERRO['DATA_'] = "Formato de data invalido! dd-mm-aaaa";
$ERRO['DATAHORA'] = "Formato de data invalido! dd/mm/aaaa H:m:s";
$ERRO['MOEDA'] = "Formato de moeda inválido!";
$ERRO['MOEDASIMP'] ="Formato de moeda inválido! XXXXXX,XX";
$ERRO['ETIQUETA'] = "o Formato do campo ".$CAMPO." deve ser de valores inteiros não iniciados por Zero e separados por vírgula!";
$ERRO['ALFA'] = "Esse o campo ".$CAMPO." só aceita carateres do alfabeto sem espaços!";
$ERRO['ALFANUM'] ="O campo ".$CAMPO." só aceita valores alfanuméricos sem espaços ou separados por um ponto(no máximo um)!";
$ERRO['ALFAFULL'] = "O campo ".$CAMPO." só aceita valores alfanuméricos sem espaços!";
$ERRO['FONE'] = "O campo ".$CAMPO." só aceita valores formatados para telefones (algarismos, traços e espaços) separados por vírgula.";
$ERRO['COR'] ="O campo ".$CAMPO." só aceita valores formatados para cores HTML! Ex: #FFCC99";

if ($LISTA[$TIPO] == '') {
print "ÍNDICE INVÁLIDO!";
return false;
} else
if ($OBRIGATORIO) {
if ($VALOR=='') {
$ERR = $ERRO['OBRIGATORIO'];
return false;
} else
if (preg_match($LISTA[$TIPO], $VALOR)) {
return true;
} else {
$ERR = $ERRO[$TIPO];
return false;
}

} else
if ($VALOR != ''){
if (preg_match($LISTA[$TIPO], $VALOR)) {
return true;
} else {
$ERR = $ERRO[$TIPO];
return false;
}

} else {
return true;
}
}


function getDirFileNames($dir, $ext='php|PHP') {
// Abre um diretorio conhecido, e faz a leitura de seu conteudo de acordo com a extensão solicitada

$array = array();
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file != '..' && $file !='.' && $file !=''){
if (eregi("\.(".$ext."){1}$", $file))
$array[]=$file;
}
}
closedir($dh);
}
}
return $array;
}

function dPgetIniSize($val) {
$val = trim($val);
if (strlen($val <= 1)) return $val;
$last = $val{strlen($val)-1};
switch($last) {
case 'k':
case 'K':
return (int) $val * 1024;
break;
case 'm':
case 'M':
return (int) $val * 1048576;
break;
default:
return $val;
}
}

?>





[103] Comentário enviado por fabiomoreira em 22/10/2012 - 20:04h

Colegas,

Alterei as configurações. Peguei até o arquivo login.php que o dalua_wil disponibilizou.
Mas ainda aparece a seguinte mensagem:

Usuário,senha ou permissão inválida!
AUTH_TYPE: SYSTEM

Eu logo com usuario local, mas com as contas do AD essa mensagem aparece.

Estou usando Centos, Windows 2008 R2

Att.,

Fabio

[104] Comentário enviado por fabiomoreira em 23/10/2012 - 10:12h

Anderson,

Esse usuário que voce logou é o admin ?

Normalmente isso acontece quando esta marcado a opção usuário somente de abertura.

Att.,
Fabio


[102] Comentário enviado por andersonsurf em 29/09/2012 - 19:45h:

Pessoal boa noite!!


Estou com um erro: Sempre que efetuo o login do usuário no Ocomon, o navegador fica atualizando sozinho em um ciclo sem parar. Gostaria de saber como faço para resolver este problema no Ocomon versão 2.0-RC6..

<?php /* Copyright 2005 Flávio Ribeiro

This file is part of OCOMON.

OCOMON is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

OCOMON is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Foobar; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

define ( "MENU_USUARIO","<link rel='stylesheet' type='text/css' href='../includes/css/estilos.css.php'>");
define ( "MENU_ADMIN","");

function NVL($VALOR){
if ($VALOR=='')
return '&nbsp'; else
return $VALOR;
}

function NL ($colspan=1) { //NEW LINE
print "<tr><td colspan='".$colspan."'>&nbsp;</td></tr>";
}

function valueSeparator ($VALUE, $SEP){
$NOTSEP = "";
if ($SEP == ".") $NOTSEP = ",";
if ($SEP == ",") $NOTSEP = ".";

if(strpos($VALUE,$NOTSEP)) {
$VALUE = str_replace($NOTSEP,$SEP, $VALUE);
}
if(!strpos($VALUE,$SEP)) $VALUE.=$SEP."00";
return $VALUE;
}


function TRANS($INDEX, $SUGGEST='', $ASPAS=1){
$aviso ="";
//$aviso = "&nbsp;<font color=green>OK</font>";
$destaca1 = ""; $destaca2 = "";
//$destaca1 = "<u>"; $destaca2 = "</u>";
//$destaca1 = "<font color=green>"; $destaca2 = "</font>";
if (!isset($_SESSION['s_language'])) $_SESSION['s_language']= "en.php";

if (is_file ("../../includes/languages/".$_SESSION['s_language'].""))
include ("../../includes/languages/".$_SESSION['s_language'].""); else
if (is_file ("../languages/".$_SESSION['s_language'].""))
include ("../languages/".$_SESSION['s_language'].""); else
if (is_file ("./includes/languages/".$_SESSION['s_language'].""))
include ("./includes/languages/".$_SESSION['s_language'].""); else
if (is_file ("../includes/languages/".$_SESSION['s_language'].""))
include ("../includes/languages/".$_SESSION['s_language'].""); else {

print "SORRY! WRONG PATH TO THE LANGUAGE FILE!<BR>See ocomon/includes/languages/ to see the available language files!";
exit;
}

if (!isset($TRANS[$INDEX])) {
if ($ASPAS) {
return '<font color=red>$TRANS[\''.$INDEX.'\']="</font>'.$SUGGEST.'<font color=red>";</font>';
} else
return '<font color=red>$TRANS['.$INDEX.']="</font>'.$SUGGEST.'<font color=red>";</font>';
}else
return $destaca1.$TRANS[$INDEX].$destaca2.$aviso;
}



function start_session(){
static $started=false;
if(!$started){
session_start();
$started = true;
}
}

function dump($variavel,$info="",$cor='magenta'){
//if ( isLocked() ){
if (trim($info)!="") {
echo "<br><font color='".$cor."'>".$info."</font>";
}

if (is_array($variavel)) {
echo "<pre>";
print_r($variavel);
echo "</pre>";
} else {
echo "<pre>";
echo $variavel;
echo "</pre>";
}
//}
}

function normaliza ($str){
//$str2 = $str;
//$str2 = toHtml($str2);
return toHtml($str);
}


function reIndexArray(&$array) {
$tmpArray = array();

if (is_array($array)){
$array = array_unique($array);
foreach($array as $value) {
$tmpArray[] = $value;
}
//unset ($array);
for ($i = 0; $i<=count($array); $i++){
array_pop($array);
}
}

$array = $tmpArray;
}



function reIndexArray_05_03_07(&$array) {
$tmpArray = array();

if (is_array($array)){
$array = array_unique($array);
foreach($array as $value) {
$tmpArray[] = $value;
}
//unset ($array);
for ($i = 0; $i<count($array); $i++){
array_pop($array);
}
}
$array = $tmpArray;
}

function reIndexArray2(&$array) {
$tmpArray = array();

$array = array_unique($array);
foreach($array as $value) {
if ($value!="")
$tmpArray[] = $value;
}
//unset ($array);
for ($i = 0; $i<count($array); $i++){
array_pop($array);
}

$array = $tmpArray;
}



function conecta($host, $bd, $user, $senha, $sistema)
{
// $host = servidor do mysql, $bd = nome do banco de dados, $user = usuário do mysql, $senha = senha dp mysql, $sistema = sistema que esta sendo usado
$conexao=mysql_connect($host,$user,$senha) or die(mysql_error());
$db=mysql_select_db($bd,$conexao);
if ($conexao == 0)
{
$retorno = "ERRO DE CONEXÃO - Servidor ".$host." - Sistema ".$sistema."<br>";
}
else
if ($db == 0)
{
$retorno = "ERRO DE CONEXÃO - Banco de dados ".$bd." - Sistema ".$sistema."<br>";
}
else
{
$retorno = "ok";
}
return $retorno;
}

function desconecta($conexao){
mysql_close($conexao);
}

function senha_system($user,$password,$tabela)
{
// $user = usuário para login, $senha = senha do usuário, $tabela = nome da tabela de usuários
$login = md5($password);
$query = "SELECT * from ".$tabela." where (login = '".$user."' and password = '".$login."')";

$resultado = mysql_query($query) or die(mysql_error());
if ($resultado == 0)
{
$retorno = "ERRO DE LOGIN - Tabela ".$tabela."<br>";
}
else
if (mysql_numrows($resultado) == 0)
{
$retorno = "ERRO DE LOGIN - Usuário ".$user."<br>";
}
else
{
$retorno = "ok";
}
return $retorno;
}

function senha_ldap($user,$password,$tabela)
{
// $user = usuário para login, $senha = senha do usuário, $tabela = nome da tabela de usuários
$login = md5($password);
$query = "SELECT * from $tabela where (login = '$user')";

$resultado = mysql_query($query) or die(mysql_error());
if ($resultado == 0)
{
$retorno = "ERRO DE LOGIN - Tabela $tabela<br>";
}
else
if (mysql_numrows($resultado) == 0)
{
$retorno = "ERRO DE LOGIN - Usuário $user<br>";
}
else
{
$retorno = "ok";
}
return $retorno;
}

function geraLog($filename,$data,$usuario,$pagina,$acao){
$conteudo = "DATA: $data\t";
$conteudo.= "USUÁRIO: $usuario\t";
$conteudo.= "PAGINA: $pagina\t";
$conteudo.= " AÇÃO: $acao\t";
$conteudo.="\n";

if (is_writable($filename)) {

if (!$handle = fopen($filename, 'a')) {
$warning = "O arquivo não pode ser aberto (".$filename.")!";
exit;
}
if (!fwrite($handle, $conteudo)) {
$warning = "O arquivo não pode ser escrito (".$filename.")!";
exit;
}
$warning= "Sucesso, (".$conteudo.") escrito no arquivo (".$filename.")!";
fclose($handle);

} else {
$warning = "O arquivo ".$filename." não tem permissão de escrita!";
}

return $warning;
}

###############################################################################



#################################################################################
function cabecalho($logo,$msg1,$msg2,$titulo)
{
return "
<table width=80% border=0 cellspacing=1 cellpadding=1 align=center bgcolor=black>
<tr bgcolor=#FFFFFF>
<td width=30%>
<div align=center><font size=3 face=Arial, sans-serif><img src=./$logo></font></div>
</td>
<td width=40%>
<div align=center><font size=3 face=Arial, sans-serif> <b>$msg1</b></font></div>
</td>
<td width=30%>
<div align=center><font size=3 face=Arial, sans-serif><b><font size=2>$msg2</font></b></font></div>
</td>
</tr>
<tr bgcolor=#FFFFFF>
<td colspan=3>
<div align=center><font size=2 face=Arial, sans-serif><b>$titulo</b></font></div>
</td>
</tr>
</table>

";
}


function testaArea($area,$rowArea,$horarios){

if (array_key_exists($rowArea,$horarios)){ //verifica se o código da área possui carga horária definida no arquivo config.inc.php
$area = $rowArea; //Recebe o valor da área de atendimento do chamado
} else $area= 1; //Carga horária default definida no arquivo config.inc.php
return $area;
}

###################################################################################################

//TIPO: tipo de relatório - formatação específica
//SQL: Query no banco de dados
//CAMPOS: Array com o nome dos campos que eu quero imprimir no relatório
//HEADERS: Array com os cabeçalhos de cada coluna do relatório
function gera_relatorio($tipo,$sql,$campos,$headers,$logo,$msg1,$msg2,$msg3){
//Estilo aplicado nos relatórios
print "<style type=\"text/css\"><!--";
print "table.relatorio_1 {width:80%; margin-left:auto; margin-right: auto; text-align:left;
border: 0px; border-spacing:1 ;background-color:white; padding-top:10px;
page-break-after: auto;}";
print "td.linha {font-family:arial; font-size:12px; line-height:0.8em;}";
print "td.linha_par {font-family:arial; font-size:12px; line-height:0.8em; background-color:#EAEAEA}";
print "td.linha_impar {font-family:arial; font-size:12px; line-height:0.8em;background-color:#C8C8C8}";
print "td.cabs {font-family:arial; font-size:12px; font-weight:bold; background-color: #A3A352;}";
print "td.foot {font-family:arial; font-size:12px; font-weight:bold; line-height:0.8em; background-color: #A8A8A8;}";
//print "{page-break-after: always;}";
print "--></STYLE>";

if (count($campos) != count($headers)) {//Verifica se cada campo da tabela possui um header!
print "O número de campos não fecha com o número de headers!";
exit;
}//if campos == headers


$commit = mysql_query($sql);
$linhas = mysql_num_rows($commit);
$k=0;
$fields ="";
$total = "";
while($k < mysql_num_fields($commit)){ //quantidade de campos retornados da consulta
$field = mysql_fetch_field($commit,$k);//Retorna um objeto com informações dos campos
$fields.=$field->name; //Joga os nomes dos campos para uma string
$k++;
} // while

if ($linhas==0) {
print "Nenhuma linha retornada pela consulta";
}else{
print cabecalho($logo,$msg1,$msg2,$msg3);


if ($tipo==1|| $tipo==0) {//Tipo definido de relatório //
print "<TABLE class=\"relatorio_1\" cellpadding=4>";
print "<tr>";
for ($i=0; $i<count($headers); $i++){
print "<td class=\"cabs\">".$headers[$i]."</td>";
}//for
print "</tr>";
$l = 0; //variável que controla se a linha é par ou impar
while($row=mysql_fetch_array($commit)){
if ($l % 2) {
$par_impar = "_par";
} else {
$par_impar = "_impar";
}//if - else
print "<tr>";
for ($i=0; $i<count($campos); $i++){ //IMPRIME CAMPO A CAMPO
print "<td class=\"linha$par_impar\">";
$sep = explode(",",$campos[$i]); //Se algum campo passado tem mais de um argumento é separado
for ($j=0; $j<count($sep); $j++){
$pos = strpos($fields,$sep[$j]); //Verifica na string gerada se o argumento passado existe como um nome de campo
if ($pos===false) {
print $sep[$j]; //Se o campo não existe é impresso literalmente
} else
print $row[$sep[$j]]; //Se o campo existe é impresso seu valor;
} //for J//
print "</td>";
}//for i//
print "</tr>";
$l++;
} // while
//RODAPÉ
print "<tr>";
for ($i=0; $i<count($campos); $i++){ //IMPRIME CAMPO A CAMPO
if ($i==count($campos)-1) {
$total = $linhas;
} else
if ($i==count($campos)-2) {
$total = "TOTAL";
}
print "<td class=\"foot\">$total</td>";
}//for
print "</tr>";
print "</table>";
} else

if ($tipo==2) {//Outra formatação para saída do relatório//
print "<table class=\"relatorio_1\">";
while($row=mysql_fetch_array($commit)){
//print "<tr>";
for ($i=0; $i<count($campos); $i++){ //IMPRIME CAMPO A CAMPO
print "<tr>";
//print "<td>".$headers[$i]."</td>";
print "<td>";
$sep = explode(",",$campos[$i]); //Se algum campo passado tem mais de um argumento é separado
for ($j=0; $j<count($sep); $j++){
$pos = strpos($fields,$sep[$j]); //Verifica na string gerada se o argumento passado existe como um nome de campo
if ($pos===false) {
print $sep[$j]; //Se o campo não existe é impresso literalmente
} else {
print $row[$sep[$j]]; //Se o campo existe é impresso seu valor;
}
//print "</td>";
} //for J//
print "</td>";


}//for i//
print "</tr>";
}//while
print "</table>";
} //fim do tipo==2 //
} //else linhas != 0 //
}//função


function menu_admin(){
return "";
}



function veremail($email)
{
if(!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$",$email))
$passou = "erro";
else
$passou = "ok";
return $passou;
}


function mensagem($msg){

return "<TABLE class='msg' ". //#EFEFE7 "STYLE='{border-bottom: solid #999999; border-top: thin solid #999999; border-left:thin ".
//"solid #999999; border-right: thin solid #999999; }' ".
"cellspacing='1' border='0' cellpadding='1' align='center' width='320'>".//#5E515B
"<TR>".
"<TD align='center'><b>".$msg."<b></td>".
"</TR>".
"</TABLE>";

}

################################################################################

function putComma ($vetor){
$chamados="";
if (is_array($vetor)){

if (count($vetor) >= 1) {

for ($i=0; $i<count($vetor); $i++){
$chamados.= "$vetor[$i],";
}
if (strlen($chamados)>0) {
$chamados = substr($chamados,0,-1);
}
} else
//$chamados = $vetor[0];
$chamados = $vetor;
} else
$chamados = $vetor;
return $chamados;
}

###############################################################################

function converte_dma_para_amd($dataform)//converte a data do formato dd/mm/aaaa para aaaa-mm-dd
{
if (empty($dataform)) {
$data = "";
} else {

if (strpos($dataform," ")){
$datatransHora = explode(" ",$dataform);

$hora = $datatransHora[1];
$datatrans = $datatransHora[0];
} else {
$hora = "00:00:00";
$datatrans = $dataform;
}
if (strpos($datatrans,"-")) {
$datatransf = explode("-",$datatrans);
} else
$datatransf = explode("/",$datatrans);
$data = "$datatransf[2]-$datatransf[1]-$datatransf[0]";
}
return $data;
}


function converte_datacomhora($dataform)//pega a data do formato aaaa-mm-dd +hora, e transforma p/ dd-mm-aaaa +hora
{
if (empty($dataform)){
$datacompleta = "";
} else {
//separando o dia e a hora
$data_hora = explode(" ",$dataform);
$data="$data_hora[0]";
$hora="$data_hora[1]";

//formatando o dia em dd-mm-aaaa
$datatransf = explode("-",$data);
$data = "$datatransf[2]/$datatransf[1]/$datatransf[0]";
$datacompleta = $data." ".$hora;
}
return $datacompleta;
}

################################################################################

function date_difference($data1, $data2)
{

if ($data1>$data2) {
$temp = $data1;
$data1 = $data2;
$data2 = $temp;
}
$s = strtotime($data2)-strtotime($data1);
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

$v = $d." dias, ".$h.":".$m.":".$s;
return $v;
}


function date_diff2($data1, $data2)
{
$s = strtotime($data2)-strtotime($data1);
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

$v = $d;
return $v;
}

function date_diff_dias($data1, $data2)
{
if (empty($data1) || empty($data2)){
$v = "";
} else {
$s = strtotime($data2)-strtotime($data1);
$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

$v = $d;
}
return $v;
}



function segundos_em_horas($segundos){

$h=0;
$m=0;

while($segundos >=60){
if ($segundos >= 3600) {
while ($segundos >= 3600) { //ORDEM DE HORAS
$segundos-=3600;
$h+=1;
}
} else
if ($segundos >= 60) {
while ($segundos >= 60) {//ORDEM DE MINUTOS
$segundos-=60;
$m+=1;
}
}
}

if(strlen($h) == 1){$h = "0".$h;}; //Coloca um zero antes
if(strlen($m) == 1){$m = "0".$m;}; //Coloca um zero antes
if(strlen($segundos) == 1){$segundos = "0".$segundos;}; //Coloca um zero antes

$horas = $h.":".$m.":".$segundos;

return $horas;
}


##UTILIZAR SEMPRE PARA GRAVAR NO BANCO
function FDate ($data){ //Retorna saída no formado AAAA-MM-DD HH:mm:SS

if (!empty($data)) {
$ano = 0;
$mes = 0;
$dia = 0;
$hora = 0;
$minuto = 0;
$segundo = 0;
$Time = "00:00:00";

$DateParts= explode(" ",$data);
$Date = $DateParts[0];
if (isset($DateParts[1]))
$Time = $DateParts[1];

//formato brasileiro com hora!!!
if (ereg ("([0-9]{1,2})[/|-]([0-9]{1,2})[/|-]([0-9]{4}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $Date." ".$Time, $sep)) {

$dia = $sep[1];
$mes = $sep[2];
$ano = $sep[3];
$hora = $sep[4];
$minuto = $sep[5];
$segundo = $sep[6];
} else
//formato americano com hora
if (ereg ("([0-9]{4})[/|-]([0-9]{1,2})[/|-]([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $Date." ".$Time, $sep)) {
$dia = $sep[3];
$mes = $sep[2];
$ano = $sep[1];
$hora = $sep[4];
$minuto = $sep[5];
$segundo = $sep[6];
} else
print "Invalid date format!!";
//$data = strtotime($ano."-".$mes."-".$dia." ".$hora.":".$minuto.":".$segundo);
$data = $ano."-".$mes."-".$dia." ".$hora.":".$minuto.":".$segundo;
return $data;
} else
return "0000-00-00 00:00:00";
//...
}


#######################################################
## Exibe a data formatada conforme definido no menu de administração
function formatDate($DATE, $TIMEFORMAT = "" )
{
if($DATE != "0000-00-00 00:00:00" && !empty($DATE)) {
//if($DATE != "0000-00-00 00:00:00") {
if (strtotime($DATE) != -1) {
//DATE = "2007/05/25"; //Always American format
$Date = $_SESSION['s_date_format'];

if ($TIMEFORMAT!=""){
if (strpos($_SESSION['s_date_format']," ")){
$DateParts= explode(" ",$_SESSION['s_date_format']);
$Date = $DateParts[0];
$Time = $DateParts[1];
}
}
//$output = strftime($Date.$TIMEFORMAT, strtotime($DATE));
$output = strftime($Date, strtotime($DATE));

return $output;
} else
return "INVALID DATE FORMAT!";
} else {
return "";
}
}

function diff_em_segundos ($data1, $data2) {

$data1 = FDate($data1);
$data2 = FDate($data2);

$s = strtotime($data2)-strtotime($data1);
$secs = $s;

$d = intval($s/86400);
$s -= $d*86400;
$h = intval($s/3600);
$s -= $h*3600;
$m = intval($s/60);
$s -= $m*60;

if(strlen($h) == 1){$h = "0".$h;}; //Coloca um zero antes
if(strlen($m) == 1){$m = "0".$m;}; //Coloca um zero antes
if(strlen($s) == 1){$s = "0".$s;}; //Coloca um zero antes

$v = $d." dias ".$h.":".$m.":".$s;
$min = $m;

$dias = $d;

$horas = $h;
$minutos = $m;
$segundos = $s;

$dias *=86400; //Dia de 24 horas
$horas *=3600;
$minutos *=60;
$segundos +=$dias+$horas+$minutos;

$h = intval($segundos/3600);
$m = intval($segundos/60);

return $secs;
}



function datam($dataform)//pega a data informada, e formata dd-mm-aaaa c/ a hora atual
{
if (empty($dataform)){
$data = "";
} else {
$data = "";
$datatrans = array();
$datatransHora = array();
//$dataArray = array();

if (strpos($dataform," ")){
$datatransHora = explode(" ",$dataform);

$hora = $datatransHora[1];
$datatrans = $datatransHora[0];
} else {
$datatransHora[0] = $dataform;
$hora = strftime("%H:%M:%S");
}

if (strpos($datatransHora[0],"-")){
$datatrans = explode("-",$datatransHora[0]);
} else
if (strpos($datatransHora[0],"/")) {
$datatrans = explode("/",$datatransHora[0]);
}
$data = $datatrans[2]."-".$datatrans[1]."-".$datatrans[0];
$data = $data." ".$hora;
}
return $data;
}

function datam2($dataform)
{
if (empty($dataform)) {
$data = "";
} else {
$datatrans = explode("-",$dataform);
$data = "$datatrans[2]/$datatrans[1]/$datatrans[0]";
$hora = strftime("%H:%M:%S");
$data = $data." ".$hora;
}
return $data;
}


function inteiro ($string){

settype ($string,"integer");
return $string;
}


function horaAhora($valor,$hora){

for ($i=1; $i<=$valor; $i++){
if ($hora>=23) {
$hora=-1;
}
$hora++;
}
return $hora;
}

function datab($dataform)
{
if (empty($dataform)) {
$data = "";
} else {
$hora = substr($dataform,11,17);
$data = substr($dataform,0,10);
$datatrans = explode("-",$data);
$data = "$datatrans[2]/$datatrans[1]/$datatrans[0]";
$data = $data." ".$hora;
}
return $data;
}
function datab2($dataform)
{
if (empty($dataform)) {
$data = "";
} else {
$hora = substr($dataform,11,17);
$data = substr($dataform,0,10);
$datatrans = explode("-",$data);
$data = "$datatrans[2]/$datatrans[1]/$datatrans[0]";
}

return $data;
}


function dataRED($dataform)
{
//Formato de Data Reduzido
$hora = substr($dataform,11,17);
$data = substr($dataform,0,10);

$hora = substr($hora,0,5);

$datatrans = explode("-",$data);
$anored= substr($datatrans[0],2,2);
$data = "$datatrans[2]/$datatrans[1]/$anored";
$data = $data."-".$hora;

return $data;
}
#################################################################################


function ajusta ($palavra,$num) {
$limite = $num;
$i = strlen($palavra);
while ($i < $limite) {
$palavra.='-';
$i++;
}

return $palavra;

}

################################################################################

function envia_email_new_user($login, $nome, $email, $rand, $site)
{
$msg = "";
$msg .= "SISTEMA OCOMON\t\n";
$msg .= "Prezado ".$nome."\t\n";
$msg .= "Sua solicitação para criação do login: ".$login." foi bem sucedida!\t\n";
$msg .= "Para confirmar sua inscrição clique no link abaixo: \t\n";
$msg .= "".$site."/ocomon/geral/confirma.php?rand=".$rand." \t\n";

$mailheaders = "From: SISTEMA_OCOMON\n";
$mailheaders .= "Replay-to: ".$email."\n\n";

mail($email, "OCOMON - CONFIRMAÇÃO DE CADASTRO", $msg, $mailheaders);
return "OK";
}


function noHtml ($string) {

$string=addslashes($string);
//$string=addslashes($string);
return stripslashes(htmlspecialchars($string, ENT_QUOTES));
}

function toHtml ($string){

$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}

function isIn ($pattern, $values){

$found = false;
if (strpos($values,",")){
$valuesArray = explode(",",$values);

for ($i = 0; $i < count($valuesArray); $i++){
if ($valuesArray[$i] == (int)$pattern) $found = true;

}

} else
if ($values == (int)$pattern) $found = true;

return $found;

}

function sepComma($value,$array){
if (strpos($value,",")) {
$array = explode(",",$value);

} else $array = $value;

return $array;
}



function random (){
$rand ="";
for ($i=0; $i<10; $i++) {
$rand.= mt_rand(1,300);
}

return ($rand);
}

function transbool ($bool){
if ($bool == 0) $trans = TRANS('NOT'); else
if ($bool == 1) $trans = TRANS('YES'); else
$trans = $bool;

return $trans;
}


function transvars ($msg, $arrayEnv) {

foreach ($arrayEnv as $id=> $var){
$msg = str_replace($id, $var, $msg);
}

return $msg;
}


function send_mail($event, $e_destino,$mailConf, $msgConf, $envVars){


//$event: Tipo de evento, os eventos são definidos pela situação (abertura, edição ou assentamento)
// e pelo destino (usuário, operador ou área)
//$e_destino: e-mail de destino
//$mailConf: array com as informações de conexão smtp
//$msgConf: array com as informações de mensagem
//$envVar: array com as variáveis de ambiente
if (is_file( "./.root_dir" )) {
require_once("./includes/phpmailer/class.phpmailer.php");
} else {
require_once("../../includes/phpmailer/class.phpmailer.php");
}

$mail = new PHPMailer();
$mail->SetLanguage("en", "../../includes/phpmailer/language/");


if ($mailConf['mail_issmtp']) {
$mail->IsSMTP();
} // set mailer to use SMTP
$mail->Host = $mailConf['mail_host']; // specify main and backup server
$mail->SMTPAuth = $mailConf['mail_isauth']; // turn on SMTP authentication
$mail->Username = $mailConf['mail_user']; // SMTP username
$mail->Password = $mailConf['mail_pass']; // SMTP password

$mail->From = $mailConf['mail_from'];
//$mail->IsHTML(false);
$mail->IsHTML($mailConf['mail_ishtml']); //$mail->IsHTML(true); // set email format to HTML



$mail->FromName = $msgConf['msg_fromname'];
$mail->AddAddress($e_destino);
//$mail->AddAddress("josh@example.net", "Josh Adams");
//$mail->AddAddress("ellen@example.com"); // name is optional
$mail->AddReplyTo($msgConf['msg_replyto'], "SISTEMA OCOMON");

//$mail->WordWrap = 50; // set word wrap to 50 characters
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
$mail->Subject = transvars($msgConf['msg_subject'],$envVars);

if ($mailConf['mail_ishtml']){
$mail->Body = transvars($msgConf['msg_body'],$envVars);
} else {
$mail->Body = nl2br(transvars($msgConf['msg_altbody'],$envVars));
}

$mail->AltBody = nl2br(transvars($msgConf['msg_altbody'],$envVars));

## TO USE ONLY FOR DEVELOPERS WHEN DEBUGING
// dump ($mailConf['mail_issmtp'],'IsSMTP');
// dump ($mail->Host,'Host');
// dump ($mail->SMTPAuth,'SMTPAuth');
// dump ($mail->Username,'Username');
// dump ($mail->Password,'Password');
// dump ($mail->From,'From');
// dump ($mailConf['mail_ishtml'],'IsHTML');
// dump ($mail->FromName,'FromName');
// dump ($e_destino,'AddAddress');
// dump ($msgConf['msg_replyto'],'AddReplyTo');
// dump ($mail->Subject,'Subject');
// dump ($mail->Body,'Body');
// dump ($mail->AltBody,'AltBody');
// exit;

if(!$mail->Send())
{
echo "A mensagem não pôde ser enviada. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

return true;
}


function mail_send($mailConf,$to,$cc,$subject,$body,$replyto, $envVars){

//$mailConf: array com as informações de conexão smtp

if (is_file( "./.root_dir" )) {
require_once("./includes/phpmailer/class.phpmailer.php");
} else {
require_once("../../includes/phpmailer/class.phpmailer.php");
}

$mail = new PHPMailer();
$mail->SetLanguage("en", "../../includes/phpmailer/language/");

if ($mailConf['mail_issmtp']) {
$mail->IsSMTP();
} // set mailer to use SMTP
$mail->Host = $mailConf['mail_host']; // specify main and backup server
$mail->SMTPAuth = $mailConf['mail_isauth']; // turn on SMTP authentication
$mail->Username = $mailConf['mail_user']; // SMTP username
$mail->Password = $mailConf['mail_pass']; // SMTP password

$mail->From = $mailConf['mail_from'];
$mail->FromName =$mailConf['mail_from_name'];
$mail->IsHTML($mailConf['mail_ishtml']);


$mail->AddReplyTo($replyto, $mail->FromName =$mailConf['mail_from_name']);

// $mail->AddAddress($to);
// if (isset($cc) && $cc!=""){
// $mail->AddCC($cc);
// }

$sepTo = explode(",",$to);
if (is_array($sepTo)){
$recipients = count($sepTo);
} else
$recipients = 1;

for ($i = 0; $i < $recipients; $i++) {
$mail->AddAddress(trim($sepTo[$i]));
}

if (isset($cc) && $cc!=""){

$sepCC = explode(",",$cc);

if (is_array($sepCC)){
$copies = count($sepCC);
} else
$copies = 1;

for ($i = 0; $i < $copies; $i++) {
$mail->AddCC(trim($sepCC[$i]));
}
}


//$mail->Subject = $subject;
$mail->Subject = transvars($subject,$envVars);

if ($mailConf['mail_ishtml']){
//$mail->Body = nl2br($body);
$mail->Body = nl2br(transvars($body,$envVars));
} else {
//$mail->Body = nl2br($body);
$mail->Body = nl2br(transvars($body,$envVars));
}

$mail->AltBody = nl2br($body);

if(!$mail->Send())
{
echo "A mensagem não pôde ser enviada. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
//exit;
}

return true;
}



function showArray($array){
print "<pre>";
print_r ($array);
print "</pre>";
return true;
}

function isImage($type){
if(eregi("^image\/(pjpeg|jpeg|png|gif|x-ms-bmp)$", $type))
return true; else
return false;
}

function noSpace($WORD) {

$newWord = trim(str_replace(" ","_", $WORD));
return $newWord;
}


function upload($img_file,$config, $FILE_TYPES="%%IMG%") {
// Prepara a variável caso o formulário tenha sido postado
$arquivo = isset($_FILES[$img_file]) ? $_FILES[$img_file] : FALSE;

/* $config = array();
// Tamano máximo da imagem, em bytes
$config["tamanho"] = 307200; //Aproximadamente 300k
// Largura Máxima, em pixels
$config["largura"] = 800;
// Altura Máxima, em pixels
$config["altura"] = 600;*/

$saida = "OK";

if($arquivo) {
$erro = array();

// Verifica o mime-type do arquivo para ver se é de imagem.
// Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
//
// if(!eregi("\.(jpg|jpeg|bmp|gif|png){1}$", $arquivo["name"])) {
// $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; }
//
// Mas, o que ocorre é que alguns usuários mal-intencionados, podem pegar um vírus .exe e simplesmente mudar a extensão
// para alguma das imagens e enviar. Então, não adiantaria em nada verificar a extensão do nome do arquivo.

$mime = array();

$TYPE = explode("%",$FILE_TYPES);

reIndexArray2($TYPE);

$mime['PDF'] = "application\/pdf";
$mime['TXT'] = "text\/plain";
$mime['RTF'] = "application\/rtf";
$mime['HTML'] = "text\/html";
$mime['IMG'] = "image\/(pjpeg|jpeg|png|gif|x-ms-bmp)";

$mime['ODF'] = "application\/vnd.oasis.opendocument.(text|spreadsheet|presentation|graphics)";
$mime['OOO'] = "application\/vnd.sun.xml.(writer|calc|draw|impress)";
$mime['MSO'] = "application\/(msword|vnd.ms-excel|vnd.ms-powerpoint)";
//application/vnd.ms-powerpoint
//application/vnd.sun.xml.writer; application/vnd.sun.xml.calc; application/vnd.sun.xml.draw; application/vnd.sun.xml.impress

//if(preg_match('/^(.*)\.(doc|txt|pdf|xls|htm|html|rtf)$/', $arquivo["type"])) //application/pdf
//if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {

$typeOK = false;
$types = "";
for ($i=0; $i<count($TYPE); $i++) {
if (strlen($types)>0) $types.=", ";
$types.=$TYPE[$i];
if(eregi("^".$mime[$TYPE[$i]]."$", $arquivo["type"])) {
$typeOK = true;
}
}

if (!$typeOK) {
$erro[] = "Arquivo em formato inválido! Os Tipos permitidos são: ".$types;

} else {
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["conf_upld_size"]) {
$kbytes = $config["conf_upld_size"]/1024;

$erro[] = "Arquivo em tamanho muito grande! O arquivo deve ser de no máximo " . $kbytes . " Kbytes.";
}

if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);
// Verifica largura
if($tamanhos[0] > $config["conf_upld_width"]) {
$erro[] = "Largura da imagem não deve ultrapassar " . $config["conf_upld_width"] . " pixels";
}
// Verifica altura
if($tamanhos[1] > $config["conf_upld_height"]) {
$erro[] = "Altura da imagem não deve ultrapassar " . $config["conf_upld_height"] . " pixels";
}
}
}

if(sizeof($erro)) {
$saida = "<b>ALERTA:</b><br />";
foreach($erro as $err) {
$saida.=" - ".$err."<br>";
}
}

if($arquivo && !sizeof($erro)) {
//echo "<BR><BR>UPLOAD REALIZADO COM SUCESSO!";
$saida = "OK";
}

} else print "ERRO NO ARQUIVO!";

return $saida;

}


function montaArray($mysql_result,$mysql_fetch_array){
$k=0;
$valores = array();
while($k < mysql_num_fields($mysql_result)){ //quantidade de campos retornados da consulta
$field = mysql_fetch_field($mysql_result,$k);//Retorna um objeto com informações dos campos
$valores[$field->name] = $mysql_fetch_array[$field->name];
$k++;
} // while
return $valores;
}

function findAllOccurences($Haystack, $needle, $limit=0)
{
$Positions = array();
$currentOffset = 0;
$count=0;
while(($pos = strpos($Haystack, $needle, $offset)) && ($count < $limit || $limit == 0))
{
$Positions[] = $pos;
$offset = $pos + strlen($needle);
$count++;
}
return $Positions;
}


//Destaca as entradas '$string' em um texto '$texto' passado
function destaca($string, $texto) {

$string.="|".noHtml($string)."|".toHtml($string);

//$string = htmlentities($string);

$pattern = explode("|", $string);
$pattern = array_unique($pattern);
$destaque = array();

reIndexArray($pattern);

$texto2 = toHtml(strtolower($texto));
//$texto2 = htmlentities($texto);

for ($i=0; $i<count($pattern); $i++) {
$destaque = "<font style='{background-color:yellow}'>".$pattern[$i]."</font></b>";
$texto2 = str_replace(strtolower($pattern[$i]), strtolower($destaque), $texto2);
}

return $texto2;
}


function valida($CAMPO, $VALOR, $TIPO, $OBRIGATORIO, &$ERR) {

$LISTA = array();
$LISTA['INTFULL'] = "/^\d*$/"; //INTEIRO QUALQUER
$LISTA['INTEIRO'] = "/^[1-9]\d*$/"; //NÃO INICIADOS POR ZERO
$LISTA['MAIL']= "/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/";
$LISTA['DATA'] = "/^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/";
$LISTA['DATA_'] = "/^((0?[1-9]|[12]\d)\-(0?[1-9]|1[0-2])|30\-(0?[13-9]|1[0-2])|31\-(0?[13578]|1[02]))\-(19|20)?\d{2}$/";
$LISTA['DATAHORA'] = "/^(((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2})[ ]([0-1]\d|2[0-3])+:[0-5]\d:[0-5]\d$/";
$LISTA['MOEDA'] = "/^\d{1,3}(\.\d{3})*\,\d{2}$/";
$LISTA['MOEDASIMP'] = "/^\d*\,\d{2}$/";
$LISTA['ETIQUETA'] = "/^[1-9]\d*(\,\d+)*$/"; //expressão para validar consultas separadas por vírgula;
$LISTA['ALFA'] = "/^[A-Z]|[a-z]([A-Z]|[a-z])*$/";
$LISTA['ALFANUM'] = "/^([A-Z]|[a-z]|[0-9])([A-Z]|[a-z]|[0-9])*\.?([A-Z]|[a-z]|[0-9])([A-Z]|[a-z]|[0-9])*$/"; //Valores alfanumérias aceitando separação com no máximo um ponto.
$LISTA['ALFAFULL'] = "/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*$/";
$LISTA['FONE'] = "/^(([+][\d]{2,2})?([-]|[\s])?[\d]*([-]|[\s])?[\d]+)+([,][\s]([+][\d]{2,2})?([-]|[\s])?[\d]*([-]|[\s])?[\d]+)*$/";
$LISTA['COR'] = "/^([#]([A-F]|[a-f]|[\d]){6,6})|([I][M][G][_][D][E][F][A][U][L][T])$/";

$ERRO = array();
$ERRO['OBRIGATORIO'] = "O campo ".$CAMPO." é obrigatório!";
$ERRO['INTFULL'] = "O campo ".$CAMPO." deve conter apenas numeros inteiros!";
$ERRO['INTEIRO'] = "O campo ".$CAMPO." deve conter apenas numeros inteiros não iniciados por ZERO!";
$ERRO['MAIL']= "Formato de e-mail inválido!";
$ERRO['DATA'] ="Formato de data invalido! dd/mm/aaaa";
$ERRO['DATA_'] = "Formato de data invalido! dd-mm-aaaa";
$ERRO['DATAHORA'] = "Formato de data invalido! dd/mm/aaaa H:m:s";
$ERRO['MOEDA'] = "Formato de moeda inválido!";
$ERRO['MOEDASIMP'] ="Formato de moeda inválido! XXXXXX,XX";
$ERRO['ETIQUETA'] = "o Formato do campo ".$CAMPO." deve ser de valores inteiros não iniciados por Zero e separados por vírgula!";
$ERRO['ALFA'] = "Esse o campo ".$CAMPO." só aceita carateres do alfabeto sem espaços!";
$ERRO['ALFANUM'] ="O campo ".$CAMPO." só aceita valores alfanuméricos sem espaços ou separados por um ponto(no máximo um)!";
$ERRO['ALFAFULL'] = "O campo ".$CAMPO." só aceita valores alfanuméricos sem espaços!";
$ERRO['FONE'] = "O campo ".$CAMPO." só aceita valores formatados para telefones (algarismos, traços e espaços) separados por vírgula.";
$ERRO['COR'] ="O campo ".$CAMPO." só aceita valores formatados para cores HTML! Ex: #FFCC99";

if ($LISTA[$TIPO] == '') {
print "ÍNDICE INVÁLIDO!";
return false;
} else
if ($OBRIGATORIO) {
if ($VALOR=='') {
$ERR = $ERRO['OBRIGATORIO'];
return false;
} else
if (preg_match($LISTA[$TIPO], $VALOR)) {
return true;
} else {
$ERR = $ERRO[$TIPO];
return false;
}

} else
if ($VALOR != ''){
if (preg_match($LISTA[$TIPO], $VALOR)) {
return true;
} else {
$ERR = $ERRO[$TIPO];
return false;
}

} else {
return true;
}
}


function getDirFileNames($dir, $ext='php|PHP') {
// Abre um diretorio conhecido, e faz a leitura de seu conteudo de acordo com a extensão solicitada

$array = array();
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file != '..' && $file !='.' && $file !=''){
if (eregi("\.(".$ext."){1}$", $file))
$array[]=$file;
}
}
closedir($dh);
}
}
return $array;
}

function dPgetIniSize($val) {
$val = trim($val);
if (strlen($val <= 1)) return $val;
$last = $val{strlen($val)-1};
switch($last) {
case 'k':
case 'K':
return (int) $val * 1024;
break;
case 'm':
case 'M':
return (int) $val * 1048576;
break;
default:
return $val;
}
}

?>







[105] Comentário enviado por fabiomoreira em 23/10/2012 - 16:14h

Colegas,

Depois de pegar o arquivo login.php que o dalua_wil disponibilizou.

E realizar as devidas alterações no config.inc.php

FUNCIONOU TUDO DIREITINHO

OBRIGADO A TODOS

Estou usando Centos, Windows 2008 R2

Att.,

Fabio

[106] Comentário enviado por gvilelas em 30/10/2012 - 13:06h

Ei pessoal algum solução em relação ao navegador ficar atualizando constantemente quando loga com um usuário que tem apenas permissão para abertura de chamado ?
To com o mesmo problema.
Ja testei no IE, FF e Chome.

[107] Comentário enviado por rafaeladvance em 12/12/2012 - 18:42h


Fatal error: Call to undefined function ldap_connect() in C:\xampp\htdocs\helpdesk\includes\classes\adLDAP.php on line 361


acho que e nessa parte do codigo.

nao manjo de programação.


public function connect() {
// Connect to the AD/LDAP server as the username/password
$dc=$this->random_controller();
if ($this->_use_ssl){
$this->_conn = ldap_connect("ldaps://".$dc, 636);
} else
{
$this->_conn = ldap_connect($dc);

}


obrigado a todos desde ja


[108] Comentário enviado por ALLANJR em 07/05/2013 - 11:17h

Pessoal, aparentemente estou com tudo correto aqui porém ao tentar me logar com meu usuário do AD aparece essa mensagem:
"IMPOSSÍVEL ACESSAR A BASE DE DADOS DE USUÁRIOS: LOGIN.PHP"

IMPOSSÍVEL ACESSAR A BASE DE PERMISSÕES: LOGIN.PHP

Alguém já passou por isso? Alguma ideia?

[109] Comentário enviado por awerik em 21/05/2013 - 12:40h

Mesmo problema aqui http://www.vivaolinux.com.br/perfil/verPerfil.php?login=ALLANJR
procurando a solucao.. vc encontrou??

[110] Comentário enviado por dersonribeiro19 em 05/06/2013 - 15:37h

Boa tarde!
Meu chefe me deu uma tarefa que estou tendo muita dificuldade.
Preciso fazer somente a autenticação da senha do ocomon pelo ldap. Nao é preciso acrescentar ou alterar nada somente autenticar.
Segui o tutorial, mas por não ter experiência estou me batendo há alguns dias.
Aqui em vez de "base_dn = "DC=meudominio,DC=local";' o pessoal da infra me falou que aqui é "ou=empresa,ou=people,o=empresa,c=br".
Fiz o seguinte:
Alterei em config.inc.php para a opção LDAP. Todas as configurações sobre dominio, servidor ficaram comentadas.
Em adLDAP.php ficou o seguinte:
protected $_base_dn = "ou=empresa,ou=people,o=empresa,c=br";
protected $_account_suffix = "@empresa.br";
protected $_domain_controllers = array ("ldap.empresa.br");

Em login(onde acredito estar meu problema) acrescentei include ("../../includes/classes/adLDAP.php");

Quando vou logar, digito usuário e senha do ldap e já cadastrado no ocomon, e a tela fica "em branco".

Alguém pode me dar uma super ajuda.
Muito obrigado

Segue login.php


<?php /* Copyright 2005 Flávio Ribeiro

*/ session_start();

include ("../../includes/include_geral.inc.php");
include ("../../includes/functions/browser_detection.php");
include ("../../includes/classes/adLDAP.php"); #Adicionar o caminho da class adLDAP.php

$browser = browser_detection('full');
$_SESSION['s_browser'] = $browser[0];

GLOBAL $conec;
$conec = new conexao;
$conec->conecta('MYSQL');


if (AUTH_TYPE == "LDAP") {
/*$conec->conLDAP(LDAP_HOST, LDAP_DOMAIN, LDAP_DN, LDAP_PASSWORD);
$conecSec = new conexao; //Para testar no LDAP Labin
$conecSec->conLDAP(LDAP_HOST, LDAP_DOMAIN_SEC, LDAP_DN, LDAP_PASSWORD);*/

//if ((senha_ldap($_POST['login'],$_POST['password'],'usuarios')=="ok") && ($conec->userLDAP($_POST['login'],$_POST['password']) || $conecSec->userLDAP($_POST['login'],$_POST['password'])))
try {
$adldap = new adLDAP();
}
catch (adLDAPException $e) {
echo $e; exit();
}
}
//if ((senha_ldap($_POST['login'],$_POST['password'],'usuarios')=="ok") && ($conec->userLDAP($_POST['login'],$_POST['password']) || $conecSec->userLDAP($_POST['login'],$_POST['password'])))
if ($adldap -> authenticate($_POST['login'],$_POST['password']) && ($_POST['login']!=NULL && $_POST['password']!=NULL))
{
$s_usuario=$_POST['login'];
$s_senha=$_POST['password'];

$result=$adldap -> user_info($_POST['login']);
$U_MAILG=$result[0]["mail"][0];

//*****************************************************************************************************************************
$qry="SELECT * FROM `usuarios` WHERE `login` = '".$s_usuario."'";
$qry3 = mysql_query($qry) or die('Impossível aceder à base de dados de utilizadores!!!');
$rowUSER = mysql_fetch_array($qry3);

if (($rowUSER['login'])!=($s_usuario)){
$adduser = "INSERT INTO usuarios (login, nome, password, data_inc, data_admis,
email, fone, nivel, AREA, user_admin) ".
"values ('".$s_usuario."','".$result[0]["displayname"][0]."','e267cfcd18461ce938067eca67c59f41','".date("Y-m-d")."','".
date("Y-m-d")."','".$U_MAILG."','".$result[0]["telephonenumber"][0]."','3','".$result[0]["primarygroupid"][0]."','0')";
mysql_query($adduser) or die (TRANS('ERR_INSERT').$s_usuario);

$addarea = "INSERT INTO `usuarios_areas` (`uarea_uid`,`uarea_sid`) VALUES ('".$rowUSER['user_id']."', '".$result[0]["primarygroupid"][0]."')";
mysql_query($addarea) or die (TRANS('ERR_INSERT').$s_usuario);
}

//*****************************************************************************************************************************
$rwGroup=$adldap -> user_groups($_POST['login']);

$qruy="SELECT * FROM `sistemas` WHERE `sis_id` = '".$result[0]["primarygroupid"][0]."'";
$qruy3 = mysql_query($qruy) or die('Impossível aceder à base de dados de utilizadores!!!');
$rowGroup = mysql_fetch_array($qruy3);
if (($rowGroup['sis_id'])!=($result[0]["primarygroupid"][0])){
$addgroup = "INSERT INTO `sistemas` VALUES ('".$result[0]["primarygroupid"][0]."', '".$rwGroup[0]."',
'1', 'emil@meuemail.com.br', '0', null)";
$addpermi = "INSERT INTO `permissoes` (`perm_area`,`perm_modulo`,`perm_flag`) VALUES ('".$result[0]["primarygroupid"][0]."', '1', '1')";

mysql_query($addgroup) or die (TRANS('ERR_INSERT').$rwGroup[0]);
mysql_query($addpermi) or die (TRANS('ERR_INSERT').$rwGroup[0]);
}
//*****************************************************************************************************************************

$queryOK = "SELECT u.*, n.*,s.* FROM usuarios u left join sistemas as s on u.AREA = s.sis_id ".
"left join nivel as n on n.nivel_cod =u.nivel WHERE u.login = '".$_POST['login']."'";

$resultadoOK = mysql_query($queryOK) or die('IMPOSSÍVEL ACESSAR A BASE DE DADOS DE USUÁRIOS: LOGIN.PHP');
$row = mysql_fetch_array($resultadoOK);
$s_nivel = $row['nivel'];

if ($s_nivel<4){ //Verifica se não está desabilitado
$s_logado=1;
}

$s_nivel_desc = $row['nivel_nome'];
$s_area = $row['AREA'];
$s_uid = $row['user_id'];
$s_area_admin = $row['user_admin'];
$s_screen = $row['sis_screen'];

/*VERIFICA EM QUAIS ÁREAS O USUÁRIO ESTÁ CADASTRADO*/
$qryUa = "SELECT * FROM usuarios_areas where uarea_uid=".$s_uid.""; //and uarea_sid=".$s_area."
$execUa = mysql_query($qryUa) or die('IMPOSSÍVEL ACESSAR A BASE DE USUÁRIOS 02: LOGIN.PHP');
$uAreas = "".$s_area.",";
while ($rowUa = mysql_fetch_array($execUa)){
$uAreas.=$rowUa['uarea_sid'].",";
}
$uAreas = substr($uAreas,0,-1);
$s_uareas = $uAreas;

/*CHECA QUAIS OS MÓDULOS PODEM SER ACESSADOS PELAS ÁREAS QUE O USUÁRIO PERTENCE*/
$qry = "SELECT * FROM permissoes where perm_area in (".$uAreas.")";
$exec = mysql_query($qry) or die('IMPOSSÍVEL ACESSAR A BASE DE PERMISSÕES: LOGIN.PHP');

while($row_perm = mysql_fetch_array($exec)){
$s_permissoes[]=$row_perm['perm_modulo'];
}
$s_ocomon = 0;
$s_invmon = 0;
for ($i=0;$i<count($s_permissoes); $i++){
if($s_permissoes[$i] == 1) $s_ocomon = 1;
if($s_permissoes[$i] == 2) $s_invmon = 1;
}

$sqlPrefs = "SELECT * FROM uprefs WHERE upref_uid = ".$s_uid."";
$execPrefs = mysql_query($sqlPrefs);
$rowPref = mysql_fetch_array($execPrefs);


$sqlFormatBar = "SELECT * FROM config";
$execFormatBar = mysql_query($sqlFormatBar) or die ('NÃO FOI POSSÍVEL ACESSAR A TABELA DE CONFIGURAÇÕES DO SISTEMA!');
$rowFormatBar = mysql_fetch_array($execFormatBar);
if (strpos($rowFormatBar['conf_formatBar'],'%oco%')) {
$formatBarOco = 1;
} else {
$formatBarOco = 0;
}
if (strpos($rowFormatBar['conf_formatBar'],'%mural%')) {
$formatBarMural = 1;
} else {
$formatBarMural = 0;
}



$_SESSION['s_logado'] = $s_logado;
$_SESSION['s_usuario'] = $s_usuario;
$_SESSION['s_uid'] = $s_uid;
$_SESSION['s_senha'] = $s_senha;
$_SESSION['s_nivel'] = $s_nivel;
$_SESSION['s_nivel_desc'] = $s_nivel_desc;
$_SESSION['s_area'] = $s_area;
$_SESSION['s_uareas'] = $s_uareas;
$_SESSION['s_permissoes'] = $s_permissoes;
$_SESSION['s_area_admin'] = $s_area_admin;
$_SESSION['s_ocomon'] = $s_ocomon;
$_SESSION['s_invmon'] = $s_invmon;
$_SESSION['s_allow_change_theme'] = $rowFormatBar['conf_allow_change_theme'];
$_SESSION['s_screen'] = $s_screen;


$_SESSION['s_formatBarOco'] = $formatBarOco;
$_SESSION['s_formatBarMural'] = $formatBarMural;

if (!empty($rowPref['upref_lang'])){
$_SESSION['s_language'] = $rowPref['upref_lang'];
} else {
$_SESSION['s_language'] = $rowFormatBar['conf_language'];
}

$_SESSION['s_date_format'] = $rowFormatBar['conf_date_format'];

$_SESSION['s_paging_full'] = 0;

$_SESSION['s_page_size'] = $rowFormatBar['conf_page_size'];

$_SESSION['s_allow_reopen'] = $rowFormatBar['conf_allow_reopen'];

$_SESSION['s_allow_date_edit'] = $rowFormatBar['conf_allow_date_edit'];

$_SESSION['s_ocomon_site'] = $rowFormatBar['conf_ocomon_site'];

$sqlStyles = "SELECT * FROM temas t, uthemes u WHERE u.uth_uid = ".$_SESSION['s_uid']." and t.tm_id = u.uth_thid";
$execStyles = mysql_query($sqlStyles) or die('ERRO NA TENTATIVA DE RECUPERAR AS INFORMAÇÕES DO TEMA!<BR>'.$sqlStyles);
$rowSty = mysql_fetch_array($execStyles);
$regs = mysql_num_rows($execStyles);
if ($regs==0){ //SE NÃO ENCONTROU TEMA ESPECÍFICO PARA O USUÁRIO
unset($rowSty);
$sqlStyles = "SELECT * FROM styles";
$execStyles = mysql_query($sqlStyles);
$rowSty = mysql_fetch_array($execStyles);
}

$_SESSION['s_colorDestaca'] = $rowSty['tm_color_destaca'];
$_SESSION['s_colorMarca'] = $rowSty['tm_color_marca'];

print "<script>redirect('../../index.php?".session_id()."');</script>";
} else {

print "<script>redirect('../../index.php?usu=".$_POST['login']."&inv=1');</script>";
$conec->desconLDAP();
$conecSec->desconLDAP();
exit;
}
$conec->desconLDAP();
$conecSec->desconLDAP();

} else {

if (senha_system($_POST['login'],$_POST['password'],'usuarios')=="ok")
{

$s_usuario=$_POST['login'];
$s_senha=$_POST['password'];

$queryOK = "SELECT u.*, n.*,s.* FROM usuarios u left join sistemas as s on u.AREA = s.sis_id ".
"left join nivel as n on n.nivel_cod =u.nivel WHERE u.login = '".$_POST['login']."'";

$resultadoOK = mysql_query($queryOK) or die('IMPOSSÍVEL ACESSAR A BASE DE DADOS DE USUÁRIOS: LOGIN.PHP');
$row = mysql_fetch_array($resultadoOK);
$s_nivel = $row['nivel'];

if ($s_nivel<4){ //Verifica se não está desabilitado
$s_logado=1;
}

$s_nivel_desc = $row['nivel_nome'];
$s_area = $row['AREA'];
$s_uid = $row['user_id'];
$s_area_admin = $row['user_admin'];
$s_screen = $row['sis_screen'];


/*VERIFICA EM QUAIS ÁREAS O USUÁRIO ESTÁ CADASTRADO*/
$qryUa = "SELECT * FROM usuarios_areas where uarea_uid=".$s_uid.""; //and uarea_sid=".$s_area."
$execUa = mysql_query($qryUa) or die('IMPOSSÍVEL ACESSAR A BASE DE USUÁRIOS 02: LOGIN.PHP');
$uAreas = "".$s_area.",";
while ($rowUa = mysql_fetch_array($execUa)){
$uAreas.=$rowUa['uarea_sid'].",";
}
$uAreas = substr($uAreas,0,-1);
$s_uareas = $uAreas;

/*CHECA QUAIS OS MÓDULOS PODEM SER ACESSADOS PELAS ÁREAS QUE O USUÁRIO PERTENCE*/
$qry = "SELECT * FROM permissoes where perm_area in (".$uAreas.")";
$exec = mysql_query($qry) or die('IMPOSSÍVEL ACESSAR A BASE DE PERMISSÕES: LOGIN.PHP');


while($row_perm = mysql_fetch_array($exec)){
$s_permissoes[]=$row_perm['perm_modulo'];
}
$s_ocomon = 0;
$s_invmon = 0;
for ($i=0;$i<count($s_permissoes); $i++){
if($s_permissoes[$i] == 1) $s_ocomon = 1;
if($s_permissoes[$i] == 2) $s_invmon = 1;
}


$sqlPrefs = "SELECT * FROM uprefs WHERE upref_uid = ".$s_uid."";
$execPrefs = mysql_query($sqlPrefs);
$rowPref = mysql_fetch_array($execPrefs);


$sqlFormatBar = "SELECT * FROM config"; //INFO FROM GENERAL CONF
$execFormatBar = mysql_query($sqlFormatBar) or die ('NÃO FOI POSSÍVEL ACESSAR A TABELA DE CONFIGURAÇÕES DO SISTEMA!');
$rowFormatBar = mysql_fetch_array($execFormatBar);
if (strpos($rowFormatBar['conf_formatBar'],'%oco%')) {
$formatBarOco = 1;
} else {
$formatBarOco = 0;
}
if (strpos($rowFormatBar['conf_formatBar'],'%mural%')) {
$formatBarMural = 1;
} else {
$formatBarMural = 0;
}

$_SESSION['s_logado'] = $s_logado;
$_SESSION['s_usuario'] = $s_usuario;
$_SESSION['s_uid'] = $s_uid;
$_SESSION['s_senha'] = $s_senha;
$_SESSION['s_nivel'] = $s_nivel;
$_SESSION['s_nivel_desc'] = $s_nivel_desc;
$_SESSION['s_area'] = $s_area;
$_SESSION['s_uareas'] = $s_uareas;
$_SESSION['s_permissoes'] = $s_permissoes;
$_SESSION['s_area_admin'] = $s_area_admin;
$_SESSION['s_ocomon'] = $s_ocomon;
$_SESSION['s_invmon'] = $s_invmon;
$_SESSION['s_allow_change_theme'] = $rowFormatBar['conf_allow_change_theme'];
$_SESSION['s_screen'] = $s_screen;


$_SESSION['s_formatBarOco'] = $formatBarOco;
$_SESSION['s_formatBarMural'] = $formatBarMural;

if (!empty($rowPref['upref_lang'])){
$_SESSION['s_language'] = $rowPref['upref_lang'];
} else {
$_SESSION['s_language'] = $rowFormatBar['conf_language'];
}

$_SESSION['s_date_format'] = $rowFormatBar['conf_date_format'];

$_SESSION['s_paging_full'] = 0;

$_SESSION['s_page_size'] = $rowFormatBar['conf_page_size'];

$_SESSION['s_allow_reopen'] = $rowFormatBar['conf_allow_reopen'];

$_SESSION['s_allow_date_edit'] = $rowFormatBar['conf_allow_date_edit'];

$_SESSION['s_ocomon_site'] = $rowFormatBar['conf_ocomon_site'];

$sqlStyles = "SELECT * FROM temas t, uthemes u WHERE u.uth_uid = ".$_SESSION['s_uid']." and t.tm_id = u.uth_thid";
$execStyles = mysql_query($sqlStyles) or die('ERRO NA TENTATIVA DE RECUPERAR AS INFORMAÇÕES DO TEMA!<BR>'.$sqlStyles);
$rowSty = mysql_fetch_array($execStyles);
$regs = mysql_num_rows($execStyles);
if ($regs==0){ //SE NÃO ENCONTROU TEMA ESPECÍFICO PARA O USUÁRIO
unset($rowSty);
$sqlStyles = "SELECT * FROM styles";
$execStyles = mysql_query($sqlStyles);
$rowSty = mysql_fetch_array($execStyles);
}


$_SESSION['s_colorDestaca'] = $rowSty['tm_color_destaca'];
$_SESSION['s_colorMarca'] = $rowSty['tm_color_marca'];
$_SESSION['s_colorLinPar'] = $rowSty['tm_color_lin_par'];
$_SESSION['s_colorLinImpar'] = $rowSty['tm_color_lin_impar'];



###############################################
## TRECHO PARA VERIFICAÇÃO DAS GARANTIAS ##

#DEFINIR QUERY PARA CHECAGEM SOBRE OS BENS QUE ESTIVEREM PRESTES A FICAREM SEM GARANTIA;

if ($rowFormatBar['conf_days_bf']!=0) {

$qryWarranty = "SELECT e.estoq_cod, e.estoq_sn, e.estoq_partnumber, e.estoq_nf, ".
"\n\ti.item_nome AS tipo, model.mdit_fabricante as fabricante, model.mdit_desc as modelo, ".
"\n\tmodel.mdit_desc_capacidade as capacidade, model.mdit_sufixo as sufixo, ".

"\n\tf.forn_nome as fornecedor, l.local as local,".

"\n\tew.ew_sent_first_alert as first_alert, ew.ew_sent_last_alert as last_alert,".

"\n\tdate_add(date_format(e.estoq_data_compra, '%Y-%m-%d') , INTERVAL t.tempo_meses MONTH) AS vencimento ".

"\nFROM ".
"\n\testoque e ".
"\n\tleft join email_warranty ew on e.estoq_cod = ew.ew_piece_id ".

"\n\tleft join fornecedores f on f.forn_cod = e.estoq_vendor ".

"\n\tleft join localizacao l on l.loc_id = e.estoq_local, ".

"\n\ttempo_garantia t, modelos_itens model, itens i ".
"\nWHERE ".

"\n\tdate_add(date_format(e.estoq_data_compra, '%Y-%m-%d'), INTERVAL t.tempo_meses MONTH) >= ".
"\n\tdate_add(date_format(curdate(), '%Y-%m-%d'), INTERVAL 0 DAY) ".

"\n\tAND ".

"\n\tdate_add(date_format(e.estoq_data_compra, '%Y-%m-%d'), INTERVAL t.tempo_meses MONTH) <= ".
"\n\tdate_add(date_format(curdate(), '%Y-%m-%d'), INTERVAL ".$rowFormatBar['conf_days_bf']." DAY) ".


"\n\tAND e.estoq_warranty = t.tempo_cod AND e.estoq_tipo = i.item_cod ".
"\n\tAND e.estoq_desc = model.mdit_cod ".

"\n\t AND ((ew.ew_sent_first_alert is null OR ew.ew_sent_first_alert=0))".


"\nORDER BY vencimento, modelo";
$execWarranty = mysql_query($qryWarranty) or die (dump($qryWarranty));
//$achou = mysql_num_rows($execWarranty);



$event = 'mail-about-warranty';
$qrymsg = "SELECT * FROM msgconfig WHERE msg_event like ('".$event."')";
$execmsg = mysql_query($qrymsg) or die(TRANS('MSG_ERR_MSCONFIG'));
$rowmsg = mysql_fetch_array($execmsg);

$sqlMailArea = "select * from sistemas where sis_id = ".$rowFormatBar['conf_wrty_area']."";
$execMailArea = mysql_query($sqlMailArea);
$rowMailArea = mysql_fetch_array($execMailArea);

while ($rowWrt = mysql_fetch_array($execWarranty)){


$VARS = array();
$VARS['%serial%'] = $rowWrt['estoq_sn'];
$VARS['%partnumber%'] = $rowWrt['estoq_partnumber'];
$VARS['%tipo%'] = $rowWrt['tipo'];
$VARS['%modelo%'] = $rowWrt['fabricante']." ".$rowWrt['modelo']." ".$rowWrt['capacidade']." ".$rowWrt['sufixo'];
$VARS['%vencimento%'] = $rowWrt['vencimento'];
$VARS['%notafiscal%'] = $rowWrt['estoq_nf'];
$VARS['%fornecedor%'] = $rowWrt['fornecedor'];
$VARS['%local%'] = $rowWrt['local'];

send_mail($event, $rowMailArea['sis_email'], $rowFormatBar, $rowmsg, $VARS);

$findMailSent = "SELECT * FROM email_warranty ".
"\n\tWHERE ew_piece_id = '".$rowWrt['estoq_cod']."' ".
" ";
$execFindMailSent = mysql_query($findMailSent) or die (dump($findMailSent));
$found = mysql_num_rows($execFindMailSent);

if ($found) {
$updMailSent = "UPDATE email_warranty SET ".
"\n\tew_piece_id= '".$rowWrt['estoq_cod']."', ".
"\n\tew_sent_first_alert=1, ".
"\n\tew_sent_last_alert=0".
" ";
$execUpdMailSent = mysql_query($updMailSent) or die (dump($updMailSent));
} else {
$insMailSent = "INSERT INTO email_warranty ".
"\n\t(ew_piece_id,ew_sent_first_alert,ew_sent_last_alert) ".
"\n\tvalues ('".$rowWrt['estoq_cod']."',1,0 ) ".
" ";
$execInsMailSent = mysql_query($insMailSent) or die (dump($insMailSent));

}
}
}


###########################################################################

print "<script>redirect('../../index.php?".session_id()."');</script>";
//print "<script>redirect('../../index.php');</script>";

}
else
{
print "<script>redirect('../../index.php?usu=".$_POST['login']."&inv=1');</script>";
exit;
}
}

}

?>



[111] Comentário enviado por rappa888 em 19/06/2013 - 08:14h

#########################
# tela branca no ocomon #
#########################

Galera, para resolver o problema da tela branca depois do login no ocomon, e para aceitar valores alfanúmericos, fiz estas modificações no meu arquivo: /var/www/ocomon/includes/javascript/funcoes.js

--Linha 467--
<!--alert("Esse campo só aceita carateres do alfabeto sem espaços!");

--Linha 476--
<!--alert("Esse campo só aceita valores alfanuméricos sem espaços ou separados por um ponto(no máximo um)!");

--Linha 485--
<!--alert("Esse campo só aceita valores alfanuméricos sem espaços!");

--Linha 487--
return true; --- (modificar de false para true)
** esse true que faz a informação ser verdadeira e prosseguir para a tela do ocomon.

espero ter ajudado, fiz na empresa que trabalho e funciona perfeitamente.



estou em testes com a duplicação do usuário, passei todos para caixa baixa, vamos ver !!

[112] Comentário enviado por growjitsu em 03/07/2013 - 09:39h

Bom dia senhor Carlos R F Júnior,

Brother fiz o procedimento que você explicou acima para a conecção com AD funcionou direitinho mas toda a vez que tento abrir um chamado o ocomon não grava mais as descrições será que você tem alguma idéia do que possa ser.

[113] Comentário enviado por trabanom em 19/08/2013 - 12:41h

Boa tarde,

Fiz as configurações necessárias e consigo autenticar no AD, mas aparece o erro antes de abrir a tela de usuário:
Notice: undefined property: adLDAP::$_ad_username in caminho_do_arquivo\adLDAP.php on line 308
Notice: undefined property: adLDAP::$_bind in caminho_do_arquivo\adLDAP.php on line 310.
por uns 20 segundos, depois entra no ocomon.

Na tela do administrador, aparece os seguintes erros:
Administração de Áreas de Atendimento

Notice: Undefined index: s_colorLinPar in E:\xampp\htdocs\ocomon\admin\geral\sistemas.php on line 85
Notice: Undefined index: s_colorLinImpar in E:\xampp\htdocs\ocomon\admin\geral\sistemas.php on line 85
Notice: Undefined index: s_colorLinPar in E:\xampp\htdocs\ocomon\admin\geral\sistemas.php on line 85
Notice: Undefined index: s_colorLinImpar in E:\xampp\htdocs\ocomon\admin\geral\sistemas.php on line 85

Alguém tem noção do que seja?

[114] Comentário enviado por danilofbr em 21/11/2013 - 15:39h

Amigo,

não consigo fazer o ocomon autenticar no Ad de jeito nenhum, só da o erro abaixo:

Fatal error: Call to undefined function ldap_connect() in C:\xampp\htdocs\ocomon\includes\classes\adLDAP.php on line 360

já copiei as DLL's, mudei os arquivos pros que o pessoal postou com as configurações corretas mas não vai. Meu windows é 64 bits, incluencia em algo com relação as dll's, pois não consegui registrá-las. reiniciei o server já, o xammp tb enão vai.

Poderia me da ruma luz?

Abraço,

Danilo Marques

[115] Comentário enviado por ehalves em 11/02/2014 - 13:03h

Realizei todos os procedimentos descritos no tutorial e em alguns comentário, mas no final, no momento da autenticação, o seguinte erro:

"Usuário,senha ou permissão inválida!"
"AUTH_TYPE: LDAP"

Existe alguma solução?

[116] Comentário enviado por galiann em 21/08/2014 - 17:31h


[35] Comentário enviado por marcellphelipe em 07/01/2010 - 12:10h:

Boa tarde galera..

Segui todas as dicas que foram postadas ai.. e tudo funcionou quase perfeitamente.

a unica coisa que esta me fazendo quebrar a cabeça é que, agora quando entro com um novo usuario no sistema, ao abrir a pagina inicial o navegador fica atualizando a pagina... entra num ciclo sem fim... rs

Alguem tem alguma ideia de como solucioar esse problema?

Grato!


Olá boa tarde.

Estava com esse problema até agora a pouco, e após fazer alguns testes ví que o Setor estava com a opção marcada "Atende Chamados" em Admin/Ocorrência/"area com problema"

Somente desmarquei a caixa que habilitava a area a atender chamados.


Com essa caixa marcada: automaticamente todos os usuarios tem que ser editados e colocados como "atende chamados" para que funcione.



Espero ter ajudado


qualquer coisa só falar

[117] Comentário enviado por ale_ludgero em 07/05/2016 - 11:13h

Sei que o tópico é antigo mas estou precisando fazer o ocomon autenticar no AD e segui todos os passos do tutorial mas só vem uma tela em branco. Retiro da autenticação ldap e funciona normalmente.

Alguém teria o arquivo de login.php funcionando para disponibilizar ou mandar o script aqui no fórum?

Obrigado pessoal!

[118] Comentário enviado por carlosrfjunior em 09/05/2016 - 10:04h

ale_ludgero bom dia!!!
É primeira vez que você está usando o OCOMON?
Estou usando o GLPI no lugar do OCOMON, com ele você vai conseguir conectar com o AD, Mail e OCS Inventory sem nenhum problema.

Abs

Carlos Júnior

[119] Comentário enviado por hgmo2305 em 20/12/2016 - 17:19h

Olá, sei que o tópico é extremamente antigo, porem estou tendo uma dificuldade imensa, estou instalando o OCOMON na empresa agora, utilizo o CentOS 6.4, porem quando faço as alterações descritas aqui nesse tutorial, o sistema para de logar, quando tento colocar qualquer tipo de usuário, ele me retorna a mensagem de erro:

"A página de 10.168.225.98 não está funcionando

10.168.225.98 não consegue atender a esta solicitação no momento.
HTTP ERROR 500"

gostaria de uma ajuda para realizar a integração do OCOMON com meu AD.

Lembrando que tentei fazer essa configuração usando tanto a classe alDAP do tutorial e a mais atual versão : 4.0.4r2.


[120] Comentário enviado por isr43lsimukaua em 11/11/2017 - 10:42h

Bom dia, sei que faz tempo que não respondem a esse tópico aqui, vou me apresentar rapidamente, comecei a trabalhar em uma empresa a pouco tempo, e o sistema de chamados é Ocomon, não conhecia, e não tenho muito conhecimento em Linux e nessa parte de banco de dados, o rapaz que trabalhava antes, era muito centralizador e eu acabei não pegando nada sobre isso, nem senha de admin e nem como abrir a interface de usuário para acesso ao sistema e remover usuários antigos e troca de senha de usuários esquecidos, ja instalei o CentOS e o Ocomon em vários tutoriais da internet e youtube, preciso de uma ajuda, teria como alterar o admin ou até cadastrar outro usuário como administrador master para fazer essas alterações. Obrigado pela atenção dispensada, se puderem me ajudar, seria de uma valia muito grande

[121] Comentário enviado por sneves em 11/11/2017 - 17:12h

Olá isr43lsimukaua.

Sinceramente, se eu fosse você, deixaria esse sistema em background e partiria para uma nova instalação.
A chance de recuperar aí não é das maiores e talvez você não tenha tempo a perder.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts