Jump to content

Recommended Posts

Posted

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?


Posted

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.

Posted

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.

Posted

O ideal seria notificar o usuário se a conta não for paga em N dias a mesma sera cancelada/excluida. Assim ele será obrigado a pagar ou cancelar de vez.

WebChamp - Hospedagem de Sites, Revenda de Hospedagem, Revenda de VPS, Servidores Virtuais  (OpenVZ / KVM).

Posted

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. 

Posted

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?

Posted

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.

Posted

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é?

Posted

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?