
Buckminster
(usa Debian)
Enviado em 04/05/2025 - 17:24h
Posso somente te dar uma direção, pois é difícil saber exatamente o que está acontecendo sem estar por dentro de toda a estrutura.
Tentei encontrar a versão 6.0 no site, mas não consegui.
No Ocomon 6.1 no arquivo /includes/functions/functions.php da linha 38 à linha 50 tem esse trecho de código:
function isLocalhost() {
$whitelist = array('127.0.0.1', '::1', 'localhost');
if (array_key_exists('REMOTE_ADDR', $_SERVER)) {
if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
return true;
} else {
return false;
}
}
return false;
}
Veja que tem um if que verifica se a chave REMOTE_ADDR existe no array $_SERVER.
Verifique se não mudou o IP do servidor de e-mail ou se essa ferramenta de monitoramento não está no meio da comunicação entre o Ocomon e o servidor de e-mail.
E no arquivo /ocomon-6.1/ocomon/open_tickets_by_email/service/getMailAndOpenTicket.php da linha 246 até a linha 259 tem esse trecho:
$message->move($newMailbox);
echo json_encode(['ticket' => $create->response()->ticket], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// var_dump($create->response());
} else {
echo "No ticket created " . PHP_EOL;
// var_dump($create->response());
}
} else {
echo "Message is a reply - " . PHP_EOL;
if (!array_key_exists('references', $headers)) {
echo "Message reference not found in database " . PHP_EOL;
return;
}
A mensagem Warning: Undefined array key "REMOTE_ADDR" in /var/www/html/ocomon/includes/functions/functions.php on line 40
No ticket created
diz que REMOTE_ADDR se refere a uma chave de array sem um valor e por isso não foi possível criar o ticket e retornou no var_dump: "string(28) "Endereço de email inválido"".
A API ou função que está tentando criar um ticket não está recebendo um e-mail válido no campo esperado.
Pode ser:
Campo de e-mail vazio;
Campo com valor mal formatado;
Valor vindo de um array mal construído.
Veja no manual do PHP:
'REMOTE_ADDR'
O endereço IP de onde o usuário está visualizando a página atual.
A variável REMOTE_ADDR é definida como o endereço de rede do cliente que envia a solicitação ao servidor e o Ocomon não está enviando a chave REMOTE_ADDR no array $_SERVER.
https://www.php.net/manual/pt_BR/reserved.variables.server.php
Mas até aí tudo bem, pois a variável $_SERVER["REMOTE_ADDR"] não está definida no contexto em que o código está sendo executado.
Isso normalmente ocorre quando o script está sendo chamado por linha de comando (CLI) ou por requisição sem contexto HTTP, como via curl, agendamento cron, ou até alguma API ou, como no teu caso: /usr/bin/php.
Toda vez que você fizer a chamada /usr/bin/php /var/www/html/ocomon/ocomon/open_tickets_by_email/service/getMailAndOpenTicket.php provavelmente dará esse warning porque a requisição HTTP não é enviada, o que é óbvio, então sempre dará que a chave REMOTE_ADDR está "undefined".
$_SERVER é um array contendo informação como headers, caminhos, e outras informações. As informações nesse array são criadas pelo servidor web específico e, portanto, não há garantias que sempre existirão as mesmas informações, podendo algumas serem omitidas ou adicionadas em relação a lista criada.
Veja aí no ocomon 6.0 o trecho de código em /var/www/html/ocomon/includes/functions/functions.php on line 40
se tem esse if verificador que tem no 6.1.
Talvez instalou alguma coisa aí que prioriza a obtenção do IP a partir de determinados cabeçalhos HTTP em vez do REMOTE_ADDR do PHP o que torna possível ignorar restrições anti-spam baseadas em IP ou, talvez, como você mesmo disse, foi a instalação desse pacote de monitoramento que interferiu.
Talvez nessa ferramenta de monitoramento tenha de acrescentar o IP do servidor onde está o Ocomon e/ou do servidor de e-mail.
Essas mensagens:
object(stdClass)#25 (1) {
["errors"]=>
object(stdClass)#35 (2) {
["type"]=>
string(12) "invalid_data"
["message"]=>
string(28) "Endereço de email inválido"
vem do json, é decorrência da chave REMOTE_ADDR que vai indefinida/vazia.
Acredito que o problema não está exatamente nesses trechos de códigos.
Verifique a configuração de SMTP e de envio de e-mails no Ocomon:
https://ocomon.com.br/site/manual-smtp/
Faça o básico também: dê um ping do servidor do Ocomon para o servidor de e-mail e vice-versa.
_________________________________________________________
Rule number one: Always listen 'to' Buck!
Enquanto o cursor estiver pulsando, há vida!