[Resolvido] Hash inválido

Este tópico contém respostas, possui 9 vozes e foi atualizado pela última vez por  Jonatas 2 anos, 4 meses atrás.

  • Autor
    Posts
  • #8516

    Essa versão só funciona no whmcs 7 ou pode funcionar na versão 6.3 já instalei varias vezes muitas mais não funciona sempre aparece essa mensagem Hash inválido. Admin: verifique o formato da tag do template de e-mail, as credenciais e os dados do cliente.

  • #8517

    Depois de vários dias batendo cabeça funcionou fiz por esse tutorial http://www.whmcsjet.com/autologin-link-in-whmcs-email/

  • #8525

    Gofas
    Mestre

    Olá @clodoaudo, bem vindo!
    Nosso módulo funciona em versões do whmcs 5.3 ao 7.1.1.

    A solução que você citou funciona mas pode expor o seu sistema à uma vulnerabilidade, além de poder parar de funcionar em versões futuras do whmcs, pois para ela funcionar em versões do whmcs maiores que 7.0, você precisa forçar o seu whmcs a permitir php smarty tags nos templates de email, que trata-se de executar funções do php nos templates de email. Essa prática não é mais encorajada pelos desenvolvedores do whmcs.

    Se você desejar ajuda, precisamos de mais informações, vendo exemplos dos seus arquivos com a distribuição das chaves e a tag que você inseriu no template de email podemos entender melhor a sua dificuldade.

  • #8543

    Também tenho este mesmo problema, até que caiu a ficha que há no meu PHP algo que não está permitindo a função if chamada no auth.php

    if (md5($_GET['email'].$_GET['uid'].$_GET['uname'].$secret_key) != $_GET['hash']){
    die();
    } 

    Eu desativei comentando as linhas até que eu consiga descobrir porque a função não está funcionando. E o Autologin funcionou bem.

    • #8646

      Gofas
      Mestre

      Opa, não é recomendado fazer isso, essa linha é responsável pela verificação do hash, veja os comentários nesse post do blog.

      Resolvemos isso rápido se você publicar aqui:
      – os arquivos configuration.php, auth.php e gofas_hash_email.php com exemplo das chaves que você usou (oculte informações do seu servidor);
      – exemplo da tag que você inseriu no template de email;
      – exemplo do URL gerado;

  • #8752

    Estou com problemas e não consigo solucionar.

    os codigos estão dentro das #######

    configuration.php
    #################
    <?php
    $license = ‘0000000000’;
    $db_host = ‘localhost’;
    $db_port = ”;
    $db_username = ‘0000000000’;
    $db_password = ‘0000000000’;
    $db_name = ‘mtserver_painel’;
    $cc_encryption_hash = ‘0000000000’;
    $templates_compiledir = ‘templates_c’;
    $mysql_charset = ‘utf8’;
    $autoauthkey = “abc123”; // chave igual à inserida no /auth.php
    ?>
    #################

    auth.php
    #################
    <?php
    /**
    * Auto Login Hash Merge Tag Email Template
    * @author Mauricio Gofas | gofas.net
    * @copyright Copyright (c) 2016 https://gofas.net
    */

    // Modelo de URL para colar no template de email:
    // {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    $autoauthkey = “abc123”; // chave igual à inserida no arquivo /configuration.php
    $secret_key = “abcdefg1234567890”; // chave igual à inserida no arquivo /includes/hooks/gofas_hash_email.php
    $whmcsurl = $_GET[“whmcsurl”].’dologin.php’;
    if (md5($_GET[‘email’].$_GET[‘uid’].$_GET[‘uname’].$secret_key) != $_GET[‘hash’]){ // Confere se o hash é válido
    die(‘Hash inválido. Admin: verifique o formato da tag do template de e-mail, as credenciais e os dados do cliente.’); // Morre se o hash é Inválido
    }
    // Continua a execução do script e permite o acesso se o hash é válido
    $email = $_GET[‘email’];
    $timestamp = time();
    $goto = $_GET[“goto”];
    $hash = sha1($email.$timestamp.$autoauthkey);
    $url = $whmcsurl.”?email=$email&timestamp=$timestamp&hash=$hash&goto=”.urlencode($goto);
    header(“Location: $url”);
    exit;
    ?>
    #################

    gofas_hash_email.php
    #################
    <?php
    /**
    * Auto Login Hash Merge Tag Email Template
    * @author Mauricio Gofas | gofas.net
    * @copyright Copyright (c) 2016 https://gofas.net
    */

    if (!defined(‘WHMCS’)) die(‘This file cannot be accessed directly’);
    function gofas_hash_email_template($vars) {
    $whmcsAdmin = 1;
    $invoiceID = $vars[‘relid’];
    $getinvoice = ‘getinvoice’;
    $getinvoiceid[‘invoiceid’] = $invoiceID;
    $GetInvoiceResults = localAPI($getinvoice,$getinvoiceid,$whmcsAdmin);
    $userID = $GetInvoiceResults[‘userid’];
    $getClient = ‘getclientsdetails’;
    $getClientValues[‘clientid’] = $userID;
    $getClientValues[‘stats’] = true;
    $getClientValues[‘responsetype’] = ‘json’;
    $getClientResults = localAPI($getClient,$getClientValues,$whmcsAdmin);
    $secret_key = ‘abcdefg1234567890’; // chave igual à inserida no /auth.php
    $merge_fields = array();
    $merge_fields[‘hash’] = md5($getClientResults[‘client’][‘email’].$getClientResults[‘client’][‘id’].$getClientResults[‘client’][‘firstname’].$getClientResults[‘client’][‘lastname’].$secret_key);
    return $merge_fields;
    }
    add_hook(‘EmailPreSend’,1,’gofas_hash_email_template’);
    ?>
    #################

    Support Ticket Reply
    #################
    <table style=”font-family: Verdana, sans-serif; font-size: 14px; color: #000000; text-decoration: none; width: 596px;” border=”0″ cellspacing=”0″ cellpadding=”8″>
    <tbody>
    <tr>
    <td width=”657″>
    <p><span style=”text-align: left;”>Seu Ticket de Suporte </span>{$ticket_id}<span style=”text-align: left;”> foi atualizado pelo departamento “</span><span style=”background-color: #ffffff;”>{$ticket_department}”</span><span style=”text-align: left;”> com a seguinte resposta:</span></p>
    <p><span style=”text-align: left;”>Mensagem: {$ticket_message}</span></p>
    <table style=”font-family: Verdana, sans-serif; font-size: 14px; color: #000000; width: 596px;” border=”0″ cellspacing=”0″ cellpadding=”8″>
    <tbody>
    <tr>
    <td width=”657″>
    <table style=”color: #000000; font-family: Verdana, sans-serif; font-size: 14px; border: 2px solid #2693FF; width: 100%;” border=”0″ cellspacing=”5″ cellpadding=”5″ align=”center”>
    <tbody>
    <tr class=”tabela”>
    <td style=”background-color: #2693ff; padding-left: 15px;” height=”23″>Detalhes do Ticket</td>
    </tr>
    <tr>
    <td>
    <p>Ticket ID: {$ticket_id}<br /> Assunto: {$ticket_subject}<br /> Status: {$ticket_status}</p>
    </td>
    </tr>
    </tbody>
    </table>
    </td>
    </tr>
    </tbody>
    </table>
    <p>Caso tenha dúvidas, responda ou abra um abra um ticket de suporte através da área do cliente clicando aqui.</p>
    <p>{$signature}</p>
    <p> </p>
    </td>
    </tr>
    </tbody>
    </table>
    #################

    E-MAIL RECEBIDO
    #################
    Caso tenha dúvidas, responda ou abra um abra um ticket de suporte através da área do cliente http://mtserver.net/viewticket.php?tid=375776&c=kKONrP0O“>clicando aqui…
    #################

    LINK OCULTO DO LINK
    #################
    http://mtserver.net/auth.php?email=site@aefcomputer.com.br&uid=2&uname=A%20&%20FINFORMATICA%20NETWORK%20LTDA&hash=ab5075cf57283695f0409012c5f2e9b1&whmcsurl=http://mtserver.net/&goto=%3Ca%20href=
    #################

  • #8754

    Gofas
    Mestre

    Bem vindo Thiago, gratidão por coletar as informações necessárias, vou testar com o seu modelo para descobrir a causa,
    só faltou a tag dinâmica que gera o link, ela está nesse formato?:
    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    A princípio, parece que você só precisa ajustar a tag do email, pois o URL gerado contém alguns espaços entre os dados que podem ser removidos,
    a junção dos caracteres %20 no URL significa um espaço.

  • #8755

    Obrigado pela atenção.

    Eu ajustei a tag email, mas ainda sem sucesso, dá Hash inválido. Admin: verifique o formato da tag do template de e-mail, as credenciais e os dados do cliente.

    Veja no link no rodapé da página, ele não completa e o html é quebrado mesmo estando certinho no template do e-mail

    clique aqui.

    print

    Obrigado por enquanto

  • #8756

    no e-mail do invoice, funcionou.

    print2

  • #8758

    Gofas
    Mestre

    Estamos chegando perto, por favor, me envie o seu template de e-mail completo, se o trecho “Support Ticket Reply” for o seu template de email, parece incompleto ou diferente do email gerado.

    Outro detalhe, o parâmetro goto {$ticket_link} está gerando um <a href=""…, ao invés de apenas o URL, tente usar {$ticket_url} no lugar.

    Ficaria assim o URL dinâmico:
    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto={$ticket_url}

  • #8762

    Colocando apenas o url dinamico fica assim no e-mail:

    http://mtserver.net/auth.php?email=site@aefcomputer.com.br&uid=2&uname=DIEGOAMBROSIO&hash=efbf08832323acf12d9d7110408ffe2e&whmcsurl=http://mtserver.net/&goto=http://mtserver.net/viewticket.php?tid=375776&c=kKONrP0O

    Está gerando 3 http.

    Coloquei esse template simples para ver o resultado.

    Mensagem: {$ticket_message}
    <br>
    Ticket ID: #{$ticket_id}
    <br>
    Subject: {$ticket_subject}
    <br>
    Status: {$ticket_status}
    <br>
    Ticket URL: {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto={$ticket_link}

  • #8765

    Olá, acabei de fazer a instalação e deu Hash inválido.

    Arquivo configuration.php:

    <?php
    $license = 'WebHost-*******';
    $db_host = 'localhost';
    $db_username = '*******';
    $db_password = '*******]';
    $db_name = '*******';
    $cc_encryption_hash = '*******';
    $templates_compiledir = '/home/*******/whmcsdata/templates_c/';
    $mysql_charset = 'utf8';
    date_default_timezone_set('America/Sao_Paulo');
    $attachments_dir = '/home/*******/whmcsdata/attachments/';
    $downloads_dir = '/home/*******/whmcsdata/downloads/';
    $customadminpath = '*******';
    $autoauthkey = "7z6cu0y7jrrwoke"; //este não é o verdadeiro, somente um exemplo

    Arquivo auth.php

    $autoauthkey = "7z6cu0y7jrrwoke"; // exemplo igual configuration
    $secret_key =  "1exyuex91ykhuv0"; // outro exemplo 

    Arquivo includes/hooks/gofas_hash_email.php (Modifiquei apenas a linha 21, deixando assim):

    $secret_key = ‘1exyuex91ykhuv0’;

    A tag inserida no email foi usada a:

    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&uname={$client_first_name}{$client_last_name}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    Quando envio o email, o cliente recebe um email com um link assim:

    https://meudominiowhmcs.com.br/auth.php?email=cliente@emailcliente.com.br&uid=54&uname=NomeSobrenomeDoCliente&hash=cliente@emailcliente.com.brca4e9719d6bc63ea8ee06f896757716c&whmcsurl=https://meudominiowhmcs.com.br/&goto=viewinvoice.php?id=5

  • #8766

    Gofas
    Mestre

    Bem vindo Wendell!

    A configuração dos arquivos está correta, o parâmetro hash do URL está sendo errado pois contém o email do cliente “cru” no começo do hash, observe que cada sinal & separa os parâmetros e sinal = indica o valor associado ao respectivo parâmetro, vamos separar os dados nessa lógica para entender mais facilmente:

    email=cliente@emailcliente.com.br
    uid=54
    uname=NomeSobrenomeDoCliente
    hash=cliente@emailcliente.com.brca4e9719d6bc63ea8ee06f896757716c // O hash correto provavelmente é ca4e9719d6bc63ea8ee06f896757716c
    whmcsurl=https://meudominiowhmcs.com.br/
    goto=viewinvoice.php?id=5
    • #8771

      Maurício, obrigado pela recepção e ajuda!

      Eu teste este seu código simplificado e continua gerando o erro de Hash inválido. Agora recebo um link como este:

      https://meudominiowhmcs.com.br/auth.php?email=cliente@emailcliente.com.br&hash=cliente@emailcliente.com.brca4e9719d6bc63ea8ee06f896757716c&whmcsurl=https://meudominiowhmcs.com.br/&goto=viewinvoice.php?id=5

      No caso:

      email=cliente@emailcliente.com.br
      hash=cliente@emailcliente.com.brca4e9719d6bc63ea8ee06f896757716c
      whmcsurl=https://meudominiowhmcs.com.br/
      goto=viewinvoice.php?id=5

      Ou seja, no Hash continua passando o email dentro, eu acredito que por algum motivo que eu desconheço, o WHMCS não está lendo o hook gofas_hash_email.php

      • #8776

        Gofas
        Mestre

        O seu caso pode ser o mesmo do Leandro, realize o mesmo teste que recomendei abaixo para verificar se o md5 está ativo no seu php.
        Você também pode tentar substituir md5 por sha1, isso deve funcionar, troque onde está md5( por sha1( no arquivo auth.php e gofas_hash_email.php.

        Dando certo ou não, aguardo a resposta de todos, para descobrir como podemos aumentar a compatibilidade do mesmo.

  • #8767

    Gofas
    Mestre

    Criei uma versão resumida do script, que encripta apenas o email do cliente + hash, quem teve dificuldade com a configuração da versão completa pode testar essa:

    Utilizando a versão acima, a tag do email que gera o URL deve substituída por ser esta:
    {$whmcs_url}auth.php?email={$client_email}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    • #9174

      Esse funcionou perfeito depois de horas de tentativas. Obrigado!

      • #9175

        Gofas
        Mestre

        Legal Sidnei, gratidão pelo retorno!

        Você chegou a testar a tag {$debug} introduzida na versão 2.0? Ela mostra informações precisas de onde o sistema errou, se você nos enviar essa info (use pastebin ou gist) podemos lhe ajudar a corrigir para você usar a versão completa, mais segura.

    • #9258

      Muito bom, o meu único problema era que o md5 não estava funcionando, alterei os dois arquivos colocando o sha1. Funcionou perfeitamente. Obrigado

  • #8768

    Está versão resumida funcional muito bem. Grato.

  • #8770

    Usei esse novo modelo, mas não funcionou no ticket reply.

    testei com esse simples modelo abaixo.

    {$whmcs_url}auth.php?email={$client_email}&hash={$hash}&whmcsurl={$whmcs_url}&goto={$ticket_link}

    e me retorne isso no e-mail

    http://mtserver.net/auth.php?email=contato@icvindeamim.org.br&hash=efbf08832323acf12d9d7110408ffe2e&whmcsurl=http://mtserver.net/&goto=http://mtserver.net/viewticket.php?tid=268802&c=rlKkyom5

    com [A link ativo] apenas em cima do final do link acima:

    http://mtserver.net/viewticket.php?tid=268802&c=rlKkyom5

    • #8778

      Gofas
      Mestre

      Constatei que no WHMCS 7.1.1, os templates de emails para tickets estão gerando um hash diferente, dos emails que usam os templates de faturas, por ex., acredito que a solução será criar um novo hook para rodar especificamente quando um ticket é respondido, substituindo a função atual que roda antes do email ser gerado… estamos planejando melhorias.

      Eu ainda estou estudando isso nas “horas vagas”, nos mantenha informado sobre qualquer descoberta nova, por favor, pretendemos melhorar o módulo.

  • #8772

    Está versão resumida funcionou para mim em uma instalação com o Painel Webuzo, NGINX e PHP 7.0.15, antes a outra versão não funcionou, más neste intervalo de tempo adicionei algumas extensões que não tinham ao php.
    Em outra instalação com CPanel, Apache e PHP 5.6 e usando os mesmos arquivos não funcionou, faltaria aí alguma extensão necessária para executar o auto login?

    • #8774

      Gofas
      Mestre

      Que bom que funcionou Leandro! No seu caso um dos motivos de não ter funcionado antes pode estar relacionado ao nome do cliente, pois a versão resumida dispensa Nome, Sobrenome e ID do cliente para evitar erros de codificação, espaços e caracteres inválidos.

      O MD5 é um algoritmo hash nativo do php, teoricamente não necessita nenhuma extensão adicional (fonte: http://php.net/manual/pt_BR/function.hash-algos.php).

      Para verificar se o seu php possui o MD5 ativo, adicione um arquivo na raiz do WHMCS com o nome hash.php e o seguinte conteúdo:

      <?php
      echo '<pre>';
      print_r(hash_algos());
      echo '</pre>';
      ?>

      Acesse o arquivo no navegador e colete o array gerado, deve ser algo semelhante a isso:

      Array
      (
          [0] => md2
          [1] => md4
          [2] => md5
          [3] => sha1
          [4] => sha224
          [5] => sha256
          [6] => sha384
          [7] => sha512
          [8] => ripemd128
          ...
          [45] => haval256,5
      )
  • #8777

    Olá srs. consegui rodar, porem no teste que eu fiz eu renovei um dominio, então eu recebo dois e-mails, o (Customer Invoice) e depois o (Order Confirmation)

    Customer Invoice, vem assim e os dois links funcionam:
    https://mtserver.net/auth.php?email=contato@icvindeamim.org.br&uid=1&uname=Luiz&hash=ba48327be1062b150dd63bd06b345623&whmcsurl=https://mtserver.net/&goto=viewinvoice.php?id=49

    https://mtserver.net/auth.php?email=contato@icvindeamim.org.br&uid=1&uname=Luiz&hash=ba48327be1062b150dd63bd06b345623&whmcsurl=https://mtserver.net/&goto=clientarea.php

    Order Confirmation, assim mas não funciona:
    https://mtserver.net/auth.php?email=contato@icvindeamim.org.br&uid=1&uname=Luiz&hash=ec81242f37c5908e632bec9d8b964355&whmcsurl=https://mtserver.net/&goto=clientarea.php

    então desse segundo e-mail dá o erro Hash inválido

  • #8780

    Maurício,

    Ao testar se o MD5 está ativo no servidor, minha resposta é sim, pois tive o mesmo array impresso que o seu.

    Tentei substituir onde está md5( por sha1( no arquivo auth.php e gofas_hash_email.php porém sem sucesso, e o mais estranho é que gerou o mesmo link: https://meudominiowhmcs.com.br/auth.php?email=cliente@emailcliente.com.br&hash=cliente@emailcliente.com.brca4e9719d6bc63ea8ee06f896757716c&whmcsurl=https://meudominiowhmcs.com.br/&goto=viewinvoice.php?id=5

    email=cliente@emailcliente.com.br
    hash=cliente@emailcliente.com.brca4e9719d6bc63ea8ee06f896757716c
    whmcsurl=https://meudominiowhmcs.com.br/
    goto=viewinvoice.php?id=5

    Acredito que meu WHMCS não está carregando o arquivo gofas_hash_email.php ao disparar algum email.

    • #8781

      Edit: No meu template de email tinha uma configuração bem antiga que funcionava na versão 5.x do WHMCS para o autologin, esta configuração estava sobrepondo a configuração do Maurício e por isso estava sempre gerando hash inválido.

      Resumindo: Está tudo funcionando perfeitamente!

      A configuração é a seguinte linha nos templates de emails (talvez alguém enfrente o mesmo erro):

      {assign var='hash' value=$client_email|cat:"aqui estava um hash $secret_key antigo"}

      • #8785

        Gofas
        Mestre

        Opa, que massa!

        Eu achei que nem precisava citar a necessidade de remover versões de autologin antigas dos templates de e-mail e das pasta /includes/hooks,
        pois mergetags que invocam funções do php diretamente nos templates de email causam erro em versões do whmcs > 7, ela foram bloqueadas por segurança.

        Será que é o mesmo caso de mais alguém aqui?

  • #8782

    Eu também modifiquei a versão resumida para esta que encripta apenas o email do cliente + id do cliente + hash, pois como o problema do hash na versão completa estava sendo causado pelo nome e sobrenome, eu removi apenas estas variáveis, sendo que passando o id traz uma segurança maior na minha opinião.

    Ficou assim:

    Arquivo auth.php:

    <?php
    /**
     * Auto Login Hash Merge Tag Email Template ( Versão resumida )
     * @author     Mauricio Gofas | gofas.net
     * @copyright  Copyright (c) 2016 https://gofas.net
     */
     
     // Modelo de URL para colar no template de email:
    // {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}
    $autoauthkey = "xxxxx_autoauthkey_xxxxx"; // chave igual à inserida no arquivo /configuration.php
    $secret_key =  "xxxxx_secret_key_xxxx"; // chave igual à inserida no arquivo /includes/hooks/gofas_hash_email.php
    $whmcsurl = $_GET["whmcsurl"].'dologin.php';
    if (md5($_GET['email'].$secret_key) != $_GET['hash']){ // Confere se o hash é válido
    die('Hash inválido. Admin: verifique o formato da tag do template de e-mail, as credenciais e os dados do cliente.'); // Morre se o hash é Inválido
    } 
    // Continua a execução do script e permite o acesso se o hash é válido 
    $email		= $_GET['email'];
    $timestamp	= time();
    $goto		= $_GET["goto"];
    $hash		= sha1($email.$timestamp.$autoauthkey);
    $url		= $whmcsurl."?email=$email&timestamp=$timestamp&hash=$hash&goto=".urlencode($goto);
    header("Location: $url");
    exit;
    ?>

    Arquivo gofas_hash_email.php:

    <?php
    /**
     * Auto Login Hash Merge Tag Email Template ( Versão resumida )
     * @author     Mauricio Gofas | gofas.net
     * @copyright  Copyright (c) 2016 https://gofas.net
     */
    if (!defined('WHMCS')) die('This file cannot be accessed directly');
    function gofas_hash_email_template($vars) {
    	$whmcsAdmin							= 1;
    	$invoiceID							= $vars['relid'];
     	$getinvoice							= 'getinvoice';
    	$getinvoiceid['invoiceid']			= $invoiceID;
    	$GetInvoiceResults					= localAPI($getinvoice,$getinvoiceid,$whmcsAdmin);
    	$userID								= $GetInvoiceResults['userid'];
     	$getClient							= 'getclientsdetails';
    	$getClientValues['clientid']		= $userID;
    	$getClientValues['stats']			= true;
    	$getClientValues['responsetype']	= 'json';
    	$getClientResults					= localAPI($getClient,$getClientValues,$whmcsAdmin);
    	$secret_key							= 'xxxxx_secret_key_xxxx'; // chave igual à inserida no /auth.php
    	$merge_fields = array();
    	$merge_fields['hash']				= md5($getClientResults['client']['email'].$getClientResults['client']['id'].$secret_key);
    	return $merge_fields;
    }
    add_hook('EmailPreSend',1,'gofas_hash_email_template');
    ?>

    Para usar esta versão, use esta tag do email que gera o URL:

    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    • #8786

      Gofas
      Mestre

      Muito bom! Realmente, quanto mais dados do cliente você encriptar no hash mais seguro se torna o hash, pois fica cada vez mais difícil obter tantos detalhes do cliente.

  • #9092

    Wagner
    Participante

    Boa tarde Senhores,

    O que mais preciso no Auto-Login é a opção dos Tickets.
    Quando tiverem uma solução, ficarei muito feliz.

  • #9093

    Mauro Lino
    Participante

    Olá pessoal estou tendo o mesmo problema de hash inválido, segue dados da atual configuração se alguém poder ajudar já fiz as verificações e sugestões aqui informadas, e atualmente estou usando a versão resumida a versão que o parceiro Wendell compartilhou.
    Errro: Hash inválido. Admin: verifique o formato da tag do template de e-mail, as credenciais e os dados do cliente.

    Link gerado:
    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}

    https://www.MEUSITEDETESTEt.com.br/painel/auth.php?email=AUTOLOGIN@MEUSITEDETESTEt.com&uid=1&hash=d8a588a5e86cd725257e42e45368b565&whmcsurl=https://www.MEUSITEDETESTEt.com.br/painel/&goto=viewinvoice.php?id=3291

    {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&hash={$hash}&whmcsurl={$whmcs_url}&goto=clientarea.php?action=details

    https://www.MEUSITEDETESTEt.com.br/painel/auth.php?email=AUTOLOGIN@MEUSITEDETESTEt.com.br&uid=1&hash=d8a588a5e86cd725257e42e45368b565&whmcsurl=https://www.MEUSITEDETESTEt.com.br/painel/&goto=clientarea.php?action=details

    Dados do arquivo configuration.php:

    <?php
    $license = ‘********’;
    $db_host = ‘localhost’;
    $db_username = ‘*********’;
    $db_password = ‘*******’;
    $db_name = ‘*********’;
    $cc_encryption_hash = ‘k7omMqm2kx243RAgiySJTlvSqnQ0cHf9PwJD828xg5g4wJd9rC8Bn1PqYm2XDmtS’;
    $templates_compiledir = ‘/home/******/whmcs_dados/templates_c/’;
    $attachments_dir = ‘/home/******/whmcs_dados/attachments/’;
    $downloads_dir = ‘/home/******/whmcs_dados/downloads/’;
    $customadminpath = ‘******’;
    /*$display_errors = true;*/
    /*$display_errors = E_ALL ^ E_NOTICE;*/
    $autoauthkey = “3dTzUFfmKH535u47B38M”;
    $api_access_key = “******”;
    $mysql_charset = ‘latin1’;

    Dados do arquivo auth.php:

    <?php
    /**
    * Auto Login Hash Merge Tag Email Template ( Versão resumida )
    * @author Mauricio Gofas | gofas.net
    * @copyright Copyright (c) 2016 https://gofas.net
    */
    // Modelo de URL para colar no template de email:
    // {$whmcs_url}auth.php?email={$client_email}&uid={$client_id}&hash={$hash}&whmcsurl={$whmcs_url}&goto=viewinvoice.php?id={$invoice_id}
    $autoauthkey = “3dTzUFfmKH535u47B38M”; // chave igual à inserida no arquivo /configuration.php
    $secret_key = “QOf7k3REWP23H2t85yil”; // chave igual à inserida no arquivo /includes/hooks/gofas_hash_email.php
    $whmcsurl = $_GET[“whmcsurl”].’dologin.php’;
    if (md5($_GET[’email’].$secret_key) != $_GET[‘hash’]){ // Confere se o hash é válido
    die(‘Hash inválido. Admin: verifique o formato da tag do template de e-mail, as credenciais e os dados do cliente.’); // Morre se o hash é Inválido
    }
    // Continua a execução do script e permite o acesso se o hash é válido
    $email = $_GET[’email’];
    $timestamp = time();
    $goto = $_GET[“goto”];
    $hash = sha1($email.$timestamp.$autoauthkey);
    $url = $whmcsurl.”?email=$email&timestamp=$timestamp&hash=$hash&goto=”.urlencode($goto);
    header(“Location: $url”);
    exit;
    ?>

    Dados do arquivo gofas_hash_email.php:

    <?php
    /**
    * Auto Login Hash Merge Tag Email Template ( Versão resumida )
    * @author Mauricio Gofas | gofas.net
    * @copyright Copyright (c) 2016 https://gofas.net
    */
    if (!defined(‘WHMCS’)) die(‘This file cannot be accessed directly’);
    function gofas_hash_email_template($vars) {
    $whmcsAdmin = 1;
    $invoiceID = $vars[‘relid’];
    $getinvoice = ‘getinvoice’;
    $getinvoiceid[‘invoiceid’] = $invoiceID;
    $GetInvoiceResults = localAPI($getinvoice,$getinvoiceid,$whmcsAdmin);
    $userID = $GetInvoiceResults[‘userid’];
    $getClient = ‘getclientsdetails’;
    $getClientValues[‘clientid’] = $userID;
    $getClientValues[‘stats’] = true;
    $getClientValues[‘responsetype’] = ‘json’;
    $getClientResults = localAPI($getClient,$getClientValues,$whmcsAdmin);
    $secret_key = ‘QOf7k3REWP23H2t85yil’; // chave igual à inserida no /auth.php
    $merge_fields = array();
    $merge_fields[‘hash’] = md5($getClientResults[‘client’][’email’].$getClientResults[‘client’][‘id’].$secret_key);
    return $merge_fields;
    }
    add_hook(‘EmailPreSend’,1,’gofas_hash_email_template’);
    ?>

    Resultado do teste de MD5:

    Array
    (
    [0] => md2
    [1] => md4
    [2] => md5
    [3] => sha1
    [4] => sha224
    [5] => sha256
    [6] => sha384
    [7] => sha512
    [8] => ripemd128
    [9] => ripemd160
    [10] => ripemd256
    [11] => ripemd320
    [12] => whirlpool
    [13] => tiger128,3
    [14] => tiger160,3
    [15] => tiger192,3
    [16] => tiger128,4
    [17] => tiger160,4
    [18] => tiger192,4
    [19] => snefru
    [20] => snefru256
    [21] => gost
    [22] => gost-crypto
    [23] => adler32
    [24] => crc32
    [25] => crc32b
    [26] => fnv132
    [27] => fnv1a32
    [28] => fnv164
    [29] => fnv1a64
    [30] => joaat
    [31] => haval128,3
    [32] => haval160,3
    [33] => haval192,3
    [34] => haval224,3
    [35] => haval256,3
    [36] => haval128,4
    [37] => haval160,4
    [38] => haval192,4
    [39] => haval224,4
    [40] => haval256,4
    [41] => haval128,5
    [42] => haval160,5
    [43] => haval192,5
    [44] => haval224,5
    [45] => haval256,5
    )

  • #9117

    Gofas
    Mestre

    Galera, vai sair uma atualização hoje que inclui os templates de email de tickets e corrige falhas de compatibilidade das versões mais recentes do whmcs.

  • #9127

    Gofas
    Mestre

    Galera, testem a atualização do módulo e me retornem o debug se ainda tiverem dificuldades, por favor.
    Vejam as notas da nova versão e como usar o {$debug} introduzido na versão 2.0:
    https://gofas.net/blog/whmcs/whmcs-auto-login-v2-0/

O tópico ‘Hash inválido’ está fechado para novas respostas.