view release on metacpan or search on metacpan
1234567891011121314151617181920212223242526272829303132add_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
121314151617181920212223242526272829303132333435363738394041# Main packages
use
API::ISPManager::ip;
# Addition packages
use
API::ISPManager::db;
use
API::ISPManager::ftp;
# VDSManager
use
API::ISPManager::vds;
# BillManager
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
636465666768697071727374757677787980818283}
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
1234567891011
lib/API/ISPManager/order.pm view on Meta::CPAN
212223242526272829303132333435363738394041
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
12345678910111213141516171819202122232425262728293031package
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
333435363738394041424344454647484950515253
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
606162636465666768697071727374757677787980
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
282930313233343536373839404142434445464748
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
565758596061626364656667686970717273747576#&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
181920212223242526272829303132333435363738}
# Создать клиента (возможно, вмеÑте Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼)
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
495051525354555657585960616263646566676869#&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
12345678910111213141516171819202122232425262728293031323334353637383940414243package
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
12345678910#!/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
362363364365366367368369370371372373374375376377378379380381382my
$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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141#!/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} ) {
"$create_result->{ip}|$create_result->{veid}\n"
;
exit
0;
# вÑÑ‘ окей!
}
else
{
"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
172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222}
# Создаем ВПС
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
242243244245246247248249250251252253254255256257258259260261262263264265my
$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
''
;
}