view release on metacpan or search on metacpan
lib/API/ISPManager.pm view on Meta::CPAN
# 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 = '';
=head1 NAME
API::ISPManager - interface to the ISPManager Hosting Panel API ( http://ispsystem.com )
=head1 SYNOPSIS
lib/API/ISPManager.pm view on Meta::CPAN
our $last_answer = '';
# Public!
sub is_ok {
my $answer = shift;
return '' unless $answer && ref $answer eq 'HASH' && $answer->{success};
}
sub get_error {
my $answer = shift;
return '' if is_ok($answer); # ok == no error
return Dumper( $answer->{error} );
}
# Get data from @_
sub get_params {
my @params = @_;
if (scalar @params == 1 && ref $params[0] eq 'HASH' ) {
return { %{ $params[0] } };
} else {
return { @params };
lib/API/ISPManager.pm view on Meta::CPAN
out => 'xml',
} );
return '' unless $query_string;
warn $query_string if $DEBUG;
my $xml = process_query( query_string => $query_string);
if ($xml) {
my $error_node = exists $xml->{authfail};
return '' if $error_node;
return $xml->{auth}->{id};
} else {
return '';
}
}
# Wrapper for "ref" on undef value, without warnings :)
# Possible very stupid sub :)
# STATIC(REF: our_ref)
lib/API/ISPManager.pm view on Meta::CPAN
return '' unless $ref;
return ref $ref;
}
# INTERNAL!!! Check server answer result
# STATIC(data_block)
sub is_success {
my $data_block = shift;
if ( ref $data_block eq 'HASH' && ! $data_block->{error} && $data_block->{data} ) {
return 1;
} else {
return '';
}
}
# Get data from server answer
# STATIC(data_block)
sub get_data {
my $data_block = shift;
lib/API/ISPManager/order.pm view on Meta::CPAN
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
)
) {
return 1; # { success => 1 };
} else {
return ''; # { success => '', error => Dumper ($result->{error}) };
}
#https://ultrasam.ru/ispmanager/ispmgr?out=xml&auth=232143511
#&sok=yes&func=user.edit&name=nrgxxx&ip=78.47.76.69&passwd=qwerty&ftplimit=100&disklimit=200
}
1;
lib/API/ISPManager/preset.pm view on Meta::CPAN
);
if (ref $result->{php} eq 'HASH' ) {
$result->{php} = 'on';
}
if (ref $result->{phpmod} eq 'HASH' ) {
$result->{phpmod} = 'on';
}
return '' if $result->{error};
return $result;
}
sub list {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => $params,
func => 'preset',
lib/API/ISPManager/software.pm view on Meta::CPAN
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
)
) {
return 1; # { success => 1 };
} else {
return ''; # { success => '', error => Dumper ($result->{error}) };
}
#https://ultrasam.ru/ispmanager/ispmgr?out=xml&auth=232143511
#&sok=yes&func=user.edit&name=nrgxxx&ip=78.47.76.69&passwd=qwerty&ftplimit=100&disklimit=200
}
1;
lib/API/ISPManager/user.pm view on Meta::CPAN
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
)
) {
return 1; # { success => 1 };
} else {
return ''; # { success => '', error => Dumper ($result->{error}) };
}
#https://ultrasam.ru/ispmanager/ispmgr?out=xml&auth=232143511
#&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(
lib/API/ISPManager/vds.pm view on Meta::CPAN
);
$API::ISPManager::last_answer = $result;
return $result;
if ($result &&
ref $result eq 'HASH' &&
(
$result->{ok} or
( $result->{error} && ref $result->{error} eq 'HASH' && $result->{error}->{code} eq '2' ) # already exists
)
) {
return 1; # { success => 1 };
} else {
return ''; # { success => '', error => Dumper ($result->{error}) };
}
#https://ultrasam.ru/ispmanager/ispmgr?out=xml&auth=232143511
#&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(
t/01-test.t view on Meta::CPAN
is( refs( undef ), '', $a);
is( refs( {} ), 'HASH', $a );
is( refs( [] ), 'ARRAY', $a );
is( refs( sub {} ), 'CODE', $a );
is( refs( \$a ), 'SCALAR', $a );
$a = 'is_success';
ok(! is_success(), $a);
ok(! is_success( { error => {}, data => {} } ), $a);
ok( is_success( { data => {} } ), $a);
ok(! is_success( { } ), $a);
$a = 'get_data';
ok(! get_data(), $a);
ok(! get_data( { } ), $a);
ok(! get_data( { error => {}, data => {} } ), $a);
is_deeply( get_data( { data => { aaa => 'bbb' } } ), { aaa => 'bbb' }, $a);
$a = 'filter_hash';
is_deeply( API::ISPManager::filter_hash( { }, [ ]), {}, $a );
is_deeply( API::ISPManager::filter_hash( { aaa => 555, bbb => 111 }, [ 'aaa' ]), { aaa => 555 }, $a );
is_deeply( API::ISPManager::filter_hash( { aaa => 555, bbb => 111 }, [ ]), { }, $a );
is_deeply( API::ISPManager::filter_hash( { }, [ 'aaa' ]), { }, $a );
$a = 'mk_query_string';
is( API::ISPManager::mk_query_string( { } ), '', $a );
t/01-test.t view on Meta::CPAN
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',
),
vdsmanager.pl view on Meta::CPAN
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 );
vdsmanager.pl view on Meta::CPAN
}
} else {
return '';
}
}
__DATA__
оÑÑÑпало оÑибкÑ:
'error' => {
'content' => 'Can\'t change pos in edit mode',
'code' => '1'
},
бÑло из-за Ñого, ÑÑо ÑÑÐ°Ñ Ð½Ðµ пеÑедавал