Ir para conteúdo

Featured Replies

Postado

Pessoal,

Hoje eu enchi o saco do Carlo para fazer um um Hook bem bacana p/ whmcs, foram várias horas de testes até que a condição atual do script parece estar 100% funcional.

Objetivo do script:

No meu caso, estou utilizando em conjunto com um departamento de ticket para receber comprovantes de pagamento.

Como alguns clientes tem dificuldade de acessar o painel de controle, eu habilitei este departamento para abrir ticket automaticamente com o envio de emails.

E vamos supor que o site do cliente esteja suspenso, e mesmo sendo um cliente inadimplente, você crie a facilidade do serviço ser reativado automaticamente com a abertura do ticket.

O cliente precisa mencionar no ticket o domínio que está suspenso para que o script faça uma verificação e identifique o domínio do cliente e faça a remoção da suspensão.

Exemplo:

Titulo do ticket = Irrelevante

Texto do ticket:

  Citar
Cara, pelo amor de deus, esqueci de fazer o pagamento, preciso que meu site volte a funcionar quanto antes, estou enviando o comprovante do deposito feito na sua conta, o site é meusite.com.br

Assim que o cliente abrir o ticket, o hook vai funcionar e vai remover a suspensão do cliente e o mais interessante "temporariamente"

Sendo assim, acredito que clientes que fazem deposito bancario, podem simplesmente enviar um email em vez de ficar no anonimato por ter dificuldade de acessar o painel de cliente.

Vamos a instalação:

Salve este codigo em PHP com o nome "liberarConta.php"

<?php
function liberarConta($vars) {
	if($vars['deptid'] == '1'){
		/*
		 * 1: Qualquer um que enviar o e-mail com um domínio irá ser liberado.
		 * 0: O domínio só será liberado se o cliente for realmente dono do domínio
		 */
		$liberar = '1';
		function pegaUrl($texto){
			$pattern = '/[a-zA-Z0-9\.-]*\.[a-z]{2,}/';
			preg_match_all($pattern, $texto, $url);
			foreach($url[0] as $key => $value){
				if(checkdnsrr($value))
					$retorno[] = $value;
			}
			return $retorno;
		}
		$dominio = pegaUrl($vars['message']);
		$userid = $vars['userid'];
		$t = count($dominio);
		if($t > 0){
			$c = 1;
			$sql = '';
			foreach($dominio as $key){
				if($t == $c)
					$sql .= "domain LIKE '%". $key ."%'";
				else
					$sql .= "domain LIKE '%". $key ."%' OR ";
				$c++;
			}
			include("../../dbconnect.php");
			if($liberar == 0)
				$sqlComando = "SELECT id FROM tblhosting WHERE userid='".$userid."' AND (" . $sql . ")";
			else if($liberar == 1)
				$sqlComando = "SELECT id FROM tblhosting WHERE " . $sql;
			$query_dominios = mysql_query($sqlComando) or die (mysql_error());
			while($query_dominios_while = mysql_fetch_assoc($query_dominios)){
				$url = "http://seusite/whmcs/includes/api.php"; # URL to WHMCS API file
				$username = "seu login do whmcs"; # Admin username goes here
				$password = "sua senha do whmcs"; # Admin password goes here
				$postfields["username"] = $username;
				$postfields["password"] = md5($password);
				$postfields["action"] = "moduleunsuspend"; #action performed by the API:Functions
				$postfields["accountid"] = $query_dominios_while['id'];
				$ch = curl_init();
				curl_setopt($ch, CURLOPT_URL, $url);
				curl_setopt($ch, CURLOPT_POST, 1);
				curl_setopt($ch, CURLOPT_TIMEOUT, 100);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
				$data = curl_exec($ch);
				curl_close($ch);
				$data = explode(";",$data);
				foreach ($data AS $temp) {
					$temp = explode("=",$temp);
					$results[$temp[0]] = $temp[1];
				}
				if ($results["result"]=="success") {
					function somar_dias($data, $dias) {
						$data = explode("-", $data);
						$resultado = date("Y-m-d", mktime(0, 0, 0, $data[1], $data[2]+$dias, $data[0]));
						return $resultado;
					}
					mysql_query("UPDATE tblhosting SET overideautosuspend='on', overidesuspenduntil='".somar_dias(date("Y-m-d"), 5)."'") or die (mysql_error());
					//mail('emailparaverificarbug@email.com.br', 'Debug', 'Sucesso - '.$postfields["accountid"]);
				} else {
					$erro = "The following error occured: ".$results["message"];
					//mail('emailparaverificarbug@email.com.br', 'Debug', $erro);
				}
			}
		}
	}
}
add_hook("TicketOpen", 1, "liberarConta");
?>[/PHP]

Você deve configurar algumas linhas no script:

Linha 5 = Coloque o ID do departamento que vai aceitar os emails para remover a suspensão da conta (estou utilizando o departamento com ID 1)

