API-CPanel

 view release on metacpan or  search on metacpan

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

    );

    # Check this sub params
    unless ($params->{auth_user} && $params->{auth_passwd}) {
        return '';
    }

    return "Basic " . MIME::Base64::encode( $params->{auth_user} . ":" . $params->{auth_passwd} );
}

# Wrapper for "ref" on undef value, without warnings :)
# Possible very stupid sub :)
# STATIC(REF: our_ref)
sub refs {
    my $ref = shift;

    return '' unless $ref;

    return ref $ref;
}

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


use Test::More tests => $ONLINE ? 61 : 61;

my $test_host = $ENV{host} || '127.0.0.1';

ok(1, 'Test OK');
use_ok('API::CPanel');

$a = 'refs';

is( refs( undef ),   '',       $a);
is( refs( {} ),      'HASH',   $a );
is( refs( [] ),      'ARRAY',  $a );
is( refs( sub {} ),  'CODE',   $a );
is( refs( \$a ),     'SCALAR', $a );

$a = 'is_success';

ok(! is_success(), $a);
ok(! is_success( { error => {}, data => {} } ), $a);
ok(! is_success( { data  => {} } ), $a);

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


$a = 'filter_hash';
is_deeply( API::CPanel::filter_hash( {  }, [ ]), {}, $a );
is_deeply( API::CPanel::filter_hash( { aaa => 555, bbb => 111 }, [ 'aaa' ]), { aaa => 555 }, $a );
is_deeply( API::CPanel::filter_hash( { aaa => 555, bbb => 111 }, [ ]), { }, $a );
is_deeply( API::CPanel::filter_hash( { }, [ 'aaa' ]), { }, $a );

$a = 'mk_query_string';
is( API::CPanel::mk_query_string( {  }  ), '', $a );
is( API::CPanel::mk_query_string( ''    ), '', $a );
is( API::CPanel::mk_query_string( undef ), '', $a );
is( API::CPanel::mk_query_string( { aaa => 111, bbb => 222 } ), 'aaa=111&bbb=222', $a );
is( API::CPanel::mk_query_string( { bbb => 222, aaa => 111 } ), 'aaa=111&bbb=222', $a );
is( API::CPanel::mk_query_string( [ ] ), '', $a );
is( API::CPanel::mk_query_string( { dddd => 'dfdf' } ), 'dddd=dfdf', $a );

my $kill_start_end_slashes_test = {
    '////aaa////' => 'aaa',
    'bbb////'     => 'bbb',
    '////ccc'     => 'ccc', 
    ''            => '',

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

my %correct_params = (
    auth_user   => $ENV{auth_user}   || 'fake',
    auth_passwd => $ENV{auth_passwd} || 'fake_pass',
    host        => $test_host,

);




$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listips>
  <result>
    <active>1</active>
    <dedicated>0</dedicated>
    <if>eth0</if>
    <ip>192.168.123.208</ip>
    <mainaddr>1</mainaddr>
    <netmask>255.255.255.0</netmask>
    <network>192.168.123.0</network>
    <removable>0</removable>

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

    {
	%correct_params,
    }
);

my $main_shared_ip = $ip_list->[0];
#diag "Get ips from panel: " . Dumper( $ip_list ) . scalar @$ip_list;
ok($ip_list && ref $ip_list eq 'ARRAY' && scalar @$ip_list, 'API::CPanel::Ip::list');
#$API::CPanel::DEBUG=0;

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<createacct>
  <result>
    <options>
      <ip>192.168.123.208</ip>
      <nameserver>ns1.centostest.ru</nameserver>
      <nameserver2>ns2.centostest.ru</nameserver2>
      <nameserver3></nameserver3>
      <nameserver4></nameserver4>
      <nameservera></nameservera>
      <nameservera2></nameservera2>

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

    {
	%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>

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


$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>
        <DOMAIN>zse1.ru</DOMAIN>
        <FEATURELIST>default</FEATURELIST>

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

    {
	%correct_params,
	user     => $manipulate_user,
	maxsql   => 14,
	locale   => 'ru',
	cptheme  => 'x',
    }
);
is( $result, 1, 'API::CPanel::User::edit');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listaccts>
  <acct>
    <disklimit>unlimited</disklimit>
    <diskused>0M</diskused>
    <domain>qewqe.ru</domain>
    <email>*unknown*</email>
    <ip>192.168.123.208</ip>
    <maxaddons>*unknown*</maxaddons>
    <maxftp>unlimited</maxftp>
    <maxlst>unlimited</maxlst>

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

