The Community Forums

Interact with an entire community of cPanel & WHM users!
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Standardized Hook to call API1 functions - how to debug?

Discussion in 'cPanel Developers' started by muckypuddle, Nov 11, 2013.

  1. muckypuddle

    muckypuddle Registered

    Joined:
    Nov 11, 2013
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    1
    cPanel Access Level:
    Root Administrator
    I'm developing a hook but can't seem to get API1 calls working

    The hook has been registered via manage_hook and runs (I've enabled debughooks (level 3) and checked the error_log - the correct hook is being called and the correct data is being sent)

    However, there aren't many docs on how to do anything from within the hook. I'm attempting to use XML-API1 (with xmlapi.php included) - see below:

    PHP:
    function hook() {
        
    $stdin_fh fopen('php://stdin''r');
        while (
    $line fgets$stdin_fh )) {
            
    $raw_data .= $line;
        }
        
    fclose($stdin_fh);
        
    $hookdata json_decode($raw_datatrue);

        
    $context $hookdata['context'];
        
    $data $hookdata['data'];
        
        if(
    $data['plan'] == "Joomla"){
            
    // Connect to API1
            
    $ip "127.0.0.1"
            
    $root_pass "XXXXXXXX"
            
    $xmlapi = new xmlapi($ip); 
            
    $xmlapi->password_auth("root"$root_pass); 

            
    // Create the database
            
    $account $data['user'];
            
    $database $data['user']."_joomla";
            
    $xmlapi->set_debug(1); 
            print 
    $xmlapi->api1_query($account"Mysql""adddb", array($database)); 
            
            
    // Create the database user
            
    $dbUsername $data['user']."_sys";
            
    $dbPassword $data['pass'];
            echo 
    $xmlapi->api1_query($account"Mysql""adduser", array($dbUsernamedbPassword));
            
            
    // Give new user permissions for new db
            
    $dbPermissions "all";
            echo 
    $xmlapi->api1_query($account"Mysql""adduserdb", array($database$dbUsername$dbPermissions));
            
            
    // Export Joomla from SVN
            //shell_exec("svn export https://github.com/joomla/joomla-cms/tags/3.2.0 /home/".$data['user']."/public_html/ --force");
            //shell_exec("chown -R ".$data['user'].":".$data['user']." /home/".$data['user']."/public_html/*");
            
            
    return 1"Created ".$database." DB, created ".$dbUsername." user (password '".$dbPassword."')";
        }
        
        return 
    1"Joomla plan not selected";
    }
    How can I:

    a) Output data from the hook function so I can debug? (i.e. where does $xmlapi sent its output to? Where do hook 'prints' go to?
    b) Get the API calls to work?

    Many thanks!

    Paul
     
  2. KostonConsulting

    KostonConsulting Well-Known Member

    Joined:
    Jun 17, 2010
    Messages:
    255
    Likes Received:
    1
    Trophy Points:
    18
    Location:
    San Francisco, CA
    cPanel Access Level:
    Root Administrator
    Paul,
    You can print output to /usr/local/cpanel/logs/error_log with error_log(), or you can print to another file of your choice. In the hook system, it's really just a wrapper that executes your script via the command line so you won't see any output from print/echo. Since it's just like executing your script via the command line with some data passed in by cPanel, I'd first recommend getting things working from the command line without the cPanel params and then altering the script to use the data from STDIN.

    I don't see anything wrong with the xmlapi code but if there is, you'll be able to capture the errors when testing via the command line as they'll either print to STDOUT or /usr/local/cpanel/logs/error_log.
     
Loading...

Share This Page