API::DirectAdmin - interface to the DirectAdmin Hosting Panel API ( http://www.directadmin.com )
use API::DirectAdmin; my %auth = ( auth_user => 'admin_name', auth_passwd => 'admin_passwd', host => '11.22.33.44', ); # init my $da = API::DirectAdmin->new(%auth); ### Get all panel IP my $ip_list = $da->ip->list(); unless ($ip_list && ref $ip_list eq 'ARRAY' && scalar @$ip_list) { die 'Cannot get ip list from DirectAdmin'; } my $ip = $ip_list->[0]; my $dname = 'reg.ru'; my $user_name = 'user1'; my $email = 'user1@example.com'; my $package = 'newpackage'; my $client_creation_result = $da->user->create( { username => $user_name, passwd => 'user_password', passwd2 => 'user_password', domain => $dname, email => $email, package => $package, ip => $ip, }); # Switch off account: my $suspend_result = $da->user->disable( { select0 => $user_name, } ); if ( $suspend_result->{error} == 1 ) { die "Cannot suspend account $suspend_result->{text}"; } # Switch on account my $resume_result = $da->user->enable( { select0 => $user_name, } ); if ( $resume_result->{error} == 1 ) { die "Cannot Resume account $resume_result->{text}"; } # Delete account my $delete_result = $da->user->delete( { select0 => $user_name, } ); if ( $delete_result->{error} == 1 ) { die "Cannot delete account $delete_result->{text}"; } # 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', );
Return list of users in array ref.
Example:
my $users_list = $da->users->list();
Create a new user in DirectAdmin panel.
my $result = $da->user->create( { username => 'username', passwd => 'user_password', passwd2 => 'user_password', domain => 'example.com', email => 'email@example.com', package => 'package_name', ip => 'IP.ADD.RE.SS', });
Delete DirectAdmin user and all user's data
Note: Some DirectAdmin's API methods required parameter "select0" for choose value from list. Like list of users, databases, ip, etc.
my $result = $da->user->delete( { select0 => 'username', } );
Two different methods for disable and enable users with same params.
my $disable_result = $da->user->disable( { select0 => 'username', } ); my $enable_result = $da->user->enable( { select0 => 'username', } );
Change password for user
my $result = $da->user->change_password( { username => 'username', passwd => 'new_password', passwd2 => 'new_password', } );
Change package (tariff plan) for user
my $result = $da->user->change_package( { username => 'username', package => 'new_package', } );
Return list of available packages.
Note: If you created packages through administrator user - you must use admin's login and password for authorisation. Obviously, if packages was created by reseller user - use reseller authorisation.
my $packages = $da->user->show_packages();
Return all user settings.
my $user_config = $da->user->show_user_config({ user => 'username' });
Return list of domains on server.
my $domains = $da->domain->list();
Add new domain to user through you connect to server.
Note: For adding domains for customers and you don't khow their password use: auth_user = 'admin_name|customer_name' in auth hash.
my %auth = ( auth_user => 'admin_name|customer_name', auth_passwd => 'admin_passwd', host => '11.22.33.44', ); # init my $da = API::DirectAdmin->new(%auth); $result = $da->domain->add({ domain => 'newdomain.com', php => 'ON', cgi => 'ON', });
Control users mysql databases
List of databases from user. Return empty array if databases not found.
print $da->mysql->list();
Add database to user. Prefix "username_" will be added to 'name' and 'user';
my %auth = ( auth_user => 'admin_name|customer', auth_passwd => 'admin_passwd', host => '11.22.33.44', ); # init my $da = API::DirectAdmin->new(%auth); my $result = $da->mysql->adddb( { name => 'default', # will be 'customer_default' user => 'default', # will be 'customer_default' passwd => 'password', passwd2 => 'password', } );
Delete selected database from user.
my $result = $da->mysql->deldb({ select0 => 'database_name' });
Return array reference of list ip adresses;
my $ip_list = $da->ip->list();
Add IP address to server config
my $result = $da->ip->add({ ip => '123.234.123.234', status => 'server', });
Remove ip from server
my $result = $da->ip->remove({ select0 => '123.234.123.234', });
Show zones, add and remove records.
Return zone structure for domain
$da->dns->dumpzone( {domain => 'domain.com'} );
Add zone record to dns for domain. Available types of records: A, AAAA, NS, MX, TXT, PTR, CNAME, SRV
my $reult = $da->dns->add_record({ domain => 'domain.com', type => 'A', name => 'subdomain', # will be "subdomain.domain.com." in record value => '127.127.127.127', });
Remove record from domain zone
my $result = $da->dns->remove_record({ domain => 'domain.com', type => 'A', name => 'subdomain', value => '127.127.127.127', });
To install this module type the following:
perl Makefile.PL make make test make install
This module requires these other modules and libraries: Modern::Perl LWP::UserAgent HTTP::Request URI Carp Data::Dumper
Copyright (C) 2012 by Andrey "Chips" Kuzmin <chipsoid@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.
To install API::DirectAdmin, copy and paste the appropriate command in to your terminal.
cpanm
cpanm API::DirectAdmin
CPAN shell
perl -MCPAN -e shell install API::DirectAdmin
For more information on module installation, please visit the detailed CPAN module installation guide.