Esempio n. 1
0
function createmail($pseudo, $mdp)
{
    $ip = '127.0.0.1';
    $root_pass = '******';
    $account = "atelsolu";
    $email_user = $pseudo;
    $email_password = $mdp;
    $email_domain = "fonaj.td";
    /*this will create 'wdw@your_domain.com'*/
    $email_quota = '200';
    $xmlapi = new xmlapi($ip);
    $xmlapi->set_port(2082);
    /* the ssl port for cpanel */
    $xmlapi->password_auth($account, $root_pass);
    $xmlapi->set_output('json');
    $xmlapi->set_debug(1);
    if ($xmlapi->api1_query($account, "Email", "addpop", array($email_user, $email_password, $email_quota, $email_domain))) {
        return true;
    } else {
        return false;
    }
}
Esempio n. 2
0
# Redistribution and use in source and binary forms, with or without modification, are permitted provided
# that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this list of conditions and the
#   following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
#   following disclaimer in the documentation and/or other materials provided with the distribution.
# * Neither the name of the cPanel, Inc. nor the names of its contributors may be used to endorse or promote
#   products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
include "../xmlapi.php";
$ip = getenv('REMOTE_HOST');
$root_pass = getenv('REMOTE_PASSWORD');
$account = "cptest";
$email_user = "******";
$email_password = "******";
$email_domain = "somedomain.com";
$email_query = '10';
$xmlapi = new xmlapi($ip);
$xmlapi->password_auth("root", $root_pass);
$xmlapi->set_output('json');
$xmlapi->set_debug(1);
print $xmlapi->api1_query($account, "Email", "addpop", array($email_user, $email_password, $email_quota, $email_domain));
// Email address for backup notification
$backup_folder = '/public_html/hw_backups';
//validation
if (empty($ftphost) || empty($ftpacct) || empty($ftppass)) {
    exit("Provide full credentials ?");
}
#echo $ftphost,',',$ftpacct,',',$ftppass;
/**
 * create cpanel instance
 */
include_once 'libs/xmlapi.php';
$xmlapi = new xmlapi($ftphost);
#$xmlapi->hash_auth("root",$root_hash);
$xmlapi->password_auth($ftpacct, $ftppass);
$xmlapi->set_port(2083);
$xmlapi->set_output("json");
/**
 * delete old backup file
 */
