API-ISPManager

 view release on metacpan or  search on metacpan

add_database.pl  view on Meta::CPAN

use strict;
use warnings;

use Data::Dumper;
use API::ISPManager;

#
# Script for add databases account to certain user account in ISPManager
#

die "Params required: host / username / password / db_name / db_user / db_password\n" unless scalar @ARGV == 6;

my $host     = $ARGV[0];
my $login    = $ARGV[1];
my $password = $ARGV[2];
my $db_name  = $ARGV[3];
my $db_user  = $ARGV[4];
my $db_pass  = $ARGV[5];

$API::ISPManager::DEBUG = '';

my %connection_params = (
    username => $login,
    password => $password,
    host     => $host,
    path     => 'manager',
);


my $db_creation_result = API::ISPManager::db::create( {
    %connection_params,
    name        => $db_name,
    dbtype      => 'MySQL',
    dbencoding  => 'default',
    dbuser      => 'newuser', 
    dbusername  => $db_user,
    dbpassword  => $db_pass,
    dbconfirm   => $db_pass,
} );


if ($db_creation_result) {
    print "$db_name success added!\n";
} else {
    warn Dumper($API::ISPManager::last_answer);
}

add_mailbox.pl  view on Meta::CPAN

use strict;
use warnings;

use Data::Dumper;
use API::ISPManager;

#
# Script for add mail account to certain mail-domain in ISPManager
#

die "Params required: host / username / password / mailbox_name / password\n" unless scalar @ARGV == 5;

my $host          = $ARGV[0];
my $login         = $ARGV[1];
my $password      = $ARGV[2];
my $mailbox_name  = $ARGV[3];
my $mailbox_pass  = $ARGV[4];

my @raw_mail = split '@', $mailbox_name;

my $name   = $raw_mail[0];
my $domain = $raw_mail[1];

$API::ISPManager::DEBUG = '';

my %connection_params = (
    username => $login,
    password => $password,
    host     => $host,
    path     => 'manager',
);


