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; } }
# 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");