matt Posted August 13, 2014 Share Posted August 13, 2014 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? 0 Quote Link to comment Share on other sites More sharing options...
Fernando Rafs Posted August 13, 2014 Share Posted August 13, 2014 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. 0 Quote Link to comment Share on other sites More sharing options...
matt Posted August 13, 2014 Author Share Posted August 13, 2014 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. 0 Quote Link to comment Share on other sites More sharing options...
Andre Juliano Posted August 13, 2014 Share Posted August 13, 2014 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. 0 Quote WebChamp - Hospedagem de Sites, Revenda de Hospedagem, Revenda de VPS, Servidores Virtuais (OpenVZ / KVM). Link to comment Share on other sites More sharing options...
rubensk Posted August 13, 2014 Share Posted August 13, 2014 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. 0 Quote Link to comment Share on other sites More sharing options...
matt Posted August 14, 2014 Author Share Posted August 14, 2014 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? 0 Quote Link to comment Share on other sites More sharing options...
rubensk Posted August 14, 2014 Share Posted August 14, 2014 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. 0 Quote Link to comment Share on other sites More sharing options...
matt Posted August 14, 2014 Author Share Posted August 14, 2014 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é? 0 Quote Link to comment Share on other sites More sharing options...
rubensk Posted August 14, 2014 Share Posted August 14, 2014 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 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.