my $mailbox_creation_result = API::ISPManager::mailbox::create( {
    %connection_params,
    quota   => 0,
    name    => $name,   
    domain  => $domain,

add_www_domain.pl  view on Meta::CPAN

use strict;
use warnings;

use Data::Dumper;
use API::ISPManager;

#
# Script for add www domains to certain user account in ISPManager
#

die "Params required: host / username / password / domain / docroot\n" unless scalar @ARGV == 5;

my $host     = $ARGV[0];
my $login    = $ARGV[1];
my $password = $ARGV[2];
my $domain   = $ARGV[3];
my $docroot  = $ARGV[4];
my $email    = '';
my $ip       = `/usr/bin/host -t A $host | head -1 | awk '{print \$4}'`;
chomp $ip;

unless ($ip && $ip =~ m/\d+\.\d+\.\d+\.\d+/) {
    die "Get ip failed!\n";
}

$API::ISPManager::DEBUG = '';

my %connection_params = (
    username => $login,
    password => $password,
    host     => $host,
    path     => 'manager',
);

my $user_params = API::ISPManager::misc::usrparam( { %connection_params } );
$email = $user_params->{email};
die "Cannot get user email from panel!\n" unless $email;

my $domain_creation_result = API::ISPManager::domain::create( {
    %connection_params,

lib/API/ISPManager.pm  view on Meta::CPAN

=head1 NAME

API::ISPManager - interface to the ISPManager Hosting Panel API ( http://ispsystem.com )

=head1 SYNOPSIS

 use API::ISPManager;
 
 my $connection_params = {
    username => 'username',
    password => 'qwerty',
    host     => '11.22.33.44',
    path     => 'manager',
 };

 ### Get all panel IP
 my $ip_list = API::ISPManager::ip::list( $connection_params );

 unless ($ip_list && ref $ip_list eq 'ARRAY' && scalar @$ip_list) {
    die 'Cannot get ip list from ISP';
 }

 my $ip  = $ip_list->[0];
 my $dname  = 'perlaround.ru';

 my $client_creation_result = API::ISPManager::user::create( {
    %{ $connection_params },
    name      => 'user_login',
    passwd    => 'user_password',
    ip        => '11.11.22.33', 
    preset    => 'template_name',
    domain    => $dname,
 });

 # Switch off account:
 my $suspend_result = API::ISPManager::user::disable( {
    %{ $connection_params },
    elid => $use_login,
 } );

lib/API/ISPManager.pm  view on Meta::CPAN

    }

    return $new_hash;
}

# Get access key, time to live -- 30 minutes
# STATIC(HASHREF: params_hash)
# params_hash:
# - all elements from mk_full_query_string +
# - username*
# - password*
sub get_auth_id {
    my %params_raw = @_;

    warn 'get_auth_id params: ' . Dumper(\%params_raw)  if $DEBUG;

    my $params = filter_hash(
        \%params_raw,
        [ 'host', 'path', 'allow_http', 'username', 'password' ]
    );

    # Check this sub params
    unless ($params->{username} && $params->{password}) {
        return '';
    }

    
    my $query_string = mk_full_query_string( {
        %$params, 
        func     => 'auth',
        out      => 'xml',
    } );

lib/API/ISPManager/db.pm  view on Meta::CPAN

    return $server_answer;
}


sub create {
   my $params = shift;
    
    my $result = API::ISPManager::query_abstract(
        params          => { %$params, sok => 'yes' },
        func            => 'db.edit',
        allowed_fields  => [ qw( host path allow_http  sok name dbtype owner dbencoding dbuser dbusername dbpassword dbconfirm dbuserhost ) ],
    );

    $API::ISPManager::last_answer = $result;     

    if ($result && $result->{ok}) {
        return 1;
    } else {
        return '';
    }
}

runtests.sh  view on Meta::CPAN

#!/bin/bash

./add_database.pl server5.hosting.reg.ru user_0000434578 oBffquIb db_name111 db_usersss45555 pass
#./add_www_domain.pl server5.hosting.reg.ru user_0000434578 oBffquIb suxx777.us
#./add_mailbox.pl server5.hosting.reg.ru user_0000434578 oBffquIb t1est@server6-host1.regrutestuser.ru qqqq
exit 0

perl -Ilib ./vdsmanager.pl --host=127.0.0.1 --username=admin  --password=qqqq  \
 --nodeid=1 --vpspassword=qwerty --owner=admin --preset=OVZ-1 --os=centos-5-x86_64 \
 --name=mymegavps7.ru

t/01-test.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;

our $ONLINE;

BEGIN {
    $ONLINE = $ENV{password};
}

use Test::More tests => $ONLINE ? 42 : 40;

my $test_host = $ENV{host} || 'ultrasam.ru';

ok(1, 'Test OK');
use_ok('API::ISPManager');

$a = 'refs';

t/01-test.t  view on Meta::CPAN

    "https://$test_host/manager/ispmgr?param1=val1&param2=val2",
    $a
);


$a = 'mk_query_to_server';
is( API::ISPManager::mk_query_to_server( '' ), '', $a );

my %correct_params = (
    username => $ENV{username} || 'root',
    password => $ENV{password},
    host     => $test_host,
    path     => 'manager',
);

### Services

my $fake_services = <<DOC;
<?xml version="1.0" encoding="UTF-8"?>
<doc><elem><name>HTTP</name><proc>apache2</proc><autostart/><count>33</count><active/></elem><elem><name>FTP</name><proc>proftpd</proc><autostart/><count>1</count><active/></elem><elem><name>DNS</name><proc>named</proc><autostart/><count>1</count><ac...
DOC

t/01-test.t  view on Meta::CPAN


$API::ISPManager::DEBUG = 0;


### ONLINE TESTS
exit if !$ONLINE;

$a = 'get_auth_id';
is( get_auth_id(
        username => 'root',
        password => 'qwerty',
        host     => $test_host,
        path     => 'manager',
    ), 
    '',
    "$a with error password"
);

my $auth_id;

like( $auth_id = get_auth_id(
        username => $ENV{username} || 'root',
        password => $ENV{password},
        host     => $test_host,
        path     => 'manager',
    ), 
    qr/\d+/,
    "$a with correct password ($auth_id)"
);

=head

is(
    scalar keys %{ API::ISPManager::user::list( { %correct_params } )->{elem} },
    20,
    'user::list test' 
);

t/01-test.t  view on Meta::CPAN

            %correct_params,
            name      => 'nrgxxxxxapi',
            passwd    => 'qwerty',
            ip        => $ip, 
            preset    => 'Host-1',
            domain    => 'nrg.name',
        } ) );

        diag Dumper( API::ISPManager::ftp::list( {
            %correct_params,
            authinfo => 'username:password',
            su       => 'su_as_username',
        } ) );

    
        diag Dumper( API::ISPManager::user::disable( {
            %correct_params,
            elid      => 'nrgxxxxxapi',
        } ) );


t/02-files.t  view on Meta::CPAN


use strict;
use warnings;

use Data::Dumper;

our $ONLINE;


BEGIN {
    $ONLINE = $ENV{host} && $ENV{user} && $ENV{password};
}
use Test::More tests => $ONLINE ? 10 : 2;

