⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
local
/
softaculous
/
sdk
/
View File Name :
sdk.php
<?php // -------------------------------------------------------------------------------- // Softaculous - Softaculous Development Kit // -------------------------------------------------------------------------------- // // http://www.softaculous.com // -------------------------------------------------------------------------------- // // Description : // Softaculous_SDK is a Class of Softaculous that allows users to Install and Upgrade // Scripts provided by Softaculous. It also also allows users to Remove, Backup & Restore // the installations made on the server. // //////////////////////////////////////////////////////////////////////////////////// if(!defined('SOFTACULOUS')){ define('SOFTACULOUS', 1); } /* ** Softaculous SDK ** Refer the following guide for examples : ** http://www.softaculous.com/docs/SDK */ class Softaculous_SDK{ // The Login URL var $login = ''; var $debug = 0; var $error = array(); // THE POST DATA var $data = array(); var $scripts = array(); var $iscripts = array(); // If some cookies need to be set for this var $cookie; // Response Format [serialize] [xml] [json] var $format = 'serialize'; /** * A Function to Login with Softaculous Parameters. * * @package API * @author Jigar Dhulla * @param string $url URL of which response is needed * @param array $post POST DATA * @return string $resp Response of URL * @since 4.1.3 */ function curl($url, $post = array(), $cookies = array(), $header = 0){ // Set the curl parameters. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, 0); // Turn off the server and peer verification (TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // Follow redirects curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); if(!empty($post)){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); } // Is there a Cookie if(!empty($this->cookie)){ curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_COOKIE, $this->cookie); } // We ONLY need this for directadmin to get the session cookie else we need the Header DISABLED if(!empty($header)){ curl_setopt($ch, CURLOPT_HEADER, 1); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Get response from the server. $resp = curl_exec($ch); // Did we get the file ? if($resp === false){ $this->error[] = 'cURL Error : '.curl_error($ch); } curl_close($ch); return $resp; } /** * A Function to Login with Softaculous Parameters. * * @package API * @author Jigar Dhulla * @param string $act Actions * @param array $post POST DATA * @return string $resp Response of Actions * @since 4.1.3 */ function curl_call($act, $post = array()){ $url = $this->login; $tmp_url = parse_url($url); // This is to set the cookie for Directadmin if($tmp_url['port'] == '2222' && empty($this->cookie)){ $cmd_login = $tmp_url['scheme'].'://'.$tmp_url['host'].':'.$tmp_url['port'].'/CMD_LOGIN'; $cmd_post = array('username' => $tmp_url['user'], 'password' => $tmp_url['pass'], 'referer' => '/'); $res = $this->curl($cmd_login, $cmd_post, array(), 1); $res = explode("\n", $res); // Find the cookies foreach($res as $k => $v){ if(preg_match('/^'.preg_quote('set-cookie:', '/').'(.*?)$/is', $v, $mat) && empty($this->cookie)){ $this->cookie = trim($mat[1]); } } } // Add the ? if(!strstr($url, '?')){ $url = $url.'?'; } // Login Page with Softaculous Parameters $url = $url.$act; // Set the API mode if(!strstr($url, 'api=')){ $url = $url.'&api='.$this->format; } return $this->curl($url, $post); } /** * A Function to Login with Softaculous Parameters. * * @package API * @author Jigar Dhulla * @param string $act Actions * @param array $post POST DATA * @return string $resp Response of Actions * @since 4.1.3 */ function curl_unserialize($act, $post = array()){ $resp = $this->curl_call($act, $post); return $this->format_decode($resp); } /** * Prints result * * @category Debug * @param Array $data * @return array */ function r_print($data){ echo '<pre>'; print_r($data); echo '</pre>'; } function format_decode($data){ if($this->format == 'json'){ return json_decode($data, true); }elseif($this->format == 'xml'){ return $data; }else{ return unserialize($data); } } /** * A Function that will INSTALL scripts. If the DATA is empty script information is retured * * @package API * @author Jigar Dhulla * @param int $sid Script ID * @param array $data DATA to POST * @return string $resp Response of Action. Default: Serialize * @since 4.1.3 */ function install($sid, $data = array(), $autoinstall = array()){ // Get the Scripts List $this->list_installed_scripts(); // Script present ? if(empty($this->iscripts[$sid])){ $this->error[] = 'Script Not Found'; return false; } // Is JS / PERL or PHP if($this->iscripts[$sid]['type'] == 'js'){ $act = '&act=js&soft='.$sid; }elseif($this->iscripts[$sid]['type'] == 'perl'){ $act = '&act=perl&soft='.$sid; }elseif($this->iscripts[$sid]['type'] == 'java'){ $act = '&act=java&soft='.$sid; }elseif($this->iscripts[$sid]['type'] == 'python'){ $act = 'act=python&soft='.$sid; }else{ $act = '&act=software&soft='.$sid; } if(!empty($autoinstall)){ $act = $act.'&autoinstall='.rawurlencode(base64_encode(serialize($autoinstall))); } // Submit Details if(!empty($data)){ // If empty DATA, return script information $data['softsubmit'] = 1; } return $this->curl_call($act, $data); } /** * A Function that will IMPORT existing installations in Softaculous * * @package API * @author Jigar Dhulla * @param int $sid Script ID * @param array $data DATA to POST * @return string $resp Response of Actions. Default: Serialize * @since 4.1.3 */ function import($sid, $data = array()){ // Get the Scripts List $this->list_installed_scripts(); // Script present ? if(empty($this->iscripts[$sid])){ $this->error[] = 'Script Not Found'; return false; } // Action for Import $act = '&act=import&soft='.$sid; // Submit details $data['softsubmit'] = 1; // Get response from the server. return $this->curl_call($act, $data); } /** * A Function that will UPDATE scripts * * @package API * @author Jigar Dhulla * @param string $insid Installation ID * @param array $data DATA to POST * @return string $resp Response of Actions. Default: Serialize * @since 4.1.3 */ function upgrade($insid, $data = array()){ // Action for Upgrade $act = '&act=upgrade&insid='.$insid; if(!empty($data)){ // If empty DATA, return upgrade information of the installation // Submit Details $data['softsubmit'] = 1; } // Get response from the server. return $this->curl_call($act, $data); } /** * A Function that will Restore the Backup * * @package API * @author Jigar Dhulla * @param string $name Backup File Name * @param array $data DATA to POST * @return string $resp Response of Actions. Default: Serialize * @since 4.1.3 */ function restore($name, $data = array()){ // Action for restore $act = '&act=restore&restore='.$name; // Submit details $data['restore_ins'] = 1; // Get response from the server. return $this->curl_call($act, $data); } /** * A Function that will Remove the Installation * * @package API * @author Jigar Dhulla * @param string $insid Installation ID * @param array $data DATA to POST * @return string $resp Response of Actions. Default: Serialize * @since 4.1.3 */ function remove($insid, $data = array()){ // Action for Remove $act = '&act=remove&insid='.$insid; // Submit details $data['removeins'] = 1; // Get response from the server. return $this->curl_call($act, $data); } /** * A Function that will Backup the Installation. Backup process will go in background. * You will receive an email in case of any error * * @package API * @author Jigar Dhulla * @param string $insid Installation ID * @param array $data DATA to POST * @return string $resp Response of Actions. Default: Serialize * @since 4.1.3 */ function backup($insid, $data = array()){ // Action for Backup $act = '&act=backup&insid='.$insid; // Submit details $data['backupins'] = 1; // Get response from the server. return $this->curl_call($act, $data); } /** * A Function that will remove the Backup of the Installation. Remove Backup process will go in background. * You will receive an email in case of any error * * @package API * @author Divij Satra * @param string $backup_file Backup File Name e.g webmail.376_48118.2013-01-23_23-11-41.tar.gz * @return string $resp Response of Actions. Default: Serialize * @since 4.1.9 */ function remove_backup($backup_file){ // Action for Backup $act = '&act=backups&remove='.$backup_file; // Get response from the server. return $this->curl_call($act); } /** * A Function that will save the Backup File of the Installation at given path. * * @package API * @author Divij Satra * @param string $download_file Backup File Name e.g webmail.376_48118.2013-01-23_23-11-41.tar.gz * @param string $path Path where Backup File wiil be saved e.g '/opt' * @return void * @since 4.1.9 */ function download_backup($download_file, $path = NULL){ // Action for Backup $act = '&act=backups&download='.$download_file; if(!empty($path)){ if(!is_dir($path)){ echo "The path you provided does not exsists pleae check if the directory exsists"; exit; }else{ $chk = substr($path , -1); if($chk != '/'){ $path = $path.'/'; } } }else{ $path = ''; } $resp = $this->curl_call($act); $fp = fopen($path.$download_file, 'w+'); fwrite($fp, $resp); fclose($fp); // Get response from the server. echo "File saved at ".$path.$download_file; } /** * A Function that will list installations * * @package API * @author Jigar Dhulla * @param bool $showupdates. [True : Show only installations with update.] * @return array $resp Installations * @since 4.1.3 */ function installations($showupdates = false){ // Get response from the server. $resp = $this->curl_call('act=installations&showupdates='.$showupdates); $_resp = $this->format_decode($resp); return $_resp['installations']; } /** * A Function that will list scripts * * @package API * @author Jigar Dhulla * @return array $scripts List of Softaculous Scripts * @since 4.1.3 */ function list_scripts(){ if(!empty($this->scripts)){ return true; } // Get response from the server. $file = $this->curl('http://api.softaculous.com/scripts.php?in=serialize'); $this->scripts = unserialize($file); if(empty($this->scripts)){ $this->error[] = 'Scripts were not loaded.'; return false; }else{ return true; } } /** * A Function that will list Backups * * @package API * @author Jigar Dhulla * @return array $resp Backups * @since 4.1.3 */ function list_backups(){ // Get response from the server. $resp = $this->curl_call('act=backups'); $resp = $this->format_decode($resp); return $resp['backups']; } /** * A Function that will list installed scripts * * @package API * @author Jigar Dhulla * @return array $scripts List of Installed Softaculous Scripts * @since 4.1.3 */ function list_installed_scripts(){ if(!empty($this->iscripts)){ return true; } // Get response from the server. $resp = $this->curl_call('act=home'); $resp = $this->format_decode(trim($resp)); $this->iscripts = $resp['iscripts']; if(empty($this->iscripts)){ $this->error[] = 'Installed Scripts were not loaded.'; return false; }else{ return true; } } } // This is for backward compatiblity class Softaculous_API extends Softaculous_SDK{ } //////////////////////////////////////////////////////////////////////////// //////////////////////////// Import Example //////////////////////////////// //////////////////////////////////////////////////////////////////////////// /* <?php @set_time_limit(100); //Include Class include_once('sdk.php'); $new = new Softaculous_SDK(); // Login Page $new->login = 'https://user:password@domain.com:2083/frontend/jupiter/softaculous/index.live.php'; if(isset($_POST['domain'])){ $data['softdomain'] = $_POST['domain']; // Domain Name } if(isset($_POST['directory'])){ $data['softdirectory'] = $_POST['directory']; // Directory of the installation } // Submit the details if(isset($_POST['submit'])){ $res = $new->import($_POST['scripts'], $data); // Import Function $res = $new->format_decode($res); // Unserialize the serialized array if(!empty($res['done'])){ echo 'Imported'; }else{ print_r($res['error']); // Reason why Import was not successful } } if(empty($res)){ //Get the list of scripts $new->list_installed_scripts(); echo '<form action="" method="post">Select script you want to import : <select name="scripts">'; foreach($new->iscripts as $sk => $sv){ echo '<option value="'.$sk.'">'.$sv['name'].'</option>'; } echo '</select><br /> <tr> <td>Enter the Domain : <input type="text" name="domain" value=""></td> <tr><br /> <tr> <td>Enter the Directory : <input type="text" name="directory" value=""></td> <tr><br/> <input type="submit" name="submit" value="submit"> </form>'; } ?>*/ //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////// Install Example //////////////////////////////// //////////////////////////////////////////////////////////////////////////// /* <?php @set_time_limit(100); include_once('sdk.php'); $new = new Softaculous_SDK(); $new->login = 'https://user:password@domain.com:2083/frontend/jupiter/softaculous/index.live.php'; // Domain Name $data['softdomain'] = 'domain.com'; // OPTIONAL - By Default the primary domain will be used // The directory is relative to your domain and should not exist. e.g. To install at http://mydomain/dir/ just type dir. To install only in http://mydomain/ leave this empty. $data['softdirectory'] = 'wp887'; // OPTIONAL - By default it will be installed in the /public_html folder // Admin Username $data['admin_username'] = 'admin'; // Admin Pass $data['admin_pass'] = 'pass'; // Admin Email $data['admin_email'] = 'admin@domain.com'; // Database $data['softdb'] = 'wp887'; //Database User Name $data['dbusername'] = 'wp887'; // DB User Pass $data['dbuserpass'] = 'wp887'; // Language $data['language'] = 'en'; // Site Name $data['site_name'] = 'Wordpess wp887'; // Site Description $data['site_desc'] = 'WordPress API Test'; // Response $res = $new->install(26, $data); // Will install WordPress(26 is its script ID) // Unserialize $res = $new->format_decode($res); // Done/Error if(!empty($res['done'])){ echo 'Installed'; }else{ echo 'Installation Failed<br/>'; if(!empty($res['error'])){ print_r($res['error']); } } ?>*/ //////////////////////////////////////////////////////////////////////////// ?>