API-CPanel

 view release on metacpan or  search on metacpan

lib/API/CPanel.pm  view on Meta::CPAN

    die 'Cannot get ip list from CPanel';
 }

 my $ip  = $ip_list->[0];
 my $dname  = 'perlaround.ru';
 my $user_name = 'user1';

 my $client_creation_result = API::CPanel::user::create( {
    %{ $connection_params },
    username  => $user_name,
    password  => 'user_password',
    domain    => $dname,
 });

 # Switch off account:
 my $suspend_result = API::CPanel::user::disable( {
    %{ $connection_params },
    user => $user_name,
 } );

 unless ( $suspend_result ) {

lib/API/CPanel/Mysql.pm  view on Meta::CPAN

use API::CPanel;
use Data::Dumper;

our $VERSION = 0.07;

# Äîáàâëÿåò ïîëüçîâàòåëÿ â áàçó mysql
# IN:
#   - do_as_user - cPanel ïîëüçîâàòåëü äëÿ êîòîðîãî ñîçäàåòñÿ mysql-ïîëüçîâàòåëü
#   - username   - Èìÿ mysql-ïîëüçîâàòåëÿ äëÿ ñîçäàíèÿ 
#                  (ôàêòè÷åñêè áóäåò ñîçäàí mysql-ïîëüçîâàòåëü ñ èìåíåì: <do_as_user>_<username>).
#   - password   - Ïàðîëü äëÿ mysql-ïîëüçîâàòåëÿ.
sub adduser {
    my $params = shift;

    # Ìîäóëü Mysql cPanel'à ñ êîòîðûì ðàáîòàåì îòíîñèòñÿ ê ïåðâîé âåðñèè api
    $params->{'cpanel_xmlapi_apiversion'} = 1;
    # Äîáàâëÿåì íîâîãî ïîëüçîâàòåëÿ â áàçó îò èìåíè ïîëüçîâàòåëÿ ïåðåäàâàåìîãî â ïàðàìåòðå do_as_user
    # Ôàêòè÷åñêè ýòî çíà÷èò ÷òî ðàáîòàÿ ñ cPanel îò ðåñåëëåðà ìû ñîçäàåì mysql 
    # þçåðà äëÿ cPanel-ïîëüçîâàòåëÿ ñ ëîãèíîì do_as_user
    $params->{'user'} = delete $params->{'do_as_user'};

    $params->{'cpanel_xmlapi_module'} = 'Mysql';
    $params->{'cpanel_xmlapi_func'}   = 'adduser';

    $params->{'arg-0'}  = delete $params->{'username'};
    $params->{'arg-1'}  = delete $params->{'password'};

    return unless $params->{'user'}  &&
                  $params->{'arg-0'} &&
                  $params->{'arg-1'};

    my $result = API::CPanel::action_abstract(
        params         => $params,
        func           => 'cpanel',
        want_hash      => '1',
        allowed_fields => '

lib/API/CPanel/User.pm  view on Meta::CPAN

}

# Ñîçäàòü ïîëüçîâàòåëÿ
# username* (string)	-- User name.
# domain* (string)	-- Domain name.
# plan (string)		-- Package to use for account creation.
# pkgname (string)	-- Name of a new package to be created based on the settings used.
# savepkg (bool)	-- Save the settings used as a new package.
# featurelist (string)	-- Name of the feature list to be used when creating a new package.
# quota (integer)	-- Disk space quota in Megabytes.
# password (string)	-- Password for accessing cPanel.
# ip (string)		-- Whether or not the domain has a dedicated IP address.
# cgi (boolean)		-- Whether or not the domain has CGI access.
# frontpage (boolean)	-- Whether or not the domain has FrontPage extensions installed.
# hasshell (boolean)	-- Whether or not the domain has shell/SSH access.
# contactemail (string)	-- Contact email address for the account.
# cpmod (string)	-- cPanel theme name.
# maxftp (string)	-- Maximum number of FTP accounts the user can create.
# maxsql (string)	-- Maximum number of SQL databases the user can create.
# maxpop (string)	-- Maximum number of email accounts the user can create.
# maxlst (string)	-- Maximum number of mailing lists the user can create.

lib/API/CPanel/User.pm  view on Meta::CPAN

	container      => 'result',
	want_hash      => $params->{want_hash},
	allowed_fields =>
	   'username
	    domain
	    plan
	    pkgname
	    savepkg
	    featurelist
	    quota
	    password
	    ip
	    cgi
	    frontpage
	    hasshell
	    contactemail
	    cpmod
	    maxftp
	    maxsql
	    maxpop
	    maxlst

lib/API/CPanel/User.pm  view on Meta::CPAN

    my $params = shift;

    return API::CPanel::action_abstract(
	params         => $params,
	func           => 'changepackage',
	container      => 'result',
	allowed_fields => 'user pkg',
    );
}

# This function changes the password of a domain owner (cPanel) or reseller (WHM) account
# user* -- user name
# pass* -- New password for the user.
sub change_account_password {
    my $params = shift;

    return API::CPanel::action_abstract(
	params         => $params,
	func           => 'passwd',
	container      => 'passwd',
	allowed_fields => 'user pass',
    );
}

t/01-test.t  view on Meta::CPAN

    <statusmsg>Account Creation Ok</statusmsg>
  </result>
</createacct>
THEEND

my $result = API::CPanel::User::create(
    {
	%correct_params,
	username    => $manipulate_user,
	domain      => 'zse1.ru',
	password    => 'sdfdsGdhd',
	maxsql      => 11,
    }
);
is( $result, 1, 'API::CPanel::User::create' );

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<createacct>
  <result>
    <options></options>
    <rawout></rawout>
    <status>0</status>
    <statusmsg>Sorry, a group for that username already exists.</statusmsg>
  </result>
</createacct>
THEEND

$result = API::CPanel::User::create(
    {
	%correct_params,
	username    => $manipulate_user,
	password    => 'sdfdsGdhd',
	domain      => 'zse1.ru',
    }
);
is( $result, '', 'API::CPanel::User::create repeat');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<passwd>
  <passwd>
    <rawout>Changing password for zsezse
Password for zsezse has been changed
Updating ftp passwords for zsezse
Ftp password files updated.
Ftp vhost passwords synced
</rawout>
    <services>
      <app>system</app>
    </services>
    <services>
      <app>ftp</app>
    </services>
    <services>
      <app>mail</app>
    </services>
    <services>
      <app>mySQL</app>
    </services>
    <status>1</status>
    <statusmsg>Password changed for user zsezse</statusmsg>
  </passwd>
</passwd>
THEEND


$result = API::CPanel::User::change_account_password(
    {
	%correct_params,
	user => $manipulate_user,
	pass => 'sdfdsfsdfhsdfj',
    }
);
is( $result, 1, 'API::CPanel::User::change_account_password');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<modifyacct>
  <result>
    <newcfg>
      <cpuser>
        <BWLIMIT>unlimited</BWLIMIT>
        <CONTACTEMAIL></CONTACTEMAIL>
        <CONTACTEMAIL2></CONTACTEMAIL2>
        <DEMO>0</DEMO>

t/01-test.t  view on Meta::CPAN


$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<suspendacct>
  <result>
    <status>1</status>
    <statusmsg>&lt;script&gt;if (self[]) { clear_ui_status(); }&lt;/script&gt;
Changing Shell to /bin/false...Changing shell for zseasd.
Warning: &quot;/bin/false&quot; is not listed in /etc/shells
Shell changed.
Done
Locking Password...Locking password for user zseasd.
passwd: Success
Done
Suspending mysql users
Notification =&gt; root\@localhost via EMAIL [level =&gt; 3]
Using Quota v3 Support
Suspended document root /home/zseasd/public_html
Using Quota v3 Support
Suspending FTP accounts...
Updating ftp passwords for zseasd
Ftp password files updated.
Ftp vhost passwords synced
zseasds account has been suspended
</statusmsg>
  </result>
</suspendacct>
THEEND

$result = API::CPanel::User::disable(
    {
	%correct_params,
	user   => $manipulate_user,

t/01-test.t  view on Meta::CPAN


$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<suspendacct>
  <result>
    <status>1</status>
    <statusmsg>&lt;script&gt;if (self['clear_ui_status']) { clear_ui_status(); }&lt;/script&gt;
Changing Shell to /bin/false...Changing shell for zseasd.
Warning: &quot;/bin/false&quot; is not listed in /etc/shells
Shell not changed.
Done
Locking Password...Locking password for user zseasd.
passwd: Success
Done
Suspending mysql users
Notification =&gt; root\@localhost via EMAIL [level =&gt; 3]
Account Already Suspended
</statusmsg>
  </result>
</suspendacct>
THEEND

t/01-test.t  view on Meta::CPAN

);
is( $result, 1, 'API::CPanel::User::disable repeat');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<unsuspendacct>
  <result>
    <status>1</status>
    <statusmsg>&lt;script&gt;if (self['clear_ui_status']) { clear_ui_status(); }&lt;/script&gt;
Changing shell for zseasd.
Shell changed.
Unlocking password for user zseasd.
passwd: Success.
Unsuspending FTP accounts...
Updating ftp passwords for zseasd
Ftp password files updated.
Ftp vhost passwords synced
zseasds account is now active
Unsuspending mysql users
Notification =&gt; root\@localhost via EMAIL [level =&gt; 3]
</statusmsg>
  </result>
</unsuspendacct>
THEEND

$result = API::CPanel::User::enable(
    {

t/01-test.t  view on Meta::CPAN

<removeacct>
  <result>
    <rawout>Running pre removal script (/scripts/prekillacct)......DoneCollecting Domain Name and IP...User: zseasd
Domain: zse1.ru
...DoneKilling all processes owned by user......DoneCleaning passwd,shadow,group......DoneRemoving User from Group..........DoneRemoving Web Logs......DoneRemoving Bandwidth Files......DoneRemoving Crontab......DoneRemoving Virtual Hosts...Removed zs...
Removed Entry from httpd.conf
...DoneRemoving MySQL databases and users......DoneRemoving PostgreSQL databases and users......DoneRemoving System User......DoneRemoving Group......DoneRemoving DNS Entries...zse1.ru =&gt; deleted from www. 
...DoneRemoving Email Setup...Removing /etc/valiases/zse1.ru
...DoneRemoving mailman lists......DoneUpdating Databases......DoneRemoving Counter Data......DoneAdding ip back to the ip address pool...System has 2 free ips.
...DoneRemoving users cPanel Databases &amp; Updating......DoneReloading Services......DoneRemoving mail and service configs...
...DoneSending Contacts......DoneUpdating internal databases...Updating ftp passwords for zseasd
Purging ftp user zseasd
Ftp password files updated.
Ftp vhost passwords synced
...DoneRunning post removal scripts (/scripts/legacypostkillacct, /scripts/postkillacct)......DoneAccount Removal Complete!!!...zseasd account removed...Done</rawout>
    <status>1</status>
    <statusmsg>zseasd account removed</statusmsg>
  </result>
</removeacct>
THEEND

$result = API::CPanel::User::delete(
    {
	%correct_params,

t/01-test.t  view on Meta::CPAN

        <result>1</result>
     </event>
</cpanelresult>
THEEND

$result = API::CPanel::Mysql::adduser(
    {
        %correct_params,
        do_as_user => 'zsezse5',
        username   => 'test13',
        password   => 'test13pass',
    }
);
is( $result, 1, 'API::CPanel::Mysql::adduser');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
    <module>Mysql</module>
    <func>adddb</func>
    <type>event</type>



( run in 1.442 second using v1.01-cache-2.11-cpan-49f99fa48dc )