view release on metacpan or search on metacpan
lib/API/DirectAdmin.pm view on Meta::CPAN
};
}
return $new_hash;
}
# all params derived from get_auth_hash
sub query {
my ( $self, %params ) = @_;
my $command = delete $params{command};
my $fields = $params{allowed_fields} || '';
my $allowed_fields;
warn 'query_abstract ' . Dumper( \%params ) if $self->{debug};
confess "Empty command" unless $command;
$fields = "host port auth_user auth_passwd method allow_https command $fields";
@$allowed_fields = split /\s+/, $fields;
my $params = $self->filter_hash( $params{params}, $allowed_fields );
my $query_string = $self->mk_full_query_string( {
command => $command,
%$params,
} );
carp Dumper $query_string if $self->{debug};
my $server_answer = $self->process_query(
method => $params{method} || 'GET',
query_string => $query_string,
params => $params,
);
lib/API/DirectAdmin.pm view on Meta::CPAN
# port*
# param1
# param2
# ...
sub mk_full_query_string {
my ( $self, $params ) = @_;
confess "Wrong params: " . Dumper( $params ) unless ref $params eq 'HASH'
&& scalar keys %$params
&& $self->{host}
&& $params->{command};
my $allow_https = defined $params->{allow_https} ? $params->{allow_https} : $self->{allow_https};
delete $params->{allow_https};
my $host = $self->{host};
my $port = $self->{port} || 2222;
my $command = delete $params->{command};
my $auth_user = $self->{auth_user};
my $auth_passwd = $self->{auth_passwd};
$self->kill_start_end_slashes();
my $query_path = ( $allow_https ? 'https' : 'http' ) . "://$auth_user:$auth_passwd\@$host:$port/$command?";
return $query_path . $self->mk_query_string($params);
}
# Make query string
# STATIC(HASHREF: params)
sub mk_query_string {
my ($self, $params) = @_;
return '' unless ref $params eq 'HASH' && scalar keys %$params;
lib/API/DirectAdmin.pm view on Meta::CPAN
}
# Custom request
my %params = (
action => 'package',
package => 'package_name',
user => 'username',
);
my $responce = $da->query(
command => 'CMD_API_MODIFY_USER',
method => 'POST',
params => \%params,
allowed_fields => 'action
package
user',
);
=head1 PUBLIC METHODS
=head2 API::DirectAdmin::User
lib/API/DirectAdmin/DNS.pm view on Meta::CPAN
my ($self, $params ) = @_;
my %add_params = (
noparse => 1,
);
my %params = (%$params, %add_params);
my $zone = $self->directadmin->query(
params => \%params,
command => 'CMD_API_DNS_CONTROL',
allowed_fields => 'domain noparse',
);
return _parse_zone($zone, $params->{domain}. '.', '') unless ref $zone eq 'HASH';
return $zone;
}
# Add records A, MX, CNAME, NS, PTR, TXT, AAAA
# params: domain, type, name, value
sub add_record {
my ($self, $params ) = @_;
my %add_params = (
action => 'add',
);
my %params = (%$params, %add_params);
return $self->directadmin->query(
params => \%params,
command => 'CMD_API_DNS_CONTROL',
method => 'POST',
allowed_fields => "type name action value domain",
);
}
# Remove records A, MX, CNAME, NS, PTR, TXT, AAAA, SRV
# params: domain, type, name, value
sub remove_record {
my ($self, $params ) = @_;
lib/API/DirectAdmin/DNS.pm view on Meta::CPAN
action => 'select',
lc $params->{type} . 'recs0' => "name=$params->{name}&value=$params->{value}",
);
delete $params->{type};
my %params = (%$params, %add_params);
return $self->directadmin->query(
params => \%params,
command => 'CMD_API_DNS_CONTROL',
method => 'POST',
allowed_fields => 'domain
action
name
value
arecs0
mxrecs0
txtrecs0
aaaarecs0
nsrecs0
lib/API/DirectAdmin/Domain.pm view on Meta::CPAN
our $VERSION = 0.05;
# Return domains list
# INPUT
# connection data for USER, not admin
sub list {
my ($self ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_SHOW_DOMAINS',
);
return $responce->{list} if ref $responce eq 'HASH';
return [];
}
# Add Domain to user account
# params: domain, php (ON|OFF), cgi (ON|OFF)
sub add {
my ($self, $params ) = @_;
lib/API/DirectAdmin/Domain.pm view on Meta::CPAN
my %add_params = (
action => 'create',
);
my %params = (%$params, %add_params);
#warn 'params ' . Dumper(\%params) if $DEBUG;
my $responce = $self->directadmin->query(
params => \%params,
command => 'CMD_API_DOMAIN',
method => 'POST',
allowed_fields =>
'action
domain
php
cgi',
);
warn 'responce ' . Dumper(\$responce) if $self->{debug};
lib/API/DirectAdmin/Ip.pm view on Meta::CPAN
our $VERSION = 0.05;
# Return list of IP
# INPUT
# Admin connect params
sub list {
my ($self ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_SHOW_RESELLER_IPS',
);
return $responce->{list} if ref $responce eq 'HASH';
return [];
}
# Add Ip
# INPUT
# Admin connect params
# ip = 'IP.AD.DRE.SS'
lib/API/DirectAdmin/Ip.pm view on Meta::CPAN
add => 'Submit',
netmask => '255.255.255.0',
notify => 'no',
);
my %params = (%$params, %add_params);
return $self->directadmin->query(
params => \%params,
method => 'POST',
command => 'CMD_API_IP_MANAGER',
allowed_fields => 'ip
action
add
netmask
notify
status',
);
}
# Delete Ip
lib/API/DirectAdmin/Ip.pm view on Meta::CPAN
my %add_params = (
action => 'select',
delete => 'Delete',
);
my %params = (%$params, %add_params);
return $self->directadmin->query(
params => \%params,
method => 'POST',
command => 'CMD_API_IP_MANAGER',
allowed_fields => 'select0
action
delete',
);
}
1;
lib/API/DirectAdmin/Mysql.pm view on Meta::CPAN
# passwd2 => 'DBPASSWD',
# user => 'DBLOGIN',
sub adddb {
my ($self, $params ) = @_;
$params->{action} = 'create';
carp 'params ' . Dumper($params) if $self->{debug};
my $responce = $self->directadmin->query(
command => 'CMD_API_DATABASES',
method => 'POST',
params => $params,
allowed_fields => 'action
name
passwd
passwd2
user',
);
carp '$responce ' . Dumper(\$responce) if $self->{debug};
lib/API/DirectAdmin/Mysql.pm view on Meta::CPAN
# select0 => 'DBNAME',
# domain => 'DOMAIN.COM',
sub deldb {
my ($self, $params ) = @_;
$params->{action} = 'delete';
carp 'params ' . Dumper($params) if $self->{debug};
my $responce = $self->directadmin->query(
command => 'CMD_API_DATABASES',
method => 'POST',
params => $params,
allowed_fields => 'action
select0',
);
carp '$responce ' . Dumper(\$responce) if $self->{debug};
return $responce if $responce;
return 'FAIL';
}
# Get list of databases for authorized user.
# No params.
sub list {
my ($self ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_DATABASES',
method => 'GET',
);
carp '$responce ' . Dumper($responce) if $self->{debug};
return $responce->{list} if ref $responce eq 'HASH';
return [];
}
1;
lib/API/DirectAdmin/User.pm view on Meta::CPAN
use base 'API::DirectAdmin::Component';
our $VERSION = 0.06;
# Return list of users (only usernames)
sub list {
my ($self ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_SHOW_ALL_USERS',
);
return $responce->{list} if ref $responce eq 'HASH';
return [];
}
# Create a New User
# params: username, domain, passwd, passwd2, package, ip, email
sub create {
my ($self, $params ) = @_;
lib/API/DirectAdmin/User.pm view on Meta::CPAN
my %add_params = (
action => 'create',
add => 'submit',
notify => 'no',
);
my %params = (%$params, %add_params);
my $responce = $self->directadmin->query(
params => \%params,
command => 'CMD_API_ACCOUNT_USER',
allowed_fields =>
'action
add
notify
username
domain
passwd
passwd2
package
ip
lib/API/DirectAdmin/User.pm view on Meta::CPAN
my ($self, $params ) = @_;
my %add_params = (
suspend => 'Suspend',
location => 'CMD_SELECT_USERS',
);
my %params = (%$params, %add_params);
my $responce = $self->directadmin->query(
command => 'CMD_API_SELECT_USERS',
method => 'POST',
params => \%params,
allowed_fields => 'location
suspend
select0',
);
carp "Suspend account: $responce->{text}, $responce->{details}" if $self->{debug};
return $responce;
}
lib/API/DirectAdmin/User.pm view on Meta::CPAN
my ($self, $params ) = @_;
my %add_params = (
suspend => 'Unsuspend',
location => 'CMD_SELECT_USERS',
);
my %params = (%$params, %add_params);
my $responce = $self->directadmin->query(
command => 'CMD_API_SELECT_USERS',
method => 'POST',
params => \%params,
allowed_fields => 'location
suspend
select0',
);
carp "Unsuspend account: $responce->{text}, $responce->{details}" if $self->{debug};
return $responce;
lib/API/DirectAdmin/User.pm view on Meta::CPAN
my ($self, $params ) = @_;
my %add_params = (
confirmed => 'Confirm',
delete => 'yes',
);
my %params = (%$params, %add_params);
my $responce = $self->directadmin->query(
command => 'CMD_API_SELECT_USERS',
method => 'POST',
params => \%params,
allowed_fields => 'confirmed
delete
select0',
);
carp "Delete account: $responce->{text}, $responce->{details}" if $self->{debug};
return $responce;
}
# Change passwd
# params: username, passwd, passwd2
sub change_password {
my ($self, $params ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_USER_PASSWD',
method => 'POST',
params => $params,
allowed_fields => 'passwd
passwd2
username',
);
carp "Change passwd account: $responce->{text}, $responce->{details}" if $self->{debug};
return $responce;
}
lib/API/DirectAdmin/User.pm view on Meta::CPAN
}
}
my %add_params = (
action => 'package',
);
my %params = (%$params, %add_params);
my $responce = $self->directadmin->query(
command => 'CMD_API_MODIFY_USER',
method => 'POST',
params => \%params,
allowed_fields => 'action
package
user',
);
carp "Change package: $responce->{text}, $responce->{details}" if $self->{debug};
return $responce;
}
# Show a list of user packages
# no params
sub show_packages {
my ($self ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_PACKAGES_USER',
)->{list};
return $responce;
}
# Show user config
# params: user
sub show_user_config {
my ( $self, $params ) = @_;
my $responce = $self->directadmin->query(
command => 'CMD_API_SHOW_USER_CONFIG',
params => $params,
allowed_fields => 'user',
);
return $responce;
}
1;
t/01-test.t view on Meta::CPAN
$func = 'mk_query_string';
is( $da->mk_query_string( { } ), '', $func );
is( $da->mk_query_string( '' ), '', $func );
is( $da->mk_query_string( undef ), '', $func );
is( $da->mk_query_string( { aaa => 111, bbb => 222 } ), 'aaa=111&bbb=222', $func );
is( $da->mk_query_string( { bbb => 222, aaa => 111 } ), 'aaa=111&bbb=222', $func );
is( $da->mk_query_string( [ ] ), '', $func );
is( $da->mk_query_string( { dddd => 'dfdf' } ), 'dddd=dfdf', $func );
$func = 'mk_full_query_string';
is( $da->mk_full_query_string( { command => 'CMD' } ),
'https://'.$connection_params{auth_user}.':'.$connection_params{auth_passwd}.'@'.$connection_params{host}.':2222/CMD?',
$func
);
is( $da->mk_full_query_string( { command => 'CMD', allow_https => 0 } ),
'http://'.$connection_params{auth_user}.':'.$connection_params{auth_passwd}.'@'.$connection_params{host}.':2222/CMD?',
$func
);
is( $da->mk_full_query_string( {
command => 'CMD',
param1 => 'val1',
param2 => 'val2',
} ),
'https://'.$connection_params{auth_user}.':'.$connection_params{auth_passwd}.'@'.$connection_params{host}.':2222/CMD?param1=val1¶m2=val2',
$func
);
is( $da->mk_full_query_string( {
param1 => 'val1',
param2 => 'val2',
command => 'CMD',
allow_https => 0,
} ),
'http://'.$connection_params{auth_user}.':'.$connection_params{auth_passwd}.'@'.$connection_params{host}.':2222/CMD?param1=val1¶m2=val2',
$func
);
# IP
use_ok('API::DirectAdmin::Ip');