view release on metacpan or search on metacpan
add_database.pl
add_mailbox.pl
add_www_domain.pl
Changes
lib/API/ISPManager.pm
lib/API/ISPManager/backup.pm
lib/API/ISPManager/db.pm
lib/API/ISPManager/diskpreset.pm
lib/API/ISPManager/dns.pm
lib/API/ISPManager/domain.pm
lib/API/ISPManager/file.pm
lib/API/ISPManager/ftp.pm
lib/API/ISPManager/ip.pm
lib/API/ISPManager/mailbox.pm
lib/API/ISPManager/misc.pm
lib/API/ISPManager/order.pm
lib/API/ISPManager/preset.pm
lib/API/ISPManager/services.pm
lib/API/ISPManager/software.pm
lib/API/ISPManager/stat.pm
lib/API/ISPManager/user.pm
lib/API/ISPManager/vds.pm
lib/API/ISPManager/vdspreset.pm
Makefile.PL
MANIFEST This list of files
README
runtests.sh
t/01-test.t
t/02-files.t
upload_file.pl
vdsmanager.pl
META.yml Module meta-data (added by MakeMaker)
lib/API/ISPManager.pm view on Meta::CPAN
# Main packages
use API::ISPManager::ip;
use API::ISPManager::user;
use API::ISPManager::domain;
use API::ISPManager::mailbox;
# Addition packages
use API::ISPManager::backup;
use API::ISPManager::db;
use API::ISPManager::preset;
use API::ISPManager::stat;
use API::ISPManager::services;
use API::ISPManager::ftp;
use API::ISPManager::misc;
use API::ISPManager::file;
# VDSManager
use API::ISPManager::vds;
use API::ISPManager::diskpreset;
use API::ISPManager::vdspreset;
# BillManager
use API::ISPManager::software;
use API::ISPManager::order;
our @EXPORT = qw/get_auth_id refs is_success get_data query_abstract is_ok get_error/;
our @EXPORT_OK = qw//;
our $VERSION = 0.07;
our $DEBUG = '';
lib/API/ISPManager.pm view on Meta::CPAN
}
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,
} );
unless ( $suspend_result ) {
lib/API/ISPManager/diskpreset.pm view on Meta::CPAN
package API::ISPManager::diskpreset;
use API::ISPManager;
sub create {
}
sub edit {
lib/API/ISPManager/order.pm view on Meta::CPAN
return $result;
}
# СоздаÑÑ ÐºÐ»Ð¸ÐµÐ½Ñа (возможно, вмеÑÑе Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼)
sub create {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => { %$params, sok => 'yes' }, # ÑÑÐ¾Ð±Ñ Ñоздание ÑазÑеÑиÑÑ
func => 'user.edit',
allowed_fields => [ qw( host path allow_http sok name domain email preset ip passwd ) ],
);
$API::ISPManager::last_answer = $result;
if ($result &&
ref $result eq 'HASH' &&
(
$result->{ok} or
( $result->{error} && ref $result->{error} eq 'HASH' && $result->{error}->{code} eq '2' ) # already exists
)
lib/API/ISPManager/preset.pm view on Meta::CPAN
package API::ISPManager::preset;
use API::ISPManager;
sub create {
}
sub edit {
}
sub get {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'preset.edit',
allowed_fields => [ qw( host path allow_http elid) ],
);
if (ref $result->{php} eq 'HASH' ) {
$result->{php} = 'on';
}
if (ref $result->{phpmod} eq 'HASH' ) {
$result->{phpmod} = 'on';
}
lib/API/ISPManager/preset.pm view on Meta::CPAN
return '' if $result->{error};
return $result;
}
sub list {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'preset',
allowed_fields => [ qw( host path allow_http ) ],
);
my $plans = $result->{elem};
for (keys %$plans) {
for my $param ( 'ssl', 'ssi', 'php' ) {
my $val = $plans->{$_}->{$param};
if ( $val && ref $val eq 'HASH' ) {
lib/API/ISPManager/software.pm view on Meta::CPAN
return $result;
}
# СоздаÑÑ ÐºÐ»Ð¸ÐµÐ½Ñа (возможно, вмеÑÑе Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼)
sub create {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => { %$params, sok => 'yes' }, # ÑÑÐ¾Ð±Ñ Ñоздание ÑазÑеÑиÑÑ
func => 'user.edit',
allowed_fields => [ qw( host path allow_http sok name domain email preset ip passwd ) ],
);
$API::ISPManager::last_answer = $result;
if ($result &&
ref $result eq 'HASH' &&
(
$result->{ok} or
( $result->{error} && ref $result->{error} eq 'HASH' && $result->{error}->{code} eq '2' ) # already exists
)
lib/API/ISPManager/user.pm view on Meta::CPAN
return $result;
}
# СоздаÑÑ ÐºÐ»Ð¸ÐµÐ½Ñа (возможно, вмеÑÑе Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼)
sub create {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => { %$params, sok => 'yes' }, # ÑÑÐ¾Ð±Ñ Ñоздание ÑазÑеÑиÑÑ
func => 'user.edit',
allowed_fields => [ qw( host path allow_http sok name domain email preset ip passwd ) ],
);
$API::ISPManager::last_answer = $result;
#warn Dumper($API::ISPManager::last_answer);
if ($result &&
ref $result eq 'HASH' &&
(
$result->{ok} or
( $result->{error} && ref $result->{error} eq 'HASH' && $result->{error}->{code} eq '2' && $result->{error}->{obj} eq 'user' ) # already exists
lib/API/ISPManager/user.pm view on Meta::CPAN
#&sok=yes&func=user.edit&name=nrgxxx&ip=78.47.76.69&passwd=qwerty&ftplimit=100&disklimit=200
}
# Edit user data
sub edit {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'user.edit',
allowed_fields => [ qw( host path allow_http sok elid name domain email preset ip passwd ftplimit disklimit ssl ssi phpmod safemode maillimit domainlimit webdomainlimit maildomainlimit baselimit baseuserlimit bandwidthlimit phpfcgi) ],
);
return $result;
}
# Delete user from panel
sub delete {
my $params = shift;
my $result = abstract_bool_manipulate($params, 'user.delete');
lib/API/ISPManager/vds.pm view on Meta::CPAN
}
# СоздаÑÑ ÐºÐ»Ð¸ÐµÐ½Ñа (возможно, вмеÑÑе Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼)
sub create {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => { %$params, sok => 'yes' }, # ÑÑÐ¾Ð±Ñ Ñоздание ÑазÑеÑиÑÑ
func => 'vds.edit',
allowed_fields => [ qw( host path allow_http
sok name id ip passwd confirm owner vdspreset disktempl pvtdisk extns ispmgr
disk mem cpu proc desc traf note
) ],
);
$API::ISPManager::last_answer = $result;
return $result;
if ($result &&
ref $result eq 'HASH' &&
lib/API/ISPManager/vds.pm view on Meta::CPAN
#&sok=yes&func=user.edit&name=nrgxxx&ip=78.47.76.69&passwd=qwerty&ftplimit=100&disklimit=200
}
# Edit user data
sub edit {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'vds.edit',
allowed_fields => [ qw( host path allow_http sok elid name domain email preset ip passwd ftplimit disklimit ssl ssi phpmod safemode maillimit domainlimit webdomainlimit maildomainlimit baselimit baseuserlimit bandwidthlimit) ],
);
return $result;
}
# Delete user from panel
sub delete {
my $params = shift;
my $result = abstract_bool_manipulate($params, 'user.delete');
lib/API/ISPManager/vdspreset.pm view on Meta::CPAN
package API::ISPManager::vdspreset;
use API::ISPManager;
sub create {
}
sub edit {
}
sub get {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'vdspreset.edit',
allowed_fields => [ qw( host path allow_http elid) ],
);
return $result;
}
sub list {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'vdspreset',
allowed_fields => [ qw( host path allow_http ) ],
);
my $plans = $result->{elem};
return $plans;
}
sub delete {
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
my $ip = $ip_list->[0];
if ($ip) {
diag $ip;
diag Dumper( API::ISPManager::user::create( {
%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',
} ) );
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";
exit 0; # вÑÑ Ð¾ÐºÐµÐ¹!
} else {
print "error\n";
exit 1;
}
# ÐÑовеÑка ÑÑÑеÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¸Ñкового Ñаблона
sub check_disk_preset {
my $disk_preset_name = shift;
return '' unless $disk_preset_name;
my $disk_templates =
API::ISPManager::diskpreset::list( $connection_params );
return '' unless $disk_templates && ref $disk_templates eq 'HASH';
# List all disk templates
my @list = keys %$disk_templates;
for (@list) {
# If this preset exists and ok:
my $preset_ok =
$disk_preset_name eq $_ &&
$disk_templates->{$_} &&
$disk_templates->{$_}->{state} &&
$disk_templates->{$_}->{state} eq 'ok';
return 1 if $preset_ok;
}
return '';
}
# ÐÑовеÑÑем коÑÑекÑноÑÑÑ Ð¿ÐµÑеданного Ñаблона ÐÐС
sub check_vps_preset {
my $disk_preset_name = shift;
return '' unless $disk_preset_name;
my $disk_templates =
API::ISPManager::vdspreset::list( $connection_params );
return '' unless $disk_templates && ref $disk_templates eq 'HASH';
# List all VPS templates
my @list = keys %$disk_templates;
for (@list) {
# If this preset exists:
my $preset_ok =
$disk_preset_name eq $_ &&
$disk_templates->{$_};
return 1 if $preset_ok;
}
return '';
}
# ÐолÑÑаем деÑализаÑÐ¸Ñ ÑаÑиÑа ÐÐС
sub get_vps_preset_details {
my $preset_name = shift;
return '' unless $preset_name;
my $vds_template_details = API::ISPManager::vdspreset::get( {
%$connection_params ,
elid => $preset_name
} );
# ФилÑÑÑÑем ÑолÑко нÑжнÑе паÑамеÑÑÑ ÑаÑиÑа
my $clean_plan_details = { };
my @required_params = qw(disk mem cpu proc desc traf);
for (@required_params) {
unless ( $vds_template_details->{$_} ) {
vdsmanager.pl view on Meta::CPAN
}
# Создаем ÐÐС
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 '';
}
# Ðлок пÑовеÑки вÑ
однÑÑ
паÑамеÑÑов
my $disk_preset = $params{os};
unless ( check_disk_preset($disk_preset) ) {
warn "Disk preset incorrect!\n";
return '';
}
my $vps_preset = $params{preset};
unless ( check_vps_preset($vps_preset) ) {
warn "VPS preset incorrect!\n";
return '';
}
# ÐÑгÑÑжаем подÑобноÑÑи ÑаÑиÑа
my $vps_preset_details = get_vps_preset_details( $vps_preset );
unless ($vps_preset_details && ref $vps_preset_details eq 'HASH') {
warn "Cannot get preset details!\n";
return '';
}
my $node_id = $params{node_id};
unless ($node_id =~ m/^\d$/) {
warn "In Node ID only numbers allowed!\n";
return '';
}
vdsmanager.pl view on Meta::CPAN
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,
veid => $veid,
}
} else {
return '';
}