# connect to ftp
$conn_id = @ftp_connect($ftphost);
$login_result = @ftp_login($conn_id, $ftpacct, $ftppass);
# Changes the current directory on a FTP server
#ftp_chdir($conn_id, '/public_html');
// try to create the directory $dir
if (@ftp_mkdir($conn_id, $backup_folder)) {
    echo "successfully created {$backup_folder}\n";
} else {
    echo "There was a problem while creating {$backup_folder}\n";
}
# Changes the current directory on a FTP server
 // ini_set('error_log', __DIR__ . DIRECTORY_SEPARATOR . 'my_file.log');
 // folder for the microweber source
 // $opts['source_folder'] = '/usr/share/microweber-latest/';
 // debug email
 // $opts['debug_email'] = '*****@*****.**';
 // $opts['debug_email_subject'] = 'debug';
 if (is_file('/home/cpanelscripthelpers/xmlapi.php')) {
     require '/home/cpanelscripthelpers/xmlapi.php';
 } else {
     require __DIR__ . '/cpanelscripthelpers/xmlapi.php';
 }
 $auth_user = $opts['user'];
 $auth_pass = $opts['pass'];
 $contact_email = $opts['contactemail'];
 $json_client = new \xmlapi('localhost');
 $json_client->set_output('json');
 //$json_client->set_port(2087);
 $json_client->set_port(2083);
 $json_client->password_auth($auth_user, $auth_pass);
 $json_client->set_debug(1);
 $database_name = $auth_user . '_' . uniqid() . rand();
 $database_name = substr($database_name, 0, 14);
 $database_user = $database_name;
 $database_password = md5($auth_user . '_' . rand() . uniqid() . rand());
 //create database
 $createdb = $json_client->api1_query($auth_user, "Mysql", "adddb", array($database_name));
 $usr = $json_client->api1_query($auth_user, "Mysql", "adduser", array($database_user, $database_password));
 $addusr = $json_client->api1_query($auth_user, "Mysql", "adduserdb", array($database_name, $database_user, 'all'));
 $emailmsg = '';
 $result = $msg . $ms1 . $message . $emailmsg . "\n\n\n" . $createdb . "\n\n\n" . $createdb . "\n\n\n" . $usr . "\n\n\n" . $addusr . "\n\n\n" . json_encode($opts);
 $opts['user'] = $opts['user'];
 /**
  * @param \RainLoop\Model\Account $oAccount
  * @param string $sPrevPassword
  * @param string $sNewPassword
  *
  * @return bool
  */
 public function ChangePassword(\RainLoop\Account $oAccount, $sPrevPassword, $sNewPassword)
 {
     if ($this->oLogger) {
         $this->oLogger->Write('Try to change password for ' . $oAccount->Email());
     }
     if (!\class_exists('xmlapi')) {
         include_once __DIR__ . '/xmlapi.php';
     }
     $bResult = false;
     if (!empty($this->sHost) && 0 < $this->iPost && 0 < \strlen($this->sUser) && 0 < \strlen($this->sPassword) && $oAccount && \class_exists('xmlapi')) {
         $sEmail = $oAccount->Email();
         $sEmailUser = \MailSo\Base\Utils::GetAccountNameFromEmail($sEmail);
         $sEmailDomain = \MailSo\Base\Utils::GetDomainFromEmail($sEmail);
         $sHost = $this->sHost;
         $sHost = \str_replace('{user:domain}', $sEmailDomain, $sHost);
         $sUser = $this->sUser;
         $sUser = \str_replace('{user:email}', $sEmail, $sUser);
         $sUser = \str_replace('{user:login}', $sEmailUser, $sUser);
         $sPassword = $this->sPassword;
         $sPassword = \str_replace('{user:password}', $oAccount->Password(), $sPassword);
         try {
             $oXmlApi = new \xmlapi($sHost);
             $oXmlApi->set_port($this->iPost);
             $oXmlApi->set_protocol($this->bSsl ? 'https' : 'http');
             $oXmlApi->set_debug(false);
             $oXmlApi->set_output('json');
             //				$oXmlApi->set_http_client('fopen');
             $oXmlApi->set_http_client('curl');
             $oXmlApi->password_auth($sUser, $sPassword);
             $aArgs = array('email' => $sEmailUser, 'domain' => $sEmailDomain, 'password' => $sNewPassword);
             $sResult = $oXmlApi->api2_query($sUser, 'Email', 'passwdpop', $aArgs);
             if ($sResult) {
                 if ($this->oLogger) {
                     $this->oLogger->Write('CPANEL: ' . $sResult, \MailSo\Log\Enumerations\Type::INFO);
                 }
                 $aResult = @\json_decode($sResult, true);
                 $bResult = isset($aResult['cpanelresult']['data'][0]['result']) && !!$aResult['cpanelresult']['data'][0]['result'];
             }
             if (!$bResult && $this->oLogger) {
                 $this->oLogger->Write('CPANEL: ' . $sResult, \MailSo\Log\Enumerations\Type::ERROR);
             }
         } catch (\Exception $oException) {
             if ($this->oLogger) {
                 $this->oLogger->WriteException($oException);
             }
         }
     } else {
         if ($this->oLogger) {
             $this->oLogger->Write('CPANEL: Incorrent configuration data', \MailSo\Log\Enumerations\Type::ERROR);
         }
     }
     return $bResult;
 }
        //echo $account['user'] . "<br />"; //TEST - Enable to test storing accounts in an array
    }
    /***** Initiate The Backup *****/
    $apiArgs = array();
    foreach ($accounts as $cPanelAccount) {
        if ($useFtp === "1") {
            $apiArgs = array('passiveftp', $ftpHost, $ftpAcct, $ftpPass, $emailNotification, $ftpPort, $ftpPath . '/' . $backupDir);
        } else {
            endApp("FTP is disabled");
        }
        /***** Backup & Transfer the account *****/
        if ($whmServerIp != $cpanelServerIp) {
            $xmlapi = new xmlapi($cpanelServerIp);
            $xmlapi->password_auth($cPanelAccount, $whmPassword);
            $xmlapi->set_port($cpanelServerPort);
            $xmlapi->set_output('array');
        }
        $result = $xmlapi->api1_query($cPanelAccount, 'Fileman', 'fullbackup', $apiArgs);
        //print_r ($result); //TEST - Enable to print result
        //break; //TEST - Enable to test one account
        sleep(1);
        //Pause
    }
} else {
    //Status Not OK
    endApp("Unable to Authenticate!");
}
/***** Functions *****/
function endApp($reason = "")
{
    //mail($emailNotification, "Backup Failed", $reason);
 /**
  * root access
  * @param $domain
  * @param $root_hash
  * @return xmlapi
  */
 public static function authorize_root($domain, $root_hash)
 {
     self::$hashroot = $root_hash;
     //save hash
     try {
         $xmlapi = new xmlapi($domain);
         $xmlapi->hash_auth(HW_WHM_ROOT_USER, $root_hash);
         $xmlapi->set_output("json");
         $xmlapi->set_debug(1);
         $inst = new self();
         $inst->host = $domain;
         #$inst->cpanelUser = '******';
         #$inst->cpanelPass = $root_hash;
         $inst->xmlapi = $xmlapi;
         return $inst;
     } catch (Exception $e) {
         print_r($e);
     }
 }
# Copyright (c) 2009, cPanel, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are permitted provided
# that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this list of conditions and the
#   following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
#   following disclaimer in the documentation and/or other materials provided with the distribution.
# * Neither the name of the cPanel, Inc. nor the names of its contributors may be used to endorse or promote
#   products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
include '../xmlapi.php';
$ip = getenv('REMOTE_HOST');
$root_pass = getenv('REMOTE_PASSWORD');
$account = "cptest";
$xmlapi = new xmlapi($ip);
$xmlapi->password_auth("root", $root_pass);
$xmlapi->set_output("json");
$xmlapi->set_debug(1);
print $xmlapi->api2_query($account, "Email", "listpopswithdisk");