Hello team,
I'm using PublicAPI to retrieve user home:
So I wrote a custom module - called BlaBla - which has only one function (xxx) to retrieve user home:
This module doest not work - function xxx is not found:
Seems PublicAPI uses Perl 5.6.2 (!?!?!) and cannot find MIME::Base64:
I think it's not "dry" but how can I use PublicAPI in any other custom module?
I'm using PublicAPI to retrieve user home:
Code:
# cat ohai.pl
#!/usr/bin/perl
BEGIN{ unshift @INC, "/usr/local/cpanel" }
use Cpanel::PublicAPI ();
my $pubapi = Cpanel::PublicAPI->new();
my $res = $pubapi->whm_api('domainuserdata', "domain=dummy.ruyrocha.com");
print "OHAI - $res->{'userdata'}->{'homedir'}\n";
root@opsbox [~/z]# perl ohai.pl
OHAI - /home/dummy
root@opsbox [~]# cd
root@opsbox [~]# perl -V | tail -n 8
Compiled at Jan 27 2012 13:26:43
@INC:
/usr/local/lib/perl5/5.8.8/x86_64-linux
/usr/local/lib/perl5/5.8.8
/usr/local/lib/perl5/site_perl/5.8.8/x86_64-linux
/usr/local/lib/perl5/site_perl/5.8.8
/usr/local/lib/perl5/site_perl
.
Code:
root@opsbox [/usr/local/cpanel/Cpanel]# cat BlaBla.pm
package Cpanel::BlaBla;
use Cpanel::PublicAPI ();
sub api2_xxx {
my %OPTS = @_;
my $domain = $OPTS{'domain'};
my $pubapi = Cpanel::PublicAPI->new();
my $res = $pubapi->whm_api('domainuserdata', "domain=$domain");
my $homedir = $res->{'userdata'}->{'homedir'};
return $homedir;
}
sub api2 {
my $func = shift;
$API{'xxx'}{'func'} = 'api2_xxx';
$API{'xxx'}{'engine'} = 'hasharray';
return $API{$func};
}
1;
Code:
perseverance ~/dev/php $ php -f wd-blabla.php
URL: http://10.1.1.90:2082/xml-api/cpanel
DATA: domain=dummy.ruyrocha.com&cpanel_xmlapi_user=hgdummy&cpanel_xmlapi_module=BlaBla&cpanel_xmlapi_func=xxx&cpanel_xmlapi_apiversion=2
Authentication Header: Authorization: Basic aGdkdW1teTpGNENad2tYQmpydTM3WXhVUWlRVDl4dXQ=
RESPONSE:
<?xml version="1.0" ?>
<cpanelresult>
<apiversion>2</apiversion>
<error>Could not find function 'xxx' in module 'BlaBla'</error>
<func>xxx</func>
<module>BlaBla</module>
</cpanelresult>
SimpleXML var_dump:
SimpleXMLElement Object
(
[apiversion] => 2
[error] => Could not find function 'xxx' in module 'BlaBla'
[func] => xxx
[module] => BlaBla
)
Code:
root@opsbox [/usr/local/cpanel/Cpanel]# tail -f ../logs/error_log
Cpanel::LoadModule::loadmodule('BlaBla') called at /usr/local/cpanel/Cpanel/Api2/Exec.pm line 33
Cpanel::Api2::Exec::api2_preexec('BlaBla', 'xxx') called at cpanel line 880
main::docpanelaction('HASH(0xfed9920)') called at cpanel line 4921
main::run_fast_xml_mode() called at cpanel line 409
[2012-01-31 13:46:02 -0200] warn [cpanel] API2: xxx is missing from Cpanel::BlaBla's api2 function. Perhaps you misspelled xxx. at /usr/local/cpanel/Cpanel/Api2/Exec.pm line 38
Cpanel::Api2::Exec::api2_preexec('BlaBla', 'xxx') called at cpanel line 880
main::docpanelaction(HASH(0xfed9920)) called at cpanel line 4921
main::run_fast_xml_mode() called at cpanel line 409
[2012-01-31 13:48:15 -0200] die [Internal Death while parsing 30973] Can't locate MIME/Base64.pm in @INC (@INC contains: /usr/local/cpanel/perl/_diet /usr/local/cpanel /usr/local/cpanel/perl /usr/local/cpanel/Cpanel/CPAN/overload/__Digest /usr/local/cpanel/Cpanel/CPAN/overload/__Time /usr/local/cpanel/build-tools/stubs /usr/local/cpanel/perl/C220 /usr/local/cpanel/perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/5.6.2 /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2 /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2 /usr/local/cpanel/perl/site_perl . /usr/local/cpanel/perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/5.6.2 /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2 /usr/local/cpanel/perl/site_perl .) at /usr/local/cpanel/Cpanel/PublicAPI.pm line 34.
Cpanel::PublicAPI::BEGIN() called at MIME/Base64.pm line 34
eval {...} called at MIME/Base64.pm line 34
require Cpanel/PublicAPI.pm called at /usr/local/cpanel/Cpanel/BlaBla.pm line 3
Cpanel::BlaBla::BEGIN() called at MIME/Base64.pm line 34
eval {...} called at MIME/Base64.pm line 34
require Cpanel/BlaBla.pm called at (eval 4) line 1
eval ' require Cpanel::BlaBla; Cpanel::BlaBla::BlaBla_init() if UNIVERSAL::can( "Cpanel::BlaBla", "BlaBla_init" );
;' called at /usr/local/cpanel/Cpanel/LoadModule.pm line 20
Cpanel::LoadModule::_modloader('BlaBla') called at /usr/local/cpanel/Cpanel/LoadModule.pm line 24
Cpanel::LoadModule::loadmodule('BlaBla') called at /usr/local/cpanel/Cpanel/Api2/Exec.pm line 33
Cpanel::Api2::Exec::api2_preexec('BlaBla', 'xxx') called at cpanel line 880
main::docpanelaction('HASH(0x1085a680)') called at cpanel line 4921
main::run_fast_xml_mode() called at cpanel line 409
[2012-01-31 13:48:15 -0200] die [Internal Death while parsing 30973] Can't locate MIME/Base64.pm in @INC (@INC contains: /usr/local/cpanel/perl/_diet /usr/local/cpanel /usr/local/cpanel/perl /usr/local/cpanel/Cpanel/CPAN/overload/__Digest /usr/local/cpanel/Cpanel/CPAN/overload/__Time /usr/local/cpanel/build-tools/stubs /usr/local/cpanel/perl/C220 /usr/local/cpanel/perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/5.6.2 /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2 /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2 /usr/local/cpanel/perl/site_perl . /usr/local/cpanel/perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/5.6.2 /usr/local/cpanel/perl/site_perl/5.6.2/x86_64-linux /usr/local/cpanel/perl/site_perl/5.6.2 /usr/local/cpanel/perl/site_perl .) at /usr/local/cpanel/Cpanel/PublicAPI.pm line 34.
BEGIN failed--compilation aborted at /usr/local/cpanel/Cpanel/PublicAPI.pm line 34.
Compilation failed in require at /usr/local/cpanel/Cpanel/BlaBla.pm line 3.
Cpanel::BlaBla::BEGIN() called at /usr/local/cpanel/Cpanel/PublicAPI.pm line 3
eval {...} called at /usr/local/cpanel/Cpanel/PublicAPI.pm line 3
require Cpanel/BlaBla.pm called at (eval 4) line 1
eval ' require Cpanel::BlaBla; Cpanel::BlaBla::BlaBla_init() if UNIVERSAL::can( "Cpanel::BlaBla", "BlaBla_init" );
;' called at /usr/local/cpanel/Cpanel/LoadModule.pm line 20
Cpanel::LoadModule::_modloader('BlaBla') called at /usr/local/cpanel/Cpanel/LoadModule.pm line 24
Cpanel::LoadModule::loadmodule('BlaBla') called at /usr/local/cpanel/Cpanel/Api2/Exec.pm line 33
Cpanel::Api2::Exec::api2_preexec('BlaBla', 'xxx') called at cpanel line 880
main::docpanelaction('HASH(0x1085a680)') called at cpanel line 4921
main::run_fast_xml_mode() called at cpanel line 409
[2012-01-31 13:48:15 -0200] warn [cpanel] API2: xxx is missing from Cpanel::BlaBla's api2 function. Perhaps you misspelled xxx. at /usr/local/cpanel/Cpanel/Api2/Exec.pm line 38
Cpanel::Api2::Exec::api2_preexec('BlaBla', 'xxx') called at cpanel line 880
main::docpanelaction(HASH(0x1085a680)) called at cpanel line 4921
main::run_fast_xml_mode() called at cpanel line 409