[PHP] if($vars['deptid'] == '1'){[/PHP]

Linha 11 = Utilize 0 para receber solicitação de desbloqueio de clientes cadastrados ou 1 para qualquer ticket aberto

[PHP] $liberar = '1';[/PHP]

Linhas 54, 55 e 56 = A url da API do whmcs, Login e senha do whmcs

[PHP] $url = "http://seusite/whmcs/includes/api.php"; # URL to WHMCS API file
$username = "seu login do whmcs"; # Admin username goes here
$password = "sua senha do whmcs"; # Admin password goes here
[/PHP]

Linha 84 = Definir o numero de dias para remoção temporaria da suspensão. (Está marcado com 5 dias)

[PHP] mysql_query("UPDATE tblhosting SET overideautosuspend='on', overidesuspenduntil='".somar_dias(date("Y-m-d"), 5)."'") or die (mysql_error());[/PHP]

Linhas 85 e 88 = Email para debug

[PHP] //mail('emailparaverificarbug@email.com.br', 'Debug', 'Sucesso - '.$postfields["accountid"]);[/PHP]

[PHP] //mail('emailparaverificarbug@email.com.br', 'Debug', $erro);[/PHP]

Depois envie o arquivo para:

  Citar

Então teste para verificar se está tudo ok

Bom, como foi o Carlo que desenvolveu o script, peço que tire o escorpião do bolso e faça uma doação p/ ele :D

Como o codigo ta aberto, se alguém souber de alguma complementação p/ melhorá-lo, acho que vai ajudar.

Segue o link dele: (aceita pagseguro, paypal e Moip)

Mdulo MoIP Pagamento Direto com Retorno Automtico Grátis.

Editado por chuvadenovembro

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis

Postado
  • Autor

Tópico atualizado :)

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis

Postado

Obrigado por compartilhar...

Como entro em contato com o Carlo ?


Postado

Caramba!!! Parabéns aos dois... Implementação fantástica... Tenho certeza que ajudará muito à todos!

Muito Obrigado por compartilharem. Farei os testes e implementarei aqui e assim que possível farei a doação para ele!

Tenho uma pequena sugestão: -Que tal definir as variáveis no começo do arquivo para ficar mais fácil para editar os parâmetros e depois utilizar essas variáveis dentro do arquivo?

Valeu!

Editado por McGuyver


Postado
  • Autor
  Rhuan disse:
Obrigado por compartilhar...

Como entro em contato com o Carlo ?

Então Rhuan,

Ele é usuário que do forum, fez modulos do pagseguro, moip, moip e autologin, acredito que em breve deve ver este tópico e passar o contato p/ tu.

  McGuyver disse:
Caramba!!! Parabéns aos dois... Implementação fantástica... Tenho certeza que ajudará muito à todos!

Muito Obrigado por compartilharem. Farei os testes e implementarei aqui e assim que possível farei a doação para ele!

Tenho uma pequena sugestão: -Que tal definir as variáveis no começo do arquivo para ficar mais fácil para editar os parâmetros e depois utilizar essas variáveis dentro do arquivo?

Valeu!

Logico que pensei nisso também McGuyver, mas acho que ao terminar o código depois de diversos erros e acertos, ele preferiu não arriscar hauauahuahua

Em alguns testes que eu fiz, o script mudava drasticamente o comportamento do whmcs, em dois dos casos, o operador de suporte logava, e tinha acesso ao full admin, em outro, os emails que o cron de converter email em ticket não era capaz de remove-los e a cada rodada do cron, novos tickets eram criados heheheheh

Com este funcional, mesmo sem ter os parametros ajustaveis no topo do script, funciona 100% sem apresentar nenhuma anomalia (pelo menos até onde testei :P ) mas eu testei bastante e não detectei nenhum problema.

Assim que fizer os testes comente novamente p/ dar o veredito final sobre o funcionamento do script :P

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis

Postado
  Rhuan disse:
Obrigado por compartilhar...

Como entro em contato com o Carlo ?

msn: carloschneider@live.com

Ou via MP :D

  McGuyver disse:
Caramba!!! Parabéns aos dois... Implementação fantástica... Tenho certeza que ajudará muito à todos!

Muito Obrigado por compartilharem. Farei os testes e implementarei aqui e assim que possível farei a doação para ele!

Tenho uma pequena sugestão: -Que tal definir as variáveis no começo do arquivo para ficar mais fácil para editar os parâmetros e depois utilizar essas variáveis dentro do arquivo?

Valeu!

Vou arrumar as variaveis pra facilitar pro pessoal :D


Postado

Só pra lembrar, acho que o Chuva não comentou, mas é preciso utilizar o cron que transforma e-mails em ticket, já que o sistema funciona a partir do ticket criado.

:D


Postado
  • Autor

Eu tenho o habito de postar alguns tutoriais ou dicas nos foruns principalmente p/ poder utilizar no futuro, p/ mim é como armazenar nas nuvens hehehehe

Hoje não foi diferente, precisei utilizar este hook (pois não tinha ele mais no meu whmcs) e recorri ao forum.

:)

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis

Postado

Seria interessante o código identificar anexo, seria possível?

Acho que ficaria interessante


Postado

Alguém está utilizando na 5.1.2?


Visitante
Este tópico está impedido de receber novos posts.

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Informação Importante

Concorda com os nossos termos?