Ir para conteúdo
  • Cadastre-se

Trocar DNS ao suspender uma conta


matt

Posts Recomendados

Olá Senhores, algum de vocês já tem isso ou entende disso?

 

Eu precisava um script para quando suspender a conta do cliente no cpanel, ele alterar as zonas de DNS e MX para as padrão do servidor.

 

Isso seria útil porque:

 

- O cliente que utiliza o MX do google, continua usando o email mesmo com a conta suspensa e não paga a hospedagem

- Tenho vários clientes que utilizam direcionamentos de WWW para sites como Wix e outros e os sites não suspendem e não paga a hospedagem

 

Tem um post no fórum americano falando disso e tem até um exemplo de script lá, mas é necessário alguém que entenda de shell script para conferir o mesmo.

 

Link: http://forums.cpanel.net/f42/postsuspendacct-change-dns-simple-script-240711.html

 

SCRIPT DE EXEMPLO:

#!/usr/bin/perl
###### Matthew Harris ######
### Sunday October 30, 2011 ###
### Post Suspension DNS UP ###
######################

use strict;
use warnings;

use lib '/usr/local/cpanel';
use Cpanel::PublicAPI();
use Cpanel::AddonDomain();
use File::Copy;

get_accesshash();
my $cp = Cpanel::PublicAPI->new( 'user' => 'root', 'accesshash' => my $accesshash );
$ENV{'REMOTE_USER'} = 'root';

# variable declaration
my %OPTS = @ARGV;
my $user = $OPTS{'user'}; 

my $suspzone = "/var/named/suspended";
my(@add_ons, $maindom);

deps();
findaddons();
maindom();
backupaddons();
editmx();
rndcre();

sub deps{
	if(!-d $suspzone){
		mkdir($suspzone, 0755) or die "Unable to create $suspzone\n";
	}
}

sub findaddons{
	my $addons = $cp->cpanel_api2_request('whostmgr', { 'module' => 'AddonDomain', 'func' => 'listaddondomains', 'user' => "$user" },
		{
			'regex' => ".*",
		}
	);
	@add_ons = map $_->{domain}, @{$addons->{cpanelresult}{data}};
}

sub maindom{
        my $ownfile = '/etc/trueuserdomains';
        open my $fh, "<", $ownfile;
                my @contents = <$fh>;
                @contents = grep /$user/, @contents;
                ($maindom, undef) = split(':', $contents[0]);   
        close $fh;
}

sub backupaddons{
	foreach(@add_ons){
		my $zonefile = "$_.db";
		copy("/var/named/$zonefile", "$suspzone/$zonefile") or die "Could not backup zonefile: $!";
	}
        copy("/var/named/$maindom.db", "$suspzone/$maindom.db") or die "Could not backup zonefile: $!";
}

sub editmx{
	my($zonefile, $fh, @contents, @maincont, $main, $serial, $newserial);
	foreach(@add_ons){
		$zonefile = "/var/named/$_.db";
	        open $fh, "<", $zonefile;
	        @contents = <$fh>;
		@contents = grep !/MX/, @contents;
       		close $fh;
		open $fh, ">", $zonefile;
		foreach(@contents){
        		if($_ =~ /([0-9]{10}).*serial/){
                		$serial = $1;
                		$newserial = $serial + 1;
                		$_ =~ s/$serial/$newserial/g;
                		print $fh @contents;
        		}
		}
		close $fh;
	}
	my $maindomzone = "/var/named/$maindom.db";
	open $main, "<", "$maindomzone";
	@maincont = <$main>;
	@maincont = grep !/MX/, @maincont;
	close $main;
	open $main, ">", $maindomzone;
	   	foreach(@maincont){
                        if($_ =~ /([0-9]{10}).*serial/){
                                $serial = $1;
                                $newserial = $serial + 1;
                                $_ =~ s/$serial/$newserial/g;
                                print $main @maincont;
                        }
                }
	close $main;
}

sub rndcre{
	system("/usr/sbin/rndc reload");
}

sub get_accesshash{
	open my $hash, "<", "/root/.accesshash";
        	my @accesshash = <$hash>;
	close $hash;
	foreach(@accesshash){
        	$accesshash .= $_
	}
}

Alguém pode me dar uma opinião sobre isso?

Link para o comentário
Compartilhar em outros sites

O problema em fazer isto é se o cliente paga e a conta é liberada novamente?

 

O cliente ficará com o serviço Offline devido a modificação na zona de DNS e acabará lhe gerando mais trabalho na reconfiguração, no caso dele efetuar o pagamento é claro.

 

O gancho que o cara fez acima faz isso, ele copia a zona original pra um lugar, depois quando reativar a conta ele restaura as zonas originais.

Link para o comentário
Compartilhar em outros sites

O gancho que o cara fez acima faz isso, ele copia a zona original pra um lugar, depois quando reativar a conta ele restaura as zonas originais.

 

Possivelmente fosse mais simples mudar os DNS para dois servidores com wildcard que respondem por qualquer domínio apontando para uma página padrão. Assim você manteria a zona original no DNS original, e voltaria para eles quando o serviço fosse reestabelecido. 

Link para o comentário
Compartilhar em outros sites

Possivelmente fosse mais simples mudar os DNS para dois servidores com wildcard que respondem por qualquer domínio apontando para uma página padrão. Assim você manteria a zona original no DNS original, e voltaria para eles quando o serviço fosse reestabelecido. 

 

Olá @rubensk quando você fala mudar os DNS, você se refere em mudar direto no registro.br, por exemplo?

Link para o comentário
Compartilhar em outros sites

Olá @rubensk quando você fala mudar os DNS, você se refere em mudar direto no registro.br, por exemplo?

 

Sim, me refiro a mudar diretamente no registry, o que no caso de domínios .br é o Registro.br. Isso é suportado tanto pelo módulo EPP para Registro.br quanto nos módulos de registrar-resellers que costumam ser usados em WHMCS.

Link para o comentário
Compartilhar em outros sites

Sim, me refiro a mudar diretamente no registry, o que no caso de domínios .br é o Registro.br. Isso é suportado tanto pelo módulo EPP para Registro.br quanto nos módulos de registrar-resellers que costumam ser usados em WHMCS.

 

Interessante. Mesmo assim eu teria que criar um Action Hook no WHMCS que ao suspender já altera os DNS´s né?

Link para o comentário
Compartilhar em outros sites

Interessante. Mesmo assim eu teria que criar um Action Hook no WHMCS que ao suspender já altera os DNS´s né?

 

Sim, precisa. A estratégia seria similar, mas ajudaria a preservar a informação dos resource records da zona para o retorno quando o pagamento tiver baixa. 

 

Rubens

Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Infelizmente, seu conteúdo contém termos que não são permitimos. Edite seu conteúdo para remover as palavras destacadas abaixo.
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?