</listaccts>
THEEND

my $active_count = API::CPanel::User::active_user_count(
    {
	%correct_params,
    }
);
ok( $result =~ /^\d+$/ , 'API::CPanel::User::active_user_count');

$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

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


$result = API::CPanel::User::disable(
    {
	%correct_params,
	user   => $manipulate_user,
	reason => 'test reason1',
    }
);
is( $result, 1, 'API::CPanel::User::disable');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listaccts>
  <acct>
    <disklimit>unlimited</disklimit>
    <diskused>0M</diskused>
    <domain>qewqe.ru</domain>
    <email>*unknown*</email>
    <ip>192.168.123.208</ip>
    <maxaddons>*unknown*</maxaddons>
    <maxftp>unlimited</maxftp>
    <maxlst>unlimited</maxlst>

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

</listaccts>
THEEND

$result = API::CPanel::User::active_user_count(
    {
	%correct_params,
    }
);
is( $result, $active_count - 1, 'API::CPanel::User::active_user_count');

$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

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


$result = API::CPanel::User::disable(
    {
	%correct_params,
	user   => $manipulate_user,
	reason => 'test reason2',
    }
);
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

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

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

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

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listaccts>
  <acct>
    <disklimit>unlimited</disklimit>
    <diskused>0M</diskused>
    <domain>qewqe.ru</domain>
    <email>*unknown*</email>
    <ip>192.168.123.208</ip>
    <maxaddons>*unknown*</maxaddons>
    <maxftp>unlimited</maxftp>
    <maxlst>unlimited</maxlst>

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

THEEND

$result = API::CPanel::User::list(
    {
	%correct_params,
    }
);
ok( ref $result eq 'HASH' && scalar %$result, 'API::CPanel::User::list');


$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listaccts>
  <acct>
    <disklimit>unlimited</disklimit>
    <diskused>0M</diskused>
    <domain>qewqe.ru</domain>
    <email>*unknown*</email>
    <ip>192.168.123.208</ip>
    <maxaddons>*unknown*</maxaddons>
    <maxftp>unlimited</maxftp>
    <maxlst>unlimited</maxlst>

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

</listaccts>
THEEND

$result = API::CPanel::User::list_simple(
    {
	%correct_params,
    }
);
ok( ref $result eq 'ARRAY' && scalar @$result, 'API::CPanel::User::list_simple');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<restartservice>
  <restart>
      <rawout>Apache successfully restarted.</rawout>
      <result>1</result>
      <service>httpd</service>
      <servicename>Apache Web Server</servicename>
  </restart>
</restartservice>
THEEND

$result = API::CPanel::Misc::reload(
    {
	%correct_params,
	service     => 'httpd',
    }
);
is( $result, 1, 'API::CPanel::Misc::reload');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<addpkg>
  <result>
    <pkg>Host-3</pkg>
    <status>1</status>
    <statusmsg>Created the package Host-343</statusmsg>
  </result>
</addpkg>
THEEND

$result = API::CPanel::Package::add(

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

	name      => 'Host-343',
	quota     => 110,
	frontpage => 1,
	maxlsts   => 15,
	maxsql    => 99,
    }
);

is( $result, 1, 'API::CPanel::Package::add');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<changepackage>
  <result>
    <rawout>&lt;pre&gt;
Changing bwlimit to unlimited Meg
Changing Feature List to default
Changing max pop accounts from unlimited to unlimited
Changing max sql accounts from 14 to 99
Changing max ftp accounts from unlimited to unlimited
Changing max lists from unlimited to unlimited
Changing max sub domains from unlimited to unlimited

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

$result = API::CPanel::User::change_package(
    {
	%correct_params,
	user        => $manipulate_user,
	pkg         => 'Host-343',
    }
);

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

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<editpkg>
  <result>
    <pkg>Host-3</pkg>
    <status>1</status>
    <statusmsg>Modified the package Host-343</statusmsg>
  </result>
</editpkg>
THEEND

$result = API::CPanel::Package::edit(

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

	%correct_params,
	name        => 'Host-343',
	quota       => 100,
	frontpage   => 0,
	maxlsts     => 45,
    }
);

