The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WWW::Kinghost::Painel - Object for hosting automation using Kinghost (www.kinghost.net) v2 Control Panel

VERSION

0.04

SYNOPSIS

    use WWW::Kinghost::Painel; 

    my $painel = WWW::Kinghost::Painel->new();
    #my $painel = new WWW::Kinghost::Painel();

    # Loga no painel
    $painel->logar( "email@revenda.com.br", "senhadarevenda" );


    # Novo Cliente
    my $empresa = "Yogurteiras Top Jeca";
    my $nome = "José da Silva";
    my $tipoPessoa = "F"; # F - J - I(ignorar)
    my $cpfcnpj = "000.000.000-00"; # CPF ou CNPJ
    my $email = 'josesilva@gmail.com'; # não deve ser igual @dominiodocliente.com.br
    my $emailcobranca = 'josesilva@gmail.com'; # não deve ser igual @dominiodocliente.com.br
    my $senha = "xxxxxx";
    my $senhaConfimacao = "xxxx";
    my $telefone = "";
    my $fax = "";
    my $cep = "";
    my $endereco = "";
    my $cidade = "";
    my $estado = "";
    print $painel->novoCliente( $empresa, $nome, $tipoPessoa, $cpfcnpj, $email, $emailcobranca, $senha, $senhaConfimacao, $telefone, $fax, $cep, $endereco, $cidade, $estado );


    # Novo Domínio
    my $plano = "0000000";
    my $dominio = "topjeca.com.br";
    my $cliente = "107645";
    my $pagoate = "2012-03-01";
    my $senha = "testeteste";
    my $plataforma = "Windows";
    my $webmail = "SquirrelMail"; # SquirrelMail, NutsMail, RoundCube, TupiMail, Horde
    print $painel->novoDominio( $plano, $cliente, $pagoate, $dominio, $senha, $plataforma, $webmail );


    # Novo Banco PGSql
    my $idDominio = "000000";
    my $senha = "xxxxxx";
    print $painel->novoPGSql( $idDominio, $senha );


    # lê arquivo SQL
    my $arquivo = "topjeca.sql";
    my $path = $Server->MapPath("../../sql/"); # caminho absoluto
    my $sql = $painel->leScriptSQL( $arquivo, $path );


    # roda script SQL
    my $hostbanco = "localhost";
    my $nomebanco = "topjeca";
    my $userbanco = "topjeca";
    my $senhabanco = "xxxxxx";
    my $sql = $painel->leScriptSQL( $arquivo, $path );
    $painel->rodaScriptPGSql( $hostbanco, $nomebanco, $userbanco, $senhabanco, $sql );
    
    
    # importa FTP externo
    my $idDominio = "000000";
    my $host = "ftp.xxxxxx.com.br";
    my $user = "usuarioftp";
    my $pass = "senhaftp";
    my $dirOrigem = 'www';
    my $dirDestino = 'www';
    print $painel->importaFTPExterno( $idDominio, $host, $user, $pass, $dirOrigem, $dirDestino );
    
    
    # cria user para o sistema de stats do domínio
    my $idDominio = "000000";
    my $usuario = "xxxxx";
    my $senha = "xxxxx";
    print $painel->novoUserStats( $idDominio, $usuario, $senha );
    
    
    # cria nova conta de e-mail
    my $idDominio = "00000";
    my $caixa = "caixa";
    my $senha = "xxxxx";
    my $tamanho = "5242880"; # em bytes
    print $painel->novaCaixaEmail( $idDominio, $caixa, $senha, $tamanho );
    
    
    # edita senha de conta de e-mail
    my $idDominio = "00000";
    my $email = 'caixa@topjeca.com.br';
    my $senha = "xxxxx";
    print $painel->editaSenhaCaixaEmail( $idDominio, $email, $senha );
    
    
    # lista todas as caixas de e-mail do domínio
    my $idDominio = "0000000";
    print $painel->listaCaixasEmail( $idDominio );
    
    
    # Checa se o domínio ja é cadastrado na revenda
    my $dominio = "web2solutions.com.br";
    print $painel->checaDisponibilidadeDominioRevenda( $dominio );


    # Pega o endereço provisório do domínio
    my $idDominio = "0000000";
    print $painel->pegaServidorTemporario( $idDominio );
    
    
    
    #Transfere domínio no Registro.br
    # ID da Entidade dententora do domínio
    my $ID = "XXXXX"; 
    # ID da Entidade dententora do domínio
    my $senha = "XXXX"; 
    my $dominio = "topjeca.com.br";    
    # Dominio que você deseja transferir
    my $idTec = "XXXXX"; # ID da entidade que deseja transferir o contato técnico. deixe em branco caso nao queira transferir o contato técnico
    # servidores DNS para o qual o domínio será transferido. Só é obrigatório o dns1 e dns2
    my $dns1 = 'dns1.web2solutions.com.br';
    my $dns2 = 'dns2.web2solutions.com.br';
    my $dns3 = 'dns3.web2solutions.com.br';
    my $dns4 = 'dns4.web2solutions.com.br';
    print $painel->transfereDominio( $ID, $senha, $dominio, $idTec, $dns1, $dns2, $dns3, $dns4 );

    
    