my $test_host     = $ENV{host};
my $test_user     = $ENV{user};
my $test_password = $ENV{password};

ok(1, 'Test OK');
use_ok('API::ISPManager');

no warnings 'once';

$API::ISPManager::DEBUG = 0;

### ONLINE TESTS
exit if !$ONLINE;

my %connection_params = (
    username => $test_user,
    password => $test_password,
    host     => $test_host,
    path     => 'manager',
);

# Ïîëó÷åíèå ñïèñêà ôàéëîâ
my $file_list_answer = API::ISPManager::file::list( { %connection_params } );
ok($file_list_answer, 'file list');
my @original_file_list = get_file_list('', '');

# Ñîçäàíèå ôàéëà

upload_file.pl  view on Meta::CPAN

use strict;
use warnings;

use Data::Dumper;
use API::ISPManager;

#
# Script for add mail account to certain mail-domain in ISPManager
#

die "Params required: host / username / password / filename /path\n" unless scalar @ARGV == 5;

my $host          = $ARGV[0];
my $login         = $ARGV[1];
my $password      = $ARGV[2];
my $filename      = $ARGV[3];
my $plid          = $ARGV[4];


$API::ISPManager::DEBUG = 1;

my %connection_params = (
    username => $login,
    password => $password,
    host     => $host,
    path     => 'manager',
);


my $upload_result = API::ISPManager::file::upload( {
    %connection_params,
    plid => $plid,
    file => $filename,
} );

vdsmanager.pl  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use API::ISPManager;
use Data::Dumper;
use Getopt::Long;

my ($username, $password, $host);
my ($var_node_id, $name, $vps_password, $os, $owner, $preset);

my $result = GetOptions (
    'username=s'    => \$username,
    'password=s'    => \$password,
    'host=s'        => \$host,
    'nodeid=s'      => \$var_node_id,
    'vpspassword=s' => \$vps_password,
    'owner=s'       => \$owner,
    'preset=s'      => \$preset,
    'os=s'          => \$os,
    'name=s'        => \$name,
);

die 'Required command line parameter missing!' unless $result;

# Конфигурация скрипта
my $connection_params = {
    username => $username,
    password => $password,
    host     => $host,
    path     => 'manager/vdsmgr',
};

#
#  name        => 'mymegavps6.ru',  # тут хочет доменку и ничего другого
#  password    => 'qwerty',
#  os          => 'centos-5-x86_64',
#  owner       => 'admin',
#  preset      => 'OVZ-1',
#  node_id     => '1',              # номер Ноды
#


# Создаем ВПС
# Добавить автоформирование veid
# N -- номер впса
# N001, N002, N003.... N999 
# просто передаем параметром номер и все, отдельный параметр как и пароль и все такое

my $create_result = create_vps(
    name        => $name,           # тут хочет доменку и ничего другого
    password    => $vps_password,
    os          => $os,
    owner       => $owner,
    preset      => $preset,
    node_id     => $var_node_id,    # номер Ноды
);

### warn Dumper($create_result);

if ( $create_result && $create_result->{ok} && $create_result->{ip} && $create_result->{veid} ) {
    print "$create_result->{ip}|$create_result->{veid}\n";

vdsmanager.pl  view on Meta::CPAN

    } else {
        return "${node_id}001"; # это первый впс
    }
}

# Создаем ВПС
sub create_vps {
    my %params = @_;

    my $all_params_ok =
        $params{password} &&
        $params{os}       &&
        $params{owner}    &&
        $params{preset}   &&
        $params{node_id};
    
    unless ($all_params_ok)  {
        warn "Required parameter missing!\n";
        return '';
    }

vdsmanager.pl  view on Meta::CPAN



    my $vps_name = $params{name}; # тут хочет доменку и ничего другого

    unless ($vps_name) {
        $vps_name = "ovz${veid}.fastvps.ru"
    }


    # Эти параметры пока проверять не будем
    my $server_password = $params{password};
    my $owner           = $params{owner};


    my $create_vps_result = API::ISPManager::vds::create( {
        %$connection_params,
        name       => $vps_name,
        id         => $veid,
        passwd     => $server_password,
        confirm    => $server_password,
        owner      => $owner,
        vdspreset  => $vps_preset,
        disktempl  => $disk_preset,

        %$vps_preset_details, # параметры ВПС тарифа
    } );

    if ($create_vps_result && ref $create_vps_result eq 'HASH' ) {
        return {
            %$create_vps_result,



( run in 0.735 second using v1.01-cache-2.11-cpan-49f99fa48dc )