is( $result, 1, 'API::CPanel::Package::edit');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<listpkgs>
  <package>
    <name>Host-1</name>
    <BWLIMIT>100</BWLIMIT>
    <CGI>y</CGI>
    <CPMOD>x3</CPMOD>
    <FEATURELIST>default</FEATURELIST>
    <FRONTPAGE>n</FRONTPAGE>
    <HASSHELL>y</HASSHELL>
    <IP>n</IP>

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

$result = API::CPanel::Package::list(
    {
	%correct_params,
    }
);

ok( $result && ref $result eq 'HASH' , 'API::CPanel::Package::list');

#warn Dumper $result;

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<killpkg>
  <result>
    <status>1</status>
    <statusmsg>The package was successfully deleted.</statusmsg>
  </result>
</killpkg>
THEEND

$result = API::CPanel::Package::remove(
    {
	%correct_params,
	pkg         => 'Host-343',
    }
);

is( $result, 1, 'API::CPanel::Package::remove');

# òåñò äîáàâëåíèÿ IP è ñìåíû îñí. IP ñàéòà

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<addip>
  <addip>
      <msgs>eth0:4 is now up.  192.168.123.150/255.255.255.0 broadcast 192.168.123.255 has been added
      System has 1 free ip.</msgs>
      <status>1</status>
      <statusmsg>Success</statusmsg>
  </addip>
</addip>
THEEND


$result = API::CPanel::Ip::add(
    {
	%correct_params,
	ip      => '192.168.123.150',
	netmask => '255.255.255.0',
    }
);
is( $result, 1, 'API::CPanel::Ip::add');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<setsiteip>
  <result>
      <status>1</status>
      <statusmsg></statusmsg>
  </result>
</setsiteip>
THEEND

$result = API::CPanel::Domain::change_site_ip(
    {
        %correct_params,
        ip      => '192.168.123.150',
        user    => $manipulate_user,
    }
);
is( $result, 1, 'API::CPanel::Domain::change_site_ip');


$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<setsiteip>
  <result>
      <status>1</status>
      <statusmsg></statusmsg>
  </result>
</setsiteip>
THEEND

$result = API::CPanel::Domain::change_site_ip(
    {
        %correct_params,
        ip      => $main_shared_ip,
        user    => $manipulate_user,
    }
);
is( $result, 1, 'API::CPanel::Domain::change_site_ip to main_shared_ip');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<delip>
  <delip>
      <status>1</status>
      <statusmsg>eth0:4 is now down, 192.168.123.150 has been removed</statusmsg>
  </delip>
</delip>
THEEND

$result = API::CPanel::Ip::remove(
    {
	%correct_params,
	ip => '192.168.123.150',
    }
);
is( $result, 1, 'API::CPanel::Ip::remove');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<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...

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

THEEND

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

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<removeacct>
  <result>
    <rawout></rawout>
    <status>0</status>
    <statusmsg>Warning!.. system user zseasd does not exist!
</statusmsg>
  </result>
</removeacct>
THEEND

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

	user => $manipulate_user,
    }
);
is( $result, '', 'API::CPanel::User::delete repeat');


#diag Dumper( $result );

# Mysql òåñòû

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
    <module>Mysql</module>
    <func>adduser</func>
    <type>event</type>
    <source>internal</source>
    <apiversion>1</apiversion>
    <data>
        <result></result>
    </data>

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

$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>
    <source>internal</source>
    <apiversion>1</apiversion>
    <data>
        <result></result>
    </data>

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

$result = API::CPanel::Mysql::adddb(
    {
        %correct_params,
        do_as_user => 'zsezse5',
        dbname     => 'default',
    }
);
is( $result, 1, 'API::CPanel::Mysql::adddb');


$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
    <module>Mysql</module>
    <func>adduserdb</func>
    <type>event</type>
    <source>internal</source>
    <apiversion>1</apiversion>
    <data>
        <result></result>
    </data>

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

    {
        %correct_params,
        do_as_user => 'zsezse5',
        dbname     => 'zsezse5_default',
        dbuser     => 'zsezse5_test13',
        perms_list => 'all',
    }
);
is( $result, 1, 'API::CPanel::Mysql::grant_perms');

$API::CPanel::FAKE_ANSWER = ! $ONLINE ? <<THEEND : undef;
<?xml version="1.0" ?>
<cpanelresult>
  <apiversion>2</apiversion>
  <data>
    <reason>
         aaaaa.asdasd.ru was successfully parked on top of aaaaa.x
    </reason>
    <result>1</result>
  </data>
  <event>



( run in 1.711 second using v1.01-cache-2.11-cpan-d80b1682f3f )