SUMMARY

METHODS

logar

Loga no painel de controle. Este método deverá ser chamado antes de qualquer outro método. Ativa flag $statusLogin.

    my $status_login = $painel->logar($email, $senha);

Return string

    logged, invalid login, not found, unknow HTTP error, connection error

novoCliente

Cadastra novo cliente

    # Novo Cliente
    my $empresa = "Yogurteiras Top Jeca";
    my $nome = "José da Silva";
    my $tipoPessoa = "F"; # F - J - I(ignorar)
    my $cpfcnpj = "000.000.000-00"; # CPF ou CNPJ
    my $email = 'josesilva@gmail.com'; # não deve ser igual @dominiodocliente.com.br
    my $emailcobranca = 'josesilva@gmail.com'; # não deve ser igual @dominiodocliente.com.br
    my $senha = "xxxxxx";
    my $senhaConfimacao = "xxxx";
    my $telefone = "";
    my $fax = "";
    my $cep = "";
    my $endereco = "";
    my $cidade = "";
    my $estado = "";
    print $painel->novoCliente( $empresa, $nome, $tipoPessoa, $cpfcnpj, $email, $emailcobranca, $senha, $senhaConfimacao, $telefone, $fax, $cep, $endereco, $cidade, $estado );

Return JSON

    {"nome":"José João25","resposta":"registrado","status":"sucesso","codigo":"107630"}
    {"resposta":"E-mail em uso","status":"erro"}
    {"resposta":"efetue login primeiro","status":"erro"}

novoDominio

Cadastra novo Dominio

    my $plano = "45198";
    my $dominio = "topjeca.com.br";
    my $cliente = "107645";
    my $pagoate = "2012-03-01";
    my $senha = "testeteste";
    my $plataforma = "Windows";
    my $webmail = "SquirrelMail"; # SquirrelMail, NutsMail, RoundCube, TupiMail, Horde
    print $painel->novoDominio( $plano, $cliente, $pagoate, $dominio, $senha, $plataforma, $webmail );

Return JSON

    {"dominio":"topjeca.com.br","resposta":"registrado","status":"sucesso","codigo":"291076"}
    {"dominio":"topjeca.com.br","resposta":"dominio ja existe","status":"erro"}
    {"resposta":"efetue login primeiro","status":"erro"}
    

    

checaDisponibilidadeDominioRevenda

Checa se o domínio ja é cadastrado na revenda

    my $dominio = "web2solutions.com.br";
    print $painel->checaDisponibilidadeDominioRevenda( $dominio );

Return JSON

    {"resposta":"em uso na kinghost","status":"erro"}
    {"resposta":"liberado","status":"sucesso"}
    

pegaServidorTemporario

Pega o endereço provisório do domínio

    my $idDominio = "0000000";
    print $painel->pegaServidorTemporario( $idDominio );

Return JSON

    {"resposta":"salamina.dominio.com.br","status":"sucesso"}
    {"resposta":"error message","status":"erro"}
    

novoPGSql

Cadastra Banco PGSql. O nome do banco e do user é criado automaticamente pelo sistema da kinghost, não sendo opcional.

    my $idDominio = "291076";
    my $senha = "teste";
    print $painel->novoPGSql( $idDominio, $senha );

Return JSON

    {"resposta":"banco criado","status":"sucesso","banco":"topjeca"}
    {"resposta":"efetue login primeiro","status":"erro"}
    
    

rodaScriptPGSql

Roda um script SQL direto no PostgreSQL Server

    # informacoes sobre o banco
    my $hostbanco = "localhost";
    my $nomebanco = "topjeca";
    my $userbanco = "topjeca";
    my $senhabanco = "xxxxxxx";

    # lê arquivo SQL
    my $arquivo = "imeSaas.sql";
    my $path = $Server->MapPath("../../sql/"); # caminho absoluto
    my $sql = $painel->leScriptSQL($arquivo, $path);
    
    # roda script SQL
    $painel->rodaScriptPGSql( $hostbanco, $nomebanco, $userbanco, $senhabanco, $sql );

Print JSON

    {"resposta":"relação \"desktop_config\" já existe","status":"erro"}
    {"resposta":"executado com sucesso","status":"sucesso"}
    
    

novoMySQL

Cadastra Banco MySQL. O nome do banco e do user é criado automaticamente pelo sistema da kinghost, não sendo opcional.

    print $painel->novoMySQL( $idDominio, $senha );

Return JSON

    {"resposta":"banco criado","status":"sucesso","banco":"topjeca"}
    {"resposta":"efetue login primeiro","status":"erro"}

 

novoUserStats

Protege e cria um usuário para acesso ao stats do domínio. www.dominio.com.br/stats

    my $idDominio = "000000";
    my $usuario = "xxxxx";
    my $senha = "xxxxx";
    print $painel->novoUserStats( $idDominio, $usuario, $senha );

Return JSON

    {"resposta":"usuario do stats criado com sucesso","status":"sucesso"}
    {"resposta":"error string","status":"erro"}
    {"resposta":"efetue login primeiro","status":"erro"}
    

novaCaixaEmail

Cria caixa de e-mail

    my $idDominio = "000000";
    my $caixa = "caixa";
    my $senha = "xxxxx";
    # 1048576 > 1 MB, 2097152 > 2 MB, 3145728 > 3 MB, 4194304 > 4 MB, 5242880 > 5 MB, 
    # 6291456 > 6 MB, 7340032 > 7 MB, 8388608 > 8 MB, 9437184 > 9 MB, 10485760 > 10 MB, 
    # 11534336 > 11 MB, 12582912 > 12 MB, 13631488 > 13 MB, 14680064 > 14 MB, 15728640 > 15 MB, 
    # 16777216 > 16 MB, 17825792 > 17 MB, 18874368 > 18 MB, 19922944 > 19 MB, 
    my $tamanho = "5242880"; # em bytes
    print $painel->novaCaixaEmail( $idDominio, $caixa, $senha, $tamanho );

Return JSON

    {"usuario":"caixa","resposta":"caixa postal ja existe","status":"erro"}
    {"senha":"senhaemail","usuario":"contato","resposta":"caixa de e-mail criada com sucesso","status":"sucesso"}
    {"resposta":"efetue login primeiro","status":"erro"}
    
    

editaSenhaCaixaEmail

Edita senha de caixa de e-mail

    my $idDominio = "00000";
    my $email = 'caixa@topjeca.com.br';
    my $senha = "xxxxx";
    print $painel->editaSenhaCaixaEmail( $idDominio, $email, $senha );
    

Return JSON

    {"email":"caixa@topjeca.com.br","resposta":"senha alterada com sucesso","status":"sucesso"}
    {"resposta":"efetue login primeiro","status":"erro"}

listaCaixasEmail

Lista todas as caixas de e-mail do domínio

    my $idDominio = "0000000";
    print $painel->listaCaixasEmail( $idDominio );
    

Return JSON

    {"caixas":
    [
        {"quota":"5242880","tipo":"mailbox","caixa":"caixa@topjeca.com.br","ocupado":"0"}
        ,{"quota":"5242880","tipo":"mailbox","caixa":"contato@topjeca.com.br","ocupado":"0"}
        ,{"quota":"1048576","tipo":"mailbox","caixa":"topjeca@topjeca.com.br","ocupado":"0"}
    ],"status":"sucesso"}
    

O valor de quota e ocupado é retornado em bytes

importaFTPExterno

Importa conteúdo de um FTP remoto para o ftp do domínio local. Informe o diretório de origem e o diretório de destino

    my $idDominio = "000000";
    my $host = "ftp.xxxxxx.com.br";
    my $user = "usuarioftp";
    my $pass = "senhaftp";
    my $dirOrigem = 'www';
    my $dirDestino = 'www';
    print $painel->importaFTPExterno( $idDominio, $host, $user, $pass, $dirOrigem, $dirDestino );

Return JSON

    {"resposta":"Migracao em andamento. Quando a migracao terminar os arquivos estarao em seu site","status":"sucesso"}
    {"resposta":"Erro de FTP. Verifique as credenciais de acesso ao FTP ou o diretorio alvo no FTP remoto","status":"erro"}
    {"resposta":"diretorio de origem invalido","status":"erro"}
    {"resposta":"efetue login primeiro","status":"erro"}
    
    

deletaArquivoFTP

Deleta arquivo no FTP

    my $host = "ftp.sitedocliente.com.br";
    my $user = "sitedocliente";
    my $password = "xxxxx";
    my $dirTarget = '/www';
    my $file = "index.htm";
    print $painel->deletaArquivoFTP( $host, $user, $password, $dirTarget, $file );

Return JSON

    {"resposta":"Arquivo nomedoarquivo excluído com sucesso","status":"sucesso"}

    
    

transfereDominio

Transfere domínio no Registro.br

    # ID da Entidade dententora do domínio
    my $ID = "XXXXX"; 
    
    # ID da Entidade dententora do domínio
    my $senha = "XXXX"; 
    my $dominio = "topjeca.com.br"; 
    
    # Dominio que você deseja transferir
    my $idTec = "XXXXX"; # ID da entidade que deseja transferir o contato técnico. deixe em branco caso nao queira transferir o contato técnico
    
    # servidores DNS para o qual o domínio será transferido. Só é obrigatório o dns1 e dns2
    my $dns1 = 'dns1.suarevenda.com.br';
    my $dns2 = 'dns2.suarevenda.com.br';
    my $dns3 = 'dns3.suarevenda.com.br';
    my $dns4 = 'dns4.suarevenda.com.br';

    print $painel->transfereDominio( $ID, $senha, $dominio, $idTec, $dns1, $dns2, $dns3, $dns4 );

Return JSON

    {"resposta":"dominio transferido","status":"sucesso"}
    {"resposta":"ID tecnico invalido","status":"erro"}

EXAMPLES

Look at eg/ folder

AUTHORS

José Eduardo Perotta de Almeida, eduardo at web2solutions.com.br

LICENSE AND COPYRIGHT

Copyright 2012 José Eduardo Perotta de Almeida.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

BUGS AND LIMITATIONS

novoMySQL FIXED

Please report any bugs or feature requests through the web interface at <http://rt.cpan.org>.

DISCLAIMER OF WARRANTY

BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR CORRECTION.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.