view release on metacpan or search on metacpan
--- #YAML:1.0
name: API-ISPManager
version: 0.07
abstract: interface to the ISPManager Hosting Panel API ( http://ispsystem.com )
author:
- nrg <nrg@cpan.org>
license: unknown
distribution_type: module
configure_requires:
ExtUtils::MakeMaker: 0
build_requires:
ExtUtils::MakeMaker: 0
requires:
Crypt::SSLeay: 0
Exporter::Lite: 0
Getopt::Long: 0
XML::Simple: 0
no_index:
that should be provided before the module is installed.
A README file is required for CPAN modules since CPAN extracts the
README file from a module distribution so that people browsing the
archive can use it get an idea of the modules uses. It is usually a
good idea to provide version information here so that people can
decide whether fixes for the module are worth downloading.
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
INSTALLTION on Debian
apt-get install libwww-perl make libxml-simple-perl libnet-ssleay-perl libcrypt-ssleay-perl libexporter-lite-perl libtest-simple-perl
cpan API::ISPManager
add_database.pl view on Meta::CPAN
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";
lib/API/ISPManager.pm view on Meta::CPAN
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
# Don`t working without this string!
my $response = $ua->get($query_string);
if ($response->is_success) {
my $content = $response->content;
if ($response->header('content-type') eq 'text/xml') {
# allow only XML answers
if ($content && $content =~ /^<\?xml version="\d\.\d" encoding="UTF-8"\?>/s) {
warn $content if $DEBUG;
return $content;
} else {
return '';
}
} else {
return '';
}
lib/API/ISPManager.pm view on Meta::CPAN
);
#
# TODO add this check here
# if ( $server_answer && $server_answer->{elem} && ref $server_answer->{elem} eq 'HASH' ) {
# return { data => $server_answer->{elem} };
# }
#
} else {
warn "auth_id not found or func type not ftp" if $DEBUG;
return '';
}
}
1;
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 '';
}
}
lib/API/ISPManager/file.pm view on Meta::CPAN
my $params = shift;
return API::ISPManager::query_abstract(
params => $params,
func => 'file',
allowed_fields => [ qw( host path allow_http elid plid ) ],
);
}
# Create file or directory
# IN: filetype (0 - file, 1 - directory, zip ......)
# IN: plid - parent directory (optional, equal to docroot when empty)
# IN: name - parent directory for created file
sub create {
my $params = shift;
my $result = API::ISPManager::query_abstract(
params => { %$params, sok => 'yes' },
func => 'file.new',
elid => '',
allowed_fields => [ qw( host path allow_http sok filetype name elid plid ) ],
);
$API::ISPManager::last_answer = $result;
if ($result && $result->{ok}) {
return 1;
} else {
return '';
}
}
lib/API/ISPManager/user.pm view on Meta::CPAN
if ($result && ref $result eq 'HASH' && $result->{ok}) {
return 1;
} else {
return '';
}
}
# Abstract sub for bool ( on | off ) methods
sub abstract_bool_manipulate {
my ($params, $type) = @_;
return '' unless $params && $type;
my $result = API::ISPManager::query_abstract(
params => $params,
func => $type,
allowed_fields => [ qw( host path allow_http elid) ],
);
return $result;
}
# Switch-on user account
# elid -- user name =)
sub enable {
my $params = shift;
lib/API/ISPManager/vds.pm view on Meta::CPAN
if ($result && ref $result eq 'HASH' && $result->{ok}) {
return 1;
} else {
return '';
}
}
# Abstract sub for bool ( on | off ) methods
sub abstract_bool_manipulate {
my ($params, $type) = @_;
return '' unless $params && $type;
my $result = API::ISPManager::query_abstract(
params => $params,
func => $type,
allowed_fields => [ qw( host path allow_http elid) ],
);
return $result;
}
# Switch-on user account
# elid -- user name =)
sub enable {
my $params = shift;
t/01-test.t view on Meta::CPAN
'services test'
);
### Services end
### Databases
my $fake_db = <<DOC;
<?xml version="1.0" encoding="UTF-8"?>
<doc><elem><dbkey>MySQL->bt</dbkey><dbtype>MySQL</dbtype><name>bt</name><dbuser>bt</dbuser><owner>bt</owner><size>0.055</size></elem><elem><dbkey>MySQL->howtouse</dbkey><dbtype>MySQL</dbtype><name>howtouse</name><dbuser>howtouse</dbuser><owner>...
DOC
is_deeply( API::ISPManager::db::list( { %correct_params } , $fake_db ), {
'data' => {
'kapella2' => {
'owner' => 'kolian',
'dbuser' => 'datakapella2',
'dbtype' => 'MySQL',
'dbkey' => 'MySQL->kapella2',
'size' => '1.276'
},
'howtouse' => {
'owner' => 'howtouse',
'dbuser' => 'howtouse',
'dbtype' => 'MySQL',
'dbkey' => 'MySQL->howtouse',
'size' => '0.642'
},
'bt' => {
'owner' => 'bt',
'dbuser' => 'bt',
'dbtype' => 'MySQL',
'dbkey' => 'MySQL->bt',
'size' => '0.055'
}
}
},
'db list test'
);
### Databases end
t/01-test.t view on Meta::CPAN
'test db_user'
);
### DB users end
### Stats
my $fake_sysinfo = <<DOC;
<?xml version="1.0" encoding="UTF-8"?>
<doc><elem><name>cpu</name><value>AMD Athlon(tm) 64 Processor 3700+ 2199.744 Mhz X 2</value></elem><elem><name>mem</name><value>393364 kB</value></elem><elem><name>swap</name><value>999992 kB</value></elem><elem><name>disk</name><value>49385 Mb</valu...
DOC
is_deeply( API::ISPManager::stat::sysinfo( { %correct_params }, $fake_sysinfo ), {
'data' => {
'proc' => '88',
'disk' => '49385 Mb',
'cpu' => 'AMD Athlon(tm) 64 Processor 3700+ 2199.744 Mhz X 2',
'avg' => '1.39 0.96 0.89',
'uptime' => '55 days 14 hours 5 minutes',
'swap' => '999992 kB',
'mem' => '393364 kB',
}
},
'sysinfo test'
);
my $fake_usagestat = <<DOC;
<?xml version="1.0" encoding="UTF-8"?>
<doc><elem><name>disk</name><value used="1817" limit="4950"/></elem><elem><name>reseller</name><value used="1" limit="0"/></elem><elem><name>user</name><value used="20" limit="0"/></elem><elem><name>bandwidth</name><value used="8170" limit="170000000...
DOC
is_deeply( API::ISPManager::stat::usagestat( { %correct_params }, $fake_usagestat ), {
'data' => {
'ftpuser' => {
'used' => '20',
'limit' => '70220'
},
'disk' => {
'used' => '1817',
t/02-files.t view on Meta::CPAN
# Ïîëó÷åíèå ñïèñêà ôàéëîâ
my $file_list_answer = API::ISPManager::file::list( { %connection_params } );
ok($file_list_answer, 'file list');
my @original_file_list = get_file_list('', '');
# Ñîçäàíèå ôàéëà
my $now = time;
my $file_create = API::ISPManager::file::create( {
%connection_params,
filetype => 0,
name => "$now.test",
plid => '',
} );
my @expected_file_list = @original_file_list;
push @expected_file_list, "$now.test";
my @real_file_list = get_file_list('', '');
ok(!union_equal(\@original_file_list, \@real_file_list), 'file creation - check difference exists');
ok(union_equal(\@expected_file_list, \@real_file_list), 'file creation - check created file name');
t/02-files.t view on Meta::CPAN
elid => "$now.test",
plid => '',
} );
@real_file_list = get_file_list('', '');
ok(union_equal(\@original_file_list, \@real_file_list), 'file delete');
# Êîïèðîâàíèå ôàéëà
$now = time;
API::ISPManager::file::create( {
%connection_params,
filetype => 0,
name => "$now.test",
plid => '',
} );
API::ISPManager::file::create( {
%connection_params,
filetype => 1,
name => "$now",
plid => '',
} );
my $file_copy = API::ISPManager::file::copy( {
%connection_params,
elid => "$now.test",
plid => "$now",
} );
t/02-files.t view on Meta::CPAN
API::ISPManager::file::delete( {
%connection_params,
elid => "$now",
plid => '',
} );
# Ïåðåìåùåíèå ôàéëà
$now = time;
API::ISPManager::file::create( {
%connection_params,
filetype => 0,
name => "$now.test",
plid => '',
} );
API::ISPManager::file::create( {
%connection_params,
filetype => 1,
name => "$now",
plid => '',
} );
my $file_move = API::ISPManager::file::move( {
%connection_params,
elid => "$now.test",
plid => "